{
  "openapi" : "3.0.0",
  "info" : {
    "title" : "RepairShopr",
    "version" : "v1",
    "description" : "Welcome to the official RepairShopr API Docs.\n\nTo use these docs, you will need an active RepairShopr account. You can sign up for one here: [RepairShopr](https://repairshopr.com)\n\nIf you already have an active account, fill in your subdomain below and then click \"Authorize\" and fill in your api-key. The key is specific to your user account so it is found on the your user profile page.\n\nPlease review the Terms of Service before using these docs and feel free to reach out with questions via the links below.\n\nPlease note there is a rate limit of 180 requests per minute per IP address on API Usage.",
    "termsOfService" : "https://www.repairshopr.com/repairshopr-site-terms",
    "contact" : {
      "email" : "help@repairshopr.com",
      "url" : "https://feedback.repairshopr.com/",
      "name" : "API Support"
    }
  },
  "externalDocs" : {
    "description" : "Additional API Docs",
    "url" : "https://feedback.repairshopr.com/knowledgebase/articles/376312-repairshopr-rest-api-build-custom-extensions-app"
  },
  "paths" : {
    "/appointment_types" : {
      "get" : {
        "summary" : "Returns a paginated list of Appointment Types",
        "tags" : [ "Appointment Type" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Global Admin\n",
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "appointment_types" : [ {
                    "id" : 1,
                    "account_id" : 1,
                    "name" : "Office Hours",
                    "email_instructions" : "string",
                    "location_type" : "manual_entry",
                    "location_hard_code" : null,
                    "created_at" : "2019-10-16T19:29:33.397Z",
                    "updated_at" : "2019-10-16T19:29:33.397Z",
                    "buffer" : null,
                    "appointment_reminders_schedule_id" : null
                  } ]
                }
              }
            }
          }
        }
      },
      "post" : {
        "summary" : "Creates an Appointment Type",
        "tags" : [ "Appointment Type" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Global Admin\n",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "name" : {
                    "type" : "string"
                  },
                  "email_instructions" : {
                    "type" : "string"
                  },
                  "location_type" : {
                    "type" : "integer"
                  },
                  "location_hard_code" : {
                    "type" : "string"
                  }
                },
                "required" : [ "name" ]
              }
            }
          },
          "description" : "Appointment Type object that needs to be added"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "appointment_type" : {
                    "id" : 1,
                    "account_id" : 1,
                    "name" : "Office Hours",
                    "email_instructions" : "string",
                    "location_type" : "manual_entry",
                    "location_hard_code" : null,
                    "created_at" : "2019-10-16T19:29:33.397Z",
                    "updated_at" : "2019-10-16T19:29:33.397Z",
                    "buffer" : null,
                    "appointment_reminders_schedule_id" : null
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "record" : {
                    "id" : null,
                    "account_id" : 1,
                    "name" : "",
                    "email_instructions" : null,
                    "location_type" : null,
                    "location_hard_code" : null,
                    "created_at" : null,
                    "updated_at" : null,
                    "buffer" : null,
                    "appointment_reminders_schedule_id" : null
                  },
                  "errors" : "Name can't be blank,Location type can't be blank"
                }
              }
            }
          }
        }
      }
    },
    "/appointment_types/{id}" : {
      "get" : {
        "summary" : "Retrieves an Appointment Type by ID",
        "tags" : [ "Appointment Type" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Global Admin\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "id" : 1,
                  "account_id" : 1,
                  "name" : "Office Hours",
                  "email_instructions" : "string",
                  "location_type" : "manual_entry",
                  "location_hard_code" : null,
                  "created_at" : "2019-10-16T19:29:33.397Z",
                  "updated_at" : "2019-10-16T19:29:33.397Z",
                  "buffer" : null,
                  "appointment_reminders_schedule_id" : null
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      },
      "put" : {
        "summary" : "Updates an existing Appointment Type by ID",
        "tags" : [ "Appointment Type" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Global Admin\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "name" : {
                    "type" : "string"
                  },
                  "email_instructions" : {
                    "type" : "string"
                  },
                  "location_type" : {
                    "type" : "integer"
                  },
                  "location_hard_code" : {
                    "type" : "string"
                  }
                }
              }
            }
          },
          "description" : "Appointment Type object that needs to be updated"
        },
        "responses" : {
          "200" : {
            "description" : "successful"
          },
          "422" : {
            "description" : "Invalid request"
          }
        }
      },
      "delete" : {
        "summary" : "Deletes an Appointment Type by ID",
        "tags" : [ "Appointment Type" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Global Admin\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful"
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      }
    },
    "/appointments" : {
      "get" : {
        "summary" : "Returns a paginated list of Appointments",
        "tags" : [ "Appointment" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Appointments - View All (see-own never restricted)\n",
        "parameters" : [ {
          "name" : "date_from",
          "in" : "query",
          "description" : "Returns Appointments that start after the date. Example \"2019-01-25\"",
          "schema" : {
            "type" : "string",
            "format" : "date"
          }
        }, {
          "name" : "date_to",
          "in" : "query",
          "required" : false,
          "description" : "Returns Appointments that start before the date. Example \"2019-12-31\"",
          "schema" : {
            "type" : "string",
            "format" : "date"
          }
        }, {
          "name" : "mine",
          "in" : "query",
          "required" : false,
          "description" : "Return only current user's appointments",
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "description" : "Returns provided page of results, each 'page' contains 25 results",
          "required" : false,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "appointments" : [ {
                    "appointment" : {
                      "id" : 3,
                      "summary" : "Appointment API",
                      "description" : "Notes:\n Appointment Description\n\n Contact: \nWalkin Customer \n\n Details: \nCustomer Information: \n Walkin Customer\n  Phone: 123 - walkin@somedomain.com",
                      "customer_id" : 1,
                      "created_at" : "2019-10-20T01:28:50.580Z",
                      "updated_at" : "2019-10-20T01:28:50.580Z",
                      "start_at" : "2019-10-21T01:28:00.000Z",
                      "end_at" : "2019-10-21T05:28:00.000Z",
                      "duration" : 4,
                      "location" : "In Shop",
                      "ticket_id" : null,
                      "appointment_type_id" : null,
                      "appointment_location_type" : null,
                      "start_at_label" : "Sun 10-20-19 06:28 PM",
                      "all_day" : null,
                      "ticket" : null,
                      "do_not_email" : "1",
                      "customer" : {
                        "id" : 1,
                        "firstname" : "Walkin",
                        "lastname" : "Customer",
                        "fullname" : "Walkin Customer",
                        "business_name" : null,
                        "email" : "walkin@somedomain.com",
                        "phone" : "123",
                        "mobile" : null,
                        "created_at" : "2019-10-20T01:28:37.187Z",
                        "updated_at" : "2019-10-20T01:28:37.187Z",
                        "pdf_url" : null,
                        "address" : null,
                        "address_2" : null,
                        "city" : null,
                        "state" : null,
                        "zip" : null,
                        "latitude" : null,
                        "longitude" : null,
                        "notes" : null,
                        "get_sms" : false,
                        "opt_out" : false,
                        "disabled" : false,
                        "no_email" : true,
                        "location_name" : null,
                        "location_id" : null,
                        "properties" : { },
                        "online_profile_url" : "http://testsubdomainwi1.lvh.me//my_profile/v2/index?portal_key=dxbkw6x44de91dum7fua",
                        "tax_rate_id" : null,
                        "notification_email" : null,
                        "invoice_cc_emails" : null,
                        "invoice_term_id" : null,
                        "referred_by" : null,
                        "ref_customer_id" : null,
                        "business_and_full_name" : "Walkin Customer",
                        "business_then_name" : "Walkin Customer",
                        "contacts" : [ ]
                      }
                    }
                  } ]
                }
              }
            }
          }
        }
      },
      "post" : {
        "summary" : "Creates an Appointment",
        "tags" : [ "Appointment" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "No special permissions required.\n",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "description" : {
                    "type" : "string"
                  },
                  "user_ids" : {
                    "type" : "array",
                    "items" : {
                      "type" : "integer"
                    }
                  },
                  "ticket_id" : {
                    "type" : "integer"
                  },
                  "do_not_email" : {
                    "type" : "boolean"
                  },
                  "user_id" : {
                    "type" : "integer"
                  },
                  "start_at" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "end_at" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "location" : {
                    "type" : "string"
                  },
                  "summary" : {
                    "type" : "string"
                  },
                  "email_customer" : {
                    "type" : "boolean"
                  },
                  "appointment_duration" : {
                    "type" : "string"
                  },
                  "appointment_type_id" : {
                    "type" : "integer"
                  },
                  "customer_id" : {
                    "type" : "integer"
                  },
                  "all_day" : {
                    "type" : "boolean"
                  }
                },
                "required" : [ "summary", "start_at" ]
              }
            }
          },
          "description" : "Appointment object that needs to be added"
        },
        "responses" : {
          "201" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "appointment" : {
                    "id" : 3,
                    "summary" : "Appointment API",
                    "description" : "Notes:\n Appointment Description\n\n Contact: \nWalkin Customer \n\n Details: \nCustomer Information: \n Walkin Customer\n  Phone: 123 - walkin@somedomain.com",
                    "customer_id" : 1,
                    "created_at" : "2019-10-20T01:28:50.580Z",
                    "updated_at" : "2019-10-20T01:28:50.580Z",
                    "start_at" : "2019-10-21T01:28:00.000Z",
                    "end_at" : "2019-10-21T05:28:00.000Z",
                    "duration" : 4,
                    "location" : "In Shop",
                    "ticket_id" : null,
                    "appointment_type_id" : null,
                    "appointment_location_type" : null,
                    "start_at_label" : "Sun 10-20-19 06:28 PM",
                    "all_day" : null,
                    "ticket" : null,
                    "do_not_email" : "1",
                    "customer" : {
                      "id" : 1,
                      "firstname" : "Walkin",
                      "lastname" : "Customer",
                      "fullname" : "Walkin Customer",
                      "business_name" : null,
                      "email" : "walkin@somedomain.com",
                      "phone" : "123",
                      "mobile" : null,
                      "created_at" : "2019-10-20T01:28:37.187Z",
                      "updated_at" : "2019-10-20T01:28:37.187Z",
                      "pdf_url" : null,
                      "address" : null,
                      "address_2" : null,
                      "city" : null,
                      "state" : null,
                      "zip" : null,
                      "latitude" : null,
                      "longitude" : null,
                      "notes" : null,
                      "get_sms" : false,
                      "opt_out" : false,
                      "disabled" : false,
                      "no_email" : true,
                      "location_name" : null,
                      "location_id" : null,
                      "properties" : { },
                      "online_profile_url" : "http://testsubdomainwi1.lvh.me//my_profile/v2/index?portal_key=dxbkw6x44de91dum7fua",
                      "tax_rate_id" : null,
                      "notification_email" : null,
                      "invoice_cc_emails" : null,
                      "invoice_term_id" : null,
                      "referred_by" : null,
                      "ref_customer_id" : null,
                      "business_and_full_name" : "Walkin Customer",
                      "business_then_name" : "Walkin Customer",
                      "contacts" : [ ]
                    }
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : false,
                  "error" : "Summary can't be blank,Start at can't be blank,End at can't be blank",
                  "message" : "Summary can't be blank,Start at can't be blank,End at can't be blank",
                  "params" : {
                    "description" : "Incomplete appointment"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/appointments/{id}" : {
      "get" : {
        "summary" : "Retrieves an Appointment by ID",
        "tags" : [ "Appointment" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "No special permissions required.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "*/*" : {
                "schema" : {
                  "type" : "object",
                  "properties" : {
                    "id" : {
                      "type" : "integer"
                    },
                    "summary" : {
                      "type" : "string"
                    },
                    "description" : {
                      "type" : "string"
                    },
                    "customer_id" : {
                      "type" : "integer"
                    },
                    "created_at" : {
                      "type" : "string"
                    },
                    "updated_at" : {
                      "type" : "string"
                    },
                    "start_at" : {
                      "type" : "string"
                    },
                    "end_at" : {
                      "type" : "string"
                    },
                    "duration" : {
                      "type" : "number"
                    },
                    "location" : {
                      "type" : "string"
                    },
                    "ticket_id" : {
                      "type" : "integer",
                      "nullable" : true
                    },
                    "appointment_location_type" : {
                      "type" : "string",
                      "nullable" : true
                    },
                    "start_at_label" : {
                      "type" : "string"
                    },
                    "all_day" : {
                      "type" : "boolean",
                      "nullable" : true
                    },
                    "ticket" : {
                      "type" : "object",
                      "properties" : { },
                      "nullable" : true
                    },
                    "customer" : {
                      "type" : "object",
                      "properties" : {
                        "id" : {
                          "type" : "integer"
                        },
                        "firstname" : {
                          "type" : "string"
                        },
                        "lastname" : {
                          "type" : "string"
                        },
                        "fullname" : {
                          "type" : "string"
                        },
                        "business_name" : {
                          "type" : "string"
                        },
                        "email" : {
                          "type" : "string"
                        },
                        "phone" : {
                          "type" : "string"
                        },
                        "mobile" : {
                          "type" : "string",
                          "nullable" : true
                        },
                        "created_at" : {
                          "type" : "string"
                        },
                        "updated_at" : {
                          "type" : "string"
                        },
                        "pdf_url" : {
                          "type" : "string",
                          "nullable" : true
                        },
                        "address" : {
                          "type" : "string",
                          "nullable" : true
                        },
                        "address_2" : {
                          "type" : "string",
                          "nullable" : true
                        },
                        "city" : {
                          "type" : "string",
                          "nullable" : true
                        },
                        "state" : {
                          "type" : "string",
                          "nullable" : true
                        },
                        "zip" : {
                          "type" : "string",
                          "nullable" : true
                        },
                        "latitude" : {
                          "type" : "number",
                          "nullable" : true
                        },
                        "longitude" : {
                          "type" : "number",
                          "nullable" : true
                        },
                        "notes" : {
                          "type" : "string",
                          "nullable" : true
                        },
                        "get_sms" : {
                          "type" : "boolean"
                        },
                        "opt_out" : {
                          "type" : "boolean"
                        },
                        "disabled" : {
                          "type" : "boolean"
                        },
                        "no_email" : {
                          "type" : "boolean"
                        },
                        "location_name" : {
                          "type" : "string",
                          "nullable" : true
                        },
                        "location_id" : {
                          "type" : "integer",
                          "nullable" : true
                        },
                        "properties" : {
                          "type" : "object",
                          "properties" : { }
                        },
                        "online_profile_url" : {
                          "type" : "string"
                        },
                        "referred_by" : {
                          "type" : "integer",
                          "nullable" : true
                        },
                        "ref_customer_id" : {
                          "type" : "integer",
                          "nullable" : true
                        },
                        "tax_rate_id" : {
                          "type" : "string",
                          "nullable" : true
                        },
                        "notification_email" : {
                          "type" : "string",
                          "nullable" : true
                        },
                        "invoice_cc_emails" : {
                          "type" : "string",
                          "nullable" : true
                        },
                        "invoice_term_id" : {
                          "type" : "string",
                          "nullable" : true
                        },
                        "business_and_full_name" : {
                          "type" : "string"
                        },
                        "business_then_name" : {
                          "type" : "string"
                        },
                        "contacts" : {
                          "type" : "object",
                          "properties" : { }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      },
      "put" : {
        "summary" : "Updates an existing Appointment by ID",
        "tags" : [ "Appointment" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "No special permissions required.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "description" : {
                    "type" : "string"
                  },
                  "user_ids" : {
                    "type" : "array",
                    "items" : {
                      "type" : "integer"
                    }
                  },
                  "ticket_id" : {
                    "type" : "integer"
                  },
                  "user_id" : {
                    "type" : "integer"
                  },
                  "start_at" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "end_at" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "location" : {
                    "type" : "string"
                  },
                  "summary" : {
                    "type" : "string"
                  },
                  "email_customer" : {
                    "type" : "boolean"
                  },
                  "appointment_duration" : {
                    "type" : "string"
                  },
                  "appointment_type_id" : {
                    "type" : "integer"
                  },
                  "customer_id" : {
                    "type" : "integer"
                  },
                  "all_day" : {
                    "type" : "boolean"
                  }
                },
                "required" : [ "start_at" ]
              }
            }
          },
          "description" : "Appointment object that needs to be added"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "appointment" : {
                    "id" : 3,
                    "summary" : "Appointment API",
                    "description" : "Notes:\n Appointment Description\n\n Contact: \nWalkin Customer \n\n Details: \nCustomer Information: \n Walkin Customer\n  Phone: 123 - walkin@somedomain.com",
                    "customer_id" : 1,
                    "created_at" : "2019-10-20T01:28:50.580Z",
                    "updated_at" : "2019-10-20T01:28:50.580Z",
                    "start_at" : "2019-10-21T01:28:00.000Z",
                    "end_at" : "2019-10-21T05:28:00.000Z",
                    "duration" : 4,
                    "location" : "In Shop",
                    "ticket_id" : null,
                    "appointment_type_id" : null,
                    "appointment_location_type" : null,
                    "start_at_label" : "Sun 10-20-19 06:28 PM",
                    "all_day" : null,
                    "ticket" : null,
                    "do_not_email" : "1",
                    "customer" : {
                      "id" : 1,
                      "firstname" : "Walkin",
                      "lastname" : "Customer",
                      "fullname" : "Walkin Customer",
                      "business_name" : null,
                      "email" : "walkin@somedomain.com",
                      "phone" : "123",
                      "mobile" : null,
                      "created_at" : "2019-10-20T01:28:37.187Z",
                      "updated_at" : "2019-10-20T01:28:37.187Z",
                      "pdf_url" : null,
                      "address" : null,
                      "address_2" : null,
                      "city" : null,
                      "state" : null,
                      "zip" : null,
                      "latitude" : null,
                      "longitude" : null,
                      "notes" : null,
                      "get_sms" : false,
                      "opt_out" : false,
                      "disabled" : false,
                      "no_email" : true,
                      "location_name" : null,
                      "location_id" : null,
                      "properties" : { },
                      "online_profile_url" : "http://testsubdomainwi1.lvh.me//my_profile/v2/index?portal_key=dxbkw6x44de91dum7fua",
                      "tax_rate_id" : null,
                      "notification_email" : null,
                      "invoice_cc_emails" : null,
                      "invoice_term_id" : null,
                      "referred_by" : null,
                      "ref_customer_id" : null,
                      "business_and_full_name" : "Walkin Customer",
                      "business_then_name" : "Walkin Customer",
                      "contacts" : [ ]
                    }
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : false,
                  "error" : "Summary can't be blank",
                  "message" : "Summary can't be blank",
                  "params" : {
                    "summary" : ""
                  }
                }
              }
            }
          }
        }
      },
      "delete" : {
        "summary" : "Deletes an Appointment by ID",
        "tags" : [ "Appointment" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "No special permissions required.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful"
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      }
    },
    "/customer_assets" : {
      "get" : {
        "summary" : "Returns a paginated list of Assets",
        "tags" : [ "Asset" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Assets - List/Search\nSingle-Customer Users can only access own assets.\n",
        "parameters" : [ {
          "name" : "snmp_enabled",
          "in" : "query",
          "description" : "Any assets with SNMP enabled",
          "required" : false,
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "customer_id",
          "in" : "query",
          "description" : "Any assets attached to a Customer ID",
          "required" : false,
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "asset_type_id",
          "in" : "query",
          "description" : "Any assets attached to an Asset Type ID",
          "required" : false,
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "query",
          "in" : "query",
          "description" : "Search query",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "description" : "Returns provided page of results, each 'page' contains 25 results",
          "required" : false,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "assets" : [ {
                    "id" : 7,
                    "name" : "New Name",
                    "customer_id" : 1,
                    "contact_id" : null,
                    "created_at" : "2019-10-21T04:40:27.117Z",
                    "updated_at" : "2019-10-21T04:40:27.190Z",
                    "properties" : {
                      "OS" : 4,
                      "Size" : "Medium"
                    },
                    "asset_type" : "Dodrio",
                    "asset_serial" : "NewSerial",
                    "external_rmm_link" : null,
                    "customer" : {
                      "id" : 1,
                      "firstname" : "Walkin",
                      "lastname" : "Customer",
                      "fullname" : "Walkin Customer",
                      "business_name" : null,
                      "email" : "walkin@somedomain.com",
                      "phone" : "123",
                      "mobile" : null,
                      "created_at" : "2019-10-21T04:40:14.156Z",
                      "updated_at" : "2019-10-21T04:40:14.156Z",
                      "pdf_url" : null,
                      "address" : null,
                      "address_2" : null,
                      "city" : null,
                      "state" : null,
                      "zip" : null,
                      "latitude" : null,
                      "longitude" : null,
                      "notes" : null,
                      "get_sms" : false,
                      "opt_out" : false,
                      "disabled" : false,
                      "no_email" : true,
                      "location_id" : null,
                      "properties" : { },
                      "online_profile_url" : "http://testsubdomainwi1.lvh.me//my_profile/v2/index?portal_key=j2apoteiivxcuygw1nvc",
                      "tax_rate_id" : null,
                      "notification_email" : null,
                      "invoice_cc_emails" : null,
                      "invoice_term_id" : null,
                      "referred_by" : null,
                      "ref_customer_id" : null,
                      "business_and_full_name" : "Walkin Customer",
                      "business_then_name" : "Walkin Customer"
                    },
                    "rmm_links" : [ ],
                    "rmm_store" : {
                      "id" : 4,
                      "asset_id" : 7,
                      "account_id" : 1,
                      "triggers" : {
                        "bsod_triggered" : "false",
                        "time_triggered" : "false",
                        "no_av_triggered" : "false",
                        "defrag_triggered" : "false",
                        "firewall_triggered" : "false",
                        "app_crash_triggered" : "false",
                        "low_hd_space_triggered" : "false",
                        "smart_failure_triggered" : "false",
                        "device_manager_triggered" : "false",
                        "agent_offline_triggered" : "false"
                      },
                      "windows_updates" : { },
                      "emsisoft" : { },
                      "general" : { },
                      "created_at" : "2019-10-21T04:40:27.201Z",
                      "updated_at" : "2019-10-21T04:40:27.201Z",
                      "override_alert_agent_offline_mins" : null,
                      "override_alert_agent_rearm_after_mins" : null,
                      "override_low_hd_threshold" : null,
                      "override_autoresolve_offline_alert" : null
                    },
                    "address" : {
                      "id" : 1,
                      "name" : "Home",
                      "customer_id" : 1,
                      "address_type_id" : 2,
                      "address1" : "123 main st",
                      "address2" : "address2",
                      "city" : "city",
                      "state" : "state",
                      "zip" : "11111",
                      "latitude" : null,
                      "longitude" : null,
                      "created_at" : "2019-10-21T04:40:27.201Z",
                      "updated_at" : "2019-10-21T04:40:27.201Z",
                      "account_id" : 1
                    }
                  } ]
                }
              }
            }
          }
        }
      },
      "post" : {
        "summary" : "Creates an Asset",
        "tags" : [ "Asset" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Assets - Create\nSingle-Customer Users can only access own assets.\n",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "asset_type_name" : {
                    "type" : "string"
                  },
                  "asset_type_id" : {
                    "type" : "integer"
                  },
                  "properties" : {
                    "type" : "object"
                  },
                  "name" : {
                    "type" : "string"
                  },
                  "customer_id" : {
                    "type" : "integer"
                  },
                  "asset_serial" : {
                    "type" : "string"
                  }
                },
                "required" : [ "name" ]
              }
            }
          },
          "description" : "Asset object that needs to be added"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "asset" : {
                    "id" : 7,
                    "name" : "New Name",
                    "customer_id" : 1,
                    "contact_id" : null,
                    "created_at" : "2019-10-21T04:40:27.117Z",
                    "updated_at" : "2019-10-21T04:40:27.190Z",
                    "properties" : {
                      "OS" : 4,
                      "Size" : "Medium"
                    },
                    "asset_type" : "Dodrio",
                    "asset_serial" : "NewSerial",
                    "external_rmm_link" : null,
                    "customer" : {
                      "id" : 1,
                      "firstname" : "Walkin",
                      "lastname" : "Customer",
                      "fullname" : "Walkin Customer",
                      "business_name" : null,
                      "email" : "walkin@somedomain.com",
                      "phone" : "123",
                      "mobile" : null,
                      "created_at" : "2019-10-21T04:40:14.156Z",
                      "updated_at" : "2019-10-21T04:40:14.156Z",
                      "pdf_url" : null,
                      "address" : null,
                      "address_2" : null,
                      "city" : null,
                      "state" : null,
                      "zip" : null,
                      "latitude" : null,
                      "longitude" : null,
                      "notes" : null,
                      "get_sms" : false,
                      "opt_out" : false,
                      "disabled" : false,
                      "no_email" : true,
                      "location_id" : null,
                      "properties" : { },
                      "online_profile_url" : "http://testsubdomainwi1.lvh.me//my_profile/v2/index?portal_key=j2apoteiivxcuygw1nvc",
                      "tax_rate_id" : null,
                      "notification_email" : null,
                      "invoice_cc_emails" : null,
                      "invoice_term_id" : null,
                      "referred_by" : null,
                      "ref_customer_id" : null,
                      "business_and_full_name" : "Walkin Customer",
                      "business_then_name" : "Walkin Customer"
                    },
                    "rmm_links" : [ ],
                    "rmm_store" : {
                      "id" : 4,
                      "asset_id" : 7,
                      "account_id" : 1,
                      "triggers" : {
                        "bsod_triggered" : "false",
                        "time_triggered" : "false",
                        "no_av_triggered" : "false",
                        "defrag_triggered" : "false",
                        "firewall_triggered" : "false",
                        "app_crash_triggered" : "false",
                        "low_hd_space_triggered" : "false",
                        "smart_failure_triggered" : "false",
                        "device_manager_triggered" : "false",
                        "agent_offline_triggered" : "false"
                      },
                      "windows_updates" : { },
                      "emsisoft" : { },
                      "general" : { },
                      "created_at" : "2019-10-21T04:40:27.201Z",
                      "updated_at" : "2019-10-21T04:40:27.201Z",
                      "override_alert_agent_offline_mins" : null,
                      "override_alert_agent_rearm_after_mins" : null,
                      "override_low_hd_threshold" : null,
                      "override_autoresolve_offline_alert" : null
                    },
                    "address" : {
                      "id" : 1,
                      "name" : "Home",
                      "customer_id" : 1,
                      "address_type_id" : 2,
                      "address1" : "123 main st",
                      "address2" : "address2",
                      "city" : "city",
                      "state" : "state",
                      "zip" : "11111",
                      "latitude" : null,
                      "longitude" : null,
                      "created_at" : "2019-10-21T04:40:27.201Z",
                      "updated_at" : "2019-10-21T04:40:27.201Z",
                      "account_id" : 1
                    }
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : false,
                  "message" : [ "Asset type can't be blank", "Name You must have an asset type first, please go create one" ],
                  "params" : {
                    "name" : "No type"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/customer_assets/{id}" : {
      "get" : {
        "summary" : "Retrieves an Asset by ID",
        "tags" : [ "Asset" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Assets - View Details\nSingle-Customer Users can only access own assets.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "*/*" : {
                "schema" : {
                  "type" : "object",
                  "properties" : {
                    "type" : "object",
                    "properties" : {
                      "id" : {
                        "type" : "integer"
                      },
                      "name" : {
                        "type" : "string"
                      },
                      "customer_id" : {
                        "type" : [ "integer", "null" ]
                      },
                      "contact_id" : {
                        "type" : [ "integer", "null" ]
                      },
                      "created_at" : {
                        "type" : "string"
                      },
                      "updated_at" : {
                        "type" : "string"
                      },
                      "type" : "object",
                      "properties" : {
                        "id" : {
                          "type" : "integer"
                        },
                        "asset_id" : {
                          "type" : "integer"
                        },
                        "account_id" : {
                          "type" : "integer"
                        },
                        "type" : "object",
                        "properties" : { },
                        "created_at" : {
                          "type" : "string"
                        },
                        "updated_at" : {
                          "type" : "string"
                        },
                        "override_alert_agent_offline_mins" : {
                          "nullable" : true
                        },
                        "override_alert_agent_rearm_after_mins" : {
                          "nullable" : true
                        },
                        "override_low_hd_threshold" : {
                          "nullable" : true
                        },
                        "override_autoresolve_offline_alert" : {
                          "nullable" : true
                        },
                        "override_low_hd_thresholds" : {
                          "nullable" : true
                        }
                      },
                      "asset_type" : {
                        "type" : "string"
                      },
                      "asset_serial" : {
                        "type" : "string"
                      },
                      "external_rmm_link" : {
                        "type" : [ "null" ]
                      },
                      "customer" : {
                        "type" : [ "null" ]
                      },
                      "rmm_links" : {
                        "type" : "array",
                        "items" : [ ]
                      },
                      "has_live_chat" : {
                        "type" : "boolean"
                      },
                      "snmp_enabled" : {
                        "type" : [ "boolean", "null" ]
                      }
                    }
                  },
                  "required" : [ ]
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      },
      "put" : {
        "summary" : "Updates an existing Asset by ID",
        "tags" : [ "Asset" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Assets - Edit\nSingle-Customer Users can only access own assets.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "asset_type_name" : {
                    "type" : "string"
                  },
                  "asset_type_id" : {
                    "type" : "integer"
                  },
                  "properties" : {
                    "type" : "object"
                  },
                  "name" : {
                    "type" : "string"
                  },
                  "customer_id" : {
                    "type" : "integer"
                  },
                  "asset_serial" : {
                    "type" : "string"
                  }
                },
                "required" : [ "name" ]
              }
            }
          },
          "description" : "Asset object that needs to be updated"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "*/*" : {
                "schema" : {
                  "type" : "object",
                  "properties" : {
                    "type" : "object",
                    "properties" : {
                      "id" : {
                        "type" : "integer"
                      },
                      "name" : {
                        "type" : "string"
                      },
                      "customer_id" : {
                        "type" : [ "integer", "null" ]
                      },
                      "contact_id" : {
                        "type" : [ "integer", "null" ]
                      },
                      "created_at" : {
                        "type" : "string"
                      },
                      "updated_at" : {
                        "type" : "string"
                      },
                      "type" : "object",
                      "properties" : {
                        "id" : {
                          "type" : "integer"
                        },
                        "asset_id" : {
                          "type" : "integer"
                        },
                        "account_id" : {
                          "type" : "integer"
                        },
                        "type" : "object",
                        "properties" : { },
                        "created_at" : {
                          "type" : "string"
                        },
                        "updated_at" : {
                          "type" : "string"
                        },
                        "override_alert_agent_offline_mins" : {
                          "nullable" : true
                        },
                        "override_alert_agent_rearm_after_mins" : {
                          "nullable" : true
                        },
                        "override_low_hd_threshold" : {
                          "nullable" : true
                        },
                        "override_autoresolve_offline_alert" : {
                          "nullable" : true
                        },
                        "override_low_hd_thresholds" : {
                          "nullable" : true
                        }
                      },
                      "asset_type" : {
                        "type" : "string"
                      },
                      "asset_serial" : {
                        "type" : "string"
                      },
                      "external_rmm_link" : {
                        "type" : [ "null" ]
                      },
                      "customer" : {
                        "type" : [ "null" ]
                      },
                      "rmm_links" : {
                        "type" : "array",
                        "items" : [ ]
                      },
                      "has_live_chat" : {
                        "type" : "boolean"
                      },
                      "snmp_enabled" : {
                        "type" : [ "boolean", "null" ]
                      }
                    }
                  },
                  "required" : [ ]
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : false,
                  "message" : [ "Asset type can't be blank" ]
                }
              }
            }
          }
        }
      }
    },
    "/customer_assets/{id}/installed_applications" : {
      "get" : {
        "summary" : "Retrieves installed applications for an Asset",
        "tags" : [ "Asset" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Assets - List/Search\nSingle-Customer Users can only access own assets.\n\nReturns a paginated list of software installed on the asset.\nThe `installed_at` date falls back to `created_at` when no explicit installation date is recorded.\n",
        "parameters" : [
          {
            "name" : "id",
            "in" : "path",
            "description" : "Asset ID",
            "required" : true,
            "schema" : {
              "type" : "integer"
            }
          },
          {
            "name" : "page",
            "in" : "query",
            "description" : "Page number (default: 1)",
            "required" : false,
            "schema" : {
              "type" : "integer"
            }
          },
          {
            "name" : "per_page",
            "in" : "query",
            "description" : "Records per page (default: 100, max: 100)",
            "required" : false,
            "schema" : {
              "type" : "integer"
            }
          }
        ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "examples" : {
                  "example_0" : {
                    "value" : {
                      "installed_applications" : [
                        {
                          "name" : "Google Chrome",
                          "vendor" : "Google LLC",
                          "version" : "123.0.0",
                          "installed_at" : "2026-01-15"
                        },
                        {
                          "name" : "Emsisoft Anti-Malware",
                          "vendor" : "Emsisoft",
                          "version" : "2024.1.0.0",
                          "installed_at" : "2025-11-20"
                        }
                      ],
                      "meta" : {
                        "total_pages" : 1,
                        "total_entries" : 2,
                        "per_page" : 100,
                        "page" : 1
                      }
                    }
                  }
                },
                "schema" : {
                  "type" : "object",
                  "required" : [ "installed_applications", "meta" ],
                  "properties" : {
                    "installed_applications" : {
                      "type" : "array",
                      "items" : {
                        "type" : "object",
                        "required" : [ "name" ],
                        "properties" : {
                          "name" : {
                            "type" : "string",
                            "description" : "Application name"
                          },
                          "vendor" : {
                            "type" : [ "string", "null" ],
                            "description" : "Software vendor"
                          },
                          "version" : {
                            "type" : [ "string", "null" ],
                            "description" : "Installed version"
                          },
                          "installed_at" : {
                            "type" : [ "string", "null" ],
                            "format" : "date",
                            "description" : "Installation date. Falls back to first-seen date when not recorded."
                          }
                        }
                      }
                    },
                    "meta" : {
                      "type" : "object",
                      "required" : [ "total_pages", "total_entries", "per_page", "page" ],
                      "properties" : {
                        "total_pages" : {
                          "type" : "integer"
                        },
                        "total_entries" : {
                          "type" : "integer"
                        },
                        "per_page" : {
                          "type" : "integer"
                        },
                        "page" : {
                          "type" : "integer"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404" : {
            "description" : "asset not found",
            "content" : {
              "application/json" : {
                "examples" : {
                  "example_0" : {
                    "value" : {
                      "error" : "Asset not found"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/callerid" : {
      "get" : {
        "summary" : "Get Caller ID",
        "tags" : [ "Call" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "parameters" : [ {
          "name" : "did",
          "in" : "query",
          "description" : "Phone number",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "outbound",
          "in" : "query",
          "schema" : {
            "type" : "boolean"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "data" : {
                    "name" : "Walking Customer",
                    "ticket_status" : "Open"
                  }
                }
              },
              "text/plain" : {
                "example" : "Walking Customer"
              }
            }
          }
        }
      }
    },
    "/canned_responses": {
      "get": {
        "summary": "Returns a list of Canned Responses with a query",
        "tags": [
          "Canned Response"
        ],
        "security": [
          {
            "bearerAuth": [

            ]
          }
        ],
        "description": "Required permission: Ticket Canned Responses - Manage\n",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "Search query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful",
            "content": {
              "application/json": {
                "examples": {
                  "example_0": {
                    "value": {
                      "canned_responses": [
                        {
                          "id": 1,
                          "title": "Test Canned Response",
                          "body": "This is a test canned response",
                          "subject": "Test Subject",
                          "canned_response_category_id": 1,
                          "category_name": "Test Category"
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Creates a new Canned Response",
        "tags": [
          "Canned Response"
        ],
        "security": [
          {
            "bearerAuth": [

            ]
          }
        ],
        "description": "Required permission: Ticket Canned Responses - Manage\n",
        "parameters": [

        ],
        "responses": {
          "201": {
            "description": "successful"
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string"
                  },
                  "body": {
                    "type": "string"
                  },
                  "subject": {
                    "type": "string"
                  },
                  "canned_response_category_id": {
                    "type": "integer"
                  }
                },
                "required": [
                  "title",
                  "body"
                ]
              }
            }
          }
        }
      }
    },
    "/canned_responses/{id}": {
      "patch": {
        "summary": "Updates a Canned Response",
        "tags": [
          "Canned Response"
        ],
        "security": [
          {
            "bearerAuth": [

            ]
          }
        ],
        "description": "Required permission: Ticket Canned Responses - Manage\n",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful"
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string"
                  },
                  "body": {
                    "type": "string"
                  },
                  "subject": {
                    "type": "string"
                  },
                  "canned_response_category_id": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Deletes a Canned Response",
        "tags": [
          "Canned Response"
        ],
        "security": [
          {
            "bearerAuth": [

            ]
          }
        ],
        "description": "Required permission: Ticket Canned Responses - Manage\n",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "successful"
          }
        }
      }
    },
    "/canned_responses/settings": {
      "get": {
        "summary": "Returns the settings for Canned Responses",
        "tags": [
          "Canned Response"
        ],
        "security": [
          {
            "bearerAuth": [

            ]
          }
        ],
        "description": "Required permission: Ticket Canned Responses - Manage\nSingle-Customer Users can only access own canned responses.\n",
        "responses": {
          "200": {
            "description": "successful",
            "content": {
              "application/json": {
                "examples": {
                  "example_0": {
                    "value": {
                      "canned_response_categories": [
                        {
                          "id": 1,
                          "name": "Test Category"
                        }
                      ],
                      "subjects": [
                        "Test Subject",
                        "Test Subject 2"
                      ],
                      "can_manage": true
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/contacts" : {
      "get" : {
        "summary" : "Returns a paginated list of Contacts",
        "tags" : [ "Contact" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Customers - View Detail\nSingle-Customer Users can only access own contacts.\n",
        "parameters" : [ {
          "name" : "customer_id",
          "in" : "query",
          "description" : "Any contacts attached to a Customer ID",
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "description" : "Returns provided page of results, each 'page' contains 25 results",
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "contacts" : [ {
                    "id" : 1,
                    "name" : "Boba Fett",
                    "address1" : "8653 Ivan Flat",
                    "address2" : "Apt. 436",
                    "city" : "Tuanside",
                    "state" : "Delaware",
                    "zip" : "02293",
                    "email" : "jarviscorwin@hanefeeney.io",
                    "phone" : "657.325.3258 x330",
                    "mobile" : "(133) 358-5295",
                    "latitude" : 67.92905002829,
                    "longitude" : 91.6028665875294,
                    "customer_id" : 1,
                    "account_id" : 1,
                    "notes" : "Talk Jabba. (Tell that to Jabba.)",
                    "created_at" : "2019-10-22T08:47:09.723Z",
                    "updated_at" : "2019-10-22T08:47:09.723Z",
                    "vendor_id" : null,
                    "properties" : { },
                    "opt_out" : false,
                    "extension" : null,
                    "enable_portal_user" : false
                  } ],
                  "meta" : {
                    "total_pages" : 1,
                    "total_entries" : 1,
                    "per_page" : 50,
                    "page" : 1
                  }
                }
              }
            }
          },
          "401" : {
            "description" : "Requires permission: Customers - View Detail",
            "content" : {
              "application/json" : {
                "example" : {
                  "error" : "Not authorized. Please ask account admin to update your group permissions."
                }
              }
            }
          }
        }
      },
      "post" : {
        "summary" : "Creates a Contact",
        "tags" : [ "Contact" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Customers - Edit\nSingle-Customer Users can only access own contacts.\n",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "customer_id" : {
                    "type" : "integer"
                  },
                  "name" : {
                    "type" : "string"
                  },
                  "address1" : {
                    "type" : "string"
                  },
                  "address2" : {
                    "type" : "string"
                  },
                  "city" : {
                    "type" : "string"
                  },
                  "state" : {
                    "type" : "string"
                  },
                  "zip" : {
                    "type" : "string"
                  },
                  "email" : {
                    "type" : "string"
                  },
                  "phone" : {
                    "type" : "string"
                  },
                  "mobile" : {
                    "type" : "string"
                  },
                  "notes" : {
                    "type" : "string"
                  },
                  "extension" : {
                    "type" : "string"
                  },
                  "enable_portal_user" : {
                    "type" : "boolean",
                    "description" : "Creates or removes a Portal User login for this contact. Requires a valid email when set to true."
                  }
                },
                "required" : [ "customer_id" ]
              }
            }
          },
          "description" : "Contact object that needs to be added"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "id" : 1,
                  "name" : "Boba Fett",
                  "address1" : "8653 Ivan Flat",
                  "address2" : "Apt. 436",
                  "city" : "Tuanside",
                  "state" : "Delaware",
                  "zip" : "02293",
                  "email" : "jarviscorwin@hanefeeney.io",
                  "phone" : "657.325.3258 x330",
                  "mobile" : "(133) 358-5295",
                  "latitude" : 67.92905002829,
                  "longitude" : 91.6028665875294,
                  "customer_id" : 1,
                  "account_id" : 1,
                  "notes" : "Talk Jabba. (Tell that to Jabba.)",
                  "created_at" : "2019-10-22T08:47:09.723Z",
                  "updated_at" : "2019-10-22T08:47:09.723Z",
                  "vendor_id" : null,
                  "properties" : { },
                  "opt_out" : false,
                  "extension" : null,
                  "enable_portal_user" : false
                }
              }
            }
          },
          "401" : {
            "description" : "Requires permission: Customers - Edit",
            "content" : {
              "application/json" : {
                "example" : {
                  "error" : "Not authorized. Please ask account admin to update your group permissions."
                }
              }
            }
          },
          "404" : {
            "description" : "Customer not found",
            "content" : {
              "application/json" : {
                "example" : {
                  "message" : "Not found"
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "record" : {
                    "id" : null,
                    "name" : "Bad Email",
                    "address1" : null,
                    "address2" : null,
                    "city" : null,
                    "state" : null,
                    "zip" : null,
                    "email" : "xxx",
                    "phone" : null,
                    "mobile" : null,
                    "latitude" : null,
                    "longitude" : null,
                    "customer_id" : 1,
                    "account_id" : 1,
                    "notes" : null,
                    "created_at" : null,
                    "updated_at" : null,
                    "vendor_id" : null,
                    "properties" : { },
                    "opt_out" : false,
                    "extension" : null,
                    "enable_portal_user" : false,
                    "processed_phone" : null,
                    "processed_mobile" : null
                  },
                  "errors" : "Email is not an email"
                }
              }
            }
          }
        }
      }
    },
    "/contacts/{id}" : {
      "get" : {
        "summary" : "Retrieves a Contact by ID",
        "tags" : [ "Contact" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Customers - View Detail\nSingle-Customer Users can only access own contacts.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "*/*" : {
                "schema" : {
                  "type" : "object",
                  "properties" : {
                    "id" : {
                      "type" : "integer"
                    },
                    "name" : {
                      "type" : "string"
                    },
                    "address1" : {
                      "type" : "string",
                      "nullable" : true
                    },
                    "address2" : {
                      "type" : "string",
                      "nullable" : true
                    },
                    "city" : {
                      "type" : "string",
                      "nullable" : true
                    },
                    "state" : {
                      "type" : "string",
                      "nullable" : true
                    },
                    "zip" : {
                      "type" : "string",
                      "nullable" : true
                    },
                    "email" : {
                      "type" : "string",
                      "nullable" : true
                    },
                    "phone" : {
                      "type" : "string",
                      "nullable" : true
                    },
                    "mobile" : {
                      "type" : "string",
                      "nullable" : true
                    },
                    "latitude" : {
                      "type" : "number",
                      "nullable" : true
                    },
                    "longitud" : {
                      "type" : "number",
                      "nullable" : true
                    },
                    "customer_id" : {
                      "type" : "integer",
                      "nullable" : true
                    },
                    "account_id" : {
                      "type" : "integer"
                    },
                    "notes" : {
                      "type" : "string",
                      "nullable" : true
                    },
                    "created_at" : {
                      "type" : "string",
                      "format" : "date-time"
                    },
                    "updated_at" : {
                      "type" : "string",
                      "format" : "date-time"
                    },
                    "vendor_id" : {
                      "type" : "number",
                      "nullable" : true
                    },
                    "properties" : {
                      "type" : "object",
                      "properties" : { }
                    },
                    "opt_out" : {
                      "type" : "boolean"
                    },
                    "extension" : {
                      "type" : "string",
                      "nullable" : true
                    },
                    "enable_portal_user" : {
                      "type" : "boolean",
                      "nullable" : true
                    }
                  }
                }
              }
            }
          },
          "401" : {
            "description" : "Requires permission: Customers - View Detail",
            "content" : {
              "application/json" : {
                "example" : {
                  "error" : "Not authorized. Please ask account admin to update your group permissions."
                }
              }
            }
          },
          "404" : {
            "description" : "Single-Customer User cannot view other customers' contacts",
            "content" : {
              "application/json" : {
                "example" : {
                  "message" : "Not found"
                }
              }
            }
          }
        }
      },
      "put" : {
        "summary" : "Updates an existing Contact",
        "tags" : [ "Contact" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Customers - Edit\nSingle-Customer Users can only access own contacts.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "customer_id" : {
                    "type" : "integer"
                  },
                  "name" : {
                    "type" : "string"
                  },
                  "address1" : {
                    "type" : "string"
                  },
                  "address2" : {
                    "type" : "string"
                  },
                  "city" : {
                    "type" : "string"
                  },
                  "state" : {
                    "type" : "string"
                  },
                  "zip" : {
                    "type" : "string"
                  },
                  "email" : {
                    "type" : "string"
                  },
                  "phone" : {
                    "type" : "string"
                  },
                  "title" : {
                    "type" : "string"
                  },
                  "mobile" : {
                    "type" : "string"
                  },
                  "notes" : {
                    "type" : "string"
                  },
                  "extension" : {
                    "type" : "string"
                  },
                  "enable_portal_user" : {
                    "type" : "boolean",
                    "description" : "Creates or removes a Portal User login for this contact. Requires a valid email when set to true."
                  }
                },
                "required" : [ "name" ]
              }
            }
          },
          "description" : "Contact object that needs to be updated"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "id" : 1,
                  "name" : "Boba Fett",
                  "address1" : "8653 Ivan Flat",
                  "address2" : "Apt. 436",
                  "city" : "Tuanside",
                  "state" : "Delaware",
                  "zip" : "02293",
                  "email" : "jarviscorwin@hanefeeney.io",
                  "phone" : "657.325.3258 x330",
                  "mobile" : "(133) 358-5295",
                  "latitude" : 67.92905002829,
                  "longitude" : 91.6028665875294,
                  "customer_id" : 1,
                  "account_id" : 1,
                  "notes" : "Talk Jabba. (Tell that to Jabba.)",
                  "created_at" : "2019-10-22T08:47:09.723Z",
                  "updated_at" : "2019-10-22T08:47:09.723Z",
                  "vendor_id" : null,
                  "properties" : { },
                  "opt_out" : false,
                  "extension" : null,
                  "enable_portal_user" : false
                }
              }
            }
          },
          "401" : {
            "description" : "Requires permission: Customers - Edit",
            "content" : {
              "application/json" : {
                "example" : {
                  "error" : "Not authorized. Please ask account admin to update your group permissions."
                }
              }
            }
          },
          "404" : {
            "description" : "Single-Customer User cannot view other customers' contacts",
            "content" : {
              "application/json" : {
                "example" : {
                  "message" : "Not found"
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "record" : {
                    "id" : 1,
                    "name" : "Boba Fett",
                    "address1" : "8653 Ivan Flat",
                    "address2" : "Apt. 436",
                    "city" : "Tuanside",
                    "state" : "Delaware",
                    "zip" : "02293",
                    "email" : "jarviscorwin@hanefeeney.io",
                    "phone" : "657.325.3258 x330",
                    "mobile" : "(133) 358-5295",
                    "latitude" : 67.92905002829,
                    "longitude" : 91.6028665875294,
                    "customer_id" : 1,
                    "account_id" : 1,
                    "notes" : "Talk Jabba. (Tell that to Jabba.)",
                    "created_at" : "2019-10-22T08:47:09.723Z",
                    "updated_at" : "2019-10-22T08:47:09.723Z",
                    "vendor_id" : null,
                    "properties" : { },
                    "opt_out" : false,
                    "extension" : null,
                    "enable_portal_user" : false
                  },
                  "errors" : "Customer can't be blank"
                }
              }
            }
          }
        }
      },
      "delete" : {
        "summary" : "Deletes a Contact",
        "tags" : [ "Contact" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Customers - Edit\nSingle-Customer Users can only access own contacts.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful"
          },
          "401" : {
            "description" : "Requires permission: Customers - Edit",
            "content" : {
              "application/json" : {
                "example" : {
                  "error" : "Not authorized. Please ask account admin to update your group permissions."
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      }
    },
    "/contracts" : {
      "get" : {
        "summary" : "Returns a paginated list of Contracts",
        "tags" : [ "Contract" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Contracts - List/Search\n",
        "parameters" : [ {
          "name" : "page",
          "in" : "query",
          "description" : "Returns provided page of results, each 'page' contains 50 results",
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "contracts" : [ {
                    "id" : 1,
                    "account_id" : 1,
                    "customer_id" : 1,
                    "name" : "Support Tier 1",
                    "contract_amount" : "30k",
                    "start_date" : "2019-10-23T00:00:00.000Z",
                    "end_date" : "2020-10-22T00:00:00.000Z",
                    "primary_contact" : null,
                    "description" : "Contract Description",
                    "created_at" : "2019-10-22T10:00:55.392Z",
                    "updated_at" : "2019-10-22T10:00:55.392Z",
                    "status" : "Opportunity",
                    "likelihood" : 30,
                    "apply_to_all" : false,
                    "sla_id" : null
                  } ],
                  "meta" : {
                    "total_pages" : 1,
                    "total_entries" : 1,
                    "per_page" : 50,
                    "page" : 1
                  }
                }
              }
            }
          }
        }
      },
      "post" : {
        "summary" : "Creates a Contract",
        "tags" : [ "Contract" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Contracts - Edit\n",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "contract_amount" : {
                    "type" : "string"
                  },
                  "customer_id" : {
                    "type" : "integer"
                  },
                  "description" : {
                    "type" : "string"
                  },
                  "start_date" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "end_date" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "name" : {
                    "type" : "string"
                  },
                  "primary_contact" : {
                    "type" : "string"
                  },
                  "status" : {
                    "type" : "string"
                  },
                  "likelihood" : {
                    "type" : "integer"
                  },
                  "apply_to_all" : {
                    "type" : "boolean"
                  },
                  "sla_id" : {
                    "type" : "integer"
                  }
                },
                "required" : [ "customer_id" ]
              }
            }
          },
          "description" : "Contract object that needs to be added"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "id" : 1,
                  "account_id" : 1,
                  "customer_id" : 1,
                  "name" : "Support Tier 1",
                  "contract_amount" : "30k",
                  "start_date" : "2019-10-23T00:00:00.000Z",
                  "end_date" : "2020-10-22T00:00:00.000Z",
                  "primary_contact" : null,
                  "description" : "Contract Description",
                  "created_at" : "2019-10-22T10:00:55.392Z",
                  "updated_at" : "2019-10-22T10:00:55.392Z",
                  "status" : "Opportunity",
                  "likelihood" : 30,
                  "apply_to_all" : false,
                  "sla_id" : null
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "record" : {
                    "id" : null,
                    "account_id" : 1,
                    "customer_id" : null,
                    "name" : "No Customer",
                    "contract_amount" : null,
                    "start_date" : null,
                    "end_date" : null,
                    "primary_contact" : null,
                    "description" : "No Customer",
                    "created_at" : null,
                    "updated_at" : null,
                    "status" : "Opportunity",
                    "likelihood" : 0,
                    "apply_to_all" : false,
                    "sla_id" : null
                  },
                  "errors" : "Customer can't be blank"
                }
              }
            }
          }
        }
      }
    },
    "/contracts/{id}" : {
      "get" : {
        "summary" : "Retrieves a Contract by ID",
        "tags" : [ "Contract" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Contracts - Edit\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "id" : 1,
                  "account_id" : 1,
                  "customer_id" : 1,
                  "name" : "Support Tier 1",
                  "contract_amount" : "30k",
                  "start_date" : "2019-10-23T00:00:00.000Z",
                  "end_date" : "2020-10-22T00:00:00.000Z",
                  "primary_contact" : null,
                  "description" : "Contract Description",
                  "created_at" : "2019-10-22T10:00:55.392Z",
                  "updated_at" : "2019-10-22T10:00:55.392Z",
                  "status" : "Opportunity",
                  "likelihood" : 30,
                  "apply_to_all" : false,
                  "sla_id" : null
                }
              }
            }
          }
        }
      },
      "put" : {
        "summary" : "Updates an existing Contract by ID",
        "tags" : [ "Contract" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Contracts - Edit\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "contract_amount" : {
                    "type" : "string"
                  },
                  "customer_id" : {
                    "type" : "integer"
                  },
                  "description" : {
                    "type" : "string"
                  },
                  "start_date" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "end_date" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "name" : {
                    "type" : "string"
                  },
                  "primary_contact" : {
                    "type" : "string"
                  },
                  "status" : {
                    "type" : "string"
                  },
                  "likelihood" : {
                    "type" : "integer"
                  },
                  "apply_to_all" : {
                    "type" : "boolean"
                  },
                  "sla_id" : {
                    "type" : "integer"
                  }
                },
                "required" : [ "customer_id" ]
              }
            }
          },
          "description" : "Contract object that needs to be updated"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "id" : 1,
                  "account_id" : 1,
                  "customer_id" : 1,
                  "name" : "Support Tier 1",
                  "contract_amount" : "30k",
                  "start_date" : "2019-10-23T00:00:00.000Z",
                  "end_date" : "2020-10-22T00:00:00.000Z",
                  "primary_contact" : null,
                  "description" : "Contract Description",
                  "created_at" : "2019-10-22T10:00:55.392Z",
                  "updated_at" : "2019-10-22T10:00:55.392Z",
                  "status" : "Opportunity",
                  "likelihood" : 30,
                  "apply_to_all" : false,
                  "sla_id" : null
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "record" : {
                    "id" : 1,
                    "account_id" : 1,
                    "customer_id" : 1,
                    "name" : "Support Tier 1",
                    "contract_amount" : "30k",
                    "start_date" : "2019-10-23T00:00:00.000Z",
                    "end_date" : "2020-10-22T00:00:00.000Z",
                    "primary_contact" : null,
                    "description" : "Contract Description",
                    "created_at" : "2019-10-22T10:00:55.392Z",
                    "updated_at" : "2019-10-22T10:00:55.392Z",
                    "status" : "Opportunity",
                    "likelihood" : 30,
                    "apply_to_all" : false,
                    "sla_id" : null
                  },
                  "errors" : "Customer can't be blank"
                }
              }
            }
          }
        }
      },
      "delete" : {
        "summary" : "Deletes a Contract by ID",
        "tags" : [ "Contract" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Contracts - Delete\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful"
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      }
    },
    "/customers" : {
      "get" : {
        "summary" : "Returns a paginated list of customers",
        "tags" : [ "Customer" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Customers - List/Search\nSingle-Customer Users can only access own customer (self).\n",
        "parameters" : [ {
          "name" : "sort",
          "in" : "query",
          "required" : false,
          "description" : "A customer field to order by. Examples \"firstname ASC\", \"city DESC\".",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "query",
          "in" : "query",
          "required" : false,
          "description" : "Search query",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "firstname",
          "in" : "query",
          "required" : false,
          "description" : "Any customers with a first name like the parameter",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lastname",
          "in" : "query",
          "required" : false,
          "description" : "Any customers with a last name like the parameter",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "business_name",
          "in" : "query",
          "required" : false,
          "description" : "Any customers with a business name like the parameter",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "query",
          "required" : false,
          "description" : "Any customers with ID included in the list",
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "integer"
            }
          }
        }, {
          "name" : "not_id",
          "in" : "query",
          "required" : false,
          "description" : "Any customers with ID not included in the list",
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "integer"
            }
          }
        }, {
          "name" : "email",
          "in" : "query",
          "required" : false,
          "description" : "",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "include_disabled",
          "in" : "query",
          "required" : false,
          "description" : "Whether or not the returned list of customers includes disabled customers",
          "schema" : {
            "type" : "string",
            "default" : false
          }
        }, {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "description" : "Returns provided page of results, each 'page' contains 25 results",
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "customers" : [ {
                    "id" : 1,
                    "firstname" : "Walkin",
                    "lastname" : "Customer",
                    "fullname" : "Walkin Customer",
                    "business_name" : null,
                    "email" : "walkin@somedomain.com",
                    "phone" : "123",
                    "mobile" : null,
                    "created_at" : "2019-10-21T08:33:21.053Z",
                    "updated_at" : "2019-10-21T08:33:21.053Z",
                    "pdf_url" : null,
                    "address" : null,
                    "address_2" : null,
                    "city" : null,
                    "state" : null,
                    "zip" : null,
                    "latitude" : null,
                    "longitude" : null,
                    "notes" : null,
                    "get_sms" : false,
                    "opt_out" : false,
                    "disabled" : false,
                    "no_email" : true,
                    "location_name" : null,
                    "location_id" : null,
                    "properties" : { },
                    "online_profile_url" : "http://testsubdomainwi1.lvh.me//my_profile/v2/index?portal_key=81lcr4ua1parftzvbgk9",
                    "tax_rate_id" : null,
                    "notification_email" : null,
                    "invoice_cc_emails" : null,
                    "invoice_term_id" : null,
                    "referred_by" : null,
                    "ref_customer_id" : null,
                    "business_and_full_name" : "Walkin Customer",
                    "business_then_name" : "Walkin Customer",
                    "contacts" : [ ]
                  } ],
                  "meta" : {
                    "total_pages" : 1,
                    "total_entries" : 1,
                    "per_page" : 100,
                    "page" : 1
                  }
                }
              }
            }
          }
        }
      },
      "post" : {
        "summary" : "Creates a Customer",
        "tags" : [ "Customer" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Customers - Create\n",
        "requestBody" : {
          "$ref" : "#/components/requestBodies/Customer"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "customer" : {
                    "id" : 1,
                    "firstname" : "Walkin",
                    "lastname" : "Customer",
                    "fullname" : "Walkin Customer",
                    "business_name" : null,
                    "email" : "walkin@somedomain.com",
                    "phone" : "123",
                    "mobile" : null,
                    "created_at" : "2019-10-21T08:33:21.053Z",
                    "updated_at" : "2019-10-21T08:33:21.053Z",
                    "pdf_url" : null,
                    "address" : null,
                    "address_2" : null,
                    "city" : null,
                    "state" : null,
                    "zip" : null,
                    "latitude" : null,
                    "longitude" : null,
                    "notes" : null,
                    "get_sms" : false,
                    "opt_out" : false,
                    "disabled" : false,
                    "no_email" : true,
                    "location_name" : null,
                    "location_id" : null,
                    "properties" : { },
                    "online_profile_url" : "http://testsubdomainwi1.lvh.me//my_profile/v2/index?portal_key=81lcr4ua1parftzvbgk9",
                    "tax_rate_id" : null,
                    "notification_email" : null,
                    "invoice_cc_emails" : null,
                    "invoice_term_id" : null,
                    "referred_by" : null,
                    "ref_customer_id" : null,
                    "business_and_full_name" : "Walkin Customer",
                    "business_then_name" : "Walkin Customer",
                    "contacts" : [ ]
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : false,
                  "message" : [ "Email is not an email", "Email Only able to parse up to \"it is not an email\"" ],
                  "params" : {
                    "business_name" : "Real Business",
                    "firstname" : "First",
                    "lastname" : "Last",
                    "email" : "it is not an email"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/customers/{id}" : {
      "get" : {
        "summary" : "Retrieves a Customer by ID",
        "tags" : [ "Customer" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Customers - View Detail\nSingle-Customer Users can only access own customer (self).\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "customer" : {
                    "id" : 1,
                    "firstname" : "Walkin",
                    "lastname" : "Customer",
                    "fullname" : "Walkin Customer",
                    "business_name" : null,
                    "email" : "walkin@somedomain.com",
                    "phone" : "123",
                    "mobile" : null,
                    "created_at" : "2019-10-21T08:33:21.053Z",
                    "updated_at" : "2019-10-21T08:33:21.053Z",
                    "pdf_url" : null,
                    "address" : null,
                    "address_2" : null,
                    "city" : null,
                    "state" : null,
                    "zip" : null,
                    "latitude" : null,
                    "longitude" : null,
                    "notes" : null,
                    "get_sms" : false,
                    "opt_out" : false,
                    "disabled" : false,
                    "no_email" : true,
                    "location_name" : null,
                    "location_id" : null,
                    "properties" : { },
                    "online_profile_url" : "http://testsubdomainwi1.lvh.me//my_profile/v2/index?portal_key=81lcr4ua1parftzvbgk9",
                    "tax_rate_id" : null,
                    "notification_email" : null,
                    "invoice_cc_emails" : null,
                    "invoice_term_id" : null,
                    "referred_by" : null,
                    "ref_customer_id" : null,
                    "business_and_full_name" : "Walkin Customer",
                    "business_then_name" : "Walkin Customer",
                    "contacts" : [ ]
                  }
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      },
      "put" : {
        "summary" : "Updates an existing Customer by ID",
        "tags" : [ "Customer" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Customers - Edit\nSingle-Customer Users can only access own customer (self).\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "$ref" : "#/components/requestBodies/Customer"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "customer" : {
                    "id" : 1,
                    "firstname" : "Walkin",
                    "lastname" : "Customer",
                    "fullname" : "Walkin Customer",
                    "business_name" : null,
                    "email" : "walkin@somedomain.com",
                    "phone" : "123",
                    "mobile" : null,
                    "created_at" : "2019-10-21T08:33:21.053Z",
                    "updated_at" : "2019-10-21T08:33:21.053Z",
                    "pdf_url" : null,
                    "address" : null,
                    "address_2" : null,
                    "city" : null,
                    "state" : null,
                    "zip" : null,
                    "latitude" : null,
                    "longitude" : null,
                    "notes" : null,
                    "get_sms" : false,
                    "opt_out" : false,
                    "disabled" : false,
                    "no_email" : true,
                    "location_name" : null,
                    "location_id" : null,
                    "properties" : { },
                    "online_profile_url" : "http://testsubdomainwi1.lvh.me//my_profile/v2/index?portal_key=81lcr4ua1parftzvbgk9",
                    "tax_rate_id" : null,
                    "notification_email" : null,
                    "invoice_cc_emails" : null,
                    "invoice_term_id" : null,
                    "referred_by" : null,
                    "ref_customer_id" : null,
                    "business_and_full_name" : "Walkin Customer",
                    "business_then_name" : "Walkin Customer",
                    "contacts" : [ ]
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : false,
                  "message" : [ "Email is not an email", "Email Only able to parse up to \"not an email\"" ]
                }
              }
            }
          }
        }
      },
      "delete" : {
        "summary" : "Deletes a Customer by ID",
        "tags" : [ "Customer" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Customers - Delete\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "message" : "Customer was deleted from the system."
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      }
    },
    "/customers/latest" : {
      "get" : {
        "summary" : "Returns latest Customer",
        "tags" : [ "Customer" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Customers - Edit\nSingle-Customer Users can only access own customer (self).\n",
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "customer" : {
                    "id" : 1,
                    "firstname" : "Walkin",
                    "lastname" : "Customer",
                    "fullname" : "Walkin Customer",
                    "business_name" : null,
                    "email" : "walkin@somedomain.com",
                    "phone" : "123",
                    "mobile" : null,
                    "created_at" : "2019-10-21T08:33:21.053Z",
                    "updated_at" : "2019-10-21T08:33:21.053Z",
                    "pdf_url" : null,
                    "address" : null,
                    "address_2" : null,
                    "city" : null,
                    "state" : null,
                    "zip" : null,
                    "latitude" : null,
                    "longitude" : null,
                    "notes" : null,
                    "get_sms" : false,
                    "opt_out" : false,
                    "disabled" : false,
                    "no_email" : true,
                    "location_name" : null,
                    "location_id" : null,
                    "properties" : { },
                    "online_profile_url" : "http://testsubdomainwi1.lvh.me//my_profile/v2/index?portal_key=81lcr4ua1parftzvbgk9",
                    "tax_rate_id" : null,
                    "notification_email" : null,
                    "invoice_cc_emails" : null,
                    "invoice_term_id" : null,
                    "referred_by" : null,
                    "ref_customer_id" : null,
                    "business_and_full_name" : "Walkin Customer",
                    "business_then_name" : "Walkin Customer",
                    "contacts" : [ ]
                  }
                }
              }
            }
          }
        }
      }
    },
    "/customers/autocomplete" : {
      "get" : {
        "summary" : "Returns a paginated list of customers for autocomplete query",
        "tags" : [ "Customer" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "parameters" : [ {
          "name" : "query",
          "in" : "query",
          "description" : "Search query",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "customers" : [ {
                    "id" : 1,
                    "firstname" : "Walkin",
                    "lastname" : "Customer",
                    "fullname" : "Walkin Customer",
                    "business_name" : null,
                    "email" : "walkin@somedomain.com",
                    "phone" : "123",
                    "mobile" : null,
                    "created_at" : "2019-10-21T08:33:21.053Z",
                    "updated_at" : "2019-10-21T08:33:21.053Z",
                    "pdf_url" : null,
                    "address" : null,
                    "address_2" : null,
                    "city" : null,
                    "state" : null,
                    "zip" : null,
                    "latitude" : null,
                    "longitude" : null,
                    "notes" : null,
                    "get_sms" : false,
                    "opt_out" : false,
                    "disabled" : false,
                    "no_email" : true,
                    "location_name" : null,
                    "location_id" : null,
                    "properties" : { },
                    "online_profile_url" : "http://testsubdomainwi1.lvh.me//my_profile/v2/index?portal_key=81lcr4ua1parftzvbgk9",
                    "tax_rate_id" : null,
                    "notification_email" : null,
                    "invoice_cc_emails" : null,
                    "invoice_term_id" : null,
                    "referred_by" : null,
                    "ref_customer_id" : null,
                    "business_and_full_name" : "Walkin Customer",
                    "business_then_name" : "Walkin Customer",
                    "contacts" : [ ]
                  } ]
                }
              }
            }
          }
        }
      }
    },
    "/estimates" : {
      "get" : {
        "summary" : "Returns a paginated list of Estimates",
        "tags" : [ "Estimate" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Estimates - List/Search\n",
        "parameters" : [ {
          "name" : "mine",
          "in" : "query",
          "description" : "Returns estimates that belong to the current user",
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "status",
          "in" : "query",
          "description" : "Returns estimates with a given status. Possible values are 'approved' and 'declined'.",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "description" : "Returns provided page of results, each 'page' contains 50 results",
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "created_after",
          "in" : "query",
          "required" : false,
          "description" : "Returns RMM Alerts created after the date. Example \"2019-02-25\".",
          "schema" : {
            "type" : "string",
            "format" : "date-time"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "estimates" : [ {
                    "id" : 1,
                    "customer_id" : 1,
                    "customer_business_then_name" : "Walkin Customer",
                    "name" : "MyString",
                    "number" : "MyString",
                    "status" : "Fresh",
                    "created_at" : "2019-10-22T11:45:33.866Z",
                    "updated_at" : "2019-10-22T11:45:33.866Z",
                    "date" : "2013-10-08T14:16:10.000Z",
                    "subtotal" : "9.99",
                    "total" : "9.99",
                    "tax" : "9.99",
                    "ticket_id" : null,
                    "pdf_url" : null,
                    "location_id" : null,
                    "invoice_id" : null,
                    "employee" : "MyString"
                  } ],
                  "meta" : {
                    "total_pages" : 1,
                    "page" : 1
                  }
                }
              }
            }
          }
        }
      },
      "post" : {
        "summary" : "Creates an Estimate",
        "tags" : [ "Estimate" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Estimates - Create\n",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "number" : {
                    "type" : "string"
                  },
                  "name" : {
                    "type" : "string"
                  },
                  "date" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "customer_id" : {
                    "type" : "integer"
                  },
                  "note" : {
                    "type" : "string"
                  },
                  "status" : {
                    "type" : "string",
                    "description" : "Valid values are Fresh, Draft, Approved, Declined."
                  },
                  "ticket_id" : {
                    "type" : "integer"
                  },
                  "location_id" : {
                    "type" : "integer"
                  },
                  "line_items" : {
                    "type" : "array",
                    "description" : "Array of Line Items.",
                    "items" : {
                      "type" : "object",
                      "properties" : {
                        "item" : {
                          "type" : "string"
                        },
                        "name" : {
                          "type" : "string"
                        },
                        "product_id" : {
                          "type" : "integer"
                        },
                        "quantity" : {
                          "type" : "integer"
                        }
                      }
                    }
                  },
                  "created_at" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "updated_at" : {
                    "type" : "string",
                    "format" : "date-time"
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "estimate" : {
                    "id" : 1,
                    "customer_id" : 1,
                    "name": "MyString",
                    "customer_business_then_name" : "Walkin Customer",
                    "number" : "MyString",
                    "status" : "Fresh",
                    "created_at" : "2019-10-22T11:45:33.866Z",
                    "updated_at" : "2019-10-22T11:45:33.866Z",
                    "date" : "2013-10-08T14:16:10.000Z",
                    "subtotal" : "9.99",
                    "total" : "9.99",
                    "tax" : "9.99",
                    "ticket_id" : null,
                    "pdf_url" : null,
                    "location_id" : null,
                    "invoice_id" : null,
                    "employee" : "MyString"
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "customer_id" : [ "can't be blank" ],
                  "date" : [ "can't be blank" ]
                }
              }
            }
          }
        }
      }
    },
    "/estimates/{id}" : {
      "get" : {
        "summary" : "Retrieves an Estimate by ID or number",
        "tags" : [ "Estimate" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Estimates - View Details\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Estimate ID",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "number",
          "in" : "query",
          "description" : "Estimate number is used when the server cannot find an Estimate by ID",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "estimate" : {
                    "id" : 1,
                    "customer_id" : 1,
                    "customer_business_then_name" : "Walkin Customer",
                    "name": "MyString",
                    "number" : "MyString",
                    "status" : "Fresh",
                    "created_at" : "2019-10-22T11:45:33.866Z",
                    "updated_at" : "2019-10-22T11:45:33.866Z",
                    "date" : "2013-10-08T14:16:10.000Z",
                    "subtotal" : "9.99",
                    "total" : "9.99",
                    "tax" : "9.99",
                    "ticket_id" : null,
                    "pdf_url" : null,
                    "location_id" : null,
                    "invoice_id" : null,
                    "employee" : "MyString"
                  }
                }
              }
            }
          }
        }
      },
      "put" : {
        "summary" : "Updates an existing Estimate by ID",
        "tags" : [ "Estimate" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Estimates - Edit\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "number" : {
                    "type" : "string"
                  },
                  "name" : {
                    "type" : "string"
                  },
                  "date" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "customer_id" : {
                    "type" : "integer"
                  },
                  "note" : {
                    "type" : "string"
                  },
                  "status" : {
                    "type" : "string",
                    "description" : "Valid values are Fresh, Draft, Approved, Declined."
                  },
                  "ticket_id" : {
                    "type" : "integer"
                  },
                  "location_id" : {
                    "type" : "integer"
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "estimate" : {
                    "id" : 1,
                    "customer_id" : 1,
                    "customer_business_then_name" : "Walkin Customer",
                    "name" : "MyString",
                    "number" : "MyString",
                    "status" : "Fresh",
                    "created_at" : "2019-10-22T11:45:33.866Z",
                    "updated_at" : "2019-10-22T11:45:33.866Z",
                    "date" : "2013-10-08T14:16:10.000Z",
                    "subtotal" : "9.99",
                    "total" : "9.99",
                    "tax" : "9.99",
                    "ticket_id" : null,
                    "pdf_url" : null,
                    "location_id" : null,
                    "invoice_id" : null,
                    "employee" : "MyString"
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "date" : [ "can't be blank" ]
                }
              }
            }
          }
        }
      },
      "delete" : {
        "summary" : "Deletes an Estimate by ID",
        "tags" : [ "Estimate" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Estimates - Delete\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "message" : "1: We deleted # 123"
                }
              }
            }
          }
        }
      }
    },
    "/estimates/{id}/print" : {
      "post" : {
        "summary" : "Queues a print job for an Estimate",
        "tags" : [ "Estimate" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Estimates - View Details\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "message" : "We queued up a print job"
                }
              }
            }
          }
        }
      }
    },
    "/estimates/{id}/email" : {
      "post" : {
        "summary" : "Sends an Estimate to a Customer",
        "tags" : [ "Estimate" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Estimates - View Details\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "message" : "We queued up a print job"
                }
              }
            }
          }
        }
      }
    },
    "/estimates/{id}/line_items" : {
      "post" : {
        "summary" : "Adds a Line Item to an Estimate",
        "tags" : [ "Estimate" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Estimates - Edit\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "$ref" : "#/components/requestBodies/LineItem"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "estimate" : {
                    "account_id" : 1,
                    "id" : 11,
                    "updated_at" : "2019-10-25T11:31:02.793Z",
                    "customer_id" : 1,
                    "employee" : "MyString",
                    "payment_type" : "MyString",
                    "number" : "MyString",
                    "labor" : "9.99",
                    "total" : "0.0",
                    "subtotal" : "0.0",
                    "tax" : "0.0",
                    "paid" : false,
                    "date" : "2013-10-08T14:16:10.000Z",
                    "status_date" : "2013-10-08T14:16:10.000Z",
                    "status_changed_by" : null,
                    "notax" : false,
                    "ticket_id" : null,
                    "note" : "MyText",
                    "category" : "MyString",
                    "hardwarecost" : "0.0",
                    "location_id" : null,
                    "pdf" : {
                      "url" : null
                    },
                    "signature_data" : "MyText",
                    "signature_name" : "MyString",
                    "created_at" : "2019-10-25T11:31:02.688Z",
                    "invoice_id" : null,
                    "contact_id" : null,
                    "tax_rate_id" : 1,
                    "converted_at" : null,
                    "last_emailed" : null,
                    "status" : "Fresh",
                    "disabled" : false,
                    "signature_date" : null,
                    "multi_tax" : null,
                    "name" : null
                  },
                  "line_item" : {
                    "id" : 1,
                    "created_at" : "2019-10-25T11:31:02.763Z",
                    "updated_at" : "2019-10-25T11:31:02.763Z",
                    "invoice_id" : null,
                    "item" : "Manual Item",
                    "name" : "Item Name",
                    "cost" : "0.0",
                    "price" : "0.0",
                    "quantity" : "1.0",
                    "product_id" : null,
                    "taxable" : true,
                    "discount_percent" : null,
                    "position" : 1,
                    "invoice_bundle_id" : null,
                    "discount_dollars" : null
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "errors" : "validation error: Item can't be blank"
                }
              }
            }
          }
        }
      }
    },
    "/estimates/{id}/convert_to_invoice" : {
      "post" : {
        "summary" : "Convert an Estimate to an Invoice",
        "tags" : [ "Estimate" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permissions: \"Estimates - View Details\" and \"Invoices - Create\"\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "invoice" : {
                    "id" : 1,
                    "customer_id" : 1,
                    "customer_business_then_name" : "Walkin Customer",
                    "number" : "1001",
                    "created_at" : "2019-10-25T11:53:10.575Z",
                    "updated_at" : "2019-10-25T11:53:10.609Z",
                    "date" : "2019-10-25T00:00:00.000Z",
                    "due_date" : "2019-10-25T00:00:00.000Z",
                    "subtotal" : "0.0",
                    "total" : "0.0",
                    "tax" : "0.0",
                    "verified_paid" : false,
                    "tech_marked_paid" : false,
                    "ticket_id" : null,
                    "pdf_url" : null,
                    "is_paid" : false,
                    "location_id" : null,
                    "po_number" : null,
                    "contact_id" : null,
                    "note" : null,
                    "hardwarecost" : "0.0"
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "error" : "Validation failed: Item can't be blank, Name can't be blank"
                }
              }
            }
          }
        }
      }
    },
    "/estimates/{id}/line_items/{line_item_id}" : {
      "put" : {
        "summary" : "Updates a Line Item",
        "tags" : [ "Estimate" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Estimates - Edit\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "line_item_id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "$ref" : "#/components/requestBodies/LineItem"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "line_item" : {
                    "id" : 3,
                    "created_at" : "2019-10-25T12:43:19.817Z",
                    "updated_at" : "2019-10-25T12:43:19.839Z",
                    "invoice_id" : null,
                    "item" : "New Updated Item",
                    "name" : "Some big thingy",
                    "cost" : "10.0",
                    "price" : "64.99",
                    "quantity" : "1.0",
                    "product_id" : null,
                    "taxable" : true,
                    "discount_percent" : null,
                    "position" : 1,
                    "invoice_bundle_id" : null,
                    "discount_dollars" : null
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "item" : [ "can't be blank" ]
                }
              }
            }
          }
        }
      },
      "delete" : {
        "summary" : "Deletes a Line Item",
        "tags" : [ "Estimate" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Estimates - Edit\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "line_item_id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "estimate" : {
                    "id" : 1,
                    "customer_id" : 1,
                    "customer_business_then_name" : "Walkin Customer",
                    "number" : "MyString",
                    "status" : "Fresh",
                    "created_at" : "2019-10-22T11:45:33.866Z",
                    "updated_at" : "2019-10-22T11:45:33.866Z",
                    "date" : "2013-10-08T14:16:10.000Z",
                    "subtotal" : "9.99",
                    "total" : "9.99",
                    "tax" : "9.99",
                    "ticket_id" : null,
                    "pdf_url" : null,
                    "location_id" : null,
                    "invoice_id" : null,
                    "employee" : "MyString"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/invoices" : {
      "get" : {
        "summary" : "Returns a paginated list of Invoices",
        "tags" : [ "Invoice" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Invoices - List/Search\n",
        "parameters" : [ {
          "name" : "paid",
          "in" : "query",
          "description" : "Whether or not the returned list of invoices has been marked as paid",
          "required" : false,
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "unpaid",
          "in" : "query",
          "description" : "Whether or not the returned list of invoices has been marked as unpaid",
          "required" : false,
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "ticket_id",
          "in" : "query",
          "description" : "Any invoices attached to a Ticket ID",
          "required" : false,
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "since_updated_at",
          "in" : "query",
          "description" : "Any invoices updated since a date",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "description" : "Returns provided page of results, each 'page' contains 25 results",
          "required" : false,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Invoices found",
            "content" : {
              "application/json" : {
                "example" : {
                  "invoices" : [ {
                    "id" : 6,
                    "customer_id" : 2,
                    "customer_business_then_name" : "Wonk Donk",
                    "number" : "4444",
                    "created_at" : "2019-11-06T08:24:20.821Z",
                    "updated_at" : "2019-11-06T08:24:20.821Z",
                    "date" : "2019-11-06T00:00:00.000Z",
                    "due_date" : "2019-11-06T00:00:00.000Z",
                    "subtotal" : "0.0",
                    "total" : "0.0",
                    "tax" : "0.0",
                    "verified_paid" : false,
                    "tech_marked_paid" : false,
                    "ticket_id" : 1,
                    "pdf_url" : null,
                    "is_paid" : false,
                    "location_id" : null,
                    "po_number" : null,
                    "contact_id" : null,
                    "note" : null,
                    "hardwarecost" : null,
                    "user_id" : null,
                    "is_recurring" : true,
                    "amount_paid" : 0.0,
                    "balance_due" : 0.0
                  } ],
                  "meta" : {
                    "total_pages" : 1,
                    "page" : 1
                  }
                }
              }
            }
          }
        }
      },
      "post" : {
        "summary" : "Creates an Invoice",
        "tags" : [ "Invoice" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Invoices - Create\n",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "id" : {
                    "type" : "integer"
                  },
                  "balance_due" : {
                    "type" : "integer"
                  },
                  "customer_id" : {
                    "type" : "integer"
                  },
                  "number" : {
                    "type" : "string"
                  },
                  "date" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "customer_business_then_name" : {
                    "type" : "string"
                  },
                  "created_at" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "updated_at" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "due_date" : {
                    "type" : "string",
                    "format" : "date"
                  },
                  "subtotal" : {
                    "type" : "string"
                  },
                  "total" : {
                    "type" : "string"
                  },
                  "tax" : {
                    "type" : "string"
                  },
                  "verified_paid" : {
                    "type" : "boolean"
                  },
                  "tech_marked_paid" : {
                    "type" : "boolean"
                  },
                  "ticket_id" : {
                    "type" : "integer"
                  },
                  "pdf_url" : {
                    "type" : "string"
                  },
                  "is_paid" : {
                    "type" : "boolean"
                  },
                  "location_id" : {
                    "type" : "integer"
                  },
                  "po_number" : {
                    "type" : "string"
                  },
                  "contact_id" : {
                    "type" : "integer"
                  },
                  "note" : {
                    "type" : "string"
                  },
                  "hardwarecost" : {
                    "type" : "number",
                    "format" : "number"
                  },
                  "line_items" : {
                    "type" : "array",
                    "items" : {
                      "type" : "object",
                      "properties" : {
                        "item" : {
                          "type" : "string"
                        },
                        "name" : {
                          "type" : "string"
                        },
                        "product_id" : {
                          "type" : "integer"
                        },
                        "quantity" : {
                          "type" : "number"
                        },
                        "cost" : {
                          "type" : "number"
                        },
                        "price" : {
                          "type" : "number"
                        },
                        "discount_percent" : {
                          "type" : "integer"
                        },
                        "taxable" : {
                          "type" : "boolean"
                        },
                        "upc_code" : {
                          "type" : "string"
                        },
                        "tax_note" : {
                          "type" : "string"
                        },
                        "wholesale" : {
                          "type" : "number"
                        },
                        "invoice_bundle_id" : {
                          "type" : "integer"
                        },
                        "tax_rate_id" : {
                          "type" : "integer"
                        },
                        "user_id" : {
                          "type" : "integer"
                        },
                        "position" : {
                          "type" : "integer"
                        }
                      }
                    }
                  }
                },
                "required" : [ "customer_id", "number", "date" ]
              }
            }
          },
          "description" : "Invoice object that needs to be added"
        },
        "responses" : {
          "200" : {
            "description" : "Invoice created",
            "content" : {
              "application/json" : {
                "example" : {
                  "invoice" : {
                    "id" : 1,
                    "customer_id" : 1,
                    "customer_business_then_name" : "Walkin Customer",
                    "number" : "9999",
                    "created_at" : "2019-06-19T07:45:43.345Z",
                    "updated_at" : "2019-06-19T07:45:43.345Z",
                    "date" : "2019-06-19T00:00:00.000Z",
                    "due_date" : "2019-06-19T00:00:00.000Z",
                    "subtotal" : "0.0",
                    "total" : "0.0",
                    "tax" : "0.0",
                    "verified_paid" : false,
                    "tech_marked_paid" : false,
                    "ticket_id" : null,
                    "pdf_url" : null,
                    "is_paid" : false,
                    "location_id" : null,
                    "po_number" : null,
                    "contact_id" : null,
                    "note" : null,
                    "hardwarecost" : null,
                    "user_id" : 1
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request"
          }
        }
      }
    },
    "/invoices/{id}" : {
      "get" : {
        "summary" : "Retrieves an Invoice by ID or Number",
        "tags" : [ "Invoice" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Invoices - View Details\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID or Number of Invoice to retrieve",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Invoice found",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "object",
                  "properties" : {
                    "id" : {
                      "type" : "integer"
                    },
                    "number" : {
                      "type" : "string"
                    },
                    "date" : {
                      "type" : "string",
                      "format" : "date-time"
                    },
                    "date_received" : {
                      "type" : "string",
                      "format" : "date-time"
                    },
                    "customer_business_then_name" : {
                      "type" : "string"
                    },
                    "created_at" : {
                      "type" : "string",
                      "format" : "date-time"
                    },
                    "updated_at" : {
                      "type" : "string",
                      "format" : "date-time"
                    },
                    "due_date" : {
                      "type" : "string",
                      "format" : "date"
                    },
                    "subtotal" : {
                      "type" : "string"
                    },
                    "total" : {
                      "type" : "string"
                    },
                    "tax" : {
                      "type" : "string"
                    },
                    "verified_paid" : {
                      "type" : "boolean"
                    },
                    "tech_marked_paid" : {
                      "type" : "boolean"
                    },
                    "ticket_id" : {
                      "type" : "integer"
                    },
                    "pdf_url" : {
                      "type" : "string"
                    },
                    "is_paid" : {
                      "type" : "boolean"
                    },
                    "location_id" : {
                      "type" : "integer"
                    },
                    "po_number" : {
                      "type" : "string"
                    },
                    "contact_id" : {
                      "type" : "integer"
                    },
                    "note" : {
                      "type" : "string"
                    },
                    "hardwarecost" : {
                      "type" : "number",
                      "format" : "number"
                    },
                    "user_id" : {
                      "type" : "integer"
                    },
                    "customer" : {
                      "type" : "object",
                      "properties" : {
                        "id" : {
                          "type" : "integer"
                        },
                        "firstname" : {
                          "type" : "string"
                        },
                        "lastname" : {
                          "type" : "string"
                        },
                        "fullname" : {
                          "type" : "string"
                        },
                        "business_name" : {
                          "type" : "string"
                        },
                        "email" : {
                          "type" : "string"
                        },
                        "phone" : {
                          "type" : "string"
                        },
                        "mobile" : {
                          "type" : "string"
                        },
                        "created_at" : {
                          "type" : "string"
                        },
                        "updated_at" : {
                          "type" : "string"
                        },
                        "pdf_url" : {
                          "type" : "string"
                        },
                        "address" : {
                          "type" : "string"
                        },
                        "address_2" : {
                          "type" : "string"
                        },
                        "city" : {
                          "type" : "string"
                        },
                        "state" : {
                          "type" : "string"
                        },
                        "zip" : {
                          "type" : "string"
                        },
                        "latitude" : {
                          "type" : "string"
                        },
                        "longitude" : {
                          "type" : "string"
                        },
                        "notes" : {
                          "type" : "string"
                        },
                        "get_sms" : {
                          "type" : "boolean"
                        },
                        "opt_out" : {
                          "type" : "boolean"
                        },
                        "disabled" : {
                          "type" : "boolean"
                        },
                        "no_email" : {
                          "type" : "boolean"
                        },
                        "location_name" : {
                          "type" : "string"
                        },
                        "location_id" : {
                          "type" : "integer"
                        },
                        "properties" : {
                          "type" : "object"
                        },
                        "online_profile_url" : {
                          "type" : "string"
                        },
                        "tax_rate_id" : {
                          "type" : "integer"
                        },
                        "notification_email" : {
                          "type" : "string"
                        },
                        "invoice_cc_emails" : {
                          "type" : "string"
                        },
                        "invoice_term_id" : {
                          "type" : "integer"
                        },
                        "referred_by" : {
                          "type" : "string"
                        },
                        "ref_customer_id" : {
                          "type" : "integer"
                        },
                        "business_and_full_name" : {
                          "type" : "string"
                        },
                        "business_then_name" : {
                          "type" : "string"
                        },
                        "contacts" : {
                          "type" : "array",
                          "items" : {
                            "type" : "object",
                            "properties" : {
                              "email" : {
                                "type" : "string"
                              }
                            }
                          }
                        }
                      }
                    },
                    "line_items" : {
                      "type" : "array",
                      "items" : {
                        "type" : "object",
                        "properties" : {
                          "item" : {
                            "type" : "string"
                          },
                          "name" : {
                            "type" : "string"
                          }
                        }
                      }
                    },
                    "payments" : {
                      "type" : "array",
                      "items" : {
                        "type" : "object",
                        "properties" : {
                          "id" : {
                            "type" : "integer"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      },
      "put" : {
        "summary" : "Updates an existing invoice by ID",
        "tags" : [ "Invoice" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "This updates an existing Invoice, all parameters overwrite existing params",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of Invoice to update",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "customer_id" : {
                    "type" : "integer"
                  },
                  "number" : {
                    "type" : "string"
                  },
                  "date" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "customer_business_then_name" : {
                    "type" : "string"
                  },
                  "created_at" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "updated_at" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "due_date" : {
                    "type" : "string",
                    "format" : "date"
                  },
                  "subtotal" : {
                    "type" : "string"
                  },
                  "total" : {
                    "type" : "string"
                  },
                  "tax" : {
                    "type" : "string"
                  },
                  "ticket_id" : {
                    "type" : "integer"
                  },
                  "pdf_url" : {
                    "type" : "string"
                  },
                  "location_id" : {
                    "type" : "integer"
                  },
                  "po_number" : {
                    "type" : "string"
                  },
                  "contact_id" : {
                    "type" : "integer"
                  },
                  "note" : {
                    "type" : "string"
                  },
                  "hardwarecost" : {
                    "type" : "number",
                    "format" : "number"
                  }
                }
              }
            }
          },
          "description" : "Invoice properties to update"
        },
        "responses" : {
          "200" : {
            "description" : "Invoice Updated",
            "content" : {
              "application/json" : {
                "example" : {
                  "invoice" : {
                    "id" : 3,
                    "customer_id" : 2,
                    "customer_business_then_name" : "Wonk Donk",
                    "number" : "1233",
                    "created_at" : "2019-07-01T21:37:26.051Z",
                    "updated_at" : "2019-07-01T21:37:26.204Z",
                    "date" : "2019-07-01T00:00:00.000Z",
                    "due_date" : "2019-07-01T00:00:00.000Z",
                    "subtotal" : "0.0",
                    "total" : "0.0",
                    "tax" : "0.0",
                    "verified_paid" : false,
                    "tech_marked_paid" : false,
                    "ticket_id" : null,
                    "pdf_url" : null,
                    "is_paid" : false,
                    "location_id" : null,
                    "po_number" : null,
                    "contact_id" : null,
                    "note" : null,
                    "hardwarecost" : "0.0"
                  }
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      },
      "delete" : {
        "summary" : "Deletes an invoice by ID",
        "tags" : [ "Invoice" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Returns 200 even if the delete fails",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of Invoice to delete",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Invalid request"
          }
        }
      }
    },
    "/invoices/{id}/line_items/{line_item_id}" : {
      "put" : {
        "summary" : "Updates an a line item of an invoice by ID",
        "tags" : [ "Invoice/Line item" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "This updates an existing Invoice's line item, all parameters overwrite existing params",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of Invoice to update",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "line_item_id",
          "in" : "path",
          "description" : "ID of line item to update",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "$ref" : "#/components/requestBodies/LineItem2"
        },
        "responses" : {
          "200" : {
            "description" : "Invoice is already paid"
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      },
      "delete" : {
        "summary" : "Deletes an a line item of an invoice by ID",
        "tags" : [ "Invoice/Line item" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "This deletes an existing Invoice's line item",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of Invoice to delete",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "line_item_id",
          "in" : "path",
          "description" : "ID of line item to update",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Line item deleted"
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      }
    },
    "/invoices/{id}/line_items" : {
      "post" : {
        "summary" : "Creates a new line item",
        "tags" : [ "Invoice/Line item" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Invoices - Edit\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of Invoice to update",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "$ref" : "#/components/requestBodies/LineItem2"
        },
        "responses" : {
          "200" : {
            "description" : "Line item created"
          },
          "422" : {
            "description" : "Invalid request"
          }
        }
      }
    },
    "/invoices/{id}/ticket" : {
      "get" : {
        "summary" : "Returns the associated ticket for an invoice",
        "tags" : [ "Invoice" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permissions: \"Invoices - View Details\" and \"Tickets - View Details\"\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of Invoice whose Ticket will be returned",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Invoice's ticket found"
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      }
    },
    "/invoices/{id}/print" : {
      "post" : {
        "summary" : "Queues a print job for an invoice",
        "tags" : [ "Invoice" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Invoices - View Details\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "The ID of the Invoice to print",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Invoice print job queued"
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      }
    },
    "/invoices/{id}/email" : {
      "post" : {
        "summary" : "Sends invoice to customer",
        "tags" : [ "Invoice" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Invoices - View Details\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "ID of Invoice which will be emailed",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Invoice email sent"
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      }
    },
    "/items" : {
      "get" : {
        "summary" : "Returns a paginated list of Part Orders",
        "tags" : [ "Item" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Parts Orders - List/Search\n",
        "parameters" : [ {
          "name" : "completed",
          "in" : "query",
          "description" : "Returns only completed part orders",
          "required" : false,
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "query",
          "in" : "query",
          "description" : "Search query",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "description" : "Returns provided page of results, each 'page' contains 50 results",
          "required" : false,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "items" : [ {
                    "id" : 1,
                    "requestedon" : "2019-09-28T13:18:39.513Z",
                    "ticketnum" : "123",
                    "parturl" : "https://amazon.com/",
                    "shipping" : null,
                    "deststore" : null,
                    "orderedby" : null,
                    "orderedon" : null,
                    "trackingnum" : "12345",
                    "receivedon" : null,
                    "price" : "0.0",
                    "account_id" : 1,
                    "description" : null,
                    "destination_location_id" : null,
                    "from_location_id" : null,
                    "from_name" : null,
                    "received_at" : null,
                    "user_id" : null,
                    "created_at" : "2019-10-28T14:18:39.515Z",
                    "updated_at" : "2019-10-28T14:18:39.515Z",
                    "due_at" : null,
                    "ticket_id" : null,
                    "logistic_state" : null,
                    "product_id" : null,
                    "quantity" : null,
                    "round_trip" : false,
                    "trip_leg" : null,
                    "retail_cents" : null,
                    "taxable" : true,
                    "converted" : false,
                    "notes" : null,
                    "refurb_id" : null,
                    "invoice_id" : null
                  } ],
                  "meta" : {
                    "total_pages" : 1,
                    "page" : 1
                  }
                }
              }
            }
          }
        }
      }
    },
    "/leads" : {
      "get" : {
        "summary" : "Returns a paginated list of Leads",
        "tags" : [ "Lead" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Leads - List/Search\n",
        "parameters" : [ {
          "name" : "statuses",
          "in" : "query",
          "description" : "Array of statuses. Possible values are \"New\", \"Lead\", \"First Contact\", \"Opportunity\", \"Prospect\", \"Waiting on Client\", \"In Negotiation\", \"Pending\", \"Won\", \"Lost\".",
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "status_list",
          "in" : "query",
          "description" : "Comma separated list of statuses.",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "users",
          "in" : "query",
          "description" : "Array of user IDs.",
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "integer"
            }
          }
        }, {
          "name" : "mailbox_ids",
          "in" : "query",
          "description" : "Array of Mailbox IDs",
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "integer"
            }
          }
        }, {
          "name" : "has_ticket",
          "in" : "query",
          "description" : "",
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "query",
          "in" : "query",
          "description" : "Search query",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "description" : "Returns provided page of results, each 'page' contains 25 results",
          "required" : false,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "leads" : [ {
                    "id" : 1,
                    "first_name" : "Susy",
                    "last_name" : "Ratke",
                    "email" : "walkin@somedomain.com",
                    "phone" : "",
                    "mobile" : "",
                    "created_at" : "2019-10-23T06:49:14.560Z",
                    "updated_at" : "2019-10-23T06:49:14.560Z",
                    "address" : "",
                    "city" : "",
                    "state" : "",
                    "zip" : "",
                    "ticket_subject" : null,
                    "ticket_description" : null,
                    "ticket_problem_type" : null,
                    "ticket_id" : null,
                    "customer_id" : 1,
                    "contact_id" : null,
                    "mailbox_id" : null,
                    "mailbox_name" : null,
                    "business_then_name" : "Klocko-Stracke",
                    "has_attachments" : false,
                    "message_read" : false,
                    "status" : "New",
                    "user_id" : null,
                    "location_id" : null
                  } ],
                  "meta" : {
                    "total_pages" : 1,
                    "total_entries" : 1,
                    "per_page" : 25,
                    "page" : 1
                  }
                }
              }
            }
          }
        }
      },
      "post" : {
        "summary" : "Creates a Lead",
        "tags" : [ "Lead" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: None\n",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "address" : {
                    "type" : "string"
                  },
                  "business_name" : {
                    "type" : "string"
                  },
                  "city" : {
                    "type" : "string"
                  },
                  "zip" : {
                    "type" : "string"
                  },
                  "converted" : {
                    "type" : "boolean"
                  },
                  "message_read" : {
                    "type" : "boolean"
                  },
                  "disabled" : {
                    "type" : "boolean"
                  },
                  "email" : {
                    "type" : "string"
                  },
                  "first_name" : {
                    "type" : "string"
                  },
                  "last_name" : {
                    "type" : "string"
                  },
                  "mobile" : {
                    "type" : "string"
                  },
                  "phone" : {
                    "type" : "string"
                  },
                  "state" : {
                    "type" : "string"
                  },
                  "ticket_description" : {
                    "type" : "string"
                  },
                  "ticket_problem_type" : {
                    "type" : "string"
                  },
                  "ticket_subject" : {
                    "type" : "string"
                  },
                  "location_id" : {
                    "type" : "integer"
                  },
                  "from_check_in" : {
                    "type" : "boolean"
                  },
                  "customer_id" : {
                    "type" : "integer"
                  },
                  "ticket_id" : {
                    "type" : "integer"
                  },
                  "hidden_notes" : {
                    "type" : "string"
                  },
                  "contact_id" : {
                    "type" : "integer"
                  },
                  "appointment_time" : {
                    "type" : "string"
                  },
                  "status" : {
                    "type" : "string"
                  },
                  "user_id" : {
                    "type" : "integer"
                  },
                  "ticket_type_id" : {
                    "type" : "integer"
                  },
                  "mailbox_id" : {
                    "type" : "integer"
                  },
                  "opportunity_start_date" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "opportunity_amount_dollars" : {
                    "type" : "number"
                  },
                  "likelihood" : {
                    "type" : "integer"
                  },
                  "properties" : {
                    "type" : "object"
                  },
                  "ticket_properties" : {
                    "type" : "object"
                  },
                  "customer_purchase_id" : {
                    "type" : "integer"
                  },
                  "signature_date" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "signature_name" : {
                    "type" : "string"
                  },
                  "signature_data" : {
                    "type" : "string"
                  },
                  "appointment_type_id" : {
                    "type" : "integer"
                  }
                }
              }
            }
          },
          "description" : "Lead object that needs to be added"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "lead" : {
                    "id" : 1,
                    "first_name" : "Susy",
                    "last_name" : "Ratke",
                    "email" : "walkin@somedomain.com",
                    "phone" : "",
                    "mobile" : "",
                    "created_at" : "2019-10-23T06:49:14.560Z",
                    "updated_at" : "2019-10-23T06:49:14.560Z",
                    "address" : "",
                    "city" : "",
                    "state" : "",
                    "zip" : "",
                    "ticket_subject" : null,
                    "ticket_description" : null,
                    "ticket_problem_type" : null,
                    "ticket_id" : null,
                    "customer_id" : 1,
                    "contact_id" : null,
                    "mailbox_id" : null,
                    "mailbox_name" : null,
                    "business_then_name" : "Klocko-Stracke",
                    "has_attachments" : false,
                    "message_read" : false,
                    "status" : "New",
                    "user_id" : null,
                    "location_id" : null
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : false,
                  "message" : [ "Ticket description can't be blank" ],
                  "params" : {
                    "from_check_in" : true
                  }
                }
              }
            }
          }
        }
      }
    },
    "/leads/{id}" : {
      "get" : {
        "summary" : "Retrieves a Lead by ID",
        "tags" : [ "Lead" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Leads - List/Search\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "lead" : {
                    "id" : 1,
                    "first_name" : "Susy",
                    "last_name" : "Ratke",
                    "email" : "walkin@somedomain.com",
                    "phone" : "",
                    "mobile" : "",
                    "created_at" : "2019-10-23T06:49:14.560Z",
                    "updated_at" : "2019-10-23T06:49:14.560Z",
                    "address" : "",
                    "city" : "",
                    "state" : "",
                    "zip" : "",
                    "ticket_subject" : null,
                    "ticket_description" : null,
                    "ticket_problem_type" : null,
                    "ticket_id" : null,
                    "customer_id" : 1,
                    "contact_id" : null,
                    "mailbox_id" : null,
                    "mailbox_name" : null,
                    "business_then_name" : "Klocko-Stracke",
                    "has_attachments" : false,
                    "message_read" : false,
                    "status" : "New",
                    "user_id" : null,
                    "location_id" : null
                  }
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      },
      "put" : {
        "summary" : "Updates an existing Lead by ID",
        "tags" : [ "Lead" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: None\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "address" : {
                    "type" : "string"
                  },
                  "business_name" : {
                    "type" : "string"
                  },
                  "city" : {
                    "type" : "string"
                  },
                  "zip" : {
                    "type" : "string"
                  },
                  "converted" : {
                    "type" : "boolean"
                  },
                  "message_read" : {
                    "type" : "boolean"
                  },
                  "disabled" : {
                    "type" : "boolean"
                  },
                  "email" : {
                    "type" : "string"
                  },
                  "first_name" : {
                    "type" : "string"
                  },
                  "last_name" : {
                    "type" : "string"
                  },
                  "mobile" : {
                    "type" : "string"
                  },
                  "phone" : {
                    "type" : "string"
                  },
                  "state" : {
                    "type" : "string"
                  },
                  "ticket_description" : {
                    "type" : "string"
                  },
                  "ticket_problem_type" : {
                    "type" : "string"
                  },
                  "ticket_subject" : {
                    "type" : "string"
                  },
                  "location_id" : {
                    "type" : "integer"
                  },
                  "from_check_in" : {
                    "type" : "boolean"
                  },
                  "customer_id" : {
                    "type" : "integer"
                  },
                  "ticket_id" : {
                    "type" : "integer"
                  },
                  "hidden_notes" : {
                    "type" : "string"
                  },
                  "contact_id" : {
                    "type" : "integer"
                  },
                  "appointment_time" : {
                    "type" : "string"
                  },
                  "status" : {
                    "type" : "string"
                  },
                  "user_id" : {
                    "type" : "integer"
                  },
                  "ticket_type_id" : {
                    "type" : "integer"
                  },
                  "mailbox_id" : {
                    "type" : "integer"
                  },
                  "opportunity_start_date" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "opportunity_amount_dollars" : {
                    "type" : "number"
                  },
                  "likelihood" : {
                    "type" : "integer"
                  },
                  "properties" : {
                    "type" : "object"
                  },
                  "ticket_properties" : {
                    "type" : "object"
                  },
                  "customer_purchase_id" : {
                    "type" : "integer"
                  },
                  "signature_date" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "signature_name" : {
                    "type" : "string"
                  },
                  "signature_data" : {
                    "type" : "string"
                  },
                  "appointment_type_id" : {
                    "type" : "integer"
                  }
                }
              }
            }
          },
          "description" : "Lead object that needs to be updated"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "lead" : {
                    "id" : 1,
                    "first_name" : "Susy",
                    "last_name" : "Ratke",
                    "email" : "walkin@somedomain.com",
                    "phone" : "",
                    "mobile" : "",
                    "created_at" : "2019-10-23T06:49:14.560Z",
                    "updated_at" : "2019-10-23T06:49:14.560Z",
                    "address" : "",
                    "city" : "",
                    "state" : "",
                    "zip" : "",
                    "ticket_subject" : null,
                    "ticket_description" : null,
                    "ticket_problem_type" : null,
                    "ticket_id" : null,
                    "customer_id" : 1,
                    "contact_id" : null,
                    "mailbox_id" : null,
                    "mailbox_name" : null,
                    "business_then_name" : "Klocko-Stracke",
                    "has_attachments" : false,
                    "message_read" : false,
                    "status" : "New",
                    "user_id" : null,
                    "location_id" : null
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : false,
                  "message" : [ "Ticket description can't be blank" ],
                  "params" : {
                    "ticket_description" : ""
                  }
                }
              }
            }
          }
        }
      }
    },
    "/line_items" : {
      "get" : {
        "summary" : "Returns a paginated list of Line Items",
        "tags" : [ "Line Item" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Global Admin\n",
        "parameters" : [ {
          "name" : "invoice_id",
          "in" : "query",
          "required" : false,
          "description" : "Returns Line Items that belong to an Invoice ID",
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "estimate_id",
          "in" : "query",
          "required" : false,
          "description" : "Returns Line Items that belong to an Estimate ID",
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "invoice_id_not_null",
          "in" : "query",
          "required" : false,
          "description" : "Returns Line Items that belong to any Invoice",
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "estimate_id_not_null",
          "in" : "query",
          "required" : false,
          "description" : "Returns Line Items that belong to any Estimate",
          "schema" : {
            "type" : "boolean"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "line_items" : [ {
                    "id" : 1,
                    "created_at" : "2019-10-28T14:38:47.864Z",
                    "updated_at" : "2019-10-28T14:38:47.864Z",
                    "invoice_id" : 1,
                    "item" : "Test Item",
                    "name" : "Some big thingy",
                    "cost" : "10.0",
                    "price" : "64.99",
                    "quantity" : "1.0",
                    "product_id" : null,
                    "taxable" : true,
                    "discount_percent" : null,
                    "position" : 1,
                    "invoice_bundle_id" : null,
                    "discount_dollars" : null
                  } ],
                  "meta" : {
                    "total_pages" : 1,
                    "total_entries" : 1,
                    "per_page" : 100,
                    "page" : 1
                  }
                }
              }
            }
          }
        }
      }
    },
    "/new_ticket_forms" : {
      "get" : {
        "summary" : "Returns a paginated list of Ticket Forms",
        "tags" : [ "New Ticket Form" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Ticket Workflows - Manage\n",
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "new_ticket_forms" : [ {
                    "id" : 1,
                    "name" : "Phone Repair",
                    "default" : false,
                    "disabled" : false,
                    "data" : {
                      "customer_details" : {
                        "fields" : {
                          "firstname" : "require",
                          "lastname" : "require",
                          "business_name" : "show",
                          "email" : "show",
                          "phone" : "show",
                          "address" : "hide",
                          "referred_by" : "show",
                          "tax_rate_id" : "hide",
                          "get_sms" : "hide",
                          "opt_out" : "hide",
                          "no_email" : "hide",
                          "send_portal_invitation" : "hide",
                          "notification_email" : "hide",
                          "invoice_cc_emails" : "hide",
                          "invoice_term_id" : "hide",
                          "custom_fields" : "show"
                        },
                        "defaults" : {
                          "placeholder" : ""
                        },
                        "position" : "1"
                      },
                      "ticket_details" : {
                        "fields" : {
                          "subject" : "require",
                          "description" : "require",
                          "user_id" : "show",
                          "priority" : "hide",
                          "due_date" : "hide",
                          "problem_type" : "require",
                          "notify_emails" : "hide",
                          "category" : "hide",
                          "address_id" : "hide",
                          "contract_id" : "hide",
                          "sla_id" : "hide",
                          "ticket_type_id" : "show",
                          "do_not_email" : "show",
                          "isapproved" : "hide",
                          "pre_diagnosed" : "hide"
                        },
                        "defaults" : {
                          "placeholder" : "",
                          "isapproved" : "true",
                          "pre_diagnosed" : "true"
                        },
                        "disabled" : [ "subject", "problem_type" ],
                        "position" : "2"
                      },
                      "worksheets" : {
                        "position" : "3"
                      },
                      "related_assets" : {
                        "position" : "4"
                      }
                    }
                  } ]
                }
              }
            }
          }
        }
      }
    },
    "/new_ticket_forms/{id}" : {
      "get" : {
        "summary" : "Retrieves a Ticket Form",
        "tags" : [ "New Ticket Form" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Tickets - Create\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "new_ticket_form" : {
                    "id" : 1,
                    "name" : "Phone Repair",
                    "default" : false,
                    "disabled" : false,
                    "data" : {
                      "customer_details" : {
                        "fields" : {
                          "firstname" : "require",
                          "lastname" : "require",
                          "business_name" : "show",
                          "email" : "show",
                          "phone" : "show",
                          "address" : "hide",
                          "referred_by" : "show",
                          "tax_rate_id" : "hide",
                          "get_sms" : "hide",
                          "opt_out" : "hide",
                          "no_email" : "hide",
                          "send_portal_invitation" : "hide",
                          "notification_email" : "hide",
                          "invoice_cc_emails" : "hide",
                          "invoice_term_id" : "hide",
                          "custom_fields" : "show"
                        },
                        "defaults" : {
                          "placeholder" : ""
                        },
                        "position" : "1"
                      },
                      "ticket_details" : {
                        "fields" : {
                          "subject" : "require",
                          "description" : "require",
                          "user_id" : "show",
                          "priority" : "hide",
                          "due_date" : "hide",
                          "problem_type" : "require",
                          "notify_emails" : "hide",
                          "category" : "hide",
                          "address_id" : "hide",
                          "contract_id" : "hide",
                          "sla_id" : "hide",
                          "ticket_type_id" : "show",
                          "do_not_email" : "show",
                          "isapproved" : "hide",
                          "pre_diagnosed" : "hide"
                        },
                        "defaults" : {
                          "placeholder" : "",
                          "isapproved" : "true",
                          "pre_diagnosed" : "true"
                        },
                        "disabled" : [ "subject", "problem_type" ],
                        "position" : "2"
                      },
                      "worksheets" : {
                        "position" : "3"
                      },
                      "related_assets" : {
                        "position" : "4"
                      }
                    }
                  }
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      }
    },
    "/new_ticket_forms/{id}/process_form" : {
      "post" : {
        "summary" : "Creates a new Ticket for a Ticket Form",
        "tags" : [ "New Ticket Form" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Tickets - Create\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "customer_details" : {
                    "type" : "object",
                    "properties" : {
                      "firstname" : {
                        "type" : "string"
                      },
                      "properties" : {
                        "type" : "object",
                        "properties" : { }
                      },
                      "lastname" : {
                        "type" : "string"
                      },
                      "business_name" : {
                        "type" : "string"
                      },
                      "email" : {
                        "type" : "string"
                      },
                      "phone" : {
                        "type" : "string"
                      },
                      "mobile" : {
                        "type" : "string"
                      },
                      "address" : {
                        "type" : "string"
                      },
                      "city" : {
                        "type" : "string"
                      },
                      "state" : {
                        "type" : "string"
                      },
                      "zip" : {
                        "type" : "string"
                      },
                      "get_sms" : {
                        "type" : "boolean"
                      },
                      "opt_out" : {
                        "type" : "boolean"
                      },
                      "no_email" : {
                        "type" : "boolean"
                      }
                    }
                  },
                  "ticket_details" : {
                    "type" : "object",
                    "properties" : {
                      "properties" : {
                        "type" : "object"
                      },
                      "subject" : {
                        "type" : "string"
                      },
                      "problem_type" : {
                        "type" : "string"
                      },
                      "description" : {
                        "type" : "string"
                      },
                      "do_not_email" : {
                        "type" : "boolean"
                      }
                    }
                  },
                  "appointments" : {
                    "type" : "object",
                    "properties" : {
                      "properties" : {
                        "type" : "object"
                      },
                      "summary" : {
                        "type" : "string"
                      },
                      "description" : {
                        "type" : "string"
                      },
                      "location" : {
                        "type" : "string"
                      },
                      "user_id" : {
                        "type" : "integer"
                      },
                      "start_at" : {
                        "type" : "string",
                        "format" : "date-time"
                      },
                      "end_at" : {
                        "type" : "string"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "ticket" : {
                    "id" : 1,
                    "customer_id" : 2,
                    "subject" : "Ticket Subject",
                    "status" : "New",
                    "problem_type" : "Hardware",
                    "created_at" : "2019-10-29T12:05:24.322Z",
                    "updated_at" : "2019-10-29T12:05:24.382Z",
                    "category" : "Standard",
                    "referredby" : null,
                    "isapproved" : false,
                    "memory" : null,
                    "upgradeoffered" : false,
                    "password" : null,
                    "cancelled" : false,
                    "power_adapter" : false,
                    "start_at" : null,
                    "end_at" : null,
                    "user_id" : 1,
                    "account_id" : 1,
                    "checkbox_results" : null,
                    "textbox_results" : null,
                    "due_date" : "2019-11-01T12:05:24.314Z",
                    "number" : 4201,
                    "location_id" : null,
                    "pdf" : {
                      "url" : null
                    },
                    "signature_name" : null,
                    "signature_data" : "",
                    "gevent_id" : null,
                    "intake_form_pdf" : {
                      "url" : null
                    },
                    "contact_id" : null,
                    "properties" : { },
                    "ticket_type_id" : null,
                    "priority" : null,
                    "notify_emails" : null,
                    "disabled" : false,
                    "ticket_recurring_schedule_id" : null,
                    "time_to_resolve_minutes" : null,
                    "original_customer_id" : 2,
                    "original_ticket_id" : null,
                    "sla_id" : null,
                    "contract_id" : null,
                    "address_id" : null,
                    "creator_id" : null,
                    "signature_date" : null,
                    "resolved_at" : null,
                    "all_notify_emails" : null,
                    "outtake_form_name" : null,
                    "outtake_form_data" : null,
                    "outtake_form_date" : null,
                    "custom_fields_cache" : " ",
                    "with_initial_issue_body" : null,
                    "with_items_any" : null
                  },
                  "invoice" : null,
                  "redirect" : "/tickets/1",
                  "message" : "Ticket created.."
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : false,
                  "errors" : {
                    "appointments" : {
                      "summary" : [ "can't be blank" ],
                      "start_at" : [ "can't be blank" ],
                      "end_at" : [ "can't be blank" ]
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/payment_methods" : {
      "get" : {
        "summary" : "Returns a paginated list of Payment Methods",
        "tags" : [ "Payment Method" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "All Users except Single Customer Users may use this action.\n",
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "payment_methods" : [ {
                    "id" : 1,
                    "name" : "Credit Card",
                    "created_at" : "2019-10-28T09:55:44.304Z",
                    "updated_at" : "2019-10-28T09:55:44.304Z",
                    "uses_card_processing" : false
                  }, {
                    "id" : 2,
                    "name" : "Cash",
                    "created_at" : "2019-10-28T09:55:44.307Z",
                    "updated_at" : "2019-10-28T09:55:44.307Z",
                    "uses_card_processing" : false
                  }, {
                    "id" : 3,
                    "name" : "Check",
                    "created_at" : "2019-10-28T09:55:44.309Z",
                    "updated_at" : "2019-10-28T09:55:44.309Z",
                    "uses_card_processing" : false
                  }, {
                    "id" : 4,
                    "name" : "Offline CC",
                    "created_at" : "2019-10-28T09:55:44.312Z",
                    "updated_at" : "2019-10-28T09:55:44.312Z",
                    "uses_card_processing" : false
                  }, {
                    "id" : 5,
                    "name" : "Quick",
                    "created_at" : "2019-10-28T09:55:44.316Z",
                    "updated_at" : "2019-10-28T09:55:44.316Z",
                    "uses_card_processing" : false
                  }, {
                    "id" : 6,
                    "name" : "Other",
                    "created_at" : "2019-10-28T09:55:44.319Z",
                    "updated_at" : "2019-10-28T09:55:44.319Z",
                    "uses_card_processing" : false
                  } ]
                }
              }
            }
          }
        }
      }
    },
    "/customers/{customer_id}/payment_profiles" : {
      "get" : {
        "summary" : "Returns a paginated list of Payment Profiles",
        "tags" : [ "Payment Profile" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "parameters" : [ {
          "name" : "customer_id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "payment_profiles" : [ {
                    "id" : 1,
                    "customer_id" : 1,
                    "expiration" : "MyString",
                    "customer_external_id" : null,
                    "used_gateway" : "authorize_net",
                    "payment_profile_id" : 1,
                    "last_four" : "MyString",
                    "created_at" : "2019-10-25T07:11:31.903Z",
                    "updated_at" : "2019-10-25T07:11:31.903Z"
                  } ]
                }
              }
            }
          }
        }
      },
      "post" : {
        "summary" : "Creates a Payment Profile",
        "tags" : [ "Payment Profile" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "parameters" : [ {
          "name" : "customer_id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "customer_external_id" : {
                    "type" : "string",
                    "description" : "Payment Gateway's Customer token"
                  },
                  "payment_profile_id" : {
                    "type" : "string",
                    "description" : "Payment Gateway's stored payment profile token"
                  },
                  "expiration" : {
                    "type" : "string"
                  },
                  "last_four" : {
                    "type" : "string"
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "payment_profile" : {
                    "id" : 1,
                    "customer_id" : 1,
                    "expiration" : "MyString",
                    "customer_external_id" : null,
                    "used_gateway" : "authorize_net",
                    "payment_profile_id" : 1,
                    "last_four" : "MyString",
                    "created_at" : "2019-10-25T07:11:31.903Z",
                    "updated_at" : "2019-10-25T07:11:31.903Z"
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "message" : "Account not configured to use integrated processing."
                }
              }
            }
          }
        }
      }
    },
    "/customers/{customer_id}/payment_profiles/{id}" : {
      "get" : {
        "summary" : "Retrieves a Payment Profile by ID",
        "tags" : [ "Payment Profile" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "parameters" : [ {
          "name" : "customer_id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "payment_profile" : {
                    "id" : 1,
                    "customer_id" : 1,
                    "expiration" : "MyString",
                    "customer_external_id" : null,
                    "used_gateway" : "authorize_net",
                    "payment_profile_id" : 1,
                    "last_four" : "MyString",
                    "created_at" : "2019-10-25T07:11:31.903Z",
                    "updated_at" : "2019-10-25T07:11:31.903Z"
                  }
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      },
      "put" : {
        "summary" : "Updates a Payment Profile",
        "tags" : [ "Payment Profile" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "parameters" : [ {
          "name" : "customer_id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "expiration" : {
                    "type" : "string"
                  },
                  "last_four" : {
                    "type" : "string"
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "payment_profile" : {
                    "id" : 1,
                    "customer_id" : 1,
                    "expiration" : "MyString",
                    "customer_external_id" : null,
                    "used_gateway" : "authorize_net",
                    "payment_profile_id" : 1,
                    "last_four" : "MyString",
                    "created_at" : "2019-10-25T07:11:31.903Z",
                    "updated_at" : "2019-10-25T07:11:31.903Z"
                  }
                }
              }
            }
          }
        }
      },
      "delete" : {
        "summary" : "Deletes a Payment Profile",
        "tags" : [ "Payment Profile" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "parameters" : [ {
          "name" : "customer_id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : true
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      }
    },
    "/payments" : {
      "get" : {
        "summary" : "Returns a paginated list of Payments",
        "tags" : [ "Payment" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Payments - View List\n",
        "parameters" : [ {
          "name" : "query",
          "in" : "query",
          "required" : false,
          "description" : "Search query",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "description" : "Returns provided page of results, each 'page' contains 25 results",
          "required" : false,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "payments" : [ {
                    "id" : 1,
                    "created_at" : "2019-10-28T07:00:00.000Z",
                    "updated_at" : "2019-10-28T10:18:14.061Z",
                    "success" : true,
                    "payment_amount" : 100,
                    "invoice_ids" : [ null ],
                    "ref_num" : "11006",
                    "applied_at" : "2019-10-26T00:00:00.000Z",
                    "payment_method" : "Check",
                    "transaction_response" : null,
                    "signature_date" : null,
                    "customer" : {
                      "id" : 1,
                      "firstname" : "Walkin",
                      "lastname" : "Customer",
                      "fullname" : "Walkin Customer",
                      "business_name" : null,
                      "email" : "walkin@somedomain.com",
                      "phone" : "123",
                      "mobile" : null,
                      "created_at" : "2019-10-28T10:17:58.224Z",
                      "updated_at" : "2019-10-28T10:17:58.224Z",
                      "pdf_url" : null,
                      "address" : null,
                      "address_2" : null,
                      "city" : null,
                      "state" : null,
                      "zip" : null,
                      "latitude" : null,
                      "longitude" : null,
                      "notes" : null,
                      "get_sms" : false,
                      "opt_out" : false,
                      "disabled" : false,
                      "no_email" : true,
                      "location_name" : null,
                      "location_id" : null,
                      "properties" : { },
                      "online_profile_url" : "http://testsubdomainwi1.lvh.me//my_profile/v2/index?portal_key=xw6sk8693f35nzgcb66o",
                      "tax_rate_id" : null,
                      "notification_email" : null,
                      "invoice_cc_emails" : null,
                      "invoice_term_id" : null,
                      "referred_by" : null,
                      "ref_customer_id" : null,
                      "business_and_full_name" : "Walkin Customer",
                      "business_then_name" : "Walkin Customer",
                      "contacts" : [ ]
                    }
                  } ],
                  "meta" : {
                    "total_pages" : 1,
                    "page" : 1
                  }
                }
              }
            }
          }
        }
      },
      "post" : {
        "summary" : "Creates a Payment",
        "tags" : [ "Payment" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Payments - Create\n",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "customer_id" : {
                    "type" : "integer"
                  },
                  "invoice_id" : {
                    "type" : "integer"
                  },
                  "invoice_number" : {
                    "type" : "string"
                  },
                  "amount_cents" : {
                    "type" : "integer"
                  },
                  "address_street" : {
                    "type" : "string"
                  },
                  "address_city" : {
                    "type" : "string"
                  },
                  "address_zip" : {
                    "type" : "string"
                  },
                  "payment_method" : {
                    "type" : "string"
                  },
                  "ref_num" : {
                    "type" : "string"
                  },
                  "register_id" : {
                    "type" : "integer"
                  },
                  "signature_name" : {
                    "type" : "string"
                  },
                  "signature_data" : {
                    "type" : "string"
                  },
                  "signature_date" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "credit_card_number" : {
                    "type" : "string"
                  },
                  "date_month" : {
                    "type" : "string"
                  },
                  "date_year" : {
                    "type" : "string"
                  },
                  "cvv" : {
                    "type" : "string"
                  },
                  "lastname" : {
                    "type" : "string"
                  },
                  "firstname" : {
                    "type" : "string"
                  },
                  "apply_payments" : {
                    "type" : "object",
                    "description" : "Object where a key is an Invoice ID and a value is a payment amount to be applied to the invoice."
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "payment" : {
                    "id" : 3,
                    "created_at" : "2019-10-28T12:45:24.315Z",
                    "updated_at" : "2019-10-28T12:45:24.315Z",
                    "success" : true,
                    "payment_amount" : 10,
                    "invoice_ids" : [ 1 ],
                    "ref_num" : null,
                    "applied_at" : "2019-10-28T00:00:00.000Z",
                    "payment_method" : null,
                    "transaction_response" : null,
                    "tickets" : [ ]
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request"
          }
        }
      }
    },
    "/payments/{id}" : {
      "get" : {
        "summary" : "Retrieves a Payment by ID",
        "tags" : [ "Payment" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Payments - View List\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "payment" : {
                    "id" : 5,
                    "created_at" : "2019-10-28T07:00:00.000Z",
                    "updated_at" : "2019-10-28T13:05:27.257Z",
                    "success" : true,
                    "payment_amount" : 100,
                    "invoice_ids" : [ null ],
                    "ref_num" : "11006",
                    "applied_at" : "2019-10-26T00:00:00.000Z",
                    "payment_method" : "Check",
                    "transaction_response" : null,
                    "signature_date" : null,
                    "customer" : {
                      "id" : 1,
                      "firstname" : "Walkin",
                      "lastname" : "Customer",
                      "fullname" : "Walkin Customer",
                      "business_name" : null,
                      "email" : "walkin@somedomain.com",
                      "phone" : "123",
                      "mobile" : null,
                      "created_at" : "2019-10-28T13:05:13.781Z",
                      "updated_at" : "2019-10-28T13:05:13.781Z",
                      "pdf_url" : null,
                      "address" : null,
                      "address_2" : null,
                      "city" : null,
                      "state" : null,
                      "zip" : null,
                      "latitude" : null,
                      "longitude" : null,
                      "notes" : null,
                      "get_sms" : false,
                      "opt_out" : false,
                      "disabled" : false,
                      "no_email" : true,
                      "location_name" : null,
                      "location_id" : null,
                      "properties" : { },
                      "online_profile_url" : "http://testsubdomainwi1.lvh.me//my_profile/v2/index?portal_key=9rmh69dx953bbxmyxx3u",
                      "tax_rate_id" : null,
                      "notification_email" : null,
                      "invoice_cc_emails" : null,
                      "invoice_term_id" : null,
                      "referred_by" : null,
                      "ref_customer_id" : null,
                      "business_and_full_name" : "Walkin Customer",
                      "business_then_name" : "Walkin Customer",
                      "contacts" : [ ]
                    }
                  }
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      }
    },
    "/customers/{customer_id}/phones" : {
      "get" : {
        "summary" : "Returns a paginated list of Phones",
        "tags" : [ "Phone" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Customers - View Detail\nSingle-Customer Users can only access own.\n",
        "parameters" : [ {
          "name" : "customer_id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "phones" : [ {
                    "id" : 2,
                    "label" : "Mobile",
                    "number" : "111222333",
                    "customer_id" : 1,
                    "created_at" : "2019-10-28T15:07:49.764Z",
                    "updated_at" : "2019-10-28T15:07:49.764Z",
                    "extension" : null
                  }, {
                    "id" : 1,
                    "label" : "Phone",
                    "number" : "123",
                    "customer_id" : 1,
                    "created_at" : "2019-10-28T15:07:32.225Z",
                    "updated_at" : "2019-10-28T15:07:32.225Z",
                    "extension" : null
                  } ]
                }
              }
            }
          }
        }
      },
      "post" : {
        "summary" : "Creates a Phone",
        "tags" : [ "Phone" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Customers - Edit\nSingle-Customer Users can only access own.\n",
        "parameters" : [ {
          "name" : "customer_id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "$ref" : "#/components/requestBodies/Phone"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "id" : 4,
                  "label" : null,
                  "number" : "222000222",
                  "customer_id" : 1,
                  "created_at" : "2019-10-28T15:07:50.138Z",
                  "updated_at" : "2019-10-28T15:07:50.138Z",
                  "extension" : null
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : false,
                  "message" : [ "Number can't be blank" ],
                  "params" : {
                    "customer_id" : "1",
                    "number" : ""
                  }
                }
              }
            }
          }
        }
      }
    },
    "/customers/{customer_id}/phones/{id}" : {
      "put" : {
        "summary" : "Updates an existing Phone by ID",
        "tags" : [ "Phone" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Customers - Edit\nSingle-Customer Users can only access own.\n",
        "parameters" : [ {
          "name" : "customer_id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "$ref" : "#/components/requestBodies/Phone"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "id" : 4,
                  "label" : null,
                  "number" : "222000222",
                  "customer_id" : 1,
                  "created_at" : "2019-10-28T15:07:50.138Z",
                  "updated_at" : "2019-10-28T15:07:50.138Z",
                  "extension" : null
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : false,
                  "message" : [ "Number can't be blank" ],
                  "params" : {
                    "customer_id" : "1",
                    "id" : "9",
                    "number" : ""
                  }
                }
              }
            }
          }
        }
      },
      "delete" : {
        "summary" : "Deletes a Phone by ID",
        "tags" : [ "Phone" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Customers - Edit\nSingle-Customer Users can only access own.\n",
        "parameters" : [ {
          "name" : "customer_id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful"
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      }
    },
    "/portal_users" : {
      "get" : {
        "summary" : "Returns a paginated list of Portal Users",
        "tags" : [ "Portal User" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Global Admin\n",
        "parameters" : [ {
          "name" : "customer_id",
          "in" : "query",
          "required" : false,
          "description" : "Returns Portal Users that belong to a Customer ID",
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "email",
          "in" : "query",
          "required" : false,
          "description" : "Portal User email",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "description" : "Returns provided page of results, each 'page' contains 100 results",
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "portal_users" : [ {
                    "id" : 1,
                    "email" : "katelyn@okuneva.name",
                    "account_id" : 1,
                    "customer_id" : 1,
                    "contact_id" : 1,
                    "created_at" : "2019-10-25T13:36:47.165Z",
                    "updated_at" : "2019-10-25T13:36:47.165Z",
                    "portal_group_id" : 4
                  } ],
                  "meta" : {
                    "total_pages" : 1,
                    "total_entries" : 1,
                    "per_page" : 100,
                    "page" : 1
                  }
                }
              }
            }
          }
        }
      },
      "post" : {
        "summary" : "Creates a Portal User",
        "tags" : [ "Portal User" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Global Admin\n",
        "requestBody" : {
          "$ref" : "#/components/requestBodies/PortalUser"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "id" : 1,
                  "email" : "katelyn@okuneva.name",
                  "account_id" : 1,
                  "customer_id" : 1,
                  "contact_id" : 1,
                  "created_at" : "2019-10-25T13:36:47.165Z",
                  "updated_at" : "2019-10-25T13:36:47.165Z",
                  "portal_group_id" : 4
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : false,
                  "message" : [ "Email can't be blank", "Password confirmation doesn't match Password" ],
                  "params" : {
                    "customer_id" : 1,
                    "password" : "does not match",
                    "password_confirmation" : "confirmation"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/portal_users/{id}" : {
      "put" : {
        "summary" : "Updates an existing Portal User by ID",
        "tags" : [ "Portal User" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Global Admin\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "$ref" : "#/components/requestBodies/PortalUser"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "id" : 1,
                  "email" : "katelyn@okuneva.name",
                  "account_id" : 1,
                  "customer_id" : 1,
                  "contact_id" : 1,
                  "created_at" : "2019-10-25T13:36:47.165Z",
                  "updated_at" : "2019-10-25T13:36:47.165Z",
                  "portal_group_id" : 4
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : false,
                  "message" : [ "Password confirmation doesn't match Password" ],
                  "params" : {
                    "password" : "does not match",
                    "password_confirmation" : "the confirmation"
                  }
                }
              }
            }
          }
        }
      },
      "delete" : {
        "summary" : "Deletes a Portal User by ID",
        "tags" : [ "Portal User" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Global Admin\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "id" : 1,
                  "email" : "katelyn@okuneva.name",
                  "account_id" : 1,
                  "customer_id" : 1,
                  "contact_id" : 1,
                  "created_at" : "2019-10-25T13:36:47.165Z",
                  "updated_at" : "2019-10-25T13:36:47.165Z",
                  "portal_group_id" : 4
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      }
    },
    "/portal_users/create_invitation" : {
      "post" : {
        "summary" : "Creates an Invitation for a Portal User",
        "tags" : [ "Portal User" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Global Admin\n",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "id" : {
                    "type" : "integer"
                  }
                }
              }
            }
          },
          "description" : "Portal User ID"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : true,
                  "message" : "All set, we BCC'd you on that invitation."
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : false,
                  "message" : "Invalid email, correct the contact's email and try to resend."
                }
              }
            }
          }
        }
      }
    },
    "/products/{product_id}/product_serials" : {
      "get" : {
        "summary" : "Returns a paginated list of Product_serials",
        "tags" : [ "Product Serial" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Products - List/Search\n",
        "parameters" : [ {
          "name" : "product_id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "status",
          "in" : "query",
          "description" : "Possible values are reserved, sold, returned, in_transfer, breakage, used_in_refurb, in_stock",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "description" : "Returns provided page of results, each 'page' contains 100 result",
          "required" : false,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "*/*" : {
                "schema" : {
                  "type" : "object",
                  "properties" : {
                    "product_serials" : {
                      "type" : "array",
                      "items" : {
                        "type" : "object",
                        "properties" : {
                          "id" : {
                            "type" : "integer"
                          },
                          "created_at" : {
                            "type" : "string",
                            "format" : "date-time"
                          },
                          "updated_at" : {
                            "type" : "string",
                            "format" : "date-time"
                          },
                          "product_location_quantity_id" : {
                            "type" : "integer",
                            "nullable" : true
                          },
                          "line_item_id" : {
                            "type" : "integer",
                            "nullable" : true
                          },
                          "serial_number" : {
                            "type" : "string"
                          },
                          "status" : {
                            "type" : "string"
                          },
                          "instance_price_cost" : {
                            "type" : "number",
                            "nullable" : true
                          },
                          "instance_price_retail" : {
                            "type" : "number",
                            "nullable" : true
                          },
                          "location_id" : {
                            "type" : "integer",
                            "nullable" : true
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "post" : {
        "summary" : "Creates a Product Serial",
        "tags" : [ "Product Serial" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Products - Edit\n",
        "parameters" : [ {
          "name" : "product_id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "condition" : {
                    "type" : "string"
                  },
                  "price_cost_cents" : {
                    "type" : "integer"
                  },
                  "price_retail_cents" : {
                    "type" : "integer"
                  },
                  "serial_number" : {
                    "type" : "string"
                  }
                }
              }
            }
          },
          "description" : "Product Serial object that needs to be added"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "product_serial" : {
                    "id" : 1,
                    "created_at" : "2019-10-24T07:32:07.656Z",
                    "updated_at" : "2019-10-24T07:32:07.656Z",
                    "product_location_quantity_id" : null,
                    "line_item_id" : null,
                    "serial_number" : "abcde345332z1",
                    "status" : "In Stock",
                    "instance_price_cost" : 0.01,
                    "instance_price_retail" : 0.01,
                    "location_id" : null
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : false,
                  "message" : [ "Serial number scientific-notation not allowed, may have been introduced by a spreadsheet program inferring Numerical from a csv." ]
                }
              }
            }
          }
        }
      }
    },
    "/products/{product_id}/product_serials/{id}" : {
      "put" : {
        "summary" : "Updates an existing Product Serial by ID",
        "tags" : [ "Product Serial" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Products - Edit\n",
        "parameters" : [ {
          "name" : "product_id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "condition" : {
                    "type" : "string"
                  },
                  "price_cost_cents" : {
                    "type" : "integer"
                  },
                  "price_retail_cents" : {
                    "type" : "integer"
                  },
                  "serial_number" : {
                    "type" : "string"
                  },
                  "notes" : {
                    "type" : "string"
                  }
                }
              }
            }
          },
          "description" : "Product Serial object that needs to be updated"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "product_serial" : {
                    "id" : 1,
                    "created_at" : "2019-10-24T07:32:07.656Z",
                    "updated_at" : "2019-10-24T07:32:07.656Z",
                    "product_location_quantity_id" : null,
                    "line_item_id" : null,
                    "serial_number" : "abcde345332z1",
                    "status" : "In Stock",
                    "instance_price_cost" : 0.01,
                    "instance_price_retail" : 0.01,
                    "location_id" : null
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : false,
                  "message" : [ "Serial number has already been taken" ]
                }
              }
            }
          }
        }
      }
    },
    "/products/{product_id}/product_serials/attach_to_line_item" : {
      "post" : {
        "summary" : "Adds Product Serials to a Line Item",
        "tags" : [ "Product Serial" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Products - List/Search\nAdditional permissions required depending on \"record_type\":\n- LineItem: \"Invoices - Edit\" or \"Estimates - Edit\"\n- TicketLineItem: Tickets - Edit\n",
        "parameters" : [ {
          "name" : "product_id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "record_type" : {
                    "type" : "string",
                    "enum" : [ "TransferLineItem", "LineItem", "ReturnLineItem", "TicketLineItem", "RefurbLineItem" ]
                  },
                  "line_item_id" : {
                    "type" : "integer"
                  },
                  "product_serial_ids" : {
                    "type" : "array",
                    "items" : {
                      "type" : "integer"
                    }
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "status" : "attached"
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "status" : "attached",
                  "errors" : "One of the serial numbers has already been used. Please try again."
                }
              }
            }
          }
        }
      }
    },
    "/products" : {
      "get" : {
        "summary" : "Returns a paginated list of Products",
        "tags" : [ "Product" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Products - List/Search\n",
        "parameters" : [ {
          "name" : "sort",
          "in" : "query",
          "required" : false,
          "description" : "A Product field to order by. Example \"name ASC\".",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "sku",
          "in" : "query",
          "required" : false,
          "description" : "Returns Products with the SKU.",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "name",
          "in" : "query",
          "required" : false,
          "description" : "Returns Products with the name.",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "upc_code",
          "in" : "query",
          "required" : false,
          "description" : "Returns Products with the UPC Code.",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "category_id",
          "in" : "query",
          "required" : false,
          "description" : "Returns Products from the Category.",
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "id",
          "in" : "query",
          "required" : false,
          "description" : "Any product with ID included in the list.",
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "integer"
            }
          }
        }, {
          "name" : "id_not",
          "in" : "query",
          "required" : false,
          "description" : "Any product with ID not included in the list.",
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "integer"
            }
          }
        }, {
          "name" : "query",
          "in" : "query",
          "required" : false,
          "description" : "Search query.",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "description" : "Returns provided page of results, each 'page' contains 25 results.",
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "products" : [ {
                    "id" : 1,
                    "price_cost" : 0.01,
                    "price_retail" : 0.01,
                    "condition" : null,
                    "description" : "Description #1",
                    "maintain_stock" : false,
                    "name" : "Product #1",
                    "quantity" : 100,
                    "warranty" : null,
                    "sort_order" : null,
                    "reorder_at" : null,
                    "disabled" : false,
                    "taxable" : true,
                    "product_category" : null,
                    "category_path" : null,
                    "upc_code" : null,
                    "discount_percent" : null,
                    "warranty_template_id" : null,
                    "qb_item_id" : 1,
                    "desired_stock_level" : null,
                    "price_wholesale" : 0,
                    "notes" : null,
                    "tax_rate_id" : null,
                    "physical_location" : null,
                    "serialized" : false,
                    "vendor_ids" : [ ],
                    "long_description" : null,
                    "location_quantities" : [ ],
                    "photos" : [ ]
                  } ]
                }
              }
            }
          }
        }
      },
      "post" : {
        "summary" : "Creates a Product",
        "tags" : [ "Product" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Products - Create\n",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "price_cost" : {
                    "type" : "number"
                  },
                  "price_retail" : {
                    "type" : "number"
                  },
                  "condition" : {
                    "type" : "string"
                  },
                  "description" : {
                    "type" : "string"
                  },
                  "maintain_stock" : {
                    "type" : "boolean"
                  },
                  "name" : {
                    "type" : "string"
                  },
                  "quantity" : {
                    "type" : "integer"
                  },
                  "warranty" : {
                    "type" : "string"
                  },
                  "sort_order" : {
                    "type" : "integer"
                  },
                  "reorder_at" : {
                    "type" : "integer"
                  },
                  "disabled" : {
                    "type" : "boolean"
                  },
                  "taxable" : {
                    "type" : "boolean"
                  },
                  "product_category" : {
                    "type" : "string"
                  },
                  "upc_code" : {
                    "type" : "string"
                  },
                  "discount_percent" : {
                    "type" : "number"
                  },
                  "warranty_template_id" : {
                    "type" : "integer"
                  },
                  "qb_item_id" : {
                    "type" : "integer"
                  },
                  "desired_stock_level" : {
                    "type" : "integer"
                  },
                  "price_wholesale" : {
                    "type" : "number"
                  },
                  "notes" : {
                    "type" : "string"
                  },
                  "tax_rate_id" : {
                    "type" : "integer"
                  },
                  "vendor_ids" : {
                    "type" : "array",
                    "items" : {
                      "type" : "integer"
                    }
                  },
                  "physical_location" : {
                    "type" : "string"
                  },
                  "serialized" : {
                    "type" : "boolean"
                  },
                  "category_ids" : {
                    "type" : "array",
                    "items" : {
                      "type" : "integer"
                    }
                  },
                  "product_skus_attributes" : {
                    "type" : "array",
                    "items" : {
                      "type" : "object",
                      "properties" : {
                        "vendor_id" : {
                          "type" : "integer"
                        },
                        "value" : {
                          "type" : "string"
                        }
                      }
                    }
                  }
                },
                "required" : [ "name", "description" ]
              }
            }
          },
          "description" : "Product object that needs to be added"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "product" : {
                    "id" : 1,
                    "price_cost" : 0.01,
                    "price_retail" : 0.01,
                    "condition" : null,
                    "description" : "Description #1",
                    "maintain_stock" : false,
                    "name" : "Product #1",
                    "quantity" : 100,
                    "warranty" : null,
                    "sort_order" : null,
                    "reorder_at" : null,
                    "disabled" : false,
                    "taxable" : true,
                    "product_category" : null,
                    "category_path" : null,
                    "upc_code" : null,
                    "discount_percent" : null,
                    "warranty_template_id" : null,
                    "qb_item_id" : 1,
                    "desired_stock_level" : null,
                    "price_wholesale" : 0,
                    "notes" : null,
                    "tax_rate_id" : null,
                    "physical_location" : null,
                    "serialized" : false,
                    "vendor_ids" : [ ],
                    "long_description" : null,
                    "location_quantities" : [ ],
                    "photos" : [ ]
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : false,
                  "message" : [ "Name can't be blank", "Description can't be blank" ],
                  "params" : {
                    "name" : "",
                    "maintain_stock" : false
                  }
                }
              }
            }
          }
        }
      }
    },
    "/products/{id}" : {
      "get" : {
        "summary" : "Retrieves a Product by ID",
        "tags" : [ "Product" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Products - List/Search\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "product" : {
                    "id" : 1,
                    "price_cost" : 0.01,
                    "price_retail" : 0.01,
                    "condition" : null,
                    "description" : "Description #1",
                    "maintain_stock" : false,
                    "name" : "Product #1",
                    "quantity" : 100,
                    "warranty" : null,
                    "sort_order" : null,
                    "reorder_at" : null,
                    "disabled" : false,
                    "taxable" : true,
                    "product_category" : null,
                    "category_path" : null,
                    "upc_code" : null,
                    "discount_percent" : null,
                    "warranty_template_id" : null,
                    "qb_item_id" : 1,
                    "desired_stock_level" : null,
                    "price_wholesale" : 0,
                    "notes" : null,
                    "tax_rate_id" : null,
                    "physical_location" : null,
                    "serialized" : false,
                    "vendor_ids" : [ ],
                    "long_description" : null,
                    "location_quantities" : [ ],
                    "photos" : [ ]
                  }
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      },
      "put" : {
        "summary" : "Updates an existing Product by ID",
        "tags" : [ "Product" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Products - Edit\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "price_cost" : {
                    "type" : "number"
                  },
                  "price_retail" : {
                    "type" : "number"
                  },
                  "condition" : {
                    "type" : "string"
                  },
                  "description" : {
                    "type" : "string"
                  },
                  "maintain_stock" : {
                    "type" : "boolean"
                  },
                  "name" : {
                    "type" : "string"
                  },
                  "quantity" : {
                    "type" : "integer"
                  },
                  "warranty" : {
                    "type" : "string"
                  },
                  "sort_order" : {
                    "type" : "integer"
                  },
                  "reorder_at" : {
                    "type" : "integer"
                  },
                  "disabled" : {
                    "type" : "boolean"
                  },
                  "taxable" : {
                    "type" : "boolean"
                  },
                  "product_category" : {
                    "type" : "string"
                  },
                  "upc_code" : {
                    "type" : "string"
                  },
                  "discount_percent" : {
                    "type" : "number"
                  },
                  "warranty_template_id" : {
                    "type" : "integer"
                  },
                  "qb_item_id" : {
                    "type" : "integer"
                  },
                  "desired_stock_level" : {
                    "type" : "integer"
                  },
                  "price_wholesale" : {
                    "type" : "number"
                  },
                  "notes" : {
                    "type" : "string"
                  },
                  "tax_rate_id" : {
                    "type" : "integer"
                  },
                  "vendor_ids" : {
                    "type" : "array",
                    "items" : {
                      "type" : "integer"
                    }
                  },
                  "physical_location" : {
                    "type" : "string"
                  },
                  "serialized" : {
                    "type" : "boolean"
                  },
                  "category_ids" : {
                    "type" : "array",
                    "items" : {
                      "type" : "integer"
                    }
                  },
                  "product_skus_attributes" : {
                    "type" : "array",
                    "items" : {
                      "type" : "object",
                      "properties" : {
                        "value" : {
                          "type" : "string"
                        },
                        "vendor_id" : {
                          "type" : "integer"
                        }
                      }
                    }
                  }
                },
                "required" : [ "name", "description" ]
              }
            }
          },
          "description" : "Product object that needs to be updated"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "product" : {
                    "id" : 1,
                    "price_cost" : 0.01,
                    "price_retail" : 0.01,
                    "condition" : null,
                    "description" : "Description #1",
                    "maintain_stock" : false,
                    "name" : "Product #1",
                    "quantity" : 100,
                    "warranty" : null,
                    "sort_order" : null,
                    "reorder_at" : null,
                    "disabled" : false,
                    "taxable" : true,
                    "product_category" : null,
                    "category_path" : null,
                    "upc_code" : null,
                    "discount_percent" : null,
                    "warranty_template_id" : null,
                    "qb_item_id" : 1,
                    "desired_stock_level" : null,
                    "price_wholesale" : 0,
                    "notes" : null,
                    "tax_rate_id" : null,
                    "physical_location" : null,
                    "serialized" : false,
                    "vendor_ids" : [ ],
                    "long_description" : null,
                    "location_quantities" : [ ],
                    "photos" : [ ]
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : false,
                  "message" : [ "Name can't be blank" ]
                }
              }
            }
          }
        }
      }
    },
    "/products/barcode" : {
      "get" : {
        "summary" : "Returns a Product by Barcode",
        "tags" : [ "Product" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Products - List/Search\n",
        "parameters" : [ {
          "name" : "barcode",
          "in" : "query",
          "description" : "Product Barcode string",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "product" : {
                    "id" : 1,
                    "price_cost" : 0.01,
                    "price_retail" : 0.01,
                    "condition" : null,
                    "description" : "Description #1",
                    "maintain_stock" : false,
                    "name" : "Product #1",
                    "quantity" : 100,
                    "warranty" : null,
                    "sort_order" : null,
                    "reorder_at" : null,
                    "disabled" : false,
                    "taxable" : true,
                    "product_category" : null,
                    "category_path" : null,
                    "upc_code" : null,
                    "discount_percent" : null,
                    "warranty_template_id" : null,
                    "qb_item_id" : 1,
                    "desired_stock_level" : null,
                    "price_wholesale" : 0,
                    "notes" : null,
                    "tax_rate_id" : null,
                    "physical_location" : null,
                    "serialized" : false,
                    "vendor_ids" : [ ],
                    "long_description" : null,
                    "location_quantities" : [ ],
                    "photos" : [ ]
                  }
                }
              }
            }
          }
        }
      }
    },
    "/products/categories" : {
      "get" : {
        "summary" : "Returns a paginated list of Product Categories",
        "tags" : [ "Product" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Products - List/Search\n",
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "categories" : [ {
                    "id" : 1,
                    "account_id" : 1,
                    "ancestry" : null,
                    "name" : "Root Category",
                    "description" : "Root Category",
                    "device_product_id" : null,
                    "names_depth_cache" : "Root Category"
                  } ]
                }
              }
            }
          }
        }
      }
    },
    "/products/{id}/add_images" : {
      "post" : {
        "summary" : "Creates a Product Image",
        "tags" : [ "Product" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Products - Edit\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "$ref" : "#/components/requestBodies/Files"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "message" : "Success! Those will be added shortly in background workers."
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "error" : "Please pass 'url' & 'filename' or 'files([{}])' parameter."
                }
              }
            }
          }
        }
      }
    },
    "/products/{id}/delete_image" : {
      "delete" : {
        "summary" : "Deletes a Product Image",
        "tags" : [ "Product" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "photo_id",
          "in" : "query",
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "message" : "Success! Image removed."
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "message" : "Photo Not Found."
                }
              }
            }
          }
        }
      }
    },
    "/products/{id}/location_quantities" : {
      "put" : {
        "summary" : "Updates a Location Quantity",
        "tags" : [ "Product" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Products - Edit Quantities\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "location_quantity_id" : {
                    "type" : "integer"
                  },
                  "quantity" : {
                    "type" : "integer"
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "product_id" : 15,
                  "id" : 1,
                  "quantity" : 100,
                  "price_cost_cents" : null,
                  "price_retail_cents" : null,
                  "location_id" : 1,
                  "tax_rate_id" : null,
                  "created_at" : "2019-10-25T10:08:05.205Z",
                  "updated_at" : "2019-10-25T10:08:05.227Z",
                  "reorder_at" : null,
                  "desired_stock_level" : 0
                }
              }
            }
          }
        }
      }
    },
    "/purchase_orders" : {
      "get" : {
        "summary" : "Returns a paginated list of Purchase Orders",
        "tags" : [ "Purchase Order" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Purchase Orders - List/Search\n",
        "parameters" : [ {
          "name" : "page",
          "in" : "query",
          "description" : "Returns provided page of results, each 'page' contains 20 results",
          "required" : false,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "purchase_orders" : [ {
                    "id" : 1,
                    "account_subdomain" : "testsubdomainwi1",
                    "created_at" : "2019-11-15T16:44:28.521Z",
                    "updated_at" : "2019-11-15T16:44:28.530Z",
                    "expected_date" : "2013-04-07T01:07:34.000Z",
                    "number" : "MyString",
                    "other" : 0.01,
                    "shipping" : 0.01,
                    "shipping_notes" : "MyText",
                    "status" : "MyString",
                    "total" : 0.02,
                    "user_id" : 0,
                    "vendor_id" : 1,
                    "location_id" : null,
                    "due_date" : "2019-11-22T00:00:00.000Z",
                    "paid_date" : "2019-11-15T00:00:00.000Z",
                    "delivery_tracking" : "yourdevivery.com/tracking/link/1",
                    "vendor" : {
                      "id" : 1,
                      "name" : "C & S Wholesalers",
                      "rep_first_name" : "Bill",
                      "rep_last_name" : "Sales",
                      "email" : "info@candswholes.com",
                      "phone" : "603-344-5555",
                      "account_number" : null,
                      "created_at" : "2019-11-15T16:44:28.494Z",
                      "updated_at" : "2019-11-15T16:44:28.494Z",
                      "address" : "44 Billings Circle",
                      "city" : "Keene",
                      "state" : "NH",
                      "zip" : "03455",
                      "website" : "www.candswholes.com",
                      "notes" : "Trucks"
                    },
                    "location" : null,
                    "line_items" : [ ]
                  } ]
                }
              }
            }
          }
        }
      },
      "post" : {
        "summary" : "Creates a Purchase Order",
        "tags" : [ "Purchase Order" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Purchase Orders - Edit\n",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "discount_percent" : {
                    "type" : "integer"
                  },
                  "expected_date" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "general_notes" : {
                    "type" : "string"
                  },
                  "other_cents" : {
                    "type" : "integer"
                  },
                  "shipping_cents" : {
                    "type" : "integer"
                  },
                  "shipping_notes" : {
                    "type" : "string"
                  },
                  "user_id" : {
                    "type" : "integer"
                  },
                  "vendor_id" : {
                    "type" : "integer"
                  },
                  "location_id" : {
                    "type" : "integer"
                  },
                  "due_date" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "paid_date" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "order_date" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "delivery_tracking" : {
                    "type" : "string"
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "purchase_order" : {
                    "id" : 1,
                    "account_subdomain" : "testsubdomainwi1",
                    "created_at" : "2019-11-15T16:44:28.521Z",
                    "updated_at" : "2019-11-15T16:44:28.530Z",
                    "expected_date" : "2013-04-07T01:07:34.000Z",
                    "number" : "MyString",
                    "other" : 0.01,
                    "shipping" : 0.01,
                    "shipping_notes" : "MyText",
                    "status" : "MyString",
                    "total" : 0.02,
                    "user_id" : 0,
                    "vendor_id" : 1,
                    "location_id" : null,
                    "due_date" : "2019-11-22T00:00:00.000Z",
                    "paid_date" : "2019-11-15T00:00:00.000Z",
                    "delivery_tracking" : "yourdevivery.com/tracking/link/1",
                    "vendor" : {
                      "id" : 1,
                      "name" : "C & S Wholesalers",
                      "rep_first_name" : "Bill",
                      "rep_last_name" : "Sales",
                      "email" : "info@candswholes.com",
                      "phone" : "603-344-5555",
                      "account_number" : null,
                      "created_at" : "2019-11-15T16:44:28.494Z",
                      "updated_at" : "2019-11-15T16:44:28.494Z",
                      "address" : "44 Billings Circle",
                      "city" : "Keene",
                      "state" : "NH",
                      "zip" : "03455",
                      "website" : "www.candswholes.com",
                      "notes" : "Trucks"
                    },
                    "location" : null,
                    "line_items" : [ ]
                  }
                }
              }
            }
          }
        }
      }
    },
    "/purchase_orders/{id}" : {
      "get" : {
        "summary" : "Retrieves a Purchase Order by ID",
        "tags" : [ "Purchase Order" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Purchase Orders - View Details\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "purchase_order" : {
                    "id" : 1,
                    "account_subdomain" : "testsubdomainwi1",
                    "created_at" : "2019-11-15T16:44:28.521Z",
                    "updated_at" : "2019-11-15T16:44:28.530Z",
                    "expected_date" : "2013-04-07T01:07:34.000Z",
                    "number" : "MyString",
                    "other" : 0.01,
                    "shipping" : 0.01,
                    "shipping_notes" : "MyText",
                    "status" : "MyString",
                    "total" : 0.02,
                    "user_id" : 0,
                    "vendor_id" : 1,
                    "location_id" : null,
                    "due_date" : "2019-11-22T00:00:00.000Z",
                    "paid_date" : "2019-11-15T00:00:00.000Z",
                    "delivery_tracking" : "yourdevivery.com/tracking/link/1",
                    "vendor" : {
                      "id" : 1,
                      "name" : "C & S Wholesalers",
                      "rep_first_name" : "Bill",
                      "rep_last_name" : "Sales",
                      "email" : "info@candswholes.com",
                      "phone" : "603-344-5555",
                      "account_number" : null,
                      "created_at" : "2019-11-15T16:44:28.494Z",
                      "updated_at" : "2019-11-15T16:44:28.494Z",
                      "address" : "44 Billings Circle",
                      "city" : "Keene",
                      "state" : "NH",
                      "zip" : "03455",
                      "website" : "www.candswholes.com",
                      "notes" : "Trucks"
                    },
                    "location" : null,
                    "line_items" : [ ]
                  }
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      }
    },
    "/purchase_orders/{id}/receive" : {
      "post" : {
        "summary" : "receive purchase_order",
        "tags" : [ "Purchase Order" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Purchase Orders - Edit\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "line_item_id" : {
                    "type" : "integer"
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "purchase_order" : {
                    "id" : 1,
                    "account_subdomain" : "testsubdomainwi1",
                    "created_at" : "2019-11-15T16:44:28.521Z",
                    "updated_at" : "2019-11-15T16:44:28.530Z",
                    "expected_date" : "2013-04-07T01:07:34.000Z",
                    "number" : "MyString",
                    "other" : 0.01,
                    "shipping" : 0.01,
                    "shipping_notes" : "MyText",
                    "status" : "MyString",
                    "total" : 0.02,
                    "user_id" : 0,
                    "vendor_id" : 1,
                    "location_id" : null,
                    "due_date" : "2019-11-22T00:00:00.000Z",
                    "paid_date" : "2019-11-15T00:00:00.000Z",
                    "delivery_tracking" : "yourdevivery.com/tracking/link/1",
                    "vendor" : {
                      "id" : 1,
                      "name" : "C & S Wholesalers",
                      "rep_first_name" : "Bill",
                      "rep_last_name" : "Sales",
                      "email" : "info@candswholes.com",
                      "phone" : "603-344-5555",
                      "account_number" : null,
                      "created_at" : "2019-11-15T16:44:28.494Z",
                      "updated_at" : "2019-11-15T16:44:28.494Z",
                      "address" : "44 Billings Circle",
                      "city" : "Keene",
                      "state" : "NH",
                      "zip" : "03455",
                      "website" : "www.candswholes.com",
                      "notes" : "Trucks"
                    },
                    "location" : null,
                    "line_items" : [ ]
                  }
                }
              }
            }
          }
        }
      }
    },
    "/purchase_orders/{id}/create_po_line_item" : {
      "post" : {
        "summary" : "Adds a Product to a Purchase Order",
        "tags" : [ "Purchase Order" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Purchase Orders - Edit\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "product_id" : {
                    "type" : "integer"
                  },
                  "quantity" : {
                    "type" : "integer"
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "po_line_item" : {
                    "id" : 2,
                    "purchase_order_id" : 7,
                    "product_id" : 2,
                    "quantity" : 10,
                    "cost_cents" : 1,
                    "total_cents" : 10,
                    "created_at" : "2019-10-30T12:00:11.764Z",
                    "updated_at" : "2019-10-30T12:00:11.764Z",
                    "received" : false,
                    "position" : null,
                    "received_quantity" : 10,
                    "parent_po_line_item_id" : null,
                    "old_cost_cents" : null
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "errors" : "Error adding that item  - please ensure that the item you are trying to add is set to ‘Maintain Stock’."
                }
              }
            }
          }
        }
      }
    },
    "/rmm_alerts" : {
      "get" : {
        "summary" : "Returns a paginated list of RMM Alerts",
        "tags" : [ "RMM Alert" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: RMM Alerts - List\nSingle-Customer Users can only access own RMM Alerts.\n",
        "parameters" : [ {
          "name" : "status",
          "in" : "query",
          "description" : "Possible values resolved, all, active.",
          "required" : false,
          "schema" : {
            "type" : "string",
            "default" : "active"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "description" : "Returns provided page of results, each 'page' contains 25 results",
          "required" : false,
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "created_after",
          "in" : "query",
          "required" : false,
          "description" : "Returns RMM Alerts created after the date. Example \"2019-02-25\".",
          "schema" : {
            "type" : "string",
            "format" : "date-time"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "rmm_alerts" : [ {
                    "id" : 1,
                    "customer_id" : 0,
                    "ticket_number" : null,
                    "ticket_status" : null,
                    "computer_name" : "MyString",
                    "properties" : { },
                    "resolved" : false,
                    "check_id" : 1,
                    "status" : "MyString",
                    "formatted_output" : "MyText",
                    "description" : "MyText",
                    "created_at" : "2019-10-31T08:22:35.058Z",
                    "updated_at" : "2019-10-31T08:22:35.058Z",
                    "asset_id" : 1
                  } ],
                  "meta" : {
                    "total_pages" : 1,
                    "page" : 1
                  }
                }
              }
            }
          }
        }
      },
      "post" : {
        "summary" : "Creates an RMM Alert",
        "tags" : [ "RMM Alert" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: RMM Alerts - Create\nSingle-Customer Users can only access own RMM Alerts.\n",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "rmm_alert" : {
                    "type" : "object",
                    "properties" : {
                      "customer_id" : {
                        "type" : "integer"
                      },
                      "asset_id" : {
                        "type" : "integer"
                      },
                      "description" : {
                        "type" : "string"
                      },
                      "formatted_output" : {
                        "type" : "string"
                      },
                      "resolved" : {
                        "type" : "boolean"
                      },
                      "status" : {
                        "type" : "string"
                      },
                      "properties" : {
                        "type" : "object",
                        "additionalProperties" : true
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "201" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : true,
                  "alert" : {
                    "id" : 3,
                    "account_id" : 1,
                    "customer_id" : 1,
                    "computer_name" : null,
                    "properties" : { },
                    "resolved" : false,
                    "check_id" : null,
                    "status" : null,
                    "formatted_output" : null,
                    "description" : "RMM Alert Description",
                    "created_at" : "2020-08-04T12:19:25.754Z",
                    "updated_at" : "2020-08-04T12:19:25.754Z",
                    "ticket_id" : null,
                    "asset_id" : 2
                  }
                }
              }
            }
          }
        }
      }
    },
    "/rmm_alerts/{id}/mute" : {
      "post" : {
        "summary" : "Mutes an RMM Alert by ID",
        "tags" : [ "RMM Alert" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: RMM Alerts - Clear/Manage\nSingle-Customer Users can only access own RMM Alerts.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "mute_for",
          "in" : "query",
          "required" : true,
          "description" : "Length of time to mute alert for. Accepted values: '1-hour', '1-day', '2-days', '1-week', '2-weeks', '1-month', 'forever'",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : "true"
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request"
          },
          "422" : {
            "description" : "Invalid Request"
          }
        }
      }
    },
    "/rmm_alerts/{id}" : {
      "get" : {
        "summary" : "Retrieves an RMM Alert by ID",
        "tags" : [ "RMM Alert" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: RMM Alerts - List\nSingle-Customer Users can only access own RMM Alerts.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "rmm_alert" : {
                    "id" : 1,
                    "customer_id" : 0,
                    "ticket_number" : null,
                    "ticket_status" : null,
                    "computer_name" : "MyString",
                    "properties" : { },
                    "resolved" : false,
                    "check_id" : 1,
                    "status" : "MyString",
                    "formatted_output" : "MyText",
                    "description" : "MyText",
                    "created_at" : "2019-10-31T08:22:35.058Z",
                    "updated_at" : "2019-10-31T08:22:35.058Z",
                    "asset_id" : 1
                  }
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      },
      "delete" : {
        "summary" : "Deletes/Clears an RMM Alert by ID",
        "tags" : [ "RMM Alert" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: RMM Alerts - Delete\nSingle-Customer Users can only access own RMM Alerts.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : "true"
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      }
    },
    "/schedules" : {
      "get" : {
        "summary" : "Returns a paginated list of Invoice Schedules",
        "tags" : [ "Schedule" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Recurring Invoices - List\n",
        "parameters" : [ {
          "name" : "customer_id",
          "in" : "query",
          "description" : "Returns a list of Schedules that belong to a Customer ID",
          "required" : false,
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "description" : "Returns provided page of results, each 'page' contains 25 results",
          "required" : false,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "schedules" : [ {
                    "id" : 1,
                    "account_id" : 1,
                    "customer_id" : 1,
                    "email_customer" : false,
                    "frequency" : "Daily",
                    "name" : "MyString",
                    "next_run" : "2016-01-01T00:00:00.000Z",
                    "snail_mail" : false,
                    "charge_mop" : false,
                    "subtotal" : 0,
                    "invoice_unbilled_ticket_charges" : false,
                    "paused" : false,
                    "last_invoice_paid" : null,
                    "lines" : [ ]
                  } ]
                }
              }
            }
          }
        }
      },
      "post" : {
        "summary" : "Creates an Invoice Schedule",
        "tags" : [ "Schedule" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Recurring Invoices - New\n",
        "requestBody" : {
          "$ref" : "#/components/requestBodies/Schedule"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "schedule" : {
                    "id" : 1,
                    "account_id" : 1,
                    "customer_id" : 1,
                    "email_customer" : false,
                    "frequency" : "Daily",
                    "name" : "MyString",
                    "next_run" : "2016-01-01T00:00:00.000Z",
                    "snail_mail" : false,
                    "charge_mop" : false,
                    "subtotal" : 0,
                    "invoice_unbilled_ticket_charges" : false,
                    "paused" : false,
                    "last_invoice_paid" : null,
                    "lines" : [ ]
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "error" : [ "Frequency Must be a valid selection", "Frequency can't be blank", "Next run can't be blank", "Name can't be blank", "Customer can't be blank" ]
                }
              }
            }
          }
        }
      }
    },
    "/schedules/{id}" : {
      "get" : {
        "summary" : "Retrieves a Schedule by ID",
        "tags" : [ "Schedule" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Recurring Invoices - List\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "schedule" : {
                    "id" : 1,
                    "account_id" : 1,
                    "customer_id" : 1,
                    "email_customer" : false,
                    "frequency" : "Daily",
                    "name" : "MyString",
                    "next_run" : "2016-01-01T00:00:00.000Z",
                    "snail_mail" : false,
                    "charge_mop" : false,
                    "subtotal" : 0,
                    "invoice_unbilled_ticket_charges" : false,
                    "paused" : false,
                    "last_invoice_paid" : null,
                    "lines" : [ ]
                  }
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      },
      "put" : {
        "summary" : "Updates an existing Invoice Schedule by ID",
        "tags" : [ "Schedule" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Recurring Invoices - Edit\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "$ref" : "#/components/requestBodies/Schedule"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "schedule" : {
                    "id" : 1,
                    "account_id" : 1,
                    "customer_id" : 1,
                    "email_customer" : false,
                    "frequency" : "Daily",
                    "name" : "MyString",
                    "next_run" : "2016-01-01T00:00:00.000Z",
                    "snail_mail" : false,
                    "charge_mop" : false,
                    "subtotal" : 0,
                    "invoice_unbilled_ticket_charges" : false,
                    "paused" : false,
                    "last_invoice_paid" : null,
                    "lines" : [ ]
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "error" : [ "Next run can't be blank" ]
                }
              }
            }
          }
        }
      },
      "delete" : {
        "summary" : "Deletes a Schedule by ID",
        "tags" : [ "Schedule" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Recurring Invoices - Delete\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful"
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      }
    },
    "/schedules/{id}/add_line_item" : {
      "post" : {
        "summary" : "Adds a Line Item to an Invoice Schedule",
        "tags" : [ "Schedule" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Recurring Invoices - Edit\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "$ref" : "#/components/requestBodies/ScheduleLineItem"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "schedule_line_item" : {
                    "id" : 1,
                    "cost_cents" : 0,
                    "description" : "Description",
                    "name" : "Name",
                    "position" : 0,
                    "product_id" : null,
                    "quantity" : "0.0",
                    "retail_cents" : 0,
                    "schedule_id" : 11,
                    "taxable" : false,
                    "user_id" : 1,
                    "price_cost" : 0,
                    "price_retail" : 0,
                    "product_category" : null,
                    "asset_type_id" : null,
                    "recurring_type_id" : null,
                    "device_ids" : [ ],
                    "one_time_charge" : false
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "error" : [ "Name can't be blank" ]
                }
              }
            }
          }
        }
      }
    },
    "/schedules/{id}/remove_line_item" : {
      "post" : {
        "summary" : "Removes a Line Item from an Invoice Schedule",
        "tags" : [ "Schedule" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Recurring Invoices - Edit\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "integer"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful"
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      }
    },
    "/schedules/{id}/line_items/{schedule_line_item_id}" : {
      "put" : {
        "summary" : "Updates a Line Item",
        "tags" : [ "Schedule" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Recurring Invoices - Edit\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "schedule_line_item_id",
          "in" : "path",
          "description" : "ID of line item to update",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "$ref" : "#/components/requestBodies/ScheduleLineItem"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "schedule_line_item" : {
                    "id" : 3,
                    "cost_cents" : 1,
                    "description" : "MyText",
                    "name" : "Updated Name",
                    "position" : 1,
                    "product_id" : 1,
                    "quantity" : "9.99",
                    "retail_cents" : 1,
                    "schedule_id" : 15,
                    "taxable" : false,
                    "user_id" : 1,
                    "price_cost" : 0.01,
                    "price_retail" : 0.01,
                    "product_category" : null,
                    "asset_type_id" : null,
                    "recurring_type_id" : null,
                    "device_ids" : [ ],
                    "one_time_charge" : false
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "error" : [ "Name can't be blank" ]
                }
              }
            }
          }
        }
      }
    },
    "/search" : {
      "get" : {
        "summary" : "Search all the things",
        "tags" : [ "Search" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Additional permissions required depending on search results type:\n- Customer, Contact, Asset: \"Customers - List/Search\"\n- Lead: Leads - List/Search\n- Invoice: Invoices - List/Search\n- Estimate: Estimates - List/Search\n- Ticket: Tickets - List/Search\n- Product: Products - List/Search\n- Purchase Order, Vendor: Purchase Orders - List/Search\n- Report: Reports - View\n- Wiki: Documentation - Allow Usage\n",
        "parameters" : [ {
          "name" : "query",
          "in" : "query",
          "description" : "Search query",
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "quick_result" : null,
                  "results" : [ {
                    "table" : {
                      "_id" : 1,
                      "_type" : "customer",
                      "_index" : "customers",
                      "_source" : {
                        "table" : {
                          "firstname" : "Walkin",
                          "lastname" : "Customer",
                          "email" : "walkin@somedomain.com",
                          "business_name" : null,
                          "phones" : [ {
                            "id" : 1,
                            "label" : "Phone",
                            "number" : "123",
                            "customer_id" : 1,
                            "created_at" : "2019-11-01T09:13:58.626Z",
                            "updated_at" : "2019-11-01T09:13:58.626Z",
                            "extension" : null
                          } ]
                        }
                      }
                    }
                  } ],
                  "error" : null
                }
              }
            }
          }
        }
      }
    },
    "/settings" : {
      "get" : {
        "summary" : "Returns a list of Account Settings",
        "tags" : [ "Setting" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "customers" : {
                    "required_fields" : null,
                    "customer_fields" : [ ],
                    "customer_field_answers" : [ ]
                  },
                  "assets" : {
                    "asset_types" : [ ],
                    "asset_type_fields" : [ ],
                    "asset_type_field_answers" : [ ]
                  },
                  "locale" : {
                    "iso_code" : "en",
                    "currency_symbol" : "$",
                    "date_format" : "mm-dd-yy",
                    "time_format" : "hh:mm tt",
                    "time_zone" : "America/Los_Angeles",
                    "time_offset" : "-08:00"
                  },
                  "ticket" : {
                    "ticket_types" : [ ],
                    "ticket_type_fields" : [ ],
                    "ticket_type_field_answers" : [ ],
                    "problem_types" : [ "Virus", "TuneUp", "Hardware", "Software", "Other" ],
                    "priorities" : [ "", "0 Urgent", "1 High", "2 Normal", "3 Low" ]
                  },
                  "business_hours_enabled" : true,
                  "business_hours" : [ {
                    "day" : "Sunday",
                    "start" : "09:00",
                    "end" : "17:00",
                    "closed" : false
                  }, {
                    "day" : "Monday",
                    "start" : "09:00",
                    "end" : "17:00",
                    "closed" : false
                  }, {
                    "day" : "Tuesday",
                    "start" : "09:00",
                    "end" : "17:00",
                    "closed" : false
                  }, {
                    "day" : "Wednesday",
                    "start" : "09:00",
                    "end" : "17:00",
                    "closed" : false
                  }, {
                    "day" : "Thursday",
                    "start" : "09:00",
                    "end" : "17:00",
                    "closed" : false
                  }, {
                    "day" : "Friday",
                    "start" : "09:00",
                    "end" : "17:00",
                    "closed" : false
                  }, {
                    "day" : "Saturday",
                    "start" : "09:00",
                    "end" : "17:00",
                    "closed" : false
                  } ],
                  "default_holiday_calendar" : "USA",
                  "msp_addon" : null
                }
              }
            }
          }
        }
      }
    },
    "/settings/tabs" : {
      "get" : {
        "summary" : "Returns Tabs Settings",
        "tags" : [ "Setting" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "tabs" : {
                    "msp_dashboard" : true,
                    "customers" : true,
                    "assets" : false,
                    "alerts" : false,
                    "contracts" : false,
                    "invoices" : true,
                    "customer_purchases" : false,
                    "refurbs" : false,
                    "estimates" : true,
                    "tickets" : true,
                    "parts" : true,
                    "products" : true,
                    "purchase_orders" : false,
                    "field_jobs" : true,
                    "kabuto_policies" : true,
                    "scripts" : true,
                    "sales" : true,
                    "leads" : true,
                    "domo" : false,
                    "marketr" : true,
                    "recur" : false,
                    "reports" : false,
                    "wiki" : false,
                    "app_center" : false,
                    "pax8" : false
                  }
                }
              }
            }
          }
        }
      }
    },
    "/settings/printing" : {
      "get" : {
        "summary" : "Returns Printing Settings",
        "tags" : [ "Setting" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "messaging_channel" : "100000000000000000001",
                  "registers" : [ ]
                }
              }
            }
          }
        }
      }
    },
    "/ticket_blueprints/{id}/apply": {
      "post": {
        "summary": "Creates tickets from a Blueprint",
        "tags": [
          "Ticket Blueprint"
        ],
        "security": [
          {
            "bearerAuth": [

            ]
          }
        ],
        "description": "Required permission: Ticket Blueprints - Apply (Create Ticket from Blueprint)\nCreates a parent ticket and child tickets from the blueprint, assigned to the given customer.\nReturns the parent ticket ID and array of child ticket IDs.\n",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Blueprint ID",
            "required": true,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ticket_id": {
                      "type": "integer",
                      "description": "ID of the created parent ticket"
                    },
                    "child_ticket_ids": {
                      "type": "array",
                      "items": {
                        "type": "integer"
                      },
                      "description": "IDs of created child tickets"
                    }
                  },
                  "required": [
                    "ticket_id",
                    "child_ticket_ids"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "404": {
            "description": "Customer not found"
          },
          "422": {
            "description": "Unprocessable Entity (blueprint invalid)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "Error message"
                    }
                  },
                  "required": [
                    "error"
                  ]
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "customer_id"
                ],
                "properties": {
                  "customer_id": {
                    "type": "integer",
                    "description": "Customer ID the ticket(s) will be assigned to"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ticket_blueprints": {
      "get": {
        "summary": "Returns a paginated list of Ticket Blueprints",
        "tags": [
          "Ticket Blueprint"
        ],
        "security": [
          {
            "bearerAuth": [

            ]
          }
        ],
        "description": "Required permission: Ticket Blueprints - View List\nReturns only blueprints available for ticket creation (hidden_for_ticket_creation: false).\n",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "required": false,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "per_page",
            "in": "query",
            "description": "Items per page (default 20, max 100)",
            "required": false,
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful",
            "content": {
              "application/json": {
                "examples": {
                  "example_0": {
                    "value": {
                      "ticket_blueprints": [
                        {
                          "id": 1,
                          "name": "Standalone Blueprint",
                          "role": "standalone",
                          "children_count": 0
                        }
                      ],
                      "meta": {
                        "page": 1,
                        "per_page": 20,
                        "total_pages": 1,
                        "total_entries": 1
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        }
      }
    },
    "/ticket_timers" : {
      "get" : {
        "summary" : "Returns a paginated list of Ticket Timers",
        "tags" : [ "Ticket Timer" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Ticket Timers - Overview\n",
        "parameters" : [ {
          "name" : "created_at_lt",
          "in" : "query",
          "description" : "Returns Ticket Timers created before the date. Example \"2019-01-22\"",
          "required" : false,
          "schema" : {
            "type" : "string",
            "format" : "date-time"
          }
        }, {
          "name" : "created_at_gt",
          "in" : "query",
          "description" : "Returns Ticket Timers created after the date. Example \"2019-12-22\"",
          "required" : false,
          "schema" : {
            "type" : "string",
            "format" : "date-time"
          }
        }, {
          "name" : "customer_id",
          "in" : "query",
          "description" : "Returns Ticket Timers for tickets belonging to the given customer.",
          "required" : false,
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "billing_status",
          "in" : "query",
          "description" : "Filters Ticket Timers by derived billing status. Allowed values: non-billable, unbilled, billed, invoiced. Unknown values are ignored.",
          "required" : false,
          "schema" : {
            "type" : "string",
            "enum" : [ "non-billable", "unbilled", "billed", "invoiced" ]
          }
        }, {
          "name" : "page",
          "in" : "query",
          "description" : "Returns provided page of results, each 'page' contains 25 results",
          "required" : false,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "ticket_timers" : [ {
                    "id" : 1,
                    "ticket_id" : 1,
                    "user_id" : 1,
                    "start_time" : "2013-08-06T13:41:15.000Z",
                    "end_time" : "2013-08-06T14:41:15.000Z",
                    "recorded" : false,
                    "created_at" : "2019-11-05T15:18:43.727Z",
                    "updated_at" : "2019-11-05T15:18:43.727Z",
                    "billable" : false,
                    "notes" : null,
                    "toggl_id" : null,
                    "product_id" : null,
                    "comment_id" : null,
                    "ticket_line_item_id" : null,
                    "active_duration" : null
                  } ],
                  "meta" : {
                    "total_pages" : 1,
                    "page" : 1
                  }
                }
              }
            }
          }
        }
      }
    },
    "ticket_timers/{id}" : {
      "patch": {
        "summary": "Update the billable property of a Ticket Timer",
        "tags": [ "Ticket Timer" ],
        "security": [ {
          "bearerAuth": [ ]
        } ],
        "description": "Required permission: Ticket Timers - Edit\n",
        "parameters": [ {
          "name": "id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "integer"
          }
        },{
          "name": "billable",
          "in": "query",
          "required": true,
          "schema": {
            "type": "boolean"
          }
        } ],
        "responses": {
          "200": {
            "description": "successful",
            "content": {
              "application/json": {
                "example": {
                  "ticket_timer": {
                    "id": 1,
                    "ticket_id": 1,
                    "user_id": 1,
                    "start_time": "2024-01-15T08:00:00.000Z",
                    "end_time": "2024-01-15T09:00:00.000Z",
                    "recorded": false,
                    "created_at": "2024-01-15T08:00:00.000Z",
                    "updated_at": "2024-01-15T09:00:00.000Z",
                    "billable": false,
                    "notes": null,
                    "toggl_id": null,
                    "product_id": null,
                    "comment_id": null,
                    "ticket_line_item_id": null,
                    "active_duration": 3600,
                    "since_updated_at": "2024-01-15T09:00:00.000Z",
                    "billable_time": 3600,
                    "billable_override": null
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "example": {
                  "message": "Not found"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Entity - invalid billable value",
            "content": {
              "application/json": {
                "example": {
                  "errors": ["billable must be true or false"]
                }
              }
            }
          }
        }
      }
    },
    "/tickets" : {
      "get" : {
        "summary" : "Returns a paginated list of Tickets",
        "tags" : [ "Ticket" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Tickets - List/Search\nSingle-Customer Users can only access own tickets.\n",
        "parameters" : [ {
          "name" : "customer_id",
          "in" : "query",
          "required" : false,
          "description" : "Any Ticket with customer_id equal to the parameter.",
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "contact_id",
          "in" : "query",
          "required" : false,
          "description" : "Any Ticket with contact_id equal to the parameter.",
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "number",
          "in" : "query",
          "required" : false,
          "description" : "Any Ticket with number equal to the parameter.",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "resolved_after",
          "in" : "query",
          "required" : false,
          "description" : "Returns Tickets resolved after the date. Example \"2019-01-23\".",
          "schema" : {
            "type" : "string",
            "format" : "date-time"
          }
        }, {
          "name" : "created_after",
          "in" : "query",
          "required" : false,
          "description" : "Returns Tickets created after the date. Example \"2019-02-25\".",
          "schema" : {
            "type" : "string",
            "format" : "date-time"
          }
        }, {
          "name" : "since_updated_at",
          "in" : "query",
          "required" : false,
          "description" : "Returns Tickets updated after the date. Example \"2019-02-25\".",
          "schema" : {
            "type" : "string",
            "format" : "date-time"
          }
        }, {
          "name" : "status",
          "in" : "query",
          "required" : false,
          "description" : "Any Ticket with status equal to the parameter. Examples \"New\", \"In Progress\", \"Resolved\", \"Invoiced\", \"Waiting for Parts\", \"Waiting on Customer\", \"Scheduled\", \"Customer Reply\", \"Not Closed\".",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "query",
          "in" : "query",
          "required" : false,
          "description" : "Search query",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "user_id",
          "in" : "query",
          "required" : false,
          "description" : "Any Ticket assigned to a User ID",
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "mine",
          "in" : "query",
          "required" : false,
          "description" : "Any Ticket assigned to the current user",
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "ticket_search_id",
          "in" : "query",
          "required" : false,
          "description" : "Returns results of a Ticket Search",
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "asset_name",
          "in" : "query",
          "required" : false,
          "description" : "Returns only Tickets linked (via assets) to assets whose name matches the provided value (case-insensitive partial match). Combine with `customer_id` to scope the asset search to a single customer; without `customer_id` the search spans all matching customers in the authenticated account. Combine with `asset_serial` to AND both filters against the same asset match set.",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "asset_serial",
          "in" : "query",
          "required" : false,
          "description" : "Returns only Tickets linked (via assets) to assets whose serial number matches the provided value (case-insensitive partial match). Combine with `asset_name` to AND both filters against the same asset match set.",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "description" : "Returns provided page of results, each 'page' contains 25 results",
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name": "comment_format",
          "in": "query",
          "required": false,
          "description": "Returns comments in the specified format. Allowed values: 'plaintext', 'richtext', 'original'. Defaults to 'plaintext'.",
          "schema": {
            "type": "string"
          }
        }, {
          "name": "all_comments",
          "in": "query",
          "required": false,
          "description": "(DEPRICATED PARAM) When set to true includes all ticket comments in the response.  When set to false, only the initial comment is returned. Defaults to true, but WILL DEFAULT TO FALSE as of March 11, 2026.  Param will be sunset in 2026.",
          "schema": {
            "type": "boolean"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "tickets" : [ {
                    "id" : 1,
                    "number" : 1,
                    "subject" : "Some major problem",
                    "created_at" : "2019-11-04T08:59:31.034Z",
                    "customer_id" : 1,
                    "customer_business_then_name" : "Walkin Customer",
                    "due_date" : "2019-11-04T08:59:31.016Z",
                    "resolved_at" : null,
                    "start_at" : null,
                    "end_at" : null,
                    "location_id" : null,
                    "location_name": null,
                    "problem_type" : "Virus",
                    "status" : "New",
                    "ticket_type_id" : 1,
                    "ticket_type_name": "Hardware",
                    "properties" : { },
                    "user_id" : null,
                    "updated_at" : "2019-11-04T08:59:31.034Z",
                    "pdf_url" : null,
                    "priority" : null,
                    "billing_status": null,
                    "tag_list": [ ],
                    "sla_name": null,
                    "creator_name_or_email": null,
                    "contact_fullname": null,
                    "contract_name": null,
                    "address_id": null,
                    "parent": false,
                    "parent_id": null,
                    "child": false,
                    "recurring": false,
                    "customer_reply": false,
                    "total_formatted_billable_time": null,
                    "contact_id": null,
                    "sla_breached": false,
                    "sla_breaching_soon": false,
                    "contract_id": null,
                    "sla_id": null,
                    "customer_tag_list": [ ],
                    "resolution_time": null,
                    "response_time": null,
                    "customer_icons": [ ],
                    "assets": [ ],
                    "comments" : [ ],
                    "user" : null
                  } ],
                  "meta" : {
                    "total_pages" : 1,
                    "page" : 1
                  }
                }
              }
            }
          }
        }
      },
      "post" : {
        "summary" : "Creates a Ticket",
        "tags" : [ "Ticket" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Tickets - Create\nSingle-Customer Users can only access own tickets.\n",
        "requestBody" : {
          "$ref" : "#/components/requestBodies/Ticket"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "ticket" : {
                    "id" : 3,
                    "number" : 2012,
                    "subject" : "Ticket Subject",
                    "created_at" : "2019-11-04T14:55:01.883Z",
                    "customer_id" : 1,
                    "customer_business_then_name" : "Walkin Customer",
                    "due_date" : "2025-10-10T08:00:00.000Z",
                    "start_at" : null,
                    "end_at" : "2025-10-10T18:45:00.000Z",
                    "location_id" : null,
                    "problem_type" : "Virus",
                    "status" : "New",
                    "properties" : {
                      "Device Type" : "Hard Drive",
                      "Maker" : "Text field"
                    },
                    "user_id" : 1,
                    "updated_at" : "2019-11-04T14:55:01.928Z",
                    "pdf_url" : null,
                    "intake_form_html" : null,
                    "signature_name" : "Joe",
                    "signature_date" : null,
                    "asset_ids" : [ 1 ],
                    "priority" : "High",
                    "resolved_at" : null,
                    "outtake_form_name" : null,
                    "outtake_form_date" : null,
                    "outtake_form_html" : null,
                    "comments" : [ {
                      "id" : 1,
                      "created_at" : "2019-11-04T14:55:01.884Z",
                      "updated_at" : "2019-11-04T14:55:01.884Z",
                      "ticket_id" : 3,
                      "subject" : "Comment Subject",
                      "body" : "Comment Body",
                      "tech" : null,
                      "hidden" : true,
                      "user_id" : null
                    } ],
                    "attachments" : [ ],
                    "ticket_timers" : [ ],
                    "line_items" : [ ],
                    "worksheet_results" : [ ],
                    "assets" : [ {
                      "id" : 1,
                      "name" : "Vileplume",
                      "customer_id" : 1,
                      "created_at" : "2019-11-04T14:55:01.790Z",
                      "updated_at" : "2019-11-04T14:55:01.790Z",
                      "properties" : { },
                      "asset_type" : "Sandshrew",
                      "asset_serial" : null,
                      "external_rmm_link" : null,
                      "customer" : {
                        "id" : 1,
                        "firstname" : "Walkin",
                        "lastname" : "Customer",
                        "fullname" : "Walkin Customer",
                        "business_name" : null,
                        "email" : "walkin@somedomain.com",
                        "phone" : "123",
                        "mobile" : null,
                        "created_at" : "2019-11-04T14:54:50.735Z",
                        "updated_at" : "2019-11-04T14:54:50.735Z",
                        "pdf_url" : null,
                        "address" : null,
                        "address_2" : null,
                        "city" : null,
                        "state" : null,
                        "zip" : null,
                        "latitude" : null,
                        "longitude" : null,
                        "notes" : null,
                        "get_sms" : false,
                        "opt_out" : false,
                        "disabled" : false,
                        "no_email" : true,
                        "location_id" : null,
                        "properties" : { },
                        "online_profile_url" : "http://testsubdomainwi1.lvh.me//my_profile/v2/index?portal_key=3g85nj295ar5u4c9zq1o",
                        "tax_rate_id" : null,
                        "notification_email" : null,
                        "invoice_cc_emails" : null,
                        "invoice_term_id" : null,
                        "referred_by" : null,
                        "ref_customer_id" : null,
                        "business_and_full_name" : "Walkin Customer",
                        "business_then_name" : "Walkin Customer"
                      },
                      "rmm_links" : [ ],
                      "rmm_store" : {
                        "id" : 1,
                        "asset_id" : 1,
                        "account_id" : 1,
                        "triggers" : {
                          "bsod_triggered" : "false",
                          "time_triggered" : "false",
                          "no_av_triggered" : "false",
                          "defrag_triggered" : "false",
                          "firewall_triggered" : "false",
                          "app_crash_triggered" : "false",
                          "low_hd_space_triggered" : "false",
                          "smart_failure_triggered" : "false",
                          "device_manager_triggered" : "false",
                          "agent_offline_triggered" : "false"
                        },
                        "windows_updates" : { },
                        "emsisoft" : { },
                        "general" : { },
                        "created_at" : "2019-11-04T14:55:01.991Z",
                        "updated_at" : "2019-11-04T14:55:01.991Z",
                        "override_alert_agent_offline_mins" : null,
                        "override_alert_agent_rearm_after_mins" : null,
                        "override_low_hd_threshold" : null,
                        "override_autoresolve_offline_alert" : null
                      }
                    } ],
                    "appointments" : [ ],
                    "ticket_fields" : [ {
                      "id" : 2,
                      "name" : "Maker",
                      "field_type" : "text_field",
                      "required" : null,
                      "account_id" : 1,
                      "created_at" : "2019-11-04T14:55:01.761Z",
                      "updated_at" : "2019-11-04T14:55:01.761Z",
                      "ticket_type_id" : 1,
                      "hidden" : false,
                      "position" : null,
                      "answers" : [ ]
                    }, {
                      "id" : 1,
                      "name" : "Device Type",
                      "field_type" : "select_box",
                      "required" : null,
                      "account_id" : 1,
                      "created_at" : "2019-11-04T14:55:01.743Z",
                      "updated_at" : "2019-11-04T14:55:01.743Z",
                      "ticket_type_id" : 1,
                      "hidden" : false,
                      "position" : null,
                      "answers" : [ {
                        "id" : 1,
                        "ticket_field_id" : 1,
                        "content" : "Hard Drive",
                        "created_at" : "2019-11-04T14:55:01.758Z",
                        "updated_at" : "2019-11-04T14:55:01.758Z",
                        "account_id" : null
                      } ]
                    } ],
                    "ticket_answers" : [ {
                      "id" : 1,
                      "ticket_field_id" : 1,
                      "content" : "Hard Drive",
                      "created_at" : "2019-11-04T14:55:01.758Z",
                      "updated_at" : "2019-11-04T14:55:01.758Z",
                      "account_id" : null
                    } ],
                    "customer" : {
                      "id" : 1,
                      "firstname" : "Walkin",
                      "lastname" : "Customer",
                      "fullname" : "Walkin Customer",
                      "business_name" : null,
                      "email" : "walkin@somedomain.com",
                      "phone" : "123",
                      "mobile" : null,
                      "created_at" : "2019-11-04T14:54:50.735Z",
                      "updated_at" : "2019-11-04T14:54:50.735Z",
                      "pdf_url" : null,
                      "address" : null,
                      "address_2" : null,
                      "city" : null,
                      "state" : null,
                      "zip" : null,
                      "latitude" : null,
                      "longitude" : null,
                      "notes" : null,
                      "get_sms" : false,
                      "opt_out" : false,
                      "disabled" : false,
                      "no_email" : true,
                      "location_name" : null,
                      "location_id" : null,
                      "properties" : { },
                      "online_profile_url" : "http://testsubdomainwi1.lvh.me//my_profile/v2/index?portal_key=cfrwzra6wo3ybuj598pa",
                      "tax_rate_id" : null,
                      "notification_email" : null,
                      "invoice_cc_emails" : null,
                      "invoice_term_id" : null,
                      "referred_by" : null,
                      "ref_customer_id" : null,
                      "business_and_full_name" : "Walkin Customer",
                      "business_then_name" : "Walkin Customer",
                      "contacts" : [ ]
                    },
                    "contact" : null,
                    "user" : {
                      "id" : 1,
                      "email" : "bat1man44128@man.com",
                      "full_name" : "Bat Man",
                      "created_at" : "2019-11-04T14:54:51.081Z",
                      "updated_at" : "2019-11-04T14:54:51.081Z",
                      "group" : "Admins",
                      "admin" : true,
                      "color" : "1e3e96"
                    },
                    "ticket_type" : {
                      "id" : 1,
                      "name" : "Devices",
                      "account_id" : 1,
                      "created_at" : "2019-11-04T14:55:01.722Z",
                      "updated_at" : "2019-11-04T14:55:01.722Z",
                      "disabled" : false,
                      "intake_terms" : null,
                      "skip_intake" : false,
                      "outtake_terms" : null,
                      "skip_outtake" : false,
                      "ticket_fields" : [ {
                        "id" : 2,
                        "name" : "Maker",
                        "field_type" : "text_field",
                        "required" : null,
                        "account_id" : 1,
                        "created_at" : "2019-11-04T14:55:01.761Z",
                        "updated_at" : "2019-11-04T14:55:01.761Z",
                        "ticket_type_id" : 1,
                        "hidden" : false,
                        "position" : null,
                        "answers" : [ ]
                      }, {
                        "id" : 1,
                        "name" : "Device Type",
                        "field_type" : "select_box",
                        "required" : null,
                        "account_id" : 1,
                        "created_at" : "2019-11-04T14:55:01.743Z",
                        "updated_at" : "2019-11-04T14:55:01.743Z",
                        "ticket_type_id" : 1,
                        "hidden" : false,
                        "position" : null,
                        "answers" : [ {
                          "id" : 1,
                          "ticket_field_id" : 1,
                          "content" : "Hard Drive",
                          "created_at" : "2019-11-04T14:55:01.758Z",
                          "updated_at" : "2019-11-04T14:55:01.758Z",
                          "account_id" : null
                        } ]
                      } ]
                    }
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "error" : "Customer required field"
                }
              }
            }
          }
        }
      }
    },
    "/tickets/{id}" : {
      "get" : {
        "summary" : "Retrieves a Ticket by ID",
        "tags" : [ "Ticket" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permissions: \"Tickets - View Details\" or \"Tickets - View 'Their Ticket' Details (assigned to them)\"\nSingle-Customer Users can only access own tickets.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "ticket" : {
                    "id" : 5,
                    "number" : 4,
                    "subject" : "Some major problem",
                    "created_at" : "2019-11-05T07:40:54.824Z",
                    "customer_id" : 1,
                    "customer_business_then_name" : "Walkin Customer",
                    "due_date" : "2019-11-05T07:40:54.820Z",
                    "start_at" : null,
                    "end_at" : null,
                    "location_id" : null,
                    "problem_type" : "Virus",
                    "status" : "New",
                    "properties" : { },
                    "user_id" : null,
                    "updated_at" : "2019-11-05T07:40:54.824Z",
                    "pdf_url" : null,
                    "intake_form_html" : null,
                    "signature_name" : null,
                    "signature_date" : null,
                    "asset_ids" : [ ],
                    "priority" : null,
                    "resolved_at" : null,
                    "outtake_form_name" : null,
                    "outtake_form_date" : null,
                    "outtake_form_html" : null,
                    "tag_list": [ ],
                    "comments" : [ ],
                    "attachments" : [ ],
                    "ticket_timers" : [ ],
                    "line_items" : [ ],
                    "worksheet_results" : [ ],
                    "assets" : [ ],
                    "appointments" : [ ],
                    "ticket_fields" : [ ],
                    "ticket_answers" : [ ],
                    "customer" : {
                      "id" : 1,
                      "firstname" : "Walkin",
                      "lastname" : "Customer",
                      "fullname" : "Walkin Customer",
                      "business_name" : null,
                      "email" : "walkin@somedomain.com",
                      "phone" : "123",
                      "mobile" : null,
                      "created_at" : "2019-11-05T07:40:44.365Z",
                      "updated_at" : "2019-11-05T07:40:44.365Z",
                      "pdf_url" : null,
                      "address" : null,
                      "address_2" : null,
                      "city" : null,
                      "state" : null,
                      "zip" : null,
                      "latitude" : null,
                      "longitude" : null,
                      "notes" : null,
                      "get_sms" : false,
                      "opt_out" : false,
                      "disabled" : false,
                      "no_email" : true,
                      "location_name" : null,
                      "location_id" : null,
                      "properties" : { },
                      "online_profile_url" : "http://testsubdomainwi1.lvh.me//my_profile/v2/index?portal_key=2ry2wdlnaybl86oetmbr",
                      "tax_rate_id" : null,
                      "notification_email" : null,
                      "invoice_cc_emails" : null,
                      "invoice_term_id" : null,
                      "referred_by" : null,
                      "ref_customer_id" : null,
                      "business_and_full_name" : "Walkin Customer",
                      "business_then_name" : "Walkin Customer",
                      "contacts" : [ ]
                    },
                    "contact" : null,
                    "user" : {
                      "id" : 1,
                      "email" : "bat1man44128@man.com",
                      "full_name" : "Bat Man",
                      "created_at" : "2019-11-04T14:54:51.081Z",
                      "updated_at" : "2019-11-04T14:54:51.081Z",
                      "group" : "Admins",
                      "admin" : true,
                      "color" : "1e3e96"
                    },
                    "ticket_type" : {
                      "id" : 1,
                      "name" : "Devices",
                      "account_id" : 1,
                      "created_at" : "2019-11-04T14:55:01.722Z",
                      "updated_at" : "2019-11-04T14:55:01.722Z",
                      "disabled" : false,
                      "intake_terms" : null,
                      "skip_intake" : false,
                      "outtake_terms" : null,
                      "skip_outtake" : false,
                      "ticket_fields" : [ ]
                    },
                    "address" : null
                  }
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      },
      "put" : {
        "summary" : "Updates an existing Ticket by ID",
        "tags" : [ "Ticket" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Tickets - Edit\nSingle-Customer Users can only access own tickets.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "$ref" : "#/components/requestBodies/Ticket"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "ticket" : {
                    "id" : 5,
                    "number" : 4,
                    "subject" : "Some major problem",
                    "created_at" : "2019-11-05T07:40:54.824Z",
                    "customer_id" : 1,
                    "customer_business_then_name" : "Walkin Customer",
                    "due_date" : "2019-11-05T07:40:54.820Z",
                    "start_at" : null,
                    "end_at" : null,
                    "location_id" : null,
                    "problem_type" : "Virus",
                    "status" : "New",
                    "properties" : { },
                    "user_id" : null,
                    "updated_at" : "2019-11-05T07:40:54.824Z",
                    "pdf_url" : null,
                    "intake_form_html" : null,
                    "signature_name" : null,
                    "signature_date" : null,
                    "asset_ids" : [ ],
                    "priority" : null,
                    "resolved_at" : null,
                    "outtake_form_name" : null,
                    "outtake_form_date" : null,
                    "outtake_form_html" : null,
                    "comments" : [ ],
                    "attachments" : [ ],
                    "ticket_timers" : [ ],
                    "line_items" : [ ],
                    "worksheet_results" : [ ],
                    "assets" : [ ],
                    "appointments" : [ ],
                    "ticket_fields" : [ ],
                    "ticket_answers" : [ ],
                    "tag_list": [ ],
                    "customer" : {
                      "id" : 1,
                      "firstname" : "Walkin",
                      "lastname" : "Customer",
                      "fullname" : "Walkin Customer",
                      "business_name" : null,
                      "email" : "walkin@somedomain.com",
                      "phone" : "123",
                      "mobile" : null,
                      "created_at" : "2019-11-05T07:40:44.365Z",
                      "updated_at" : "2019-11-05T07:40:44.365Z",
                      "pdf_url" : null,
                      "address" : null,
                      "address_2" : null,
                      "city" : null,
                      "state" : null,
                      "zip" : null,
                      "latitude" : null,
                      "longitude" : null,
                      "notes" : null,
                      "get_sms" : false,
                      "opt_out" : false,
                      "disabled" : false,
                      "no_email" : true,
                      "location_name" : null,
                      "location_id" : null,
                      "properties" : { },
                      "online_profile_url" : "http://testsubdomainwi1.lvh.me//my_profile/v2/index?portal_key=2ry2wdlnaybl86oetmbr",
                      "tax_rate_id" : null,
                      "notification_email" : null,
                      "invoice_cc_emails" : null,
                      "invoice_term_id" : null,
                      "referred_by" : null,
                      "ref_customer_id" : null,
                      "business_and_full_name" : "Walkin Customer",
                      "business_then_name" : "Walkin Customer",
                      "contacts" : [ ]
                    },
                    "contact" : null,
                    "user" : {
                      "id" : 1,
                      "email" : "bat1man44128@man.com",
                      "full_name" : "Bat Man",
                      "created_at" : "2019-11-04T14:54:51.081Z",
                      "updated_at" : "2019-11-04T14:54:51.081Z",
                      "group" : "Admins",
                      "admin" : true,
                      "color" : "1e3e96"
                    },
                    "ticket_type" : {
                      "id" : 1,
                      "name" : "Devices",
                      "account_id" : 1,
                      "created_at" : "2019-11-04T14:55:01.722Z",
                      "updated_at" : "2019-11-04T14:55:01.722Z",
                      "disabled" : false,
                      "intake_terms" : null,
                      "skip_intake" : false,
                      "outtake_terms" : null,
                      "skip_outtake" : false,
                      "ticket_fields" : [ ]
                    },
                    "address" : null
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : false,
                  "message" : [ "Subject can't be blank" ]
                }
              }
            }
          }
        }
      },
      "delete" : {
        "summary" : "Deletes a Ticket by ID",
        "tags" : [ "Ticket" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Tickets - Delete\nSingle-Customer Users can only access own tickets.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "message" : "Ticket was successfully deleted. "
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "message" : "Not found"
                }
              }
            }
          }
        }
      }
    },
    "/tickets/settings" : {
      "get" : {
        "summary" : "Returns Tickets Settings",
        "tags" : [ "Ticket" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "ticket_status_list" : [ "New", "In Progress", "Resolved", "Invoiced", "Waiting for Parts", "Waiting on Customer", "Scheduled", "Customer Reply" ],
                  "default_labor_product_id" : null,
                  "ticket_timer_charge_by_default" : null,
                  "saved_searches" : [ ],
                  "ticket_types" : [ ],
                  "ticket_type_fields" : [ ],
                  "ticket_type_field_answers" : [ ],
                  "appointment_types" : [ ],
                  "users" : [ {
                    "id" : 1,
                    "name" : "Bat Man"
                  } ],
                  "dashboard_settings" : null,
                  "worksheet_templates" : [ ],
                  "require_ticket_type" : null,
                  "require_intake_form_with_ticket" : null,
                  "require_outtake_form_with_ticket" : null,
                  "ticket_workflow_default_id" : null
                }
              }
            }
          }
        }
      }
    },
    "/tickets/{id}/print" : {
      "post" : {
        "summary" : "Prints a Ticket by ID",
        "tags" : [ "Ticket" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Tickets - View Details\nSingle-Customer Users can only access own tickets.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful"
          }
        }
      }
    },
    "/ticket_comments": {
      "get": {
        "summary": "Returns a paginated flat list of comments across multiple tickets",
        "tags": [
          "Ticket"
        ],
        "security": [
          {
            "bearerAuth": [

            ]
          }
        ],
        "description": "Required permissions: \"Tickets - View Details\" or \"Tickets - View 'Their Ticket' Details (assigned to them)\"\n\nReturns a flat, paginated list of comments across multiple tickets sorted by\nticket_id ASC, created_at DESC. All comments for a given ticket are adjacent\nin the response, with the newest comments first within each ticket.\n\nComments can be scoped to specific tickets using a saved Ticket View\n(ticket_search_id) and/or direct ticket filters such as customer_id, status, etc.\n\nComment-level date filters use the `comment_` prefix to distinguish them from\nthe ticket-level date filters that share similar names (e.g. created_after).\n\nSingle-Customer Users can only access comments for their own tickets.\n",
        "parameters": [
          {
            "name": "ticket_search_id",
            "in": "query",
            "required": false,
            "description": "Scope results to tickets matching this saved Ticket View (Ticket Search) ID",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "ticket_id",
            "in": "query",
            "required": false,
            "description": "Scope results to a specific ticket",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "customer_id",
            "in": "query",
            "required": false,
            "description": "Scope results to tickets belonging to this customer",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "contact_id",
            "in": "query",
            "required": false,
            "description": "Scope results to tickets belonging to this contact",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "user_id",
            "in": "query",
            "required": false,
            "description": "Scope results to tickets assigned to this user",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "description": "Scope results to tickets with this status. Use 'Not Closed' to exclude resolved tickets.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resolved_after",
            "in": "query",
            "format": "date-time",
            "required": false,
            "description": "Scope results to tickets resolved after this date",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "created_after",
            "in": "query",
            "format": "date-time",
            "required": false,
            "description": "Scope results to tickets created after this date",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "since_updated_at",
            "in": "query",
            "format": "date-time",
            "required": false,
            "description": "Scope results to tickets updated after this date",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "mine",
            "in": "query",
            "required": false,
            "description": "When true, scope results to tickets assigned to the authenticated user",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "comment_created_after",
            "in": "query",
            "format": "date-time",
            "required": false,
            "description": "Filter comments created after this date",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "comment_created_before",
            "in": "query",
            "format": "date-time",
            "required": false,
            "description": "Filter comments created before this date",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Page of results to return. Default is 1.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "description": "Number of comments per page. Default is 25, maximum is 100.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "comment_format",
            "in": "query",
            "required": false,
            "description": "Body format for comments. Allowed values: 'plaintext' (default), 'richtext', 'original'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful",
            "content": {
              "application/json": {
                "examples": {
                  "example_0": {
                    "value": {
                      "comments": [
                        {
                          "id": 1,
                          "created_at": "2025-12-23T00:00:00Z",
                          "updated_at": "2025-12-23T00:00:00Z",
                          "ticket_id": 1,
                          "subject": "Test Subject",
                          "body": "Test Body",
                          "tech": "Test Tech",
                          "hidden": false,
                          "user_id": 1,
                          "is_rich_text": false,
                          "user": {
                          }
                        },
                        {
                          "id": 2,
                          "created_at": "2025-12-22T00:00:00Z",
                          "updated_at": "2025-12-22T00:00:00Z",
                          "ticket_id": 2,
                          "subject": "Another Subject",
                          "body": "Another Body",
                          "tech": "Test Tech",
                          "hidden": false,
                          "user_id": 1,
                          "is_rich_text": false,
                          "user": {
                          }
                        }
                      ],
                      "meta": {
                        "total_pages": 1,
                        "page": 1,
                        "per_page": 25
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "unauthorized"
          }
        }
      }
    },
    "/tickets/{id}/comments": {
      "get": {
        "summary": "Returns Comments for a Ticket",
        "tags": [
          "Ticket"
        ],
        "security": [
          {
            "bearerAuth": [

            ]
          }
        ],
        "description": "Required permissions: \"Tickets - View Details\" or \"Tickets - View 'Their Ticket' Details (assigned to them)\"\nSingle-Customer Users can only access comments for their own tickets.\n",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort_by",
            "in": "query",
            "required": false,
            "description": "Sort by field, created_at or updated_at",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort_direction",
            "in": "query",
            "required": false,
            "description": "Sort direction, ASC or DESC",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "created_after",
            "in": "query",
            "format": "date-time",
            "required": false,
            "description": "Filter comments created after this date",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "created_before",
            "in": "query",
            "format": "date-time",
            "required": false,
            "description": "Filter comments created before this date",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "updated_after",
            "in": "query",
            "format": "date-time",
            "required": false,
            "description": "Filter comments updated after this date",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "updated_before",
            "in": "query",
            "format": "date-time",
            "required": false,
            "description": "Filter comments updated before this date",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "description": "Returns provided page of results, each page contains 10 comments by default, default can be changed by setting the 'per_page' parameter",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "per_page",
            "in": "query",
            "required": false,
            "description": "Sets the number of comments per page, default is 10",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "comment_format",
            "in": "query",
            "required": false,
            "description": "Returns comments in the specified format. Allowed values: 'plaintext', 'richtext', 'original'. Defaults to 'plaintext'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful",
            "content": {
              "application/json": {
                "examples": {
                  "example_0": {
                    "value": {
                      "comments": [
                        {
                          "id": 1,
                          "created_at": "2025-12-23T00:00:00Z",
                          "updated_at": "2025-12-23T00:00:00Z",
                          "ticket_id": 1,
                          "subject": "Test Subject",
                          "body": "Test Body",
                          "tech": "Test Tech",
                          "hidden": false,
                          "user_id": 1,
                          "is_rich_text": false,
                          "user": {
                          }
                        }
                      ],
                      "meta": {
                        "total_pages": 1,
                        "page": 1,
                        "per_page": 10
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/tickets/{id}/comment" : {
      "post" : {
        "summary" : "Adds a Comment to a Ticket",
        "tags" : [ "Ticket" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Tickets - Edit\nSingle-Customer Users can only access own tickets.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "subject" : {
                    "type" : "string"
                  },
                  "tech" : {
                    "type" : "string"
                  },
                  "body" : {
                    "type" : "string"
                  },
                  "hidden" : {
                    "type" : "boolean"
                  },
                  "sms_body" : {
                    "type" : "string"
                  },
                  "do_not_email" : {
                    "type" : "boolean"
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "comment" : {
                    "id" : 2,
                    "created_at" : "2019-11-05T09:13:33.422Z",
                    "updated_at" : "2019-11-05T09:13:33.422Z",
                    "ticket_id" : 13,
                    "subject" : "Comment Subject",
                    "body" : "Comment Body",
                    "tech" : "Joe",
                    "hidden" : true,
                    "user_id" : 1
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : false,
                  "message" : [ "Body can't be blank", "Subject can't be blank" ]
                }
              }
            }
          }
        }
      }
    },
    "/tickets/{id}/timer_entry" : {
      "post" : {
        "summary" : "Create a Ticket Timer for a Ticket",
        "tags" : [ "Ticket" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Ticket Timers - Overview\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "start_at" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "end_at" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "duration_minutes" : {
                    "type" : "integer"
                  },
                  "user_id" : {
                    "type" : "integer",
                    "description" : "Current user by default"
                  },
                  "notes" : {
                    "type" : "string"
                  },
                  "product_id" : {
                    "type" : "integer"
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "id" : 1,
                  "ticket_id" : 15,
                  "user_id" : 1,
                  "start_time" : "2019-11-05T12:15:59.000Z",
                  "end_time" : "2019-11-05T12:25:59.000Z",
                  "recorded" : false,
                  "created_at" : "2019-11-05T12:15:59.365Z",
                  "updated_at" : "2019-11-05T12:15:59.365Z",
                  "billable" : false,
                  "notes" : "API Timer",
                  "toggl_id" : null,
                  "product_id" : null,
                  "comment_id" : null,
                  "ticket_line_item_id" : null,
                  "active_duration" : 600
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "error" : "no implicit conversion of nil into String"
                }
              }
            }
          }
        }
      }
    },
    "/tickets/{id}/add_line_item" : {
      "post" : {
        "summary" : "Creates a Ticket Line Item",
        "tags" : [ "Ticket" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Tickets - Edit\nSingle-Customer Users can only access own tickets.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "name" : {
                    "type" : "string"
                  },
                  "upc_code" : {
                    "type" : "string"
                  },
                  "product_id" : {
                    "type" : "integer"
                  },
                  "description" : {
                    "type" : "string"
                  },
                  "quantity" : {
                    "type" : "number"
                  },
                  "price_cost" : {
                    "type" : "number"
                  },
                  "price_retail" : {
                    "type" : "number"
                  },
                  "taxable" : {
                    "type" : "boolean"
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "id" : 1,
                  "ticket_id" : 17,
                  "user_id" : 1,
                  "product_id" : null,
                  "name" : "Manual Item",
                  "description" : "No Product",
                  "quantity" : "1.0",
                  "product_category" : null,
                  "upc_code" : null,
                  "taxable" : true,
                  "cost_cents" : 1000,
                  "retail_cents" : 1500,
                  "created_at" : "2019-11-05T11:46:20.347Z",
                  "updated_at" : "2019-11-05T11:46:20.347Z",
                  "converted" : false,
                  "item_id" : null,
                  "position" : 2,
                  "estimate_line_item_id" : null,
                  "old_price" : null,
                  "line_discount_percent" : null,
                  "discount_dollars" : null,
                  "original_ticket_line_item_id" : null,
                  "price_cost" : 10,
                  "price_retail" : 15
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "errors" : "Name can't be blank, Description can't be blank",
                  "params" : { }
                }
              }
            }
          }
        }
      }
    },
    "/tickets/{id}/attach_file_url" : {
      "post" : {
        "summary" : "Attach a file to a Ticket",
        "tags" : [ "Ticket" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Tickets - Edit\nSingle-Customer Users can only access own tickets.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "$ref" : "#/components/requestBodies/Files"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "message" : "Processing - refresh ticket in a moment to see if it worked."
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "error" : "Missing files param - or not an array like [{'url':'http://foo','filename': 'test'}]"
                }
              }
            }
          }
        }
      }
    },
    "/tickets/{id}/remove_line_item" : {
      "post" : {
        "summary" : "Deletes a Ticket Line Item",
        "tags" : [ "Ticket" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Tickets - Edit\nSingle-Customer Users can only access own tickets.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "ticket_line_item_id" : {
                    "type" : "integer"
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : true,
                  "message" : ""
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      }
    },
    "/tickets/{id}/update_line_item" : {
      "put" : {
        "summary" : "Updates an existing Ticket Line Item",
        "tags" : [ "Ticket" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Tickets - Edit\nSingle-Customer Users can only access own tickets.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "ticket_line_item_id" : {
                    "type" : "integer"
                  },
                  "name" : {
                    "type" : "string"
                  },
                  "upc_code" : {
                    "type" : "string"
                  },
                  "product_id" : {
                    "type" : "integer"
                  },
                  "description" : {
                    "type" : "string"
                  },
                  "quantity" : {
                    "type" : "number"
                  },
                  "price_cost" : {
                    "type" : "number"
                  },
                  "price_retail" : {
                    "type" : "number"
                  },
                  "taxable" : {
                    "type" : "boolean"
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "ticket_line_item" : {
                    "id" : 3,
                    "ticket_id" : 23,
                    "user_id" : null,
                    "product_id" : null,
                    "name" : "Updated Line Name",
                    "description" : "Description",
                    "quantity" : "1.0",
                    "product_category" : null,
                    "upc_code" : null,
                    "taxable" : true,
                    "cost_cents" : null,
                    "retail_cents" : 10000,
                    "created_at" : "2019-11-05T14:20:25.673Z",
                    "updated_at" : "2019-11-05T14:20:25.692Z",
                    "converted" : false,
                    "item_id" : null,
                    "position" : 3,
                    "estimate_line_item_id" : null,
                    "old_price" : null,
                    "line_discount_percent" : null,
                    "discount_dollars" : null,
                    "original_ticket_line_item_id" : null,
                    "price_cost" : 0,
                    "price_retail" : 100
                  }
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      }
    },
    "/tickets/{id}/delete_attachment" : {
      "post" : {
        "summary" : "Deletes a Ticket Attachment",
        "tags" : [ "Ticket" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Tickets - Edit\nSingle-Customer Users can only access own tickets.\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "attachment_id" : {
                    "type" : "integer"
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : true
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      }
    },
    "/tickets/{id}/delete_timer_entry" : {
      "post" : {
        "summary" : "Deletes a Ticket Timer",
        "tags" : [ "Ticket" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Ticket Timers - Overview\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "$ref" : "#/components/requestBodies/TimerEntryId"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : true
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      }
    },
    "/tickets/{id}/update_timer_entry" : {
      "put" : {
        "summary" : "Updates an existing Ticket Timer",
        "tags" : [ "Ticket" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Ticket Timers - Overview\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "timer_entry_id" : {
                    "type" : "integer"
                  },
                  "start_at" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "duration_minutes" : {
                    "type" : "integer"
                  },
                  "user_id" : {
                    "type" : "integer",
                    "description" : "Current user by default"
                  },
                  "notes" : {
                    "type" : "string"
                  },
                  "product_id" : {
                    "type" : "integer"
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "ticket_id" : 29,
                  "id" : 3,
                  "notes" : "Updated Notes",
                  "user_id" : 1,
                  "toggl_id" : null,
                  "start_time" : "2013-08-06T13:41:15.000Z",
                  "end_time" : "2013-08-06T14:41:15.000Z",
                  "recorded" : false,
                  "created_at" : "2019-11-05T14:58:58.047Z",
                  "updated_at" : "2019-11-05T14:58:58.062Z",
                  "billable" : false,
                  "product_id" : 2,
                  "comment_id" : null,
                  "ticket_line_item_id" : null,
                  "active_duration" : null
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      }
    },
    "/tickets/{id}/charge_timer_entry" : {
      "post" : {
        "summary" : "Charges a Ticket Timer",
        "tags" : [ "Ticket" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Ticket Timers - Overview\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "$ref" : "#/components/requestBodies/TimerEntryId"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "ticket_id" : 29,
                  "id" : 3,
                  "notes" : "Updated Notes",
                  "user_id" : 1,
                  "toggl_id" : null,
                  "start_time" : "2013-08-06T13:41:15.000Z",
                  "end_time" : "2013-08-06T14:41:15.000Z",
                  "recorded" : true,
                  "created_at" : "2019-11-05T14:58:58.047Z",
                  "updated_at" : "2019-11-05T14:58:58.062Z",
                  "billable" : false,
                  "product_id" : 2,
                  "comment_id" : null,
                  "ticket_line_item_id" : null,
                  "active_duration" : null
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      }
    },
    "/timelogs" : {
      "get" : {
        "summary" : "Returns a paginated list of Timelogs",
        "tags" : [ "Timelog" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Users with permission \"Timelogs - Manage\" may see timelogs for any/all users.\nOtherwise, results scoped to current user.\n",
        "parameters" : [ {
          "name" : "user_id",
          "in" : "query",
          "description" : "Returns Timelogs that belong to a User",
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "timelogs" : [ {
                    "id" : 1,
                    "in_at" : "2019-11-01T12:50:26.882Z",
                    "out_at" : null,
                    "account_id" : 1,
                    "user_id" : 1,
                    "in_note" : null,
                    "out_note" : null,
                    "created_at" : "2019-11-01T12:50:26.934Z",
                    "updated_at" : "2019-11-01T12:50:26.934Z",
                    "lunch" : null,
                    "manually_updated" : null
                  } ]
                }
              }
            }
          }
        }
      },
      "put" : {
        "summary" : "Updates a Timelog",
        "tags" : [ "Timelog" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Users with permission \"Timelogs - Manage\" may see timelogs for any/all users.\nOtherwise, results scoped to current user.\n",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "lunch" : {
                    "type" : "boolean"
                  },
                  "in_at" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "out_at" : {
                    "type" : "string",
                    "format" : "date-time"
                  },
                  "in_note" : {
                    "type" : "string"
                  },
                  "out_note" : {
                    "type" : "string"
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "id" : 1,
                  "in_at" : "2019-11-01T12:50:26.882Z",
                  "out_at" : null,
                  "account_id" : 1,
                  "user_id" : 1,
                  "in_note" : null,
                  "out_note" : null,
                  "created_at" : "2019-11-01T12:50:26.934Z",
                  "updated_at" : "2019-11-01T12:50:26.934Z",
                  "lunch" : null,
                  "manually_updated" : null
                }
              }
            }
          }
        }
      }
    },
    "/timelogs/last" : {
      "get" : {
        "summary" : "Returns last Timelog",
        "tags" : [ "Timelog" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Users with permission \"Timelogs - Manage\" may see timelogs for any/all users.\nOtherwise, results scoped to current user.\n",
        "parameters" : [ {
          "name" : "user_id",
          "in" : "query",
          "required" : false,
          "description" : "Returns Timelogs that belong to a User. The default is current user ID.",
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "id" : 1,
                  "in_at" : "2019-11-01T12:50:26.882Z",
                  "out_at" : null,
                  "account_id" : 1,
                  "user_id" : 1,
                  "in_note" : null,
                  "out_note" : null,
                  "created_at" : "2019-11-01T12:50:26.934Z",
                  "updated_at" : "2019-11-01T12:50:26.934Z",
                  "lunch" : null,
                  "manually_updated" : null
                }
              }
            }
          }
        }
      }
    },
    "/user_devices" : {
      "post" : {
        "summary" : "Creates a User Device",
        "tags" : [ "User Device" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "device_uuid" : {
                    "type" : "string"
                  },
                  "device_name" : {
                    "type" : "string"
                  },
                  "registration_token_gcm" : {
                    "type" : "string"
                  },
                  "system_name" : {
                    "type" : "string"
                  },
                  "model" : {
                    "type" : "string"
                  },
                  "screen_size" : {
                    "type" : "string"
                  }
                }
              }
            }
          }
        },
        "description" : "",
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "user_id" : 1,
                  "registration_token_gcm" : "new_token",
                  "id" : 5,
                  "device_uuid" : "u12345",
                  "account_id" : null,
                  "name" : null,
                  "device_name" : null,
                  "system_name" : null,
                  "model" : null,
                  "screen_size" : null,
                  "disabled" : false,
                  "created_at" : "2019-11-04T08:18:32.476Z",
                  "updated_at" : "2019-11-04T08:18:32.490Z"
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "message" : "Missing params device_uuid"
                }
              }
            }
          }
        }
      }
    },
    "/user_devices/{id}" : {
      "get" : {
        "summary" : "Retrieves an existing User Device by UUID",
        "tags" : [ "User Device" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "User Device UUID",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "description" : "",
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "user_id" : 1,
                  "registration_token_gcm" : "new_token",
                  "id" : 5,
                  "device_uuid" : "u12345",
                  "account_id" : null,
                  "name" : null,
                  "device_name" : null,
                  "system_name" : null,
                  "model" : null,
                  "screen_size" : null,
                  "disabled" : false,
                  "created_at" : "2019-11-04T08:18:32.476Z",
                  "updated_at" : "2019-11-04T08:18:32.490Z"
                }
              }
            }
          }
        }
      },
      "put" : {
        "summary" : "Updates an existing User Device by UUID",
        "tags" : [ "User Device" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Device UUID",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "registration_token_gcm" : {
                    "type" : "string"
                  }
                }
              }
            }
          }
        },
        "description" : "",
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "user_id" : 1,
                  "registration_token_gcm" : "new_token",
                  "id" : 5,
                  "device_uuid" : "u12345",
                  "account_id" : null,
                  "name" : null,
                  "device_name" : null,
                  "system_name" : null,
                  "model" : null,
                  "screen_size" : null,
                  "disabled" : false,
                  "created_at" : "2019-11-04T08:18:32.476Z",
                  "updated_at" : "2019-11-04T08:18:32.490Z"
                }
              }
            }
          }
        }
      }
    },
    "/me" : {
      "get" : {
        "summary" : "Returns the current user",
        "tags" : [ "User" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "user_token" : "3746f72b-9852-4d1a-84e9-eedb5c50abcd",
                  "user_email" : "joedoe@example.com",
                  "user_name" : "Joe Doe",
                  "user_id" : 1,
                  "admin" : true,
                  "can_use_app" : true,
                  "two_factor_required" : false,
                  "subdomain" : "testsubdomainwi1",
                  "default_location" : null,
                  "enable_multi_locations" : false,
                  "locations_allowed" : [ ],
                  "permissions" : {
                    "asset" : {
                      "read" : true,
                      "write" : true,
                      "delete" : true
                    },
                    "customer" : {
                      "read" : true,
                      "write" : true,
                      "delete" : true
                    },
                    "ticket" : {
                      "read" : true,
                      "write" : true,
                      "delete" : true
                    },
                    "invoice" : {
                      "read" : true,
                      "write" : true,
                      "delete" : true
                    },
                    "payment" : {
                      "read" : true,
                      "write" : true,
                      "delete" : true
                    },
                    "worksheet" : {
                      "add" : true,
                      "manage" : true,
                      "delete" : true
                    },
                    "script" : {
                      "execute" : true
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/users" : {
      "get" : {
        "summary" : "Returns a paginated list of Users",
        "tags" : [ "User" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "users" : [ [ 1, "Joe Doe" ] ]
                }
              }
            }
          }
        }
      }
    },
    "/otp_login" : {
      "post" : {
        "summary" : "Authorize a User with One Time Password",
        "tags" : [ "User" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "code" : {
                    "type" : "string"
                  }
                }
              }
            }
          },
          "description" : "Time-based one-time password from your authentication application."
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "login" : true,
                  "session_token" : "1cbe0553-9fcd-4035-8e69-52792e16d489",
                  "token_expiration" : "2019-12-01T11:39:33.042Z",
                  "instructions" : "Save the session token somewhere safe and send that with the api_key for all future web requests. It goes in a header called Authorization2FAToken."
                }
              }
            }
          },
          "401" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "login" : false,
                  "instructions" : "Your multi-factor authentication attempt failed for the 6th time, please open RepairShopr in browser and recover MFA."
                }
              }
            }
          }
        }
      }
    },
    "/users/{id}" : {
      "get" : {
        "summary" : "Retrieves an existing User by ID",
        "tags" : [ "User" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "user" : {
                    "id" : 1,
                    "email" : "username@example.com",
                    "full_name" : "User Name",
                    "created_at" : "2019-11-01T11:39:20.554Z",
                    "updated_at" : "2019-11-01T11:39:20.554Z",
                    "group" : "Admins",
                    "admin" : true,
                    "color" : "55b932"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/vendors" : {
      "get" : {
        "summary" : "Returns a paginated list of Vendors",
        "tags" : [ "Vendor" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Vendors - List\n",
        "parameters" : [ {
          "name" : "page",
          "in" : "query",
          "description" : "Returns provided page of results, each 'page' contains 100 result",
          "required" : false,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "vendors" : [ {
                    "id" : 1,
                    "name" : "Vendor Name",
                    "rep_first_name" : "Bill",
                    "rep_last_name" : "Sales",
                    "email" : "info@candswholes.com",
                    "phone" : "603-344-5555",
                    "account_number" : null,
                    "created_at" : "2019-11-05T16:11:12.409Z",
                    "updated_at" : "2019-11-05T16:11:12.409Z",
                    "address" : "44 Billings Circle",
                    "city" : "Keene",
                    "state" : "NH",
                    "zip" : "03455",
                    "website" : "www.candswholes.com",
                    "notes" : "White label trucks"
                  } ]
                }
              }
            }
          }
        }
      },
      "post" : {
        "summary" : "Creates a Vendor",
        "tags" : [ "Vendor" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Vendors - New\n",
        "requestBody" : {
          "$ref" : "#/components/requestBodies/Vendor"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "vendor" : {
                    "id" : 1,
                    "name" : "Vendor Name",
                    "rep_first_name" : "Bill",
                    "rep_last_name" : "Sales",
                    "email" : "info@candswholes.com",
                    "phone" : "603-344-5555",
                    "account_number" : null,
                    "created_at" : "2019-11-05T16:11:12.409Z",
                    "updated_at" : "2019-11-05T16:11:12.409Z",
                    "address" : "44 Billings Circle",
                    "city" : "Keene",
                    "state" : "NH",
                    "zip" : "03455",
                    "website" : "www.candswholes.com",
                    "notes" : "White label trucks"
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : false,
                  "message" : [ "Email is not an email" ],
                  "params" : {
                    "name" : "Vendor1",
                    "email" : "broken_emailmail.com"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/vendors/{id}" : {
      "get" : {
        "summary" : "Retrieves a Vendor Page",
        "tags" : [ "Vendor" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Vendors - View Details\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "*/*" : {
                "schema" : {
                  "type" : "object",
                  "properties" : {
                    "vendor" : {
                      "type" : "object",
                      "properties" : {
                        "id" : {
                          "type" : "integer"
                        },
                        "name" : {
                          "type" : "string"
                        },
                        "rep_first_name" : {
                          "type" : "string"
                        },
                        "rep_last_name" : {
                          "type" : "string"
                        },
                        "email" : {
                          "type" : "string"
                        },
                        "phone" : {
                          "type" : "string"
                        },
                        "account_number" : {
                          "type" : "string",
                          "nullable" : true
                        },
                        "created_at" : {
                          "type" : "string",
                          "format" : "date-time"
                        },
                        "updated_at" : {
                          "type" : "string",
                          "format" : "date-time"
                        },
                        "address" : {
                          "type" : "string"
                        },
                        "city" : {
                          "type" : "string"
                        },
                        "state" : {
                          "type" : "string"
                        },
                        "zip" : {
                          "type" : "string"
                        },
                        "website" : {
                          "type" : "string"
                        },
                        "notes" : {
                          "type" : "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      },
      "put" : {
        "summary" : "Updates an existing Vendor page by ID",
        "tags" : [ "Vendor" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Vendors - Edit\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "$ref" : "#/components/requestBodies/Vendor"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "vendor" : {
                    "id" : 7,
                    "name" : "New name",
                    "rep_first_name" : "Bill",
                    "rep_last_name" : "Sales",
                    "email" : "info@candswholes.com",
                    "phone" : "603-344-5555",
                    "account_number" : null,
                    "created_at" : "2019-11-06T08:52:42.139Z",
                    "updated_at" : "2019-11-06T08:52:42.169Z",
                    "address" : "44 Billings Circle",
                    "city" : "Keene",
                    "state" : "NH",
                    "zip" : "03455",
                    "website" : "www.candswholes.com",
                    "notes" : "White label trucks"
                  }
                }
              }
            }
          },
          "404" : {
            "description" : "Not found"
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : false,
                  "message" : [ "Email is not an email" ]
                }
              }
            }
          }
        }
      }
    },
    "/wiki_pages" : {
      "get" : {
        "summary" : "Returns a paginated list of Wiki Pages",
        "tags" : [ "Wiki Page" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Documentation - Allow Usage\n",
        "parameters" : [ {
          "name" : "page",
          "in" : "query",
          "description" : "Returns provided page of results, each 'page' contains 100 result",
          "required" : false,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "wiki_pages" : [ {
                    "id" : 1,
                    "account_id" : 1,
                    "name" : "API Doc",
                    "slug" : "api-doc",
                    "body" : "a sample body",
                    "interpolated_body" : "a sample body"
                  } ]
                }
              }
            }
          }
        }
      },
      "post" : {
        "summary" : "Creates a Wiki Page",
        "tags" : [ "Wiki Page" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Documentation - Create\n",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "name" : {
                    "type" : "string"
                  },
                  "slug" : {
                    "type" : "string"
                  },
                  "body" : {
                    "type" : "string"
                  },
                  "customer_id" : {
                    "type" : "integer"
                  },
                  "asset_id" : {
                    "type" : "integer"
                  },
                  "visibility" : {
                    "type" : "string"
                  }
                }
              }
            }
          },
          "description" : "Wiki Page object that needs to be added"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "wiki_page" : {
                    "id" : 1,
                    "account_id" : 1,
                    "name" : "API Doc",
                    "slug" : "api-doc",
                    "body" : "a sample body",
                    "interpolated_body" : "a sample body"
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : false,
                  "errors" : [ "Body can't be blank", "Name can't be blank" ],
                  "params" : {
                    "name" : ""
                  }
                }
              }
            }
          }
        }
      }
    },
    "/wiki_pages/{id}" : {
      "get" : {
        "summary" : "Retrieves a Wiki Page",
        "tags" : [ "Wiki Page" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Documentation - Allow Usage\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "*/*" : {
                "schema" : {
                  "type" : "object",
                  "properties" : {
                    "wiki_page" : {
                      "type" : "object",
                      "properties" : {
                        "id" : {
                          "type" : "integer"
                        },
                        "account_id" : {
                          "type" : "integer"
                        },
                        "name" : {
                          "type" : "string"
                        },
                        "slug" : {
                          "type" : "string"
                        },
                        "body" : {
                          "type" : "string"
                        },
                        "interpolated_body" : {
                          "type" : "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      },
      "put" : {
        "summary" : "Updates an existing Wiki Page by ID",
        "tags" : [ "Wiki Page" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Documentation - Edit\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "name" : {
                    "type" : "string"
                  },
                  "slug" : {
                    "type" : "string"
                  },
                  "body" : {
                    "type" : "string"
                  },
                  "customer_id" : {
                    "type" : "integer"
                  },
                  "asset_id" : {
                    "type" : "integer"
                  },
                  "visibility" : {
                    "type" : "string"
                  }
                }
              }
            }
          },
          "description" : "Wiki Page object that needs to be updated"
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "wiki_page" : {
                    "id" : 1,
                    "account_id" : 1,
                    "name" : "API Doc",
                    "slug" : "api-doc",
                    "body" : "a sample body",
                    "interpolated_body" : "a sample body"
                  }
                }
              }
            }
          },
          "422" : {
            "description" : "Invalid request",
            "content" : {
              "application/json" : {
                "example" : {
                  "success" : false,
                  "errors" : [ "Name can't be blank" ],
                  "params" : {
                    "name" : ""
                  }
                }
              }
            }
          }
        }
      },
      "delete" : {
        "summary" : "Deletes a Wiki Page by ID",
        "tags" : [ "Wiki Page" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permission: Documentation - Delete\n",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful"
          },
          "404" : {
            "description" : "Invalid request"
          }
        }
      }
    },
    "/tickets/{ticket_id}/worksheet_results" : {
      "get" : {
        "summary" : "Returns a paginated list of Worksheet Results",
        "tags" : [ "Worksheet Result" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permissions: \"Tickets - View Details\" or \"Tickets - View 'Their Ticket' Details (assigned to them)\"\nSingle-Customer Users can only access own tickets.\n",
        "parameters" : [ {
          "name" : "ticket_id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "description" : "Returns provided page of results, each 'page' contains 25 results",
          "required" : false,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "worksheet_results" : [ {
                    "id" : 1,
                    "worksheet_template_id" : 1,
                    "name" : "Worksheet Result from a Template",
                    "public" : true,
                    "complete" : null,
                    "required" : false,
                    "field_list" : [ {
                      "name" : "section",
                      "slug" : "section",
                      "id" : 1,
                      "position" : 0,
                      "history" : [ ]
                    }, {
                      "name" : "check",
                      "slug" : "check",
                      "id" : 2,
                      "position" : 1,
                      "history" : [ ]
                    } ]
                  } ]
                }
              }
            }
          }
        }
      },
      "post" : {
        "summary" : "Creates Worksheet Result",
        "tags" : [ "Worksheet Result" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permissions: \"Tickets - View Details\" or \"Tickets - View 'Their Ticket' Details (assigned to them)\"\nSingle-Customer Users can only access own tickets.\n",
        "parameters" : [ {
          "name" : "ticket_id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "worksheet_template_id" : {
                    "type" : "integer"
                  },
                  "title" : {
                    "type" : "string"
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "worksheet_result" : {
                    "id" : 1,
                    "worksheet_template_id" : 1,
                    "name" : "Worksheet Result from a Template",
                    "public" : true,
                    "complete" : null,
                    "required" : false,
                    "field_list" : [ {
                      "name" : "section",
                      "slug" : "section",
                      "id" : 1,
                      "position" : 0,
                      "history" : [ ]
                    }, {
                      "name" : "check",
                      "slug" : "check",
                      "id" : 2,
                      "position" : 1,
                      "history" : [ ]
                    } ]
                  }
                }
              }
            }
          }
        }
      }
    },
    "/tickets/{ticket_id}/worksheet_results/{id}" : {
      "get" : {
        "summary" : "Retrieves a Worksheet Result by ID",
        "tags" : [ "Worksheet Result" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permissions: \"Tickets - View Details\" or \"Tickets - View 'Their Ticket' Details (assigned to them)\"\nSingle-Customer Users can only access own tickets.\n",
        "parameters" : [ {
          "name" : "ticket_id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful",
            "content" : {
              "application/json" : {
                "example" : {
                  "worksheet_result" : {
                    "id" : 1,
                    "worksheet_template_id" : 1,
                    "name" : "Worksheet Result from a Template",
                    "public" : true,
                    "complete" : null,
                    "required" : false,
                    "field_list" : [ {
                      "name" : "section",
                      "slug" : "section",
                      "id" : 1,
                      "position" : 0,
                      "history" : [ ]
                    }, {
                      "name" : "check",
                      "slug" : "check",
                      "id" : 2,
                      "position" : 1,
                      "history" : [ ]
                    } ]
                  }
                }
              }
            }
          }
        }
      },
      "put" : {
        "summary" : "Updates a Worksheet Result",
        "tags" : [ "Worksheet Result" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permissions: \"Tickets - View Details\" or \"Tickets - View 'Their Ticket' Details (assigned to them)\"\nSingle-Customer Users can only access own tickets.\n",
        "parameters" : [ {
          "name" : "ticket_id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "worksheet_template_id" : {
                    "type" : "integer"
                  },
                  "user_id" : {
                    "type" : "integer"
                  },
                  "title" : {
                    "type" : "string"
                  },
                  "complete" : {
                    "type" : "boolean"
                  },
                  "public" : {
                    "type" : "boolean"
                  },
                  "required" : {
                    "type" : "boolean"
                  },
                  "answers" : {
                    "type" : "object",
                    "properties" : {
                      "value" : {
                        "type" : "string"
                      },
                      "user" : {
                        "type" : "string"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "successful"
          }
        }
      },
      "delete" : {
        "summary" : "Deletes a Worksheet Result",
        "tags" : [ "Worksheet Result" ],
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "description" : "Required permissions: \"Tickets - View Details\" or \"Tickets - View 'Their Ticket' Details (assigned to them)\"\nSingle-Customer Users can only access own tickets.\n",
        "parameters" : [ {
          "name" : "ticket_id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "successful"
          }
        }
      }
    }
  },
  "servers" : [ {
    "url" : "https://{subdomain}.repairshopr.com/api/v1",
    "variables" : {
      "subdomain" : {
        "default" : "your-subdomain",
        "description": "RepairShopr Subdomain"
      }
    }
  } ],
  "components" : {
    "requestBodies" : {
      "Vendor" : {
        "content" : {
          "application/json" : {
            "schema" : {
              "type" : "object",
              "properties" : {
                "name" : {
                  "type" : "string"
                },
                "rep_first_name" : {
                  "type" : "string"
                },
                "rep_last_name" : {
                  "type" : "string"
                },
                "email" : {
                  "type" : "string"
                },
                "phone" : {
                  "type" : "string"
                },
                "account_number" : {
                  "type" : "string"
                },
                "address" : {
                  "type" : "string"
                },
                "city" : {
                  "type" : "string"
                },
                "state" : {
                  "type" : "string"
                },
                "zip" : {
                  "type" : "string"
                },
                "website" : {
                  "type" : "string"
                },
                "notes" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      },
      "LineItem" : {
        "content" : {
          "application/json" : {
            "schema" : {
              "type" : "object",
              "properties" : {
                "upc_code" : {
                  "type" : "string"
                },
                "product_id" : {
                  "type" : "integer"
                },
                "item" : {
                  "type" : "string"
                },
                "name" : {
                  "type" : "string"
                },
                "quantity" : {
                  "type" : "number"
                },
                "price" : {
                  "type" : "number"
                },
                "cost" : {
                  "type" : "number"
                },
                "discount_percent" : {
                  "type" : "number"
                },
                "taxable" : {
                  "type" : "boolean"
                },
                "tax_note" : {
                  "type" : "string"
                },
                "tax_rate_id" : {
                  "type" : "integer"
                },
                "user_id" : {
                  "type" : "integer"
                },
                "position" : {
                  "type" : "integer"
                },
                "product_category" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      },
      "PortalUser" : {
        "content" : {
          "application/json" : {
            "schema" : {
              "type" : "object",
              "properties" : {
                "contact_id" : {
                  "type" : "integer"
                },
                "customer_id" : {
                  "type" : "integer"
                },
                "password" : {
                  "type" : "string"
                },
                "password_confirmation" : {
                  "type" : "string"
                },
                "email" : {
                  "type" : "string"
                },
                "portal_group_id" : {
                  "type" : "integer"
                }
              }
            }
          }
        }
      },
      "ScheduleLineItem" : {
        "content" : {
          "application/json" : {
            "schema" : {
              "type" : "object",
              "properties" : {
                "product_id" : {
                  "type" : "integer"
                },
                "cost_cents" : {
                  "type" : "integer"
                },
                "description" : {
                  "type" : "string"
                },
                "name" : {
                  "type" : "string"
                },
                "position" : {
                  "type" : "integer"
                },
                "quantity" : {
                  "type" : "number"
                },
                "retail_cents" : {
                  "type" : "integer"
                },
                "one_time_charge" : {
                  "type" : "boolean"
                },
                "taxable" : {
                  "type" : "boolean"
                },
                "user_id" : {
                  "type" : "integer"
                },
                "asset_type_id" : {
                  "type" : "integer"
                },
                "contact_field_type_id" : {
                  "type" : "integer"
                },
                "contact_field_answer_id" : {
                  "type" : "integer"
                },
                "recurring_type_id" : {
                  "type" : "integer",
                  "enum" : [ 1, 2, 3, 4, 5, 6 ]
                },
                "saved_asset_search_id" : {
                  "type" : "integer"
                }
              }
            }
          }
        }
      },
      "TimerEntryId" : {
        "content" : {
          "application/json" : {
            "schema" : {
              "type" : "object",
              "properties" : {
                "timer_entry_id" : {
                  "type" : "integer"
                }
              }
            }
          }
        }
      },
      "LineItem2" : {
        "content" : {
          "application/json" : {
            "schema" : {
              "type" : "object",
              "properties" : {
                "id" : {
                  "type" : "integer"
                },
                "line_discount_percent" : {
                  "type" : "integer"
                },
                "discount_dollars" : {
                  "type" : "string"
                },
                "item" : {
                  "type" : "string"
                },
                "name" : {
                  "type" : "string"
                },
                "price" : {
                  "type" : "number"
                },
                "cost" : {
                  "type" : "number"
                },
                "taxable" : {
                  "type" : "boolean"
                }
              }
            }
          }
        },
        "description" : "ID of line item to update"
      },
      "Customer" : {
        "content" : {
          "application/json" : {
            "schema" : {
              "type" : "object",
              "properties" : {
                "business_name" : {
                  "type" : "string"
                },
                "firstname" : {
                  "type" : "string"
                },
                "lastname" : {
                  "type" : "string"
                },
                "email" : {
                  "type" : "string"
                },
                "phone" : {
                  "type" : "string"
                },
                "mobile" : {
                  "type" : "string"
                },
                "address" : {
                  "type" : "string"
                },
                "address_2" : {
                  "type" : "string"
                },
                "city" : {
                  "type" : "string"
                },
                "state" : {
                  "type" : "string"
                },
                "zip" : {
                  "type" : "string"
                },
                "notes" : {
                  "type" : "string"
                },
                "get_sms" : {
                  "type" : "boolean"
                },
                "opt_out" : {
                  "type" : "boolean"
                },
                "no_email" : {
                  "type" : "boolean"
                },
                "get_billing" : {
                  "type" : "boolean"
                },
                "get_marketing" : {
                  "type" : "boolean"
                },
                "get_reports" : {
                  "type" : "boolean"
                },
                "ref_customer_id" : {
                  "type" : "integer"
                },
                "referred_by" : {
                  "type" : "string"
                },
                "tax_rate_id" : {
                  "type" : "integer"
                },
                "notification_email" : {
                  "type" : "string"
                },
                "invoice_cc_emails" : {
                  "type" : "string"
                },
                "invoice_term_id" : {
                  "type" : "integer"
                },
                "properties" : {
                  "type" : "object"
                },
                "consent" : {
                  "type" : "object"
                }
              }
            }
          }
        }
      },
      "Phone" : {
        "content" : {
          "application/json" : {
            "schema" : {
              "type" : "object",
              "properties" : {
                "label" : {
                  "type" : "string"
                },
                "number" : {
                  "type" : "string"
                },
                "extension" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      },
      "Files" : {
        "content" : {
          "application/json" : {
            "schema" : {
              "type" : "object",
              "properties" : {
                "files" : {
                  "type" : "array",
                  "items" : {
                    "type" : "object",
                    "properties" : {
                      "url" : {
                        "type" : "string"
                      },
                      "filename" : {
                        "type" : "string"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "Schedule" : {
        "content" : {
          "application/json" : {
            "schema" : {
              "type" : "object",
              "properties" : {
                "customer_id" : {
                  "type" : "integer"
                },
                "email_customer" : {
                  "type" : "boolean"
                },
                "frequency" : {
                  "type" : "string",
                  "enum" : [ "Daily", "Monthly", "Weekly", "Biweekly", "Quarterly", "Semi-Annually", "Annually", "Biennially", "Triennially" ]
                },
                "name" : {
                  "type" : "string"
                },
                "next_run" : {
                  "type" : "string",
                  "format" : "date"
                },
                "snail_mail" : {
                  "type" : "boolean"
                },
                "charge_mop" : {
                  "type" : "boolean"
                },
                "invoice_unbilled_ticket_charges" : {
                  "type" : "boolean"
                },
                "paused" : {
                  "type" : "boolean"
                }
              }
            }
          }
        }
      },
      "Ticket" : {
        "content" : {
          "application/json" : {
            "schema" : {
              "type" : "object",
              "properties" : {
                "customer_id" : {
                  "type" : "integer"
                },
                "ticket_type_id" : {
                  "type" : "integer"
                },
                "number" : {
                  "type" : "string"
                },
                "subject" : {
                  "type" : "string"
                },
                "due_date" : {
                  "type" : "string",
                  "format" : "date"
                },
                "start_at" : {
                  "type" : "string",
                  "format" : "date-time"
                },
                "end_at" : {
                  "type" : "string",
                  "format" : "date-time"
                },
                "location_id" : {
                  "type" : "integer"
                },
                "problem_type" : {
                  "type" : "string"
                },
                "status" : {
                  "type" : "string"
                },
                "user_id" : {
                  "type" : "integer"
                },
                "properties" : {
                  "type" : "object",
                  "properties" : { }
                },
                "asset_ids" : {
                  "type" : "array",
                  "items" : {
                    "type" : "integer"
                  }
                },
                "signature_name" : {
                  "type" : "string"
                },
                "signature_data" : {
                  "type" : "string"
                },
                "sla_id" : {
                  "type" : "integer"
                },
                "contact_id" : {
                  "type" : "integer"
                },
                "priority" : {
                  "type" : "string"
                },
                "outtake_form_data" : {
                  "type" : "string"
                },
                "outtake_form_date" : {
                  "type" : "string",
                  "format" : "date-time"
                },
                "outtake_form_name" : {
                  "type" : "string"
                },
                "tag_list": {
                  "type" : "array",
                  "items" : {
                    "type" : "string"
                  }
                },
                "comments_attributes" : {
                  "type" : "array",
                  "items" : {
                    "type" : "object",
                    "properties" : {
                      "subject" : {
                        "type" : "string"
                      },
                      "body" : {
                        "type" : "string"
                      },
                      "hidden" : {
                        "type" : "boolean"
                      },
                      "sms_body" : {
                        "type" : "string"
                      },
                      "do_not_email" : {
                        "type" : "boolean"
                      },
                      "tech" : {
                        "type" : "string"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "securitySchemes" : {
      "bearerAuth" : {
        "type" : "apiKey",
        "in"   : "header",
        "name" : "Authorization",
        "scheme" : "bearer"
      }
    }
  }
}
