{"openapi": "3.1.0", "info": {"title": "Electric Air Autoquote API", "version": "0.1.0", "description": "electricair.io"}, "paths": {"/api/login": {"post": {"operationId": "eaJwtLogin", "summary": "Login View", "parameters": [], "responses": {"200": {"description": "OK"}}, "requestBody": {"content": {"application/x-www-form-urlencoded": {"schema": {"title": "FormParams", "type": "object", "properties": {"username": {"title": "Username", "type": "string"}, "password": {"title": "Password", "type": "string"}}, "required": ["username", "password"]}}}, "required": true}}}, "/api/logout": {"post": {"operationId": "eaJwtLogout", "summary": "Logout View", "parameters": [], "responses": {"200": {"description": "OK"}}}}, "/api/public/quote/{quote_uuid}/": {"get": {"operationId": "getPublicQuote", "summary": "Get Form Byquoteid", "parameters": [{"in": "path", "name": "quote_uuid", "schema": {"title": "Quote Uuid", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PublicQuoteSchema"}}}}}, "tags": ["public", "quotes"]}}, "/api/public/quote/{quote_uuid}/request_contract/": {"post": {"operationId": "requestPublicContract", "summary": "Request Contract", "parameters": [{"in": "path", "name": "quote_uuid", "schema": {"title": "Quote Uuid", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["public", "quotes"]}}, "/api/public/quote/{quote_uuid}/contract-esign-data": {"post": {"operationId": "getPublicContractEsignData", "summary": "Contract Data", "parameters": [{"in": "path", "name": "quote_uuid", "schema": {"title": "Quote Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "createPacket", "schema": {"default": false, "title": "Createpacket", "type": "boolean"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SigningUrlSchema"}}}}}, "tags": ["public", "quotes"]}}, "/api/public/quote/{quote_uuid}/referral-code": {"get": {"operationId": "getPublicReferralCode", "summary": "Get Referral Code", "parameters": [{"in": "path", "name": "quote_uuid", "schema": {"title": "Quote Uuid", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReferralCodeSchema"}}}}}, "tags": ["public", "quotes"]}}, "/api/public/quote/{quote_uuid}/send-referral-email": {"post": {"operationId": "sendPublicReferralEmail", "summary": "Send Referral Email", "parameters": [{"in": "path", "name": "quote_uuid", "schema": {"title": "Quote Uuid", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SendReferralEmailResponseSchema"}}}}}, "tags": ["public", "quotes"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SendReferralEmailSchema"}}}, "required": true}}}, "/api/public/quote/request-quote": {"post": {"operationId": "eaWebflowForm", "summary": "Webflow Form", "parameters": [], "responses": {"200": {"description": "OK"}}, "tags": ["public", "quotes"], "requestBody": {"content": {"application/x-www-form-urlencoded": {"schema": {"title": "FormParams", "type": "object", "properties": {"submission_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Submission Id"}, "name": {"default": "", "title": "Name", "type": "string"}, "email": {"default": "", "title": "Email", "type": "string"}, "phone": {"default": "", "title": "Phone", "type": "string"}, "address": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address"}, "address_line1": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address Line1"}, "address_line2": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address Line2"}, "city": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "City"}, "state": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "State"}, "zip": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Zip"}, "instant_quote": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Instant Quote"}, "extra_text_input": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Extra Text Input"}, "gtm_campaign_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Gtm Campaign Url"}, "redirectUrl": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Redirecturl"}, "referral_code": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Referral Code"}, "initial_query_params": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Initial Query Params"}, "initial_referrer_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Initial Referrer Url"}, "initial_current_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Initial Current Url"}, "initial_session_start": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Initial Session Start"}, "latest_query_params": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Latest Query Params"}, "latest_referrer_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Latest Referrer Url"}, "latest_current_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Latest Current Url"}, "latest_session_start": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Latest Session Start"}, "user_agent": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "User Agent"}, "ph_session_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ph Session Id"}, "ph_distinct_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ph Distinct Id"}, "fbc": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Fbc"}, "fbp": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Fbp"}, "consent_to_text": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": false, "title": "Consent To Text"}, "lead_type": {"default": "install", "enum": ["install", "repair"], "title": "Lead Type", "type": "string"}, "page_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Page Url"}, "query_parameters": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Query Parameters"}, "ga": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ga"}, "referrer": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Referrer"}, "existing_system": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Existing System"}, "num_thermostat": {"anyOf": [{"type": "integer"}, {"type": "number"}, {"type": "null"}], "title": "Num Thermostat"}}}}}, "required": true}}}, "/api/public/lead/": {"post": {"operationId": "createPublicLead", "summary": "Create Public Lead", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PublicLeadCreateResponse"}}}}}, "tags": ["public", "leads"], "requestBody": {"content": {"application/x-www-form-urlencoded": {"schema": {"title": "FormParams", "type": "object", "properties": {"submission_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Submission Id"}, "external_submission_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "External Submission Id"}, "ea_org_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Ea Org Id"}, "name": {"default": "", "title": "Name", "type": "string"}, "email": {"default": "", "title": "Email", "type": "string"}, "phone": {"default": "", "title": "Phone", "type": "string"}, "address": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address"}, "address_line1": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address Line1"}, "address_line2": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address Line2"}, "city": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "City"}, "state": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "State"}, "zip": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Zip"}, "instant_quote": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Instant Quote"}, "extra_text_input": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Extra Text Input"}, "gtm_campaign_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Gtm Campaign Url"}, "redirectUrl": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Redirecturl"}, "referral_code": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Referral Code"}, "initial_query_params": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Initial Query Params"}, "initial_referrer_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Initial Referrer Url"}, "initial_current_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Initial Current Url"}, "initial_session_start": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Initial Session Start"}, "latest_query_params": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Latest Query Params"}, "latest_referrer_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Latest Referrer Url"}, "latest_current_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Latest Current Url"}, "latest_session_start": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Latest Session Start"}, "user_agent": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "User Agent"}, "ph_session_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ph Session Id"}, "ph_distinct_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ph Distinct Id"}, "fbc": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Fbc"}, "fbp": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Fbp"}, "consent_to_text": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": false, "title": "Consent To Text"}, "lead_type": {"default": "install", "enum": ["install", "repair"], "title": "Lead Type", "type": "string"}, "page_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Page Url"}, "query_parameters": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Query Parameters"}, "ga": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ga"}, "referrer": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Referrer"}, "existing_system": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Existing System"}, "num_thermostat": {"anyOf": [{"type": "integer"}, {"type": "number"}, {"type": "null"}], "title": "Num Thermostat"}}}}}, "required": true}}}, "/api/public/pinch/sim/": {"post": {"operationId": "requestPinchSimulation", "summary": "Request Sim", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SimulationOutputSchema"}}}}}, "tags": ["public", "pinch"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateSimulationSchema"}}}, "required": true}}}, "/api/c/{contract_uuid}/": {"get": {"operationId": "getPublicContractPdf", "summary": "Get Unsigned Contract Pdf", "parameters": [{"in": "path", "name": "contract_uuid", "schema": {"title": "Contract Uuid", "type": "string"}, "required": true}, {"in": "query", "name": "download", "schema": {"default": false, "title": "Download", "type": "boolean"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"format": "binary", "title": "Response", "type": "string"}}}}}, "tags": ["public", "contract"]}}, "/api/public/incentive/{zipcode}/": {"get": {"operationId": "getPublicIncentivesByZipcode", "summary": "Get Incentives By Zipcode", "parameters": [{"in": "path", "name": "zipcode", "schema": {"title": "Zipcode", "type": "string"}, "required": true}, {"in": "header", "name": "EA-Org-Id", "schema": {"title": "Ea-Org-Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/IncentiveByZipSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["public", "incentive"]}}, "/api/public/reviews/": {"get": {"operationId": "getPublicReviews", "summary": "Get Reviews", "parameters": [{"in": "header", "name": "EA-Org-Id", "schema": {"title": "Ea-Org-Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/ReviewSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["public", "reviews"]}}, "/api/public/media/presigned-url": {"post": {"operationId": "getPublicMediaPresignedUrl", "summary": "Get Presigned Url", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PresignedUrlResponse"}}}}}, "tags": ["public", "media"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PresignedUrlRequest"}}}, "required": true}}}, "/api/public/media/deal/{deal_id}": {"get": {"operationId": "getPublicMediaByDeal", "summary": "List Deal Media", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GetMediaResponse"}}}}}, "description": "Returns all user_confirmed media for a deal", "tags": ["public", "media"]}}, "/api/public/media/": {"post": {"operationId": "upsertPublicMedia", "summary": "Create Media", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MediaResponse"}}}}}, "description": "Creates or updates a media item\nif you get a match on deal,s3_key, you can then update caption and or upload_status", "tags": ["public", "media"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/MediaRequest"}}}, "required": true}}}, "/api/public/media/uploads": {"post": {"operationId": "createPublicMediaUpload", "summary": "Create Media Upload", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MediaUploadCreateResponse"}}}}}, "description": "Creates a pending media row and returns its S3 upload URL.", "tags": ["public", "media"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/MediaUploadCreateRequest"}}}, "required": true}}}, "/api/public/media/uploads/multipart": {"post": {"operationId": "createPublicMultipartMediaUpload", "summary": "Create Multipart Media Upload", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MultipartUploadCreateResponse"}}}}}, "description": "Create a media row and an S3 multipart upload session.", "tags": ["public", "media"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/MediaUploadCreateRequest"}}}, "required": true}}}, "/api/public/media/uploads/{media_id}/multipart/parts": {"post": {"operationId": "signPublicMultipartMediaParts", "summary": "Sign Multipart Media Parts", "parameters": [{"in": "path", "name": "media_id", "schema": {"title": "Media Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MultipartPartUrlsResponse"}}}}}, "tags": ["public", "media"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/MultipartPartUrlsRequest"}}}, "required": true}}, "get": {"operationId": "listPublicMultipartMediaParts", "summary": "List Multipart Media Parts", "parameters": [{"in": "path", "name": "media_id", "schema": {"title": "Media Id", "type": "integer"}, "required": true}, {"in": "query", "name": "deal_id", "schema": {"title": "Deal Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MultipartPartsResponse"}}}}}, "tags": ["public", "media"]}}, "/api/public/media/uploads/{media_id}/multipart/complete": {"post": {"operationId": "completePublicMultipartMediaUpload", "summary": "Complete Multipart Media Upload", "parameters": [{"in": "path", "name": "media_id", "schema": {"title": "Media Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MediaResponse"}}}}}, "tags": ["public", "media"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/MultipartCompleteRequest"}}}, "required": true}}}, "/api/public/media/uploads/{media_id}/multipart/abort": {"post": {"operationId": "abortPublicMultipartMediaUpload", "summary": "Abort Multipart Media Upload", "parameters": [{"in": "path", "name": "media_id", "schema": {"title": "Media Id", "type": "integer"}, "required": true}], "responses": {"204": {"description": "No Content"}}, "tags": ["public", "media"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/MediaUploadActionRequest"}}}, "required": true}}}, "/api/public/media/uploads/{media_id}/multipart/restart": {"post": {"operationId": "restartPublicMultipartMediaUpload", "summary": "Restart Multipart Media Upload", "parameters": [{"in": "path", "name": "media_id", "schema": {"title": "Media Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MultipartUploadCreateResponse"}}}}}, "tags": ["public", "media"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/MediaUploadActionRequest"}}}, "required": true}}}, "/api/public/media/uploads/{media_id}/complete": {"post": {"operationId": "completePublicMediaUpload", "summary": "Complete Media Upload", "parameters": [{"in": "path", "name": "media_id", "schema": {"title": "Media Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MediaResponse"}}}}}, "tags": ["public", "media"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/MediaUploadActionRequest"}}}, "required": true}}}, "/api/public/media/uploads/{media_id}/retry": {"post": {"operationId": "retryPublicMediaUpload", "summary": "Retry Media Upload", "parameters": [{"in": "path", "name": "media_id", "schema": {"title": "Media Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MediaUploadCreateResponse"}}}}}, "tags": ["public", "media"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/MediaUploadActionRequest"}}}, "required": true}}}, "/api/public/media/uploads/{media_id}/failed": {"post": {"operationId": "failPublicMediaUpload", "summary": "Fail Media Upload", "parameters": [{"in": "path", "name": "media_id", "schema": {"title": "Media Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MediaResponse"}}}}}, "tags": ["public", "media"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/MediaUploadFailureRequest"}}}, "required": true}}}, "/api/public/media/text": {"post": {"operationId": "createPublicMediaText", "summary": "Create Media Text", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"additionalProperties": true, "title": "Response", "type": "object"}}}}}, "description": "Creates or updates a media item\nthat is specifically a text only item (no s3 object)", "tags": ["public", "media"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/MediaTextRequest"}}}, "required": true}}}, "/api/public/media/submit-photos": {"post": {"operationId": "submitPublicPhotos", "summary": "Submit Photos", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"additionalProperties": true, "title": "Response", "type": "object"}}}}}, "description": "Submits photos for a deal", "tags": ["public", "media"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SubmitPhotosRequest"}}}, "required": true}}}, "/api/public/media/{media_id}": {"patch": {"operationId": "patchPublicMedia", "summary": "Patch Media", "parameters": [{"in": "path", "name": "media_id", "schema": {"title": "Media Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MediaResponse"}}}}}, "description": "Updates user-owned mutable fields on an existing public media row.", "tags": ["public", "media"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/MediaPatchRequest"}}}, "required": true}}, "delete": {"operationId": "softDeletePublicMedia", "summary": "Soft Delete Media", "parameters": [{"in": "path", "name": "media_id", "schema": {"title": "Media Id", "type": "integer"}, "required": true}, {"in": "query", "name": "deal_id", "schema": {"title": "Deal Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"additionalProperties": true, "title": "Response", "type": "object"}}}}}, "description": "Soft deletes a media item for a deal.", "tags": ["public", "media"]}}, "/api/public/media/annotations/{media_id}": {"get": {"operationId": "getPhotoAnnotations", "summary": "Get Photo Annotations", "parameters": [{"in": "path", "name": "media_id", "schema": {"title": "Media Id", "type": "integer"}, "required": true}, {"in": "query", "name": "deal_id", "schema": {"title": "Deal Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AnnotationResponse"}}}}}, "description": "Get saved annotations for a media row. Requires matching deal_id for basic access control.", "tags": ["public", "media"]}, "put": {"operationId": "savePhotoAnnotations", "summary": "Save Photo Annotations", "parameters": [{"in": "path", "name": "media_id", "schema": {"title": "Media Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AnnotationResponse"}}}}}, "description": "Save (upsert) annotations for a media row.\nPublic virtual site visit consumers use this route directly, so rely on the\ndeal/media lookup for the same basic access control as the GET route.", "tags": ["public", "media"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AnnotationRequest"}}}, "required": true}}}, "/api/public/media/{media_id}/download": {"get": {"operationId": "api_ninja_public_media_proxy_photo_download", "summary": "Proxy Photo Download", "parameters": [{"in": "path", "name": "media_id", "schema": {"title": "Media Id", "type": "integer"}, "required": true}, {"in": "query", "name": "deal_id", "schema": {"title": "Deal Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK"}}, "description": "Fetch a photo from S3 through the server so clients avoid CORS issues.", "tags": ["public", "media"]}}, "/api/public/utilitydata/deal/{deal_id}/form": {"get": {"operationId": "getPublicUtilityApiForm", "summary": "Get Utilityapi Form", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UtilityApiFormResponse"}}}}}, "description": "Returns the UtilityAPI authorization link for this deal.", "tags": ["public", "utilitydata"]}}, "/api/public/utilitydata/callback": {"get": {"operationId": "utilityApiAuthorizationCallback", "summary": "Utilityapi Callback", "parameters": [{"in": "query", "name": "state", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "State"}, "required": false}, {"in": "query", "name": "referral", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Referral"}, "required": false}, {"in": "query", "name": "error", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Error"}, "required": false}, {"in": "query", "name": "error_description", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Error Description"}, "required": false}], "responses": {"200": {"description": "OK"}}, "description": "Receives UtilityAPI authorization redirects and starts interval processing.", "tags": ["public", "utilitydata"]}}, "/api/public/deal/{deal_uuid}/": {"get": {"operationId": "getPublicDeal", "summary": "Get Deal By Uuid", "parameters": [{"in": "path", "name": "deal_uuid", "schema": {"title": "Deal Uuid", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PublicDealSchema2"}}}}}, "tags": ["public", "deal"]}}, "/api/public/proposal/{proposal_uuid}/": {"get": {"operationId": "getPublicProposal", "summary": "Get Public Proposal", "parameters": [{"in": "path", "name": "proposal_uuid", "schema": {"title": "Proposal Uuid", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PublicProposalSchema"}}}}}, "tags": ["public", "proposal"]}}, "/api/public/customer/{customer_token}/referral-link": {"get": {"operationId": "getPublicCustomerReferralLink", "summary": "Get Public Customer Referral Link", "parameters": [{"in": "path", "name": "customer_token", "schema": {"title": "Customer Token", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PublicCustomerReferralSchema"}}}}}, "tags": ["public", "customer"]}}, "/api/public/customer/{customer_token}/send-referral-email": {"post": {"operationId": "sendPublicCustomerReferralEmail", "summary": "Send Public Customer Referral Email", "parameters": [{"in": "path", "name": "customer_token", "schema": {"title": "Customer Token", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SendReferralEmailResponseSchema"}}}}}, "tags": ["public", "customer"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SendReferralEmailSchema"}}}, "required": true}}}, "/api/public/customer/{customer_token}/referral-invites": {"get": {"operationId": "getPublicCustomerReferralInvites", "summary": "Get Public Customer Referral Invites", "parameters": [{"in": "path", "name": "customer_token", "schema": {"title": "Customer Token", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/PublicReferralInviteSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["public", "customer"]}}, "/api/public/sizing/": {"post": {"operationId": "getSizingByAddressPublic", "summary": "Get Sizing", "parameters": [{"in": "query", "name": "address", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address"}, "required": false}, {"in": "query", "name": "zipcode", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Zipcode"}, "required": false}, {"in": "query", "name": "floors", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Floors"}, "required": false}, {"in": "query", "name": "sqft", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Sqft"}, "required": false}, {"in": "query", "name": "year_built", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year Built"}, "required": false}, {"in": "query", "name": "bedrooms", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Bedrooms"}, "required": false}, {"in": "query", "name": "bathrooms", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Bathrooms"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SizingResponse"}}}}, "202": {"description": "Accepted", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SizingPending"}}}}}, "tags": ["public", "sizing"]}}, "/api/public/sizing/geocode": {"post": {"operationId": "geocodeAddress", "summary": "Geocode", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GeocodeResponse"}}}}}, "tags": ["public", "sizing"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/GeocodeRequest"}}}, "required": true}}}, "/api/public/shop/email_estimate": {"post": {"operationId": "emailEstimate", "summary": "Email Estimate", "parameters": [{"in": "header", "name": "EA-Org-Id", "schema": {"title": "Ea-Org-Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["public", "shop"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EstimateEmailSchema"}}}, "required": true}}}, "/api/public/shop/configurator_order": {"post": {"operationId": "createConfiguratorOrder", "summary": "Configurator Order", "parameters": [{"in": "header", "name": "EA-Org-Id", "schema": {"title": "Ea-Org-Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["public", "shop"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EstimateEmailSchema"}}}, "required": true}}}, "/api/public/podium/callback": {"get": {"operationId": "getPublicPodiumCallback", "summary": "Callback", "parameters": [{"in": "query", "name": "code", "schema": {"title": "Code", "type": "string"}, "required": true}, {"in": "query", "name": "state", "schema": {"title": "State", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["public", "podium"]}}, "/api/public/email/callback": {"get": {"operationId": "getPublicEmailCallback", "summary": "Callback", "parameters": [{"in": "query", "name": "code", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Code"}, "required": false}, {"in": "query", "name": "state", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "State"}, "required": false}, {"in": "query", "name": "error", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Error"}, "required": false}], "responses": {"200": {"description": "OK"}}, "tags": ["public", "email"]}}, "/api/public/email/webhook": {"get": {"operationId": "verifyPublicEmailWebhook", "summary": "Verify Webhook", "parameters": [{"in": "query", "name": "challenge", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Challenge"}, "required": false}], "responses": {"200": {"description": "OK"}}, "tags": ["public", "email"]}, "post": {"operationId": "publicEmailWebhook", "summary": "Webhook", "parameters": [], "responses": {"200": {"description": "OK"}}, "tags": ["public", "email"]}}, "/api/public/field-invoice/{token}": {"get": {"operationId": "getPublicFieldInvoice", "summary": "Get Invoice", "parameters": [{"in": "path", "name": "token", "schema": {"title": "Token", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"additionalProperties": true, "title": "Response", "type": "object"}}}}}, "tags": ["public", "fieldInvoice"]}}, "/api/public/field-invoice/{token}/pdf": {"get": {"operationId": "getPublicFieldInvoicePdf", "summary": "Invoice Pdf", "parameters": [{"in": "path", "name": "token", "schema": {"title": "Token", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["public", "fieldInvoice"]}}, "/api/public/field-invoice/{token}/checkout": {"post": {"operationId": "startPublicFieldInvoiceCheckout", "summary": "Start Checkout", "parameters": [{"in": "path", "name": "token", "schema": {"title": "Token", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PublicInvoiceCheckoutResponse"}}}}}, "tags": ["public", "fieldInvoice"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PublicInvoiceCheckoutRequest"}}}, "required": true}}}, "/api/public/field-invoice/{token}/fake-pay": {"post": {"operationId": "fakePayPublicFieldInvoice", "summary": "Fake Pay", "parameters": [{"in": "path", "name": "token", "schema": {"title": "Token", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"additionalProperties": true, "title": "Response", "type": "object"}}}}}, "description": "Local testing only: refused unless EXTERNAL_IO_MODE=fake.", "tags": ["public", "fieldInvoice"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PublicInvoiceCheckoutRequest"}}}, "required": true}}}, "/api/public/field-invoice/quickbooks/callback": {"get": {"operationId": "fieldQuickBooksCallback", "summary": "Quickbooks Callback", "parameters": [{"in": "query", "name": "state", "schema": {"default": "", "title": "State", "type": "string"}, "required": false}, {"in": "query", "name": "code", "schema": {"default": "", "title": "Code", "type": "string"}, "required": false}, {"in": "query", "name": "realmId", "schema": {"default": "", "title": "Realmid", "type": "string"}, "required": false}, {"in": "query", "name": "error", "schema": {"default": "", "title": "Error", "type": "string"}, "required": false}], "responses": {"200": {"description": "OK"}}, "tags": ["public", "fieldInvoice"]}}, "/api/webhook/workos": {"post": {"operationId": "workosWebhook", "summary": "Workos Webhook", "parameters": [], "responses": {"200": {"description": "OK"}}, "tags": ["webhooks"]}}, "/api/webhook/stripe": {"post": {"operationId": "stripeWebhook", "summary": "Stripe Webhook", "parameters": [], "responses": {"200": {"description": "OK"}}, "tags": ["webhooks"]}}, "/api/webhook/anvil": {"post": {"operationId": "anvilWebhook", "summary": "Anvil Webhook", "parameters": [], "responses": {"200": {"description": "OK"}}, "tags": ["webhooks"]}}, "/api/webhook/googlereview": {"post": {"operationId": "googleReviewWebhook", "summary": "Google Review Webhook", "parameters": [{"in": "query", "name": "token", "schema": {"title": "Token", "type": "string"}, "required": true}, {"in": "header", "name": "EA-Org-Id", "schema": {"title": "Ea-Org-Id", "type": "string"}, "required": true}, {"in": "header", "name": "EA-Webhook-Secret", "schema": {"title": "Ea-Webhook-Secret", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["webhooks"]}}, "/api/webhook/podium": {"post": {"operationId": "podiumWebhook", "summary": "Podium Webhook", "parameters": [], "responses": {"200": {"description": "OK"}}, "tags": ["webhooks"]}}, "/api/quote-admin/{uuid}/customer_info": {"get": {"operationId": "getQuoteAdminCustomerInfo", "summary": "Get Customer Info", "parameters": [{"in": "path", "name": "uuid", "schema": {"title": "Uuid", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CustomerInfoSchema"}}}}}, "tags": ["admin", "quotes"], "security": [{"SessionAuth": []}]}}, "/api/auth/login": {"post": {"operationId": "login", "summary": "Login", "parameters": [], "responses": {"200": {"description": "OK"}}, "description": "Authenticate the user and return access and refresh tokens.", "tags": ["auth"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LoginPayload"}}}, "required": true}}}, "/api/auth/login-json": {"post": {"operationId": "loginJson", "summary": "Login Json", "parameters": [], "responses": {"200": {"description": "OK"}}, "description": "Authenticate the user and return access and refresh tokens.", "tags": ["auth"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LoginPayload"}}}, "required": true}}}, "/api/auth/refresh-json": {"post": {"operationId": "refreshTokenJson", "summary": "Refresh Token Json", "parameters": [], "responses": {"200": {"description": "OK"}}, "description": "Generate a new access token using the refresh token.", "tags": ["auth"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/RefreshPayload"}}}, "required": true}}}, "/api/auth/refresh": {"post": {"operationId": "refreshToken", "summary": "Refresh Token", "parameters": [], "responses": {"200": {"description": "OK"}}, "description": "Generate a new access token using the refresh token from cookie.", "tags": ["auth"]}}, "/api/auth/logout": {"post": {"operationId": "logout", "summary": "Logout", "parameters": [], "responses": {"200": {"description": "OK"}}, "description": "Clear the refresh token cookie by setting it to expire in the past.", "tags": ["auth"]}}, "/api/users/me": {"get": {"operationId": "getMe", "summary": "Me", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserSchema"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DetailErrorSchema"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DetailErrorSchema"}}}}}, "tags": ["users"]}}, "/api/users/me/update-notes": {"put": {"operationId": "acknowledgeHvacosUpdate", "summary": "Acknowledge Hvacos Update", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateNotesPreferenceSchema"}}}}}, "tags": ["users"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateNotesPreferenceUpdateSchema"}}}, "required": true}}}, "/api/users/": {"get": {"operationId": "getUsersList", "summary": "Get Users List", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/UserSchema2"}, "title": "Response", "type": "array"}}}}}, "tags": ["users"]}}, "/api/customers/add-autoquote": {"post": {"operationId": "addCustomerAutoquote", "summary": "Add Customer", "parameters": [], "responses": {"200": {"description": "OK"}}, "tags": ["customers"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AdminNewCustomerForm"}}}, "required": true}}}, "/api/customers/": {"get": {"operationId": "getCustomerList", "summary": "Get Customer List", "parameters": [{"in": "query", "name": "q", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Q"}, "required": false}, {"in": "query", "name": "page", "schema": {"default": 1, "title": "Page", "type": "integer"}, "required": false}, {"in": "query", "name": "page_size", "schema": {"default": 20, "title": "Page Size", "type": "integer"}, "required": false}, {"in": "query", "name": "has_deals", "schema": {"default": false, "title": "Has Deals", "type": "boolean"}, "required": false}, {"in": "query", "name": "has_quotes", "schema": {"default": false, "title": "Has Quotes", "type": "boolean"}, "required": false}, {"in": "query", "name": "has_proposals", "schema": {"default": false, "title": "Has Proposals", "type": "boolean"}, "required": false}, {"in": "query", "name": "has_sold", "schema": {"default": false, "title": "Has Sold", "type": "boolean"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CustomerListResponseSchema"}}}}}, "tags": ["customers"]}, "post": {"operationId": "createCustomer", "summary": "Create Customer", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateCustomerResponseSchema"}}}}}, "tags": ["customers"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateCustomerSchema"}}}, "required": true}}}, "/api/customers/{customer_id}/referral-link": {"post": {"operationId": "createCustomerReferralLink", "summary": "Create Customer Referral Link", "parameters": [{"in": "path", "name": "customer_id", "schema": {"title": "Customer Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateReferralLinkResponseSchema"}}}}}, "tags": ["customers"]}}, "/api/customers/{customer_id}": {"put": {"operationId": "updateCustomer", "summary": "Update Customer", "parameters": [{"in": "path", "name": "customer_id", "schema": {"title": "Customer Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateCustomerResponseSchema"}}}}}, "tags": ["customers"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateCustomerSchema"}}}, "required": true}}, "get": {"operationId": "getCustomerById", "summary": "Get Customer By Id", "parameters": [{"in": "path", "name": "customer_id", "schema": {"title": "Customer Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CustomerDetailSchema"}}}}}, "tags": ["customers"]}}, "/api/leadforms/": {"get": {"operationId": "getLeadformsList", "summary": "Get Forms", "parameters": [{"in": "query", "name": "dealId", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Dealid"}, "required": false}, {"in": "query", "name": "quoteId", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Quoteid"}, "required": false}, {"in": "query", "name": "page", "schema": {"default": 1, "title": "Page", "type": "integer"}, "required": false}, {"in": "query", "name": "page_size", "schema": {"default": 25, "title": "Page Size", "type": "integer"}, "required": false}, {"in": "query", "name": "search", "schema": {"default": "", "title": "Search", "type": "string"}, "required": false}, {"in": "query", "name": "hideClosed", "schema": {"default": false, "title": "Hideclosed", "type": "boolean"}, "required": false}, {"in": "query", "name": "saved_filter_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Saved Filter Id"}, "required": false}, {"in": "query", "name": "status", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "required": false}, {"in": "query", "name": "inbox_status", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Inbox Status"}, "required": false}, {"in": "query", "name": "classification", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Classification"}, "required": false}, {"in": "query", "name": "lead_type", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Lead Type"}, "required": false}, {"in": "query", "name": "source", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Source"}, "required": false}, {"in": "query", "name": "date_from", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Date From"}, "required": false}, {"in": "query", "name": "date_to", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Date To"}, "required": false}, {"in": "query", "name": "date_preset", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Date Preset"}, "required": false}, {"in": "query", "name": "has_deal", "schema": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Has Deal"}, "required": false}, {"in": "query", "name": "has_service_request", "schema": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Has Service Request"}, "required": false}, {"in": "query", "name": "has_quote", "schema": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Has Quote"}, "required": false}, {"in": "query", "name": "has_routing_issue", "schema": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Has Routing Issue"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LeadListResponseSchema"}}}}}, "tags": ["leadforms"]}}, "/api/leadforms/filters": {"get": {"operationId": "getLeadSavedFilters", "summary": "Get Lead Saved Filters", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/LeadSavedFilterSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["leadforms"]}, "post": {"operationId": "createLeadSavedFilter", "summary": "Create Lead Saved Filter", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LeadSavedFilterSchema"}}}}}, "tags": ["leadforms"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LeadSavedFilterCreateSchema"}}}, "required": true}}}, "/api/leadforms/preferences": {"get": {"operationId": "getLeadPreferences", "summary": "Get Lead Preferences", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LeadPreferencesSchema"}}}}}, "tags": ["leadforms"]}, "put": {"operationId": "updateLeadPreferences", "summary": "Update Lead Preferences", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LeadPreferencesSchema"}}}}}, "tags": ["leadforms"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LeadPreferencesUpdateSchema"}}}, "required": true}}}, "/api/leadforms/filters/{filter_id}": {"delete": {"operationId": "deleteLeadSavedFilter", "summary": "Delete Lead Saved Filter", "parameters": [{"in": "path", "name": "filter_id", "schema": {"title": "Filter Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["leadforms"]}, "put": {"operationId": "updateLeadSavedFilter", "summary": "Update Lead Saved Filter", "parameters": [{"in": "path", "name": "filter_id", "schema": {"title": "Filter Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LeadSavedFilterSchema"}}}}}, "tags": ["leadforms"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LeadSavedFilterCreateSchema"}}}, "required": true}}}, "/api/leadforms/meta/filter-options": {"get": {"operationId": "getLeadFilterOptions", "summary": "Get Lead Filter Options", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LeadFilterOptionsSchema"}}}}}, "tags": ["leadforms"]}}, "/api/leadforms/intake-search": {"get": {"operationId": "searchLeadIntakeRecords", "summary": "Search Lead Intake Records", "parameters": [{"in": "query", "name": "q", "schema": {"default": "", "title": "Q", "type": "string"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/IntakeSearchResponseSchema"}}}}}, "tags": ["leadforms"]}}, "/api/leadforms/intake": {"post": {"operationId": "createLeadIntake", "summary": "Create Lead Intake", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LeadIntakeCreateResponseSchema"}}}}}, "tags": ["leadforms"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LeadIntakeCreateSchema"}}}, "required": true}}}, "/api/leadforms/{form_id}/notes": {"post": {"operationId": "createLeadInternalNote", "summary": "Create Lead Internal Note", "parameters": [{"in": "path", "name": "form_id", "schema": {"title": "Form Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InternalNoteCreateResponseSchema"}}}}}, "tags": ["leadforms"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/InternalNoteCreateSchema"}}}, "required": true}}}, "/api/leadforms/{form_id}/classification": {"patch": {"operationId": "updateLeadClassification", "summary": "Update Lead Classification", "parameters": [{"in": "path", "name": "form_id", "schema": {"title": "Form Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LeadClassificationUpdateResponseSchema"}}}}}, "tags": ["leadforms"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LeadClassificationUpdateSchema"}}}, "required": true}}}, "/api/leadforms/{form_id}": {"get": {"operationId": "getLeadformById", "summary": "Get Form By Id", "parameters": [{"in": "path", "name": "form_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "string"}], "title": "Form Id"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LeadFullSchema"}}}}}, "tags": ["leadforms"]}}, "/api/deals/": {"get": {"operationId": "getDealList", "summary": "Get Deal List", "parameters": [{"in": "query", "name": "page", "schema": {"default": 1, "title": "Page", "type": "integer"}, "required": false}, {"in": "query", "name": "page_size", "schema": {"default": 20, "title": "Page Size", "type": "integer"}, "required": false}, {"in": "query", "name": "saved_filter_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Saved Filter Id"}, "required": false}, {"in": "query", "name": "stage", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Stage"}, "required": false}, {"in": "query", "name": "status", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "required": false}, {"in": "query", "name": "date_from", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Date From"}, "required": false}, {"in": "query", "name": "date_to", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Date To"}, "required": false}, {"in": "query", "name": "date_preset", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Date Preset"}, "required": false}, {"in": "query", "name": "assigned_salesperson_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Assigned Salesperson Id"}, "required": false}, {"in": "query", "name": "label", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Label"}, "required": false}, {"in": "query", "name": "unlabeled", "schema": {"default": false, "title": "Unlabeled", "type": "boolean"}, "required": false}, {"in": "query", "name": "sort_by", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sort By"}, "required": false}, {"in": "query", "name": "sort_dir", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sort Dir"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DealListResponseSchema"}}}}}, "tags": ["deals"]}}, "/api/deals/export": {"get": {"operationId": "exportDealsCsv", "summary": "Export Deals Csv", "parameters": [{"in": "query", "name": "q", "schema": {"default": "", "title": "Q", "type": "string"}, "required": false}, {"in": "query", "name": "saved_filter_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Saved Filter Id"}, "required": false}, {"in": "query", "name": "stage", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Stage"}, "required": false}, {"in": "query", "name": "status", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "required": false}, {"in": "query", "name": "date_from", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Date From"}, "required": false}, {"in": "query", "name": "date_to", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Date To"}, "required": false}, {"in": "query", "name": "date_preset", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Date Preset"}, "required": false}, {"in": "query", "name": "assigned_salesperson_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Assigned Salesperson Id"}, "required": false}, {"in": "query", "name": "label", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Label"}, "required": false}, {"in": "query", "name": "unlabeled", "schema": {"default": false, "title": "Unlabeled", "type": "boolean"}, "required": false}, {"in": "query", "name": "sort_by", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sort By"}, "required": false}, {"in": "query", "name": "sort_dir", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sort Dir"}, "required": false}], "responses": {"200": {"description": "OK"}}, "tags": ["deals"]}}, "/api/deals/search": {"get": {"operationId": "searchDeals", "summary": "Search Deals", "parameters": [{"in": "query", "name": "q", "schema": {"default": "", "title": "Q", "type": "string"}, "required": false}, {"in": "query", "name": "page", "schema": {"default": 1, "title": "Page", "type": "integer"}, "required": false}, {"in": "query", "name": "page_size", "schema": {"default": 20, "title": "Page Size", "type": "integer"}, "required": false}, {"in": "query", "name": "saved_filter_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Saved Filter Id"}, "required": false}, {"in": "query", "name": "stage", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Stage"}, "required": false}, {"in": "query", "name": "status", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "required": false}, {"in": "query", "name": "date_from", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Date From"}, "required": false}, {"in": "query", "name": "date_to", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Date To"}, "required": false}, {"in": "query", "name": "date_preset", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Date Preset"}, "required": false}, {"in": "query", "name": "assigned_salesperson_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Assigned Salesperson Id"}, "required": false}, {"in": "query", "name": "label", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Label"}, "required": false}, {"in": "query", "name": "unlabeled", "schema": {"default": false, "title": "Unlabeled", "type": "boolean"}, "required": false}, {"in": "query", "name": "sort_by", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sort By"}, "required": false}, {"in": "query", "name": "sort_dir", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sort Dir"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DealListResponseSchema"}}}}}, "tags": ["deals"]}}, "/api/deals/filters": {"get": {"operationId": "getDealSavedFilters", "summary": "Get Deal Saved Filters", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/DealSavedFilterSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["deals"]}, "post": {"operationId": "createDealSavedFilter", "summary": "Create Deal Saved Filter", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DealSavedFilterSchema"}}}}}, "tags": ["deals"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DealSavedFilterCreateSchema"}}}, "required": true}}}, "/api/deals/preferences": {"get": {"operationId": "getDealPreferences", "summary": "Get Deal Preferences", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DealPreferencesSchema"}}}}}, "tags": ["deals"]}, "put": {"operationId": "updateDealPreferences", "summary": "Update Deal Preferences", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DealPreferencesSchema"}}}}}, "tags": ["deals"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DealPreferencesUpdateSchema"}}}, "required": true}}}, "/api/deals/filters/{filter_id}": {"delete": {"operationId": "deleteDealSavedFilter", "summary": "Delete Deal Saved Filter", "parameters": [{"in": "path", "name": "filter_id", "schema": {"title": "Filter Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["deals"]}, "put": {"operationId": "updateDealSavedFilter", "summary": "Update Deal Saved Filter", "parameters": [{"in": "path", "name": "filter_id", "schema": {"title": "Filter Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DealSavedFilterSchema"}}}}}, "tags": ["deals"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DealSavedFilterCreateSchema"}}}, "required": true}}}, "/api/deals/meta/salespeople": {"get": {"operationId": "getDealSalespeople", "summary": "Get Deal Salespeople", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/DealSalespersonSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["deals"]}}, "/api/deals/meta/activity-types": {"get": {"operationId": "getCRMActivityTypes", "summary": "Get Crm Activity Types", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/CRMActivityTypeSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["deals"]}}, "/api/deals/meta/filter-options": {"get": {"operationId": "getDealFilterOptions", "summary": "Get Deal Filter Options", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DealFilterOptionsSchema"}}}}}, "tags": ["deals"]}}, "/api/deals/kanban": {"get": {"operationId": "getDealKanban", "summary": "Get Deal Kanban", "parameters": [{"in": "query", "name": "q", "schema": {"default": "", "title": "Q", "type": "string"}, "required": false}, {"in": "query", "name": "stage", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Stage"}, "required": false}, {"in": "query", "name": "status", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "required": false}, {"in": "query", "name": "date_from", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Date From"}, "required": false}, {"in": "query", "name": "date_to", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Date To"}, "required": false}, {"in": "query", "name": "date_preset", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Date Preset"}, "required": false}, {"in": "query", "name": "assigned_salesperson_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Assigned Salesperson Id"}, "required": false}, {"in": "query", "name": "label", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Label"}, "required": false}, {"in": "query", "name": "unlabeled", "schema": {"default": false, "title": "Unlabeled", "type": "boolean"}, "required": false}, {"in": "query", "name": "sort_by", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sort By"}, "required": false}, {"in": "query", "name": "sort_dir", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sort Dir"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DealKanbanResponseSchema"}}}}}, "tags": ["deals"]}}, "/api/deals/{deal_id}/labels": {"post": {"operationId": "createAndAssignDealLabel", "summary": "Create And Assign Deal Label", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DealLabelSchema"}}}}}, "tags": ["deals"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DealLabelCreateAssignSchema"}}}, "required": true}}}, "/api/deals/{deal_id}/crm": {"patch": {"operationId": "updateDealCRM", "summary": "Update Deal Crm", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DealDetailSchema"}}}}}, "tags": ["deals"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DealUpdateSchema"}}}, "required": true}}}, "/api/deals/{deal_id}/notes": {"post": {"operationId": "createDealNote", "summary": "Create Deal Note", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DealNoteSchema"}}}}}, "tags": ["deals"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DealNoteCreateSchema"}}}, "required": true}}}, "/api/deals/{deal_id}/activities": {"post": {"operationId": "createCRMActivity", "summary": "Create Crm Activity", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CRMActivitySchema"}}}}}, "tags": ["deals"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CRMActivityCreateSchema"}}}, "required": true}}}, "/api/deals/{deal_id}/activities/{activity_id}/complete": {"post": {"operationId": "completeCRMActivity", "summary": "Complete Crm Activity", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}, {"in": "path", "name": "activity_id", "schema": {"title": "Activity Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CRMActivitySchema"}}}}}, "tags": ["deals"]}}, "/api/deals/{deal_id}/property-details": {"patch": {"operationId": "updateDealPropertyDetails", "summary": "Update Deal Property Details", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/UpdateDealPropertyDetailsResponse"}, "title": "Response", "type": "array"}}}}}, "tags": ["deals"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateDealPropertyDetailsSchema"}}}, "required": true}}}, "/api/deals/{deal_id}/service-location": {"patch": {"operationId": "updateDealServiceLocation", "summary": "Update Deal Service Location", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateDealServiceLocationResponse"}}}}}, "tags": ["deals"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateDealServiceLocationSchema"}}}, "required": true}}}, "/api/deals/{deal_id}": {"get": {"operationId": "getDealById", "summary": "Get Deal By Id", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DealDetailSchema"}}}}}, "tags": ["deals"]}}, "/api/deals/{deal_id}/utilitydata/retry": {"post": {"operationId": "retryDealUtilityDataProcessing", "summary": "Retry Deal Utilitydata Processing", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["deals"]}}, "/api/deals/{deal_id}/utilitydata/download": {"get": {"operationId": "downloadDealUtilityData", "summary": "Download Deal Utilitydata", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["deals"]}}, "/api/deals/{deal_id}/quotes": {"post": {"operationId": "createDealQuote", "summary": "Create Deal Quote", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateDealQuoteResponse"}}}}}, "tags": ["deals"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateDealQuoteSchema"}}}, "required": true}}}, "/api/deals/{deal_id}/proposals": {"post": {"operationId": "createDealProposal", "summary": "Create Deal Proposal", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateProposalResponse"}}}}}, "tags": ["deals"]}}, "/api/deals/{deal_id}/proposals/{proposal_id}": {"delete": {"operationId": "deleteDealProposal", "summary": "Delete Deal Proposal", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}, {"in": "path", "name": "proposal_id", "schema": {"title": "Proposal Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["deals"]}}, "/api/deals/{deal_id}/proposal-quotes": {"post": {"operationId": "createProposalQuote", "summary": "Create Proposal Quote", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateProposalQuoteResponse"}}}}}, "tags": ["deals"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateProposalQuoteSchema"}}}, "required": true}}}, "/api/deals/{deal_id}/proposals/{proposal_id}/quotes": {"post": {"operationId": "attachQuoteToProposal", "summary": "Attach Quote To Proposal", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}, {"in": "path", "name": "proposal_id", "schema": {"title": "Proposal Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateProposalQuoteResponse"}}}}}, "tags": ["deals"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AttachQuoteToProposalSchema"}}}, "required": true}}}, "/api/deals/{deal_id}/proposal-quotes/{proposal_quote_id}": {"delete": {"operationId": "detachQuoteFromProposal", "summary": "Detach Quote From Proposal", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}, {"in": "path", "name": "proposal_quote_id", "schema": {"title": "Proposal Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["deals"]}, "put": {"operationId": "updateProposalQuote", "summary": "Update Proposal Quote", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}, {"in": "path", "name": "proposal_quote_id", "schema": {"title": "Proposal Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["deals"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateProposalQuoteSchema"}}}, "required": true}}}, "/api/deals/meta/proposal-categories/": {"get": {"operationId": "getProposalCategoryList", "summary": "Get Proposal Categories", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/ProposalCategorySchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["deals"]}, "post": {"operationId": "createProposalCategory", "summary": "Create Proposal Category", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["deals"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateProposalCategorySchema"}}}, "required": true}}}, "/api/deals/meta/proposal-categories/{category_name}": {"delete": {"operationId": "deleteProposalCategory", "summary": "Delete Proposal Category", "parameters": [{"in": "path", "name": "category_name", "schema": {"title": "Category Name", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["deals"]}}, "/api/deals/{deal_id}/ahj/refresh": {"post": {"operationId": "refreshDealAhj", "summary": "Refresh Deal Ahj", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["deals"]}}, "/api/deals/{deal_id}/manj": {"post": {"operationId": "saveDealManj", "summary": "Save Manj", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}, {"in": "query", "name": "payload", "schema": {"additionalProperties": true, "title": "Payload", "type": "object"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["deals"]}, "get": {"operationId": "getDealManj", "summary": "Get Manj", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["deals"]}}, "/api/deals/{deal_id}/nec-loadcalc": {"get": {"operationId": "getDealNecLoadcalc", "summary": "Get Nec Loadcalc", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["deals"]}, "post": {"operationId": "saveDealNecLoadcalc", "summary": "Save Nec Loadcalc", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NECLoadCalcSchema"}}}}}, "tags": ["deals"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/NECLoadCalcSchema"}}}, "required": true}}}, "/api/deals/{deal_id}/nec-loadcalc/pdf": {"get": {"operationId": "downloadDealNecLoadcalcPdf", "summary": "Download Nec Loadcalc Pdf", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["deals"]}}, "/api/deals/{deal_id}/files": {"get": {"operationId": "listDealStoredFiles", "summary": "List Deal Files", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}, {"in": "query", "name": "permit_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Permit Id"}, "required": false}, {"in": "query", "name": "incentive_application_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Incentive Application Id"}, "required": false}, {"in": "query", "name": "project_area", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Project Area"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/StoredFileSchema"}, "title": "Response", "type": "array"}}}}}, "description": "The deal's files, or only one permit's, incentive application's, or area's files when scoped.", "tags": ["dealFiles"]}}, "/api/deals/{deal_id}/files/uploads": {"post": {"operationId": "createDealStoredFileUpload", "summary": "Create Deal File Upload", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/StoredFileUploadResponse"}}}}}, "tags": ["dealFiles"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/StoredFileUploadRequest"}}}, "required": true}}}, "/api/deals/{deal_id}/files/{file_identifier}/complete": {"post": {"operationId": "completeDealStoredFileUpload", "summary": "Complete Deal File Upload", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}, {"in": "path", "name": "file_identifier", "schema": {"title": "File Identifier", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/StoredFileSchema"}}}}}, "tags": ["dealFiles"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/StoredFileUploadActionRequest"}}}, "required": true}}}, "/api/deals/{deal_id}/files/{file_identifier}/failed": {"post": {"operationId": "failDealStoredFileUpload", "summary": "Fail Deal File Upload", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}, {"in": "path", "name": "file_identifier", "schema": {"title": "File Identifier", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["dealFiles"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/StoredFileUploadFailureRequest"}}}, "required": true}}}, "/api/deals/{deal_id}/files/{file_identifier}/versions": {"get": {"operationId": "listDealStoredFileVersions", "summary": "List Deal File Versions", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}, {"in": "path", "name": "file_identifier", "schema": {"title": "File Identifier", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/StoredFileVersionSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["dealFiles"]}}, "/api/deals/{deal_id}/files/{file_identifier}/access": {"get": {"operationId": "getDealStoredFileAccess", "summary": "Get Deal File Access", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}, {"in": "path", "name": "file_identifier", "schema": {"title": "File Identifier", "type": "string"}, "required": true}, {"in": "query", "name": "download", "schema": {"default": false, "title": "Download", "type": "boolean"}, "required": false}, {"in": "query", "name": "version_identifier", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Version Identifier"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/StoredFileAccessResponse"}}}}}, "tags": ["dealFiles"]}}, "/api/deals/{deal_id}/files/{file_identifier}": {"delete": {"operationId": "deleteDealStoredFile", "summary": "Delete Deal File", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}, {"in": "path", "name": "file_identifier", "schema": {"title": "File Identifier", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["dealFiles"]}}, "/api/activities/": {"get": {"operationId": "listCRMActivities", "summary": "List Crm Activities", "parameters": [{"in": "query", "name": "q", "schema": {"default": "", "title": "Q", "type": "string"}, "required": false}, {"in": "query", "name": "status", "schema": {"default": "", "title": "Status", "type": "string"}, "required": false}, {"in": "query", "name": "owner_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Owner Id"}, "required": false}, {"in": "query", "name": "activity_type_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Activity Type Id"}, "required": false}, {"in": "query", "name": "priority", "schema": {"default": "", "title": "Priority", "type": "string"}, "required": false}, {"in": "query", "name": "due", "schema": {"default": "", "title": "Due", "type": "string"}, "required": false}, {"in": "query", "name": "due_from", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Due From"}, "required": false}, {"in": "query", "name": "due_to", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Due To"}, "required": false}, {"in": "query", "name": "sort_dir", "schema": {"default": "asc", "enum": ["asc", "desc"], "title": "Sort Dir", "type": "string"}, "required": false}, {"in": "query", "name": "page", "schema": {"default": 1, "title": "Page", "type": "integer"}, "required": false}, {"in": "query", "name": "page_size", "schema": {"default": 25, "title": "Page Size", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CRMActivityListResponseSchema"}}}}}, "tags": ["activities"]}}, "/api/activities/{activity_id}": {"patch": {"operationId": "updateCRMActivity", "summary": "Update Crm Activity", "parameters": [{"in": "path", "name": "activity_id", "schema": {"title": "Activity Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CRMActivityListItemSchema"}}}}}, "tags": ["activities"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CRMActivityUpdateSchema"}}}, "required": true}}}, "/api/quotes/sms-templates": {"get": {"operationId": "getSmsTemplates", "summary": "Get Sms Templates", "parameters": [{"in": "query", "name": "locationUid", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Locationuid"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GetTemplatesResponseModel"}}}}}, "tags": ["quotes"]}}, "/api/quotes/{quote_id}/media/{media_id}/retry-transcode": {"post": {"operationId": "retryMediaTranscode", "summary": "Retry Media Transcode", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}, {"in": "path", "name": "media_id", "schema": {"title": "Media Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AdminMediaSchema"}}}}}, "description": "Re-queue MediaConvert processing for a verified video whose transcode failed.", "tags": ["quotes"]}}, "/api/quotes/{quote_id}/media/{media_id}": {"delete": {"operationId": "deleteQuoteMedia", "summary": "Delete Quote Media", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}, {"in": "path", "name": "media_id", "schema": {"title": "Media Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "description": "Soft delete a virtual site visit photo or video on the quote's deal.", "tags": ["quotes"]}}, "/api/quotes/{quote_id}": {"get": {"operationId": "getQuoteById", "summary": "Get Quote Byquoteid", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AdminQuoteSchema"}}}}}, "tags": ["quotes"]}, "put": {"operationId": "updateQuote", "summary": "Update Quote", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["quotes"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/QuoteUpdateSchema"}}}, "required": true}}}, "/api/quotes/": {"get": {"operationId": "getQuoteList", "summary": "Quote List Simple", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/QuoteSchemaSimple"}, "title": "Response", "type": "array"}}}}}, "tags": ["quotes"]}}, "/api/quotes/{quote_id}/cartitems": {"post": {"operationId": "addCartitem", "summary": "Add Cartitem", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["quotes"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AddItemSchema"}}}, "required": true}}}, "/api/quotes/{quote_id}/discounts": {"post": {"operationId": "addDiscountitem", "summary": "Add Discountitem", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["quotes"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AddItemSchema"}}}, "required": true}}}, "/api/quotes/{quote_id}/incentives": {"post": {"operationId": "addIncentiveitem", "summary": "Add Incentives", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["quotes"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AddItemSchema"}}}, "required": true}}}, "/api/quotes/{quote_id}/financing": {"post": {"operationId": "addFinanceitem", "summary": "Add Financeitem", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["quotes"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AddItemSchema"}}}, "required": true}}}, "/api/quotes/{quote_id}/cartitems/{cartitem_id}": {"put": {"operationId": "updateCartitem", "summary": "Update Cartitem", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}, {"in": "path", "name": "cartitem_id", "schema": {"title": "Cartitem Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["quotes"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CartItemUpdateSchema"}}}, "required": true}}, "delete": {"operationId": "deleteCartitem", "summary": "Delete Cartitem", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}, {"in": "path", "name": "cartitem_id", "schema": {"title": "Cartitem Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["quotes"]}}, "/api/quotes/{quote_id}/discounts/{discountitem_id}": {"put": {"operationId": "updateDiscountitem", "summary": "Update Discountitem", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}, {"in": "path", "name": "discountitem_id", "schema": {"title": "Discountitem Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["quotes"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DiscountItemUpdateSchema"}}}, "required": true}}, "delete": {"operationId": "deleteDiscountitem", "summary": "Delete Discount", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}, {"in": "path", "name": "discountitem_id", "schema": {"title": "Discountitem Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["quotes"]}}, "/api/quotes/{quote_id}/incentives/{incentiveitem_id}": {"put": {"operationId": "updateIncentiveitem", "summary": "Update Incentiveitem", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}, {"in": "path", "name": "incentiveitem_id", "schema": {"title": "Incentiveitem Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["quotes"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/IncentiveItemUpdateSchema"}}}, "required": true}}, "delete": {"operationId": "deleteIncentiveitem", "summary": "Delete Incentive", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}, {"in": "path", "name": "incentiveitem_id", "schema": {"title": "Incentiveitem Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["quotes"]}}, "/api/quotes/{quote_id}/financing/{financeitem_id}": {"put": {"operationId": "updateFinanceitem", "summary": "Update Financeitem", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}, {"in": "path", "name": "financeitem_id", "schema": {"title": "Financeitem Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["quotes"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/FinanceItemUpdateSchema"}}}, "required": true}}, "delete": {"operationId": "deleteFinanceitem", "summary": "Delete Financing", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}, {"in": "path", "name": "financeitem_id", "schema": {"title": "Financeitem Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["quotes"]}}, "/api/quotes/{quote_id}/contracts": {"get": {"operationId": "getContractList", "summary": "Get Contract List", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/ContractSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["quotes"]}, "post": {"operationId": "addContract", "summary": "Add Contract", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["quotes"]}}, "/api/quotes/{quote_id}/contracts-inclusion-update": {"put": {"operationId": "updateContractInclusions", "summary": "Update Inclusions", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["quotes"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/InclusionSchema"}}}, "required": true}}}, "/api/quotes/{quote_id}/contracts/{contract_id}/regenerate": {"post": {"operationId": "regenerateContract", "summary": "Regenerate Contract", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}, {"in": "path", "name": "contract_id", "schema": {"title": "Contract Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["quotes"]}}, "/api/quotes/{quote_id}/contracts/{contract_id}": {"get": {"operationId": "getContract", "summary": "Get Contract", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}, {"in": "path", "name": "contract_id", "schema": {"title": "Contract Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["quotes"]}, "put": {"operationId": "updateContract", "summary": "Update Contract", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}, {"in": "path", "name": "contract_id", "schema": {"title": "Contract Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["quotes"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ContractSchemaPatch"}}}, "required": true}}, "delete": {"operationId": "deleteContract", "summary": "Delete Contract", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}, {"in": "path", "name": "contract_id", "schema": {"title": "Contract Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["quotes"]}}, "/api/quotes/{quote_id}/contracts/{contract_id}/uploads": {"post": {"operationId": "uploadContractFile", "summary": "Upload File", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}, {"in": "path", "name": "contract_id", "schema": {"title": "Contract Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["quotes"], "requestBody": {"content": {"multipart/form-data": {"schema": {"properties": {"file": {"format": "binary", "title": "File", "type": "string"}}, "required": ["file"], "title": "FileParams", "type": "object"}}}, "required": true}}}, "/api/quotes/{quote_id}/mail-messages": {"get": {"operationId": "getPipedriveMailMessages", "summary": "Get Pipedrive Mail Messages", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GetDealMailMessagesResponse"}}}}}, "tags": ["quotes"]}}, "/api/quotes/{quote_id}/sms-messages": {"get": {"operationId": "getPipedriveSmsMessages", "summary": "Get Pipedrive Sms Messages", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GetMessagesResponseModel"}}}}}, "tags": ["quotes"]}, "post": {"operationId": "sendSmsMessage", "summary": "Send Sms Message", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Message"}}}}}, "tags": ["quotes"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SendSmsSchema"}}}, "required": true}}}, "/api/quotes/{quote_id}/sms-template-context": {"get": {"operationId": "getSmsTemplateContext", "summary": "Get Sms Template Context", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SmsTemplateContextSchema"}}}}}, "tags": ["quotes"]}}, "/api/quotes/{quote_id}/send-quote-email": {"post": {"operationId": "sendQuoteEmail", "summary": "Send Quote Email", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["quotes"]}}, "/api/quotes/{quote_id}/update-address": {"post": {"operationId": "updateQuoteAddress", "summary": "Update Quote Address", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/UpdateAddressResponse"}, "title": "Response", "type": "array"}}}}}, "tags": ["quotes"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateAddressSchema"}}}, "required": true}}}, "/api/quotes/{quote_id}/update-homeprops": {"post": {"operationId": "updateQuoteHomeProps", "summary": "Update Quote Home Props", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/UpdateHomePropsResponse"}, "title": "Response", "type": "array"}}}}}, "tags": ["quotes"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateHomePropsSchema"}}}, "required": true}}}, "/api/quotes/{quote_id}/duplicate": {"post": {"operationId": "duplicateQuote", "summary": "Duplicate Quote", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DuplicateQuoteResponse"}}}}}, "tags": ["quotes"]}}, "/api/quotes/{quote_id}/manj": {"get": {"operationId": "getManjResult", "summary": "Get Manj Result", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"anyOf": [{"$ref": "#/components/schemas/ManJResultSchema"}, {"additionalProperties": true, "type": "object"}], "title": "Response"}}}}}, "description": "Get existing ManJ result from deal", "tags": ["quotes"]}, "post": {"operationId": "calcManj", "summary": "Calc Manj", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ManJResultSchema"}}}}}, "description": "A mutation to calculte the manj ", "tags": ["quotes"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AuthSizingRequest"}}}, "required": true}}}, "/api/quotes/{quote_id}/manj/stations": {"get": {"operationId": "listManjStations", "summary": "List Manj Stations", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}, {"in": "query", "name": "limit", "schema": {"default": 12, "title": "Limit", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/StationSchema"}, "title": "Response", "type": "array"}}}}}, "description": "Nearest weather stations to this deal's address, for the selection dropdown.", "tags": ["quotes"]}}, "/api/quotes/{quote_id}/outline": {"get": {"operationId": "getOutline", "summary": "Get Outline", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"anyOf": [{"$ref": "#/components/schemas/OutlineResultSchema"}, {"additionalProperties": true, "type": "object"}], "title": "Response"}}}}}, "description": "Return the current roof-footprint outline for this quote's service location.", "tags": ["quotes"]}}, "/api/quotes/{quote_id}/detect-outline": {"post": {"operationId": "detectOutline", "summary": "Detect Outline", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DetectOutlineResponse"}}}}}, "description": "Detect the home's roof footprint from satellite imagery, persist it for\nthe service location, and optionally re-run Manual J.", "tags": ["quotes"], "requestBody": {"content": {"application/json": {"schema": {"allOf": [{"$ref": "#/components/schemas/DetectOutlineRequest"}]}}}, "required": false}}}, "/api/quotes/{quote_id}/outline-correction": {"post": {"operationId": "saveOutlineCorrection", "summary": "Save Outline Correction", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/OutlineCorrectionResponse"}}}}}, "description": "Persist a human roof outline as ground-truth training data and make it\nthe current outline for the service location.", "tags": ["quotes"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/OutlineCorrectionRequest"}}}, "required": true}}}, "/api/quotes/{quote_id}/zone-builder": {"get": {"operationId": "getZoneBuilder", "summary": "Get System Config", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ZoneBuilderSchema"}}}}}, "tags": ["quotes"]}, "post": {"operationId": "calculateZoneCapacity", "summary": "Calculate Zone Capacity", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CapacityCalculationResponse"}}}}}, "description": "Calculate heating/cooling capacity for each zone using Manual S sizing", "tags": ["quotes"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CapacityCalculationRequest"}}}, "required": true}}}, "/api/quotes/{quote_id}/engineering-checklist": {"get": {"operationId": "getQuoteEngineeringChecklist", "summary": "Get Quote Engineering Checklist", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EngineeringChecklistSchema"}}}}}, "tags": ["quotes"]}, "put": {"operationId": "updateQuoteEngineeringChecklist", "summary": "Update Quote Engineering Checklist", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EngineeringChecklistSchema"}}}}}, "tags": ["quotes"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EngineeringChecklistUpdateSchema"}}}, "required": true}}}, "/api/products": {"get": {"operationId": "getProductList", "summary": "Get Product List", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/AdminProductSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["products"]}}, "/api/products/{product_id}": {"get": {"operationId": "getProductById", "summary": "Get Product", "parameters": [{"in": "path", "name": "product_id", "schema": {"title": "Product Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AdminProductDetailSchema"}}}}}, "tags": ["products"]}, "put": {"operationId": "updateProduct", "summary": "Update Product", "parameters": [{"in": "path", "name": "product_id", "schema": {"title": "Product Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"additionalProperties": {"type": "boolean"}, "title": "Response", "type": "object"}}}}}, "tags": ["products"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AdminUpdateProductSchema"}}}, "required": true}}}, "/api/discounts": {"get": {"operationId": "getDiscountList", "summary": "Get Discount List", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/AdminDiscountSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["discounts"]}}, "/api/discounts/{discount_id}": {"get": {"operationId": "getDiscountById", "summary": "Get Discount", "parameters": [{"in": "path", "name": "discount_id", "schema": {"title": "Discount Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AdminDiscountSchema"}}}}}, "tags": ["discounts"]}}, "/api/incentives": {"get": {"operationId": "getIncentiveList", "summary": "Get Incentive List", "parameters": [{"in": "query", "name": "page", "schema": {"default": 1, "title": "Page", "type": "integer"}, "required": false}, {"in": "query", "name": "page_size", "schema": {"default": 50, "title": "Page Size", "type": "integer"}, "required": false}, {"in": "query", "name": "search", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Search"}, "required": false}, {"in": "query", "name": "st", "schema": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "St"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/IncentiveListSchema"}}}}}, "description": "Paginated list of incentives (excludes soft-deleted and entity-hidden).", "tags": ["incentives"]}, "post": {"operationId": "createIncentive", "summary": "Create Incentive Endpoint", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/IncentiveReadSchema"}}}}}, "tags": ["incentives"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/IncentiveWriteSchema"}}}, "required": true}}}, "/api/incentives/selectable": {"get": {"operationId": "getSelectableIncentives", "summary": "Get Selectable Incentives", "parameters": [{"in": "query", "name": "st", "schema": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": true, "title": "St"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/IncentiveReadSchema"}, "title": "Response", "type": "array"}}}}}, "description": "Flat (unpaginated) list of active incentives for the quote cart picker.\n\nSeparate from the paginated admin list so cart consumers never deal with\npagination. Defaults to ServiceTitan-synced incentives only.", "tags": ["incentives"]}}, "/api/incentives/meta": {"get": {"operationId": "getIncentiveMeta", "summary": "Get Incentive Meta", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/IncentiveMetaSchema"}}}}}, "description": "Form option metadata for incentives.", "tags": ["incentives"]}}, "/api/incentives/bulk-delete": {"post": {"operationId": "bulkDeleteIncentives", "summary": "Bulk Delete Incentives Endpoint", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "description": "Soft-delete incentives: hidden from all surfaces and deactivated in ServiceTitan.", "tags": ["incentives"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/IncentiveIdsSchema"}}}, "required": true}}}, "/api/incentives/sync": {"post": {"operationId": "syncIncentivesToSt", "summary": "Sync Incentives Endpoint", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "description": "Queue (or retry) ServiceTitan sync for the given incentives.", "tags": ["incentives"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/IncentiveIdsSchema"}}}, "required": true}}}, "/api/incentives/{incentive_id}": {"get": {"operationId": "getIncentiveById", "summary": "Get Incentive", "parameters": [{"in": "path", "name": "incentive_id", "schema": {"title": "Incentive Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/IncentiveReadSchema"}}}}}, "tags": ["incentives"]}, "put": {"operationId": "updateIncentive", "summary": "Update Incentive Endpoint", "parameters": [{"in": "path", "name": "incentive_id", "schema": {"title": "Incentive Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/IncentiveReadSchema"}}}}}, "tags": ["incentives"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/IncentiveWriteSchema"}}}, "required": true}}, "delete": {"operationId": "deleteIncentive", "summary": "Delete Incentive Endpoint", "parameters": [{"in": "path", "name": "incentive_id", "schema": {"title": "Incentive Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "description": "Soft-delete a single incentive (same lifecycle as bulk delete): hidden\nfrom all surfaces and deactivated in ServiceTitan.", "tags": ["incentives"]}}, "/api/incentive-entities": {"get": {"operationId": "getIncentiveEntityList", "summary": "Get Entity List", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/IncentiveEntityReadSchema"}, "title": "Response", "type": "array"}}}}}, "description": "List active (non-deleted) incentive entities.", "tags": ["incentiveEntities"]}, "post": {"operationId": "createIncentiveEntity", "summary": "Create Entity Endpoint", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/IncentiveEntityReadSchema"}}}}}, "tags": ["incentiveEntities"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/IncentiveEntityWriteSchema"}}}, "required": true}}}, "/api/incentive-entities/{entity_id}/zipcodes": {"get": {"operationId": "getIncentiveEntityZipcodes", "summary": "Get Entity Zipcodes Endpoint", "parameters": [{"in": "path", "name": "entity_id", "schema": {"title": "Entity Id", "type": "string"}, "required": true}, {"in": "query", "name": "page", "schema": {"default": 1, "title": "Page", "type": "integer"}, "required": false}, {"in": "query", "name": "page_size", "schema": {"default": 100, "title": "Page Size", "type": "integer"}, "required": false}, {"in": "query", "name": "search", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Search"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/IncentiveEntityZipcodeListSchema"}}}}}, "description": "Paginated ZIP codes for a single incentive entity.", "tags": ["incentiveEntities"]}}, "/api/incentive-entities/{entity_id}": {"put": {"operationId": "updateIncentiveEntity", "summary": "Update Entity Endpoint", "parameters": [{"in": "path", "name": "entity_id", "schema": {"title": "Entity Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/IncentiveEntityReadSchema"}}}}}, "tags": ["incentiveEntities"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/IncentiveEntityWriteSchema"}}}, "required": true}}, "delete": {"operationId": "deleteIncentiveEntity", "summary": "Delete Entity Endpoint", "parameters": [{"in": "path", "name": "entity_id", "schema": {"title": "Entity Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "description": "Soft-delete an entity; its incentives are hidden and deactivated in ServiceTitan.", "tags": ["incentiveEntities"]}}, "/api/incentive-overrides": {"get": {"operationId": "getIncentiveOverrideList", "summary": "Get Override List", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/IncentiveOverrideReadSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["incentiveOverrides"]}, "post": {"operationId": "createIncentiveOverride", "summary": "Create Override Endpoint", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/IncentiveOverrideReadSchema"}}}}}, "tags": ["incentiveOverrides"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/IncentiveOverrideWriteSchema"}}}, "required": true}}}, "/api/incentive-overrides/{override_id}": {"put": {"operationId": "updateIncentiveOverride", "summary": "Update Override Endpoint", "parameters": [{"in": "path", "name": "override_id", "schema": {"title": "Override Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/IncentiveOverrideReadSchema"}}}}}, "tags": ["incentiveOverrides"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/IncentiveOverrideWriteSchema"}}}, "required": true}}, "delete": {"operationId": "deleteIncentiveOverride", "summary": "Delete Override Endpoint", "parameters": [{"in": "path", "name": "override_id", "schema": {"title": "Override Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["incentiveOverrides"]}}, "/api/ahj/entities": {"get": {"operationId": "getAhjEntities", "summary": "List Ahjs", "parameters": [{"in": "query", "name": "include_unsynced", "schema": {"default": false, "title": "Include Unsynced", "type": "boolean"}, "required": false}, {"in": "query", "name": "used_only", "schema": {"default": false, "title": "Used Only", "type": "boolean"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/AHJReadSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["ahj"]}}, "/api/ahj/entities/search": {"get": {"operationId": "searchAhjRegistry", "summary": "Search Registry", "parameters": [{"in": "query", "name": "name", "schema": {"default": "", "title": "Name", "type": "string"}, "required": false}, {"in": "query", "name": "state", "schema": {"default": "", "title": "State", "type": "string"}, "required": false}, {"in": "query", "name": "ahj_id", "schema": {"default": "", "title": "Ahj Id", "type": "string"}, "required": false}, {"in": "query", "name": "code", "schema": {"default": "", "title": "Code", "type": "string"}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 20, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AHJSearchResponseSchema"}}}}}, "tags": ["ahj"]}}, "/api/ahj/entities/import": {"post": {"operationId": "importAhjEntities", "summary": "Import Ahj", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AHJImportResponseSchema"}}}}}, "tags": ["ahj"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AHJImportSchema"}}}, "required": true}}}, "/api/ahj/entities/map": {"get": {"operationId": "getAhjMapFeatures", "summary": "Ahj Map Features", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/AHJMapFeatureSchema"}, "title": "Response", "type": "array"}}}}}, "description": "Return only the mirrored AHJ data needed to render interactive boundaries.", "tags": ["ahj"]}}, "/api/ahj/entities/bulk-delete": {"post": {"operationId": "bulkDeleteAhjEntities", "summary": "Bulk Delete Ahjs", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["ahj"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/IdsSchema"}}}, "required": true}}}, "/api/ahj/entities/{ahj_id}": {"delete": {"operationId": "deleteAhjEntity", "summary": "Delete Ahj", "parameters": [{"in": "path", "name": "ahj_id", "schema": {"title": "Ahj Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "description": "Soft-delete an AHJ while retaining requirements and historical references.", "tags": ["ahj"]}}, "/api/ahj/services": {"get": {"operationId": "getAhjServices", "summary": "List Services", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/AHJServiceReadSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["ahj"]}, "post": {"operationId": "createAhjService", "summary": "Create Service", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AHJServiceReadSchema"}}}}}, "tags": ["ahj"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AHJServiceWriteSchema"}}}, "required": true}}}, "/api/ahj/services/sync": {"post": {"operationId": "syncAhjServices", "summary": "Sync Services", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["ahj"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/IdsSchema"}}}, "required": true}}}, "/api/ahj/services/{service_id}": {"put": {"operationId": "updateAhjService", "summary": "Update Service", "parameters": [{"in": "path", "name": "service_id", "schema": {"title": "Service Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AHJServiceReadSchema"}}}}}, "tags": ["ahj"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AHJServiceWriteSchema"}}}, "required": true}}}, "/api/ahj/requirements": {"get": {"operationId": "getAhjRequirements", "summary": "List Requirements", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/AHJRequirementReadSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["ahj"]}, "post": {"operationId": "createAhjRequirement", "summary": "Create Requirement", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AHJRequirementReadSchema"}}}}}, "tags": ["ahj"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AHJRequirementWriteSchema"}}}, "required": true}}}, "/api/ahj/requirements/{requirement_id}": {"put": {"operationId": "updateAhjRequirement", "summary": "Update Requirement", "parameters": [{"in": "path", "name": "requirement_id", "schema": {"title": "Requirement Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AHJRequirementReadSchema"}}}}}, "tags": ["ahj"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AHJRequirementWriteSchema"}}}, "required": true}}}, "/api/ahj/quotes/{quote_id}/requirements": {"get": {"operationId": "getQuoteAhjRequirements", "summary": "Quote Requirements", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/QuoteRequirementsSchema"}}}}}, "tags": ["ahj"]}}, "/api/ahj/quotes/{quote_id}/requirements/add": {"post": {"operationId": "addQuoteAhjRequirements", "summary": "Add Quote Requirements", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["ahj"]}}, "/api/financing": {"get": {"operationId": "getFinancingList", "summary": "Get Finance List", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/AdminFinanceSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["financing"]}}, "/api/financing/{finance_id}": {"get": {"operationId": "getFinancingById", "summary": "Get Finance", "parameters": [{"in": "path", "name": "finance_id", "schema": {"title": "Finance Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AdminFinanceSchema"}}}}}, "tags": ["financing"]}}, "/api/projects/options": {"get": {"operationId": "getProjectOptions", "summary": "Get Project Options", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProjectOptionsSchema"}}}}}, "tags": ["projects"]}}, "/api/projects/summary": {"get": {"operationId": "getProjectSummary", "summary": "Get Project Summary", "parameters": [{"in": "query", "name": "period", "schema": {"default": "3m", "enum": ["30d", "3m", "1y"], "title": "Period", "type": "string"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProjectSummarySchema"}}}}}, "tags": ["projects"]}}, "/api/projects": {"get": {"operationId": "getProjectList", "summary": "Get Project List", "parameters": [{"in": "query", "name": "phase", "schema": {"default": "open", "enum": ["pre_install", "install", "post_install", "closed", "open", "all"], "title": "Phase", "type": "string"}, "required": false}, {"in": "query", "name": "status", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "required": false}, {"in": "query", "name": "q", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Q"}, "required": false}, {"in": "query", "name": "delivery_manager_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Delivery Manager Id"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProjectListSchema"}}}}}, "tags": ["projects"]}}, "/api/projects/permits": {"get": {"operationId": "getProjectPermitList", "summary": "Get Permit List", "parameters": [{"in": "query", "name": "include_closed", "schema": {"default": false, "title": "Include Closed", "type": "boolean"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/PermitSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["projects"]}}, "/api/projects/incentives": {"get": {"operationId": "getProjectIncentiveList", "summary": "Get Incentive List", "parameters": [{"in": "query", "name": "include_closed", "schema": {"default": false, "title": "Include Closed", "type": "boolean"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/IncentiveApplicationSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["projects"]}}, "/api/projects/loans": {"get": {"operationId": "getProjectLoanList", "summary": "Get Loan List", "parameters": [{"in": "query", "name": "include_closed", "schema": {"default": false, "title": "Include Closed", "type": "boolean"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/LoanSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["projects"]}}, "/api/projects/warranty": {"get": {"operationId": "getProjectWarrantyList", "summary": "Get Warranty List", "parameters": [{"in": "query", "name": "include_registered", "schema": {"default": false, "title": "Include Registered", "type": "boolean"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/ProjectDetailSchema"}, "title": "Response", "type": "array"}}}}}, "description": "Installed projects whose equipment warranties still need registering.", "tags": ["projects"]}}, "/api/projects/for-deal/{deal_id}": {"get": {"operationId": "getProjectForDeal", "summary": "Get Project For Deal", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"anyOf": [{"$ref": "#/components/schemas/DealProjectSchema"}, {"type": "null"}]}}}}}, "description": "The fulfillment project for a deal, so deal and quote pages can link a sold quote to delivery.", "tags": ["projects"]}}, "/api/projects/{project_id}": {"get": {"operationId": "getProject", "summary": "Get Project", "parameters": [{"in": "path", "name": "project_id", "schema": {"title": "Project Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProjectDetailSchema"}}}}}, "tags": ["projects"]}, "patch": {"operationId": "updateProject", "summary": "Update Project", "parameters": [{"in": "path", "name": "project_id", "schema": {"title": "Project Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProjectDetailSchema"}}}}}, "tags": ["projects"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProjectUpdateSchema"}}}, "required": true}}}, "/api/projects/{project_id}/checklist": {"post": {"operationId": "setProjectChecklistItem", "summary": "Set Checklist Item", "parameters": [{"in": "path", "name": "project_id", "schema": {"title": "Project Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProjectDetailSchema"}}}}}, "description": "Tick or untick one onboarding or close-out item; finishing a list moves the project to its next stage.", "tags": ["projects"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChecklistTickSchema"}}}, "required": true}}}, "/api/projects/{project_id}/notes": {"get": {"operationId": "getProjectNotes", "summary": "Get Project Notes", "parameters": [{"in": "path", "name": "project_id", "schema": {"title": "Project Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/ProjectNoteSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["projects"]}, "post": {"operationId": "createProjectNote", "summary": "Create Project Note", "parameters": [{"in": "path", "name": "project_id", "schema": {"title": "Project Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProjectNoteSchema"}}}}}, "tags": ["projects"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProjectNoteWriteSchema"}}}, "required": true}}}, "/api/projects/notes/{note_id}": {"patch": {"operationId": "updateProjectNote", "summary": "Update Project Note", "parameters": [{"in": "path", "name": "note_id", "schema": {"title": "Note Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProjectNoteSchema"}}}}}, "tags": ["projects"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProjectNoteUpdateSchema"}}}, "required": true}}, "delete": {"operationId": "deleteProjectNote", "summary": "Delete Project Note", "parameters": [{"in": "path", "name": "note_id", "schema": {"title": "Note Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["projects"]}}, "/api/projects/{project_id}/activities": {"get": {"operationId": "getProjectTasks", "summary": "Get Project Tasks", "parameters": [{"in": "path", "name": "project_id", "schema": {"title": "Project Id", "type": "integer"}, "required": true}, {"in": "query", "name": "include_done", "schema": {"default": false, "title": "Include Done", "type": "boolean"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/ProjectTaskSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["projects"]}, "post": {"operationId": "createProjectTask", "summary": "Create Project Task", "parameters": [{"in": "path", "name": "project_id", "schema": {"title": "Project Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProjectTaskSchema"}}}}}, "description": "Create a deal activity tied to this project, optionally about one permit, incentive, or loan.", "tags": ["projects"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProjectTaskCreateSchema"}}}, "required": true}}}, "/api/projects/{project_id}/sync-sold-scope": {"post": {"operationId": "syncProjectSoldScope", "summary": "Sync Sold Scope", "parameters": [{"in": "path", "name": "project_id", "schema": {"title": "Project Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SyncSoldScopeSchema"}}}}}, "description": "Create permits, incentive applications, and loans for anything on the signed quote that is missing.", "tags": ["projects"]}}, "/api/projects/{project_id}/ahj-lookup": {"post": {"operationId": "lookupProjectAhj", "summary": "Lookup Project Ahj", "parameters": [{"in": "path", "name": "project_id", "schema": {"title": "Project Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AhjLookupSchema"}}}}}, "description": "Look up the AHJ for the project's address, like the quote page, and return the primary one.", "tags": ["projects"]}}, "/api/projects/{project_id}/permits": {"post": {"operationId": "createProjectPermit", "summary": "Create Permit", "parameters": [{"in": "path", "name": "project_id", "schema": {"title": "Project Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PermitSchema"}}}}}, "tags": ["projects"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PermitWriteSchema"}}}, "required": true}}}, "/api/projects/permits/{permit_id}": {"patch": {"operationId": "updateProjectPermit", "summary": "Update Permit", "parameters": [{"in": "path", "name": "permit_id", "schema": {"title": "Permit Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PermitSchema"}}}}}, "tags": ["projects"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PermitWriteSchema"}}}, "required": true}}, "delete": {"operationId": "deleteProjectPermit", "summary": "Delete Permit", "parameters": [{"in": "path", "name": "permit_id", "schema": {"title": "Permit Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["projects"]}}, "/api/projects/{project_id}/incentives": {"post": {"operationId": "createProjectIncentiveApplication", "summary": "Create Incentive Application", "parameters": [{"in": "path", "name": "project_id", "schema": {"title": "Project Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/IncentiveApplicationSchema"}}}}}, "tags": ["projects"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/IncentiveApplicationWriteSchema"}}}, "required": true}}}, "/api/projects/incentives/{application_id}": {"patch": {"operationId": "updateProjectIncentiveApplication", "summary": "Update Incentive Application", "parameters": [{"in": "path", "name": "application_id", "schema": {"title": "Application Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/IncentiveApplicationSchema"}}}}}, "tags": ["projects"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/IncentiveApplicationWriteSchema"}}}, "required": true}}, "delete": {"operationId": "deleteProjectIncentiveApplication", "summary": "Delete Incentive Application", "parameters": [{"in": "path", "name": "application_id", "schema": {"title": "Application Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["projects"]}}, "/api/projects/{project_id}/loans": {"post": {"operationId": "createProjectLoan", "summary": "Create Loan", "parameters": [{"in": "path", "name": "project_id", "schema": {"title": "Project Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LoanSchema"}}}}}, "tags": ["projects"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LoanWriteSchema"}}}, "required": true}}}, "/api/projects/loans/{loan_id}": {"patch": {"operationId": "updateProjectLoan", "summary": "Update Loan", "parameters": [{"in": "path", "name": "loan_id", "schema": {"title": "Loan Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LoanSchema"}}}}}, "tags": ["projects"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LoanWriteSchema"}}}, "required": true}}, "delete": {"operationId": "deleteProjectLoan", "summary": "Delete Loan", "parameters": [{"in": "path", "name": "loan_id", "schema": {"title": "Loan Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["projects"]}}, "/api/projects/{project_id}/equipment": {"post": {"operationId": "createProjectEquipment", "summary": "Create Equipment", "parameters": [{"in": "path", "name": "project_id", "schema": {"title": "Project Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EquipmentSchema"}}}}}, "tags": ["projects"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EquipmentWriteSchema"}}}, "required": true}}}, "/api/projects/equipment/{equipment_id}": {"patch": {"operationId": "updateProjectEquipment", "summary": "Update Equipment", "parameters": [{"in": "path", "name": "equipment_id", "schema": {"title": "Equipment Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EquipmentSchema"}}}}}, "tags": ["projects"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EquipmentWriteSchema"}}}, "required": true}}, "delete": {"operationId": "deleteProjectEquipment", "summary": "Delete Equipment", "parameters": [{"in": "path", "name": "equipment_id", "schema": {"title": "Equipment Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["projects"]}}, "/api/field/options": {"get": {"operationId": "getFieldOptions", "summary": "Field Options", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FieldOptionsSchema"}}}}}, "tags": ["field"]}}, "/api/field/dashboard": {"get": {"operationId": "getFieldDashboard", "summary": "Dashboard", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DashboardSchema"}}}}}, "tags": ["field"]}}, "/api/field/jobs": {"get": {"operationId": "getFieldJobs", "summary": "List Jobs", "parameters": [{"in": "query", "name": "status", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "required": false}, {"in": "query", "name": "category", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Category"}, "required": false}, {"in": "query", "name": "q", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Q"}, "required": false}, {"in": "query", "name": "technician_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Technician Id"}, "required": false}, {"in": "query", "name": "project_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Project Id"}, "required": false}, {"in": "query", "name": "customer_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Customer Id"}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 100, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/JobListSchema"}}}}}, "tags": ["field"]}, "post": {"operationId": "createFieldJob", "summary": "Create Job", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/JobCardSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/JobCreateRequest"}}}, "required": true}}}, "/api/field/job-targets": {"get": {"operationId": "searchFieldJobTargets", "summary": "Search Job Targets", "parameters": [{"in": "query", "name": "q", "schema": {"default": "", "title": "Q", "type": "string"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/JobTargetsSchema"}}}}}, "description": "Search projects, open deals, service requests and customers to attach a new job to.", "tags": ["field"]}}, "/api/field/projects/{project_id}/install-job": {"post": {"operationId": "createFieldInstallJob", "summary": "Create Install Job", "parameters": [{"in": "path", "name": "project_id", "schema": {"title": "Project Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/JobCardSchema"}}}}}, "tags": ["field"]}}, "/api/field/readiness": {"get": {"operationId": "getFieldUpcomingReadiness", "summary": "Upcoming Readiness", "parameters": [{"in": "query", "name": "days", "schema": {"default": 5, "title": "Days", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/UpcomingJobSchema"}, "title": "Response", "type": "array"}}}}}, "description": "Jobs going out in the next few working days and whether each is good to go.", "tags": ["field"]}}, "/api/field/jobs/{job_id}/confirm-customer": {"post": {"operationId": "confirmFieldJobWithCustomer", "summary": "Confirm With Customer", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReadinessSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ConfirmCustomerRequest"}}}, "required": true}}}, "/api/field/jobs/{job_id}": {"get": {"operationId": "getFieldJob", "summary": "Get Job", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/JobDetailSchema"}}}}}, "tags": ["field"]}, "patch": {"operationId": "updateFieldJob", "summary": "Update Job", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/JobDetailSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/JobUpdateRequest"}}}, "required": true}}}, "/api/field/jobs/{job_id}/complete": {"post": {"operationId": "completeFieldJob", "summary": "Complete Job", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/JobDetailSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CompleteRequest"}}}, "required": true}}}, "/api/field/jobs/{job_id}/qc": {"post": {"operationId": "setFieldJobQc", "summary": "Set Job Qc", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}, {"in": "query", "name": "passed", "schema": {"default": true, "title": "Passed", "type": "boolean"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/JobDetailSchema"}}}}}, "tags": ["field"]}}, "/api/field/jobs/{job_id}/visits": {"post": {"operationId": "scheduleFieldVisit", "summary": "Schedule Visit", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/VisitResultSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/VisitRequest"}}}, "required": true}}}, "/api/field/jobs/{job_id}/install-days": {"post": {"operationId": "scheduleFieldInstallDays", "summary": "Schedule Install Days", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/VisitSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/InstallDaysRequest"}}}, "required": true}}}, "/api/field/visits/{visit_id}": {"patch": {"operationId": "updateFieldVisit", "summary": "Update Visit", "parameters": [{"in": "path", "name": "visit_id", "schema": {"title": "Visit Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/VisitResultSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/VisitUpdateRequest"}}}, "required": true}}, "delete": {"operationId": "cancelFieldVisit", "summary": "Cancel Visit", "parameters": [{"in": "path", "name": "visit_id", "schema": {"title": "Visit Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["field"]}}, "/api/field/jobs/{job_id}/items": {"post": {"operationId": "createFieldJobItem", "summary": "Create Item", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/JobItemSchema"}}}}}, "description": "A pricebook item (billed right away on service work), or a part typed in by hand (never billed).", "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ItemRequest"}}}, "required": true}}}, "/api/field/jobs/{job_id}/items/from-quote": {"post": {"operationId": "loadFieldJobItemsFromQuote", "summary": "Load Items From Quote", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/JobItemSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["field"]}}, "/api/field/items/{item_id}": {"patch": {"operationId": "updateFieldJobItem", "summary": "Update Item", "parameters": [{"in": "path", "name": "item_id", "schema": {"title": "Item Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/JobItemSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ItemRequest"}}}, "required": true}}, "delete": {"operationId": "deleteFieldJobItem", "summary": "Delete Item", "parameters": [{"in": "path", "name": "item_id", "schema": {"title": "Item Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["field"]}}, "/api/field/jobs/{job_id}/forms": {"post": {"operationId": "addFieldJobForm", "summary": "Add Job Form", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/FormSummarySchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AddFormRequest"}}}, "required": true}}}, "/api/field/jobs/{job_id}/forms/apply-rules": {"post": {"operationId": "applyFieldJobFormRules", "summary": "Apply Form Rules", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/FormSummarySchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["field"]}}, "/api/field/job-forms/{job_form_id}": {"delete": {"operationId": "removeFieldJobForm", "summary": "Remove Job Form", "parameters": [{"in": "path", "name": "job_form_id", "schema": {"title": "Job Form Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["field"]}}, "/api/field/jobs/{job_id}/photos": {"post": {"operationId": "startFieldJobPhotoUpload", "summary": "Start Photo Upload", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PhotoUploadResponse"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PhotoUploadRequest"}}}, "required": true}}}, "/api/field/photos/{media_id}/confirm": {"post": {"operationId": "confirmFieldJobPhoto", "summary": "Confirm Photo", "parameters": [{"in": "path", "name": "media_id", "schema": {"title": "Media Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["field"]}}, "/api/field/photos/{media_id}": {"delete": {"operationId": "deleteFieldJobPhoto", "summary": "Delete Photo", "parameters": [{"in": "path", "name": "media_id", "schema": {"title": "Media Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["field"]}}, "/api/field/dispatch": {"get": {"operationId": "getFieldDispatchBoard", "summary": "Dispatch Board", "parameters": [{"in": "query", "name": "start", "schema": {"format": "date", "title": "Start", "type": "string"}, "required": true}, {"in": "query", "name": "end", "schema": {"format": "date", "title": "End", "type": "string"}, "required": true}, {"in": "query", "name": "category", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Category"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DispatchBoardSchema"}}}}}, "tags": ["field"]}}, "/api/field/plan/next-opening": {"get": {"operationId": "getFieldNextOpening", "summary": "Next Opening", "parameters": [{"in": "query", "name": "days", "schema": {"default": 1, "title": "Days", "type": "integer"}, "required": false}, {"in": "query", "name": "after", "schema": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "After"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"anyOf": [{"$ref": "#/components/schemas/OpeningSchema"}, {"type": "null"}]}}}}}, "description": "The earliest run of consecutive working days with a crew free, for holding an install.", "tags": ["field"]}}, "/api/field/jobs/{job_id}/move-block": {"post": {"operationId": "moveFieldJobBlock", "summary": "Move Block", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MoveBlockResultSchema"}}}}}, "description": "Slide a job's whole block of days (crew and times kept) to start on another day.", "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/MoveBlockRequest"}}}, "required": true}}}, "/api/field/plan/close-gaps": {"get": {"operationId": "previewFieldCloseGaps", "summary": "Preview Close Gaps", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/PlanMoveSchema"}, "title": "Response", "type": "array"}}}}}, "description": "What 'close gaps' would do: tentative installs slid as early as they fit.", "tags": ["field"]}, "post": {"operationId": "applyFieldCloseGaps", "summary": "Apply Close Gaps", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/PlanMoveSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["field"]}}, "/api/field/availability": {"get": {"operationId": "getFieldAvailability", "summary": "Get Availability", "parameters": [{"in": "query", "name": "start", "schema": {"format": "date", "title": "Start", "type": "string"}, "required": true}, {"in": "query", "name": "end", "schema": {"format": "date", "title": "End", "type": "string"}, "required": true}, {"in": "query", "name": "exclude_visit_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Exclude Visit Id"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/TechnicianAvailabilitySchema"}, "title": "Response", "type": "array"}}}}}, "description": "Each active technician's bookings and time off between two dates, for picking a crew.", "tags": ["field"]}}, "/api/field/blocks": {"get": {"operationId": "getFieldBlocks", "summary": "List Blocks", "parameters": [{"in": "query", "name": "technician_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Technician Id"}, "required": false}, {"in": "query", "name": "upcoming", "schema": {"default": true, "title": "Upcoming", "type": "boolean"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/BlockSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["field"]}, "post": {"operationId": "createFieldBlocks", "summary": "Create Blocks", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/BlockSchema"}, "title": "Response", "type": "array"}}}}}, "description": "Time off or training for one or more technicians (a whole crew at a training day).", "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BlockRequest"}}}, "required": true}}}, "/api/field/blocks/{block_id}": {"delete": {"operationId": "deleteFieldBlock", "summary": "Delete Block", "parameters": [{"in": "path", "name": "block_id", "schema": {"title": "Block Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["field"]}}, "/api/field/technicians/{technician_id}/profile": {"get": {"operationId": "getFieldTechnicianProfile", "summary": "Technician Profile", "parameters": [{"in": "path", "name": "technician_id", "schema": {"title": "Technician Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TechnicianProfileSchema"}}}}}, "description": "Everything dispatch wants to know about a technician. Pay is not included (see field settings).", "tags": ["field"]}}, "/api/field/technicians": {"get": {"operationId": "getFieldTechnicians", "summary": "List Technicians", "parameters": [{"in": "query", "name": "include_inactive", "schema": {"default": false, "title": "Include Inactive", "type": "boolean"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/TechnicianSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["field"]}, "post": {"operationId": "createFieldTechnician", "summary": "Create Technician", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TechnicianSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/TechnicianRequest"}}}, "required": true}}}, "/api/field/technicians/{technician_id}": {"patch": {"operationId": "updateFieldTechnician", "summary": "Update Technician", "parameters": [{"in": "path", "name": "technician_id", "schema": {"title": "Technician Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TechnicianSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/TechnicianRequest"}}}, "required": true}}}, "/api/field/technicians/{technician_id}/pairing-code": {"post": {"operationId": "createFieldPairingCode", "summary": "Create Pairing Code", "parameters": [{"in": "path", "name": "technician_id", "schema": {"title": "Technician Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PairingCodeSchema"}}}}}, "tags": ["field"]}}, "/api/field/devices/{device_id}": {"delete": {"operationId": "revokeFieldDevice", "summary": "Revoke Device", "parameters": [{"in": "path", "name": "device_id", "schema": {"title": "Device Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["field"]}}, "/api/field/technicians/{technician_id}/day": {"get": {"operationId": "getFieldTechnicianDay", "summary": "Technician Day", "parameters": [{"in": "path", "name": "technician_id", "schema": {"title": "Technician Id", "type": "integer"}, "required": true}, {"in": "query", "name": "day", "schema": {"format": "date", "title": "Day", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TechnicianDaySchema"}}}}}, "tags": ["field"]}}, "/api/field/pay-periods": {"get": {"operationId": "getFieldPayPeriods", "summary": "List Pay Periods", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/PeriodSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["field"]}}, "/api/field/timesheets": {"get": {"operationId": "getFieldTimesheets", "summary": "Timesheet Overview", "parameters": [{"in": "query", "name": "period_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Period Id"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TimesheetsSchema"}}}}}, "tags": ["field"]}}, "/api/field/timesheets/{technician_id}": {"get": {"operationId": "getFieldTechnicianEntries", "summary": "Technician Entries", "parameters": [{"in": "path", "name": "technician_id", "schema": {"title": "Technician Id", "type": "integer"}, "required": true}, {"in": "query", "name": "period_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Period Id"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/TimeEntrySchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["field"]}}, "/api/field/time-entries": {"post": {"operationId": "createFieldTimeEntry", "summary": "Create Time Entry", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TimeEntrySchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/TimeEntryRequest"}}}, "required": true}}}, "/api/field/time-entries/{entry_id}": {"patch": {"operationId": "updateFieldTimeEntry", "summary": "Update Time Entry", "parameters": [{"in": "path", "name": "entry_id", "schema": {"title": "Entry Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TimeEntrySchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/TimeEntryRequest"}}}, "required": true}}, "delete": {"operationId": "deleteFieldTimeEntry", "summary": "Delete Time Entry", "parameters": [{"in": "path", "name": "entry_id", "schema": {"title": "Entry Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["field"]}}, "/api/field/timesheets/approve": {"post": {"operationId": "approveFieldTimesheet", "summary": "Approve Timesheet", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApproveRequest"}}}, "required": true}}}, "/api/field/pay": {"get": {"operationId": "getFieldPayPeriod", "summary": "Pay Period Detail", "parameters": [{"in": "query", "name": "period_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Period Id"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PayPeriodDetailSchema"}}}}}, "tags": ["field"]}}, "/api/field/pay/{period_id}/{action}": {"post": {"operationId": "changeFieldPayPeriod", "summary": "Change Pay Period", "parameters": [{"in": "path", "name": "period_id", "schema": {"title": "Period Id", "type": "integer"}, "required": true}, {"in": "path", "name": "action", "schema": {"enum": ["lock", "unlock", "paid"], "title": "Action", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PeriodSchema"}}}}}, "tags": ["field"]}}, "/api/field/pay/{period_id}/export.csv": {"get": {"operationId": "exportFieldPayPeriod", "summary": "Export Pay Period", "parameters": [{"in": "path", "name": "period_id", "schema": {"title": "Period Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "description": "One row per technician, for entering payroll (QuickBooks Payroll, Gusto).", "tags": ["field"]}}, "/api/field/pay/{period_id}/adjustments": {"post": {"operationId": "createFieldPayAdjustment", "summary": "Create Adjustment", "parameters": [{"in": "path", "name": "period_id", "schema": {"title": "Period Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AdjustmentRequest"}}}, "required": true}}}, "/api/field/adjustments/{adjustment_id}": {"delete": {"operationId": "deleteFieldPayAdjustment", "summary": "Delete Adjustment", "parameters": [{"in": "path", "name": "adjustment_id", "schema": {"title": "Adjustment Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["field"]}}, "/api/field/bonus-rules": {"get": {"operationId": "getFieldBonusRules", "summary": "List Bonus Rules", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/BonusRuleSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["field"]}, "post": {"operationId": "createFieldBonusRule", "summary": "Create Bonus Rule", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BonusRuleSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BonusRuleRequest"}}}, "required": true}}}, "/api/field/bonus-rules/{rule_id}": {"put": {"operationId": "updateFieldBonusRule", "summary": "Update Bonus Rule", "parameters": [{"in": "path", "name": "rule_id", "schema": {"title": "Rule Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BonusRuleSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BonusRuleRequest"}}}, "required": true}}, "delete": {"operationId": "deleteFieldBonusRule", "summary": "Delete Bonus Rule", "parameters": [{"in": "path", "name": "rule_id", "schema": {"title": "Rule Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["field"]}}, "/api/field/vehicles": {"get": {"operationId": "getFieldVehicles", "summary": "List Vehicles", "parameters": [{"in": "query", "name": "include_retired", "schema": {"default": false, "title": "Include Retired", "type": "boolean"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/VehicleSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["field"]}, "post": {"operationId": "createFieldVehicle", "summary": "Create Vehicle", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/VehicleSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/VehicleRequest"}}}, "required": true}}}, "/api/field/vehicles/{vehicle_id}": {"patch": {"operationId": "updateFieldVehicle", "summary": "Update Vehicle", "parameters": [{"in": "path", "name": "vehicle_id", "schema": {"title": "Vehicle Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/VehicleSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/VehicleRequest"}}}, "required": true}}}, "/api/field/vehicles/{vehicle_id}/logs": {"get": {"operationId": "getFieldVehicleLogs", "summary": "Vehicle Logs", "parameters": [{"in": "path", "name": "vehicle_id", "schema": {"title": "Vehicle Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/VehicleLogSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["field"]}, "post": {"operationId": "createFieldVehicleLog", "summary": "Create Vehicle Log", "parameters": [{"in": "path", "name": "vehicle_id", "schema": {"title": "Vehicle Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/VehicleLogSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/VehicleLogRequest"}}}, "required": true}}}, "/api/field/vehicle-logs/{log_id}/resolve": {"post": {"operationId": "resolveFieldVehicleLog", "summary": "Resolve Vehicle Log", "parameters": [{"in": "path", "name": "log_id", "schema": {"title": "Log Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["field"]}}, "/api/field/invoices": {"get": {"operationId": "getFieldInvoices", "summary": "List Invoices", "parameters": [{"in": "query", "name": "status", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "required": false}, {"in": "query", "name": "q", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Q"}, "required": false}, {"in": "query", "name": "project_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Project Id"}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 100, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvoiceListSchema"}}}}}, "tags": ["field"]}}, "/api/field/projects/{project_id}/billing": {"get": {"operationId": "getFieldProjectBilling", "summary": "Project Billing", "parameters": [{"in": "path", "name": "project_id", "schema": {"title": "Project Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProjectBillingSchema"}}}}}, "tags": ["field"]}}, "/api/field/projects/{project_id}/invoices": {"post": {"operationId": "createFieldProjectInvoice", "summary": "Create Project Invoice", "parameters": [{"in": "path", "name": "project_id", "schema": {"title": "Project Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvoiceDetailSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ProjectInvoiceRequest"}}}, "required": true}}}, "/api/field/jobs/{job_id}/invoices": {"post": {"operationId": "createFieldJobInvoice", "summary": "Create Job Invoice", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvoiceDetailSchema"}}}}}, "tags": ["field"]}}, "/api/field/invoices/{invoice_id}": {"get": {"operationId": "getFieldInvoice", "summary": "Get Invoice", "parameters": [{"in": "path", "name": "invoice_id", "schema": {"title": "Invoice Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvoiceDetailSchema"}}}}}, "tags": ["field"]}, "patch": {"operationId": "updateFieldInvoice", "summary": "Update Invoice", "parameters": [{"in": "path", "name": "invoice_id", "schema": {"title": "Invoice Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvoiceDetailSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvoiceUpdateRequest"}}}, "required": true}}}, "/api/field/pricebook": {"get": {"operationId": "searchFieldPricebook", "summary": "Search Pricebook", "parameters": [{"in": "query", "name": "q", "schema": {"default": "", "title": "Q", "type": "string"}, "required": false}, {"in": "query", "name": "kind", "schema": {"anyOf": [{"enum": ["Service", "Material", "Equipment"], "type": "string"}, {"type": "null"}], "title": "Kind"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/PricebookItemSchema"}, "title": "Response", "type": "array"}}}}}, "description": "Pricebook items to bill on an invoice.", "tags": ["field"]}}, "/api/field/invoices/{invoice_id}/send": {"post": {"operationId": "sendFieldInvoice", "summary": "Send Invoice", "parameters": [{"in": "path", "name": "invoice_id", "schema": {"title": "Invoice Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvoiceDetailSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SendInvoiceRequest"}}}, "required": true}}}, "/api/field/invoices/{invoice_id}/finalize": {"post": {"operationId": "finalizeFieldInvoice", "summary": "Finalize Invoice", "parameters": [{"in": "path", "name": "invoice_id", "schema": {"title": "Invoice Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvoiceDetailSchema"}}}}}, "description": "Mark a draft ready to pay without emailing it (the installer will collect on site).", "tags": ["field"]}}, "/api/field/invoices/{invoice_id}/pdf": {"get": {"operationId": "getFieldInvoicePdf", "summary": "Invoice Pdf", "parameters": [{"in": "path", "name": "invoice_id", "schema": {"title": "Invoice Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["field"]}}, "/api/field/payments/stripe": {"get": {"operationId": "getFieldStripeStatus", "summary": "Stripe Status", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/StripeStatusSchema"}}}}}, "description": "Whether the Stripe account that takes quote deposits can also take card and ACH invoice payments.", "tags": ["field"]}}, "/api/field/invoices/{invoice_id}/void": {"post": {"operationId": "voidFieldInvoice", "summary": "Void Invoice", "parameters": [{"in": "path", "name": "invoice_id", "schema": {"title": "Invoice Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvoiceDetailSchema"}}}}}, "tags": ["field"]}}, "/api/field/invoices/{invoice_id}/payments": {"post": {"operationId": "recordFieldPayment", "summary": "Record Payment", "parameters": [{"in": "path", "name": "invoice_id", "schema": {"title": "Invoice Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvoiceDetailSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PaymentRequest"}}}, "required": true}}}, "/api/field/payments/{payment_id}": {"delete": {"operationId": "deleteFieldPayment", "summary": "Delete Payment", "parameters": [{"in": "path", "name": "payment_id", "schema": {"title": "Payment Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvoiceDetailSchema"}}}}}, "tags": ["field"]}}, "/api/field/invoices/{invoice_id}/quickbooks": {"post": {"operationId": "pushFieldInvoiceToQbo", "summary": "Push Invoice To Qbo", "parameters": [{"in": "path", "name": "invoice_id", "schema": {"title": "Invoice Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvoiceDetailSchema"}}}}}, "tags": ["field"]}}, "/api/field/settings": {"get": {"operationId": "getFieldSettings", "summary": "Get Settings", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FieldSettingsSchema"}}}}}, "tags": ["field"]}, "patch": {"operationId": "updateFieldSettings", "summary": "Update Settings", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FieldSettingsSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/FieldSettingsUpdate"}}}, "required": true}}}, "/api/field/job-types": {"get": {"operationId": "getFieldJobTypes", "summary": "List Job Types", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/JobTypeSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["field"]}, "post": {"operationId": "createFieldJobType", "summary": "Create Job Type", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/JobTypeSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/JobTypeRequest"}}}, "required": true}}}, "/api/field/job-types/{job_type_id}": {"put": {"operationId": "updateFieldJobType", "summary": "Update Job Type", "parameters": [{"in": "path", "name": "job_type_id", "schema": {"title": "Job Type Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/JobTypeSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/JobTypeRequest"}}}, "required": true}}}, "/api/field/form-rules": {"get": {"operationId": "getFieldFormRules", "summary": "List Form Rules", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/FormRuleSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["field"]}, "post": {"operationId": "createFieldFormRule", "summary": "Create Form Rule", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FormRuleSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/FormRuleRequest"}}}, "required": true}}}, "/api/field/form-rules/{rule_id}": {"put": {"operationId": "updateFieldFormRule", "summary": "Update Form Rule", "parameters": [{"in": "path", "name": "rule_id", "schema": {"title": "Rule Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FormRuleSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/FormRuleRequest"}}}, "required": true}}, "delete": {"operationId": "deleteFieldFormRule", "summary": "Delete Form Rule", "parameters": [{"in": "path", "name": "rule_id", "schema": {"title": "Rule Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["field"]}}, "/api/field/quickbooks": {"get": {"operationId": "getFieldQuickBooksStatus", "summary": "Quickbooks Status", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/QuickBooksStatusSchema"}}}}}, "tags": ["field"]}, "delete": {"operationId": "disconnectFieldQuickBooks", "summary": "Quickbooks Disconnect", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["field"]}}, "/api/field/quickbooks/connect": {"post": {"operationId": "connectFieldQuickBooks", "summary": "Quickbooks Connect", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UrlSchema"}}}}}, "tags": ["field"]}}, "/api/field/quickbooks/reference": {"get": {"operationId": "getFieldQuickBooksReference", "summary": "Quickbooks Reference", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/QuickBooksReferenceSchema"}}}}}, "tags": ["field"]}}, "/api/field/quickbooks/config": {"put": {"operationId": "updateFieldQuickBooksConfig", "summary": "Quickbooks Config", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/QuickBooksStatusSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/QuickBooksConfigRequest"}}}, "required": true}}}, "/api/field/quickbooks/sync": {"post": {"operationId": "syncFieldQuickBooks", "summary": "Quickbooks Sync", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/SyncResultSchema"}}}}}, "tags": ["field"]}}, "/api/field/assistant/overview": {"get": {"operationId": "getFieldAssistantOverview", "summary": "Overview", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AssistantOverviewSchema"}}}}}, "tags": ["field"]}}, "/api/field/assistant/documents": {"get": {"operationId": "getFieldAssistantDocuments", "summary": "Documents", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/AssistantDocumentSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["field"]}, "post": {"operationId": "createFieldAssistantDocument", "summary": "Add Document", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AssistantDocumentDetailSchema"}}}}}, "description": "Upload a PDF, Word, text or Markdown file (its text is kept, not the file), or paste text.", "tags": ["field"], "requestBody": {"content": {"multipart/form-data": {"schema": {"title": "MultiPartBodyParams", "type": "object", "properties": {"title": {"default": "", "title": "Title", "type": "string"}, "text": {"default": "", "title": "Text", "type": "string"}, "file": {"anyOf": [{"format": "binary", "type": "string"}, {"type": "null"}], "title": "File"}}}}}, "required": true}}}, "/api/field/assistant/manuals": {"get": {"operationId": "getFieldAssistantManuals", "summary": "Built In Manuals", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/AssistantManualSchema"}, "title": "Response", "type": "array"}}}}}, "description": "The Redwood installation manuals every org's assistant reads (fieldops/assistant_manuals/).", "tags": ["field"]}}, "/api/field/assistant/documents/{document_id}": {"get": {"operationId": "getFieldAssistantDocument", "summary": "Document", "parameters": [{"in": "path", "name": "document_id", "schema": {"title": "Document Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AssistantDocumentDetailSchema"}}}}}, "tags": ["field"]}, "patch": {"operationId": "updateFieldAssistantDocument", "summary": "Update Document", "parameters": [{"in": "path", "name": "document_id", "schema": {"title": "Document Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AssistantDocumentDetailSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AssistantDocumentUpdate"}}}, "required": true}}, "delete": {"operationId": "deleteFieldAssistantDocument", "summary": "Delete Document", "parameters": [{"in": "path", "name": "document_id", "schema": {"title": "Document Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["field"]}}, "/api/field/assistant/training": {"get": {"operationId": "getFieldAssistantTraining", "summary": "Training", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/AssistantTrainingSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["field"]}, "post": {"operationId": "createFieldAssistantTraining", "summary": "Add Training", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AssistantTrainingSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AssistantTrainingRequest"}}}, "required": true}}}, "/api/field/assistant/training/{training_id}": {"patch": {"operationId": "updateFieldAssistantTraining", "summary": "Update Training", "parameters": [{"in": "path", "name": "training_id", "schema": {"title": "Training Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AssistantTrainingSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AssistantTrainingRequest"}}}, "required": true}}, "delete": {"operationId": "deleteFieldAssistantTraining", "summary": "Delete Training", "parameters": [{"in": "path", "name": "training_id", "schema": {"title": "Training Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["field"]}}, "/api/field/assistant/conversations": {"get": {"operationId": "getFieldAssistantConversations", "summary": "Conversations", "parameters": [{"in": "query", "name": "technician_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Technician Id"}, "required": false}, {"in": "query", "name": "review", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Review"}, "required": false}, {"in": "query", "name": "channel", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Channel"}, "required": false}, {"in": "query", "name": "search", "schema": {"default": "", "title": "Search", "type": "string"}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 100, "title": "Limit", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/AssistantConversationSchema"}, "title": "Response", "type": "array"}}}}}, "description": "Newest first. `review`: \"to_review\" (answers not yet rated), \"wrong\" or \"good\".", "tags": ["field"]}}, "/api/field/assistant/conversations/{conversation_id}": {"get": {"operationId": "getFieldAssistantConversation", "summary": "Conversation", "parameters": [{"in": "path", "name": "conversation_id", "schema": {"title": "Conversation Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AssistantConversationDetailSchema"}}}}}, "tags": ["field"]}}, "/api/field/assistant/messages/{message_id}": {"patch": {"operationId": "reviewFieldAssistantMessage", "summary": "Review Message", "parameters": [{"in": "path", "name": "message_id", "schema": {"title": "Message Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AssistantMessageSchema"}}}}}, "description": "Mark an answer good or wrong, write what it should have said, and optionally keep that as a model answer\nfor the question it answered.", "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AssistantReviewRequest"}}}, "required": true}}}, "/api/field/assistant/try": {"post": {"operationId": "tryFieldAssistant", "summary": "Try Assistant", "parameters": [], "responses": {"200": {"description": "OK"}}, "description": "Ask the assistant as one technician, with everything it knows now (a JSON line per piece, like the app).\nNot saved as a conversation.", "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AssistantTryRequest"}}}, "required": true}}}, "/api/field/assistant/technicians/{technician_id}/jobs": {"get": {"operationId": "getFieldAssistantTechnicianJobs", "summary": "Technician Jobs", "parameters": [{"in": "path", "name": "technician_id", "schema": {"title": "Technician Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/AssistantJobOptionSchema"}, "title": "Response", "type": "array"}}}}}, "description": "The jobs the assistant knows for a technician (what Try it can open).", "tags": ["field"]}}, "/api/field/people": {"get": {"operationId": "fieldCollabPeople", "summary": "People", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/PersonSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["field"]}}, "/api/field/jobs/{job_id}/collab": {"get": {"operationId": "fieldCollabJob", "summary": "Job Collab", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CollabSchema"}}}}}, "tags": ["field"]}}, "/api/field/jobs/{job_id}/notes": {"post": {"operationId": "fieldCollabAddNote", "summary": "Add Note", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NoteSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/NoteRequest"}}}, "required": true}}}, "/api/field/jobs/{job_id}/photos/{media_id}/review": {"get": {"operationId": "fieldCollabPhoto", "summary": "Review", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}, {"in": "path", "name": "media_id", "schema": {"title": "Media Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PhotoReviewSchema"}}}}}, "tags": ["field"]}}, "/api/field/jobs/{job_id}/photos/{media_id}/markup": {"put": {"operationId": "fieldCollabSaveMarkup", "summary": "Save Markup", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}, {"in": "path", "name": "media_id", "schema": {"title": "Media Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PhotoReviewSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/MarkupRequest"}}}, "required": true}}}, "/api/field/jobs/{job_id}/punch": {"post": {"operationId": "fieldCollabAddPunch", "summary": "Add Punch", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PunchItemSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PunchCreateRequest"}}}, "required": true}}}, "/api/field/jobs/{job_id}/punch/{item_id}": {"patch": {"operationId": "fieldCollabUpdatePunch", "summary": "Update Punch", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}, {"in": "path", "name": "item_id", "schema": {"title": "Item Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PunchItemSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PunchUpdateRequest"}}}, "required": true}}}, "/api/field/jobs/{job_id}/comments": {"get": {"operationId": "fieldCollabComments", "summary": "Comments", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}, {"in": "query", "name": "photo_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Photo Id"}, "required": false}, {"in": "query", "name": "punch_item_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Punch Item Id"}, "required": false}, {"in": "query", "name": "note_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Note Id"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/CommentSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["field"]}, "post": {"operationId": "fieldCollabAddComment", "summary": "Add Comment", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CommentSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CommentRequest"}}}, "required": true}}}, "/api/field/jobs/{job_id}/review": {"put": {"operationId": "reviewFieldInstall", "summary": "Review Install", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/JobDetailSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/InstallReviewRequest"}}}, "required": true}}}, "/api/field/jobs/{job_id}/bonus-awards": {"post": {"operationId": "awardFieldBonus", "summary": "Award Bonus", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/JobDetailSchema"}}}}}, "tags": ["field"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BonusAwardRequest"}}}, "required": true}}}, "/api/field/bonus-awards/{award_id}": {"delete": {"operationId": "removeFieldBonusAward", "summary": "Remove Bonus Award", "parameters": [{"in": "path", "name": "award_id", "schema": {"title": "Award Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/JobDetailSchema"}}}}}, "tags": ["field"]}}, "/api/field-app/pair": {"post": {"operationId": "fieldAppPair", "summary": "Pair", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PairResponse"}}}}}, "tags": ["fieldApp"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PairRequest"}}}, "required": true}}}, "/api/field-app/sign-out": {"post": {"operationId": "fieldAppSignOut", "summary": "Sign Out", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["fieldApp"], "security": [{"FieldAppAuth": []}]}}, "/api/field-app/me": {"get": {"operationId": "fieldAppMe", "summary": "Me", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MeSchema"}}}}}, "tags": ["fieldApp"], "security": [{"FieldAppAuth": []}]}}, "/api/field-app/schedule": {"get": {"operationId": "fieldAppSchedule", "summary": "Schedule", "parameters": [{"in": "query", "name": "start", "schema": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Start"}, "required": false}, {"in": "query", "name": "days", "schema": {"default": 14, "title": "Days", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/ScheduleVisitSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["fieldApp"], "security": [{"FieldAppAuth": []}]}}, "/api/field-app/jobs/{job_id}": {"get": {"operationId": "fieldAppJob", "summary": "Job Detail", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AppJobDetailSchema"}}}}}, "tags": ["fieldApp"], "security": [{"FieldAppAuth": []}]}}, "/api/field-app/jobs": {"get": {"operationId": "fieldAppJobs", "summary": "Job List", "parameters": [{"in": "query", "name": "status", "schema": {"default": "open", "enum": ["open", "completed"], "title": "Status", "type": "string"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/JobCardSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["fieldApp"], "security": [{"FieldAppAuth": []}]}}, "/api/field-app/visits/{visit_id}/status": {"post": {"operationId": "fieldAppSetVisitStatus", "summary": "Set Visit Status", "parameters": [{"in": "path", "name": "visit_id", "schema": {"title": "Visit Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AppJobDetailSchema"}}}}}, "tags": ["fieldApp"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/VisitStatusRequest"}}}, "required": true}, "security": [{"FieldAppAuth": []}]}}, "/api/field-app/jobs/{job_id}/complete": {"post": {"operationId": "fieldAppCompleteJob", "summary": "Complete Job", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AppJobDetailSchema"}}}}}, "tags": ["fieldApp"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CompleteJobRequest"}}}, "required": true}, "security": [{"FieldAppAuth": []}]}}, "/api/field-app/jobs/{job_id}/items/{item_id}": {"patch": {"operationId": "fieldAppUpdateItem", "summary": "Update Item", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}, {"in": "path", "name": "item_id", "schema": {"title": "Item Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/JobItemSchema"}}}}}, "tags": ["fieldApp"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ItemUpdateRequest"}}}, "required": true}, "security": [{"FieldAppAuth": []}]}, "delete": {"operationId": "fieldAppRemoveItem", "summary": "Remove Item", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}, {"in": "path", "name": "item_id", "schema": {"title": "Item Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "description": "Undo something the crew added (and take it off the draft invoice). What the office listed stays.\nAlready gone counts as done, so the app's offline queue can send it again safely.", "tags": ["fieldApp"], "security": [{"FieldAppAuth": []}]}}, "/api/field-app/jobs/{job_id}/items": {"post": {"operationId": "fieldAppAddItem", "summary": "Add Item", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/JobItemSchema"}}}}}, "description": "What the crew used or did that wasn't on the list (ServiceTitan: 'add all materials used').\nPricebook items on service work go on the job's invoice.", "tags": ["fieldApp"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ItemCreateRequest"}}}, "required": true}, "security": [{"FieldAppAuth": []}]}}, "/api/field-app/pricebook": {"get": {"operationId": "fieldAppPricebook", "summary": "Search Pricebook", "parameters": [{"in": "query", "name": "q", "schema": {"default": "", "title": "Q", "type": "string"}, "required": false}, {"in": "query", "name": "kind", "schema": {"anyOf": [{"enum": ["Service", "Material", "Equipment"], "type": "string"}, {"type": "null"}], "title": "Kind"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/AppPricebookItemSchema"}, "title": "Response", "type": "array"}}}}}, "description": "Prices, never costs.", "tags": ["fieldApp"], "security": [{"FieldAppAuth": []}]}}, "/api/field-app/jobs/{job_id}/items/from-quote": {"post": {"operationId": "fieldAppItemsFromQuote", "summary": "Items From Quote", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AppJobDetailSchema"}}}}}, "description": "Put what was sold back on the job: everything the first time, then only what's missing.", "tags": ["fieldApp"], "security": [{"FieldAppAuth": []}]}}, "/api/field-app/jobs/{job_id}/invoice/issue": {"post": {"operationId": "fieldAppIssueInvoice", "summary": "Issue Invoice", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AppJobDetailSchema"}}}}}, "description": "The customer agreed to the work: the draft becomes the invoice to collect on, by check, cash or pay link.", "tags": ["fieldApp"], "security": [{"FieldAppAuth": []}]}}, "/api/field-app/jobs/{job_id}/photos": {"post": {"operationId": "fieldAppStartPhotoUpload", "summary": "Start Photo Upload", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UploadResponse"}}}}}, "tags": ["fieldApp"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UploadRequest"}}}, "required": true}, "security": [{"FieldAppAuth": []}]}}, "/api/field-app/photos/{media_id}/confirm": {"post": {"operationId": "fieldAppConfirmPhoto", "summary": "Confirm Photo", "parameters": [{"in": "path", "name": "media_id", "schema": {"title": "Media Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["fieldApp"], "security": [{"FieldAppAuth": []}]}}, "/api/field-app/photos/{media_id}": {"delete": {"operationId": "fieldAppDeletePhoto", "summary": "Delete Photo", "parameters": [{"in": "path", "name": "media_id", "schema": {"title": "Media Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "description": "Installers can remove their own photos for a day, to fix mistakes; after that ask the office.", "tags": ["fieldApp"], "security": [{"FieldAppAuth": []}]}}, "/api/field-app/forms/{instance_id}": {"get": {"operationId": "fieldAppForm", "summary": "Form Detail", "parameters": [{"in": "path", "name": "instance_id", "schema": {"title": "Instance Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FormDetailSchema"}}}}}, "tags": ["fieldApp"], "security": [{"FieldAppAuth": []}]}}, "/api/field-app/forms/{instance_id}/answers": {"patch": {"operationId": "fieldAppSaveFormAnswers", "summary": "Save Form Answers", "parameters": [{"in": "path", "name": "instance_id", "schema": {"title": "Instance Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FormDetailSchema"}}}}}, "tags": ["fieldApp"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/FormAnswersRequest"}}}, "required": true}, "security": [{"FieldAppAuth": []}]}}, "/api/field-app/forms/{instance_id}/complete": {"post": {"operationId": "fieldAppCompleteForm", "summary": "Complete Form", "parameters": [{"in": "path", "name": "instance_id", "schema": {"title": "Instance Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FormDetailSchema"}}}}}, "tags": ["fieldApp"], "security": [{"FieldAppAuth": []}]}}, "/api/field-app/forms/{instance_id}/fields/{field_id}/media": {"post": {"operationId": "fieldAppStartFormMediaUpload", "summary": "Start Form Media Upload", "parameters": [{"in": "path", "name": "instance_id", "schema": {"title": "Instance Id", "type": "integer"}, "required": true}, {"in": "path", "name": "field_id", "schema": {"title": "Field Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UploadResponse"}}}}}, "tags": ["fieldApp"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UploadRequest"}}}, "required": true}, "security": [{"FieldAppAuth": []}]}}, "/api/field-app/form-media/{media_id}/confirm": {"post": {"operationId": "fieldAppConfirmFormMedia", "summary": "Confirm Form Media", "parameters": [{"in": "path", "name": "media_id", "schema": {"title": "Media Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["fieldApp"], "security": [{"FieldAppAuth": []}]}}, "/api/field-app/form-media/{media_id}": {"delete": {"operationId": "fieldAppDeleteFormMedia", "summary": "Delete Form Media", "parameters": [{"in": "path", "name": "media_id", "schema": {"title": "Media Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["fieldApp"], "security": [{"FieldAppAuth": []}]}}, "/api/field-app/clock": {"post": {"operationId": "fieldAppClock", "summary": "Clock", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ClockStatusSchema"}}}}}, "tags": ["fieldApp"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ClockRequest"}}}, "required": true}, "security": [{"FieldAppAuth": []}]}, "get": {"operationId": "fieldAppClockStatus", "summary": "Clock Status", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ClockStatusSchema"}}}}}, "tags": ["fieldApp"], "security": [{"FieldAppAuth": []}]}}, "/api/field-app/locations": {"post": {"operationId": "fieldAppRecordLocations", "summary": "Record Locations", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PingsResponse"}}}}}, "tags": ["fieldApp"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PingsRequest"}}}, "required": true}, "security": [{"FieldAppAuth": []}]}}, "/api/field-app/timesheet": {"get": {"operationId": "fieldAppTimesheet", "summary": "My Timesheet", "parameters": [{"in": "query", "name": "period_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Period Id"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TimesheetSchema"}}}}}, "tags": ["fieldApp"], "security": [{"FieldAppAuth": []}]}}, "/api/field-app/pay": {"get": {"operationId": "fieldAppPay", "summary": "My Pay", "parameters": [{"in": "query", "name": "period_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Period Id"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MyPaySchema"}}}}}, "tags": ["fieldApp"], "security": [{"FieldAppAuth": []}]}}, "/api/field-app/vehicle": {"get": {"operationId": "fieldAppVehicle", "summary": "My Vehicle", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MyVehicleSchema"}}}}}, "tags": ["fieldApp"], "security": [{"FieldAppAuth": []}]}}, "/api/field-app/vehicle/logs": {"post": {"operationId": "fieldAppAddVehicleLog", "summary": "Add Vehicle Log", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MyVehicleSchema"}}}}}, "tags": ["fieldApp"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AppVehicleLogRequest"}}}, "required": true}, "security": [{"FieldAppAuth": []}]}}, "/api/field-app/jobs/{job_id}/invoices/{invoice_id}/payments": {"post": {"operationId": "fieldAppRecordPayment", "summary": "Record Field Payment", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}, {"in": "path", "name": "invoice_id", "schema": {"title": "Invoice Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvoiceSummarySchema"}}}}}, "tags": ["fieldApp"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/FieldPaymentRequest"}}}, "required": true}, "security": [{"FieldAppAuth": []}]}}, "/api/field-app/jobs/{job_id}/invoice/send": {"post": {"operationId": "fieldAppSendInvoice", "summary": "Send Job Invoice", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvoiceSummarySchema"}}}}}, "description": "The lead installer emails the customer their invoice (PDF and pay link) once the job is complete.", "tags": ["fieldApp"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AppSendInvoiceRequest"}}}, "required": true}, "security": [{"FieldAppAuth": []}]}}, "/api/field-app/jobs/{job_id}/invoices/{invoice_id}/checkout": {"post": {"operationId": "fieldAppStartCheckout", "summary": "Start Checkout", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}, {"in": "path", "name": "invoice_id", "schema": {"title": "Invoice Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AppCheckoutResponse"}}}}}, "description": "A Stripe link the installer can hand the customer on the phone, or show as a QR code.", "tags": ["fieldApp"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AppCheckoutRequest"}}}, "required": true}, "security": [{"FieldAppAuth": []}]}}, "/api/field-app/people": {"get": {"operationId": "fieldAppCollabPeople", "summary": "People", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/PersonSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["fieldApp"], "security": [{"FieldAppAuth": []}]}}, "/api/field-app/jobs/{job_id}/collab": {"get": {"operationId": "fieldAppCollabJob", "summary": "Job Collab", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CollabSchema"}}}}}, "tags": ["fieldApp"], "security": [{"FieldAppAuth": []}]}}, "/api/field-app/jobs/{job_id}/notes": {"post": {"operationId": "fieldAppCollabAddNote", "summary": "Add Note", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NoteSchema"}}}}}, "tags": ["fieldApp"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/NoteRequest"}}}, "required": true}, "security": [{"FieldAppAuth": []}]}}, "/api/field-app/jobs/{job_id}/photos/{media_id}/review": {"get": {"operationId": "fieldAppCollabPhoto", "summary": "Review", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}, {"in": "path", "name": "media_id", "schema": {"title": "Media Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PhotoReviewSchema"}}}}}, "tags": ["fieldApp"], "security": [{"FieldAppAuth": []}]}}, "/api/field-app/jobs/{job_id}/photos/{media_id}/markup": {"put": {"operationId": "fieldAppCollabSaveMarkup", "summary": "Save Markup", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}, {"in": "path", "name": "media_id", "schema": {"title": "Media Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PhotoReviewSchema"}}}}}, "tags": ["fieldApp"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/MarkupRequest"}}}, "required": true}, "security": [{"FieldAppAuth": []}]}}, "/api/field-app/jobs/{job_id}/punch": {"post": {"operationId": "fieldAppCollabAddPunch", "summary": "Add Punch", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PunchItemSchema"}}}}}, "tags": ["fieldApp"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PunchCreateRequest"}}}, "required": true}, "security": [{"FieldAppAuth": []}]}}, "/api/field-app/jobs/{job_id}/punch/{item_id}": {"patch": {"operationId": "fieldAppCollabUpdatePunch", "summary": "Update Punch", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}, {"in": "path", "name": "item_id", "schema": {"title": "Item Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PunchItemSchema"}}}}}, "tags": ["fieldApp"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PunchUpdateRequest"}}}, "required": true}, "security": [{"FieldAppAuth": []}]}}, "/api/field-app/jobs/{job_id}/comments": {"get": {"operationId": "fieldAppCollabComments", "summary": "Comments", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}, {"in": "query", "name": "photo_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Photo Id"}, "required": false}, {"in": "query", "name": "punch_item_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Punch Item Id"}, "required": false}, {"in": "query", "name": "note_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Note Id"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/CommentSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["fieldApp"], "security": [{"FieldAppAuth": []}]}, "post": {"operationId": "fieldAppCollabAddComment", "summary": "Add Comment", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CommentSchema"}}}}}, "tags": ["fieldApp"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CommentRequest"}}}, "required": true}, "security": [{"FieldAppAuth": []}]}}, "/api/field-app/mentions": {"get": {"operationId": "fieldAppMentions", "summary": "Mentions", "parameters": [{"in": "query", "name": "unread", "schema": {"default": false, "title": "Unread", "type": "boolean"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/MentionSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["fieldApp"], "security": [{"FieldAppAuth": []}]}}, "/api/field-app/mentions/read": {"post": {"operationId": "fieldAppMentionsRead", "summary": "Mentions Read", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["fieldApp"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/MentionReadRequest"}}}, "required": true}, "security": [{"FieldAppAuth": []}]}}, "/api/field-app/help/guides": {"get": {"operationId": "fieldAppHelpGuides", "summary": "Help Guides", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/GuideSummarySchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["fieldApp"]}}, "/api/field-app/help/guides/{slug}": {"get": {"operationId": "fieldAppHelpGuide", "summary": "Help Guide", "parameters": [{"in": "path", "name": "slug", "schema": {"title": "Slug", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuideSchema"}}}}}, "tags": ["fieldApp"]}}, "/api/field-app/help/guides/{slug}/steps/{number}/comments": {"get": {"operationId": "fieldAppHelpComments", "summary": "Help Comments", "parameters": [{"in": "path", "name": "slug", "schema": {"title": "Slug", "type": "string"}, "required": true}, {"in": "path", "name": "number", "schema": {"title": "Number", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/GuideCommentSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["fieldApp"], "security": [{"FieldAppAuth": []}]}, "post": {"operationId": "fieldAppHelpAddComment", "summary": "Help Add Comment", "parameters": [{"in": "path", "name": "slug", "schema": {"title": "Slug", "type": "string"}, "required": true}, {"in": "path", "name": "number", "schema": {"title": "Number", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuideCommentSchema"}}}}}, "tags": ["fieldApp"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuideCommentRequest"}}}, "required": true}, "security": [{"FieldAppAuth": []}]}}, "/api/field-app/help/guides/{slug}/steps/{number}/heart": {"post": {"operationId": "fieldAppHelpHeart", "summary": "Help Heart", "parameters": [{"in": "path", "name": "slug", "schema": {"title": "Slug", "type": "string"}, "required": true}, {"in": "path", "name": "number", "schema": {"title": "Number", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GuideHeartSchema"}}}}}, "tags": ["fieldApp"], "security": [{"FieldAppAuth": []}]}}, "/api/field-app/help/ask": {"post": {"operationId": "fieldAppHelpAsk", "summary": "Help Ask", "parameters": [], "responses": {"200": {"description": "OK"}}, "description": "An install question, answered from the published guides (see the module docstring for the lines).", "tags": ["fieldApp"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/HelpAskRequest"}}}, "required": true}}}, "/api/field-app/help/voice": {"post": {"operationId": "fieldAppHelpVoice", "summary": "Help Voice", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/VoiceSessionSchema"}}}}}, "description": "A short-lived OpenAI Realtime secret for one voice conversation. 503: voice isn't set up.", "tags": ["fieldApp"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/HelpVoiceRequest"}}}, "required": true}, "security": [{"FieldAppAuth": []}]}}, "/api/field-app/jobs/{job_id}/ai/review": {"get": {"operationId": "fieldAppJobAIReview", "summary": "Job Ai Review", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/JobReviewSchema"}}}}}, "description": "What could get in the crew's way on this job, written once per version of the job. The first time it says\n\"writing\" and the worker writes it (up to a minute); ask again every few seconds until it's \"ready\".", "tags": ["fieldApp"], "security": [{"FieldAppAuth": []}]}}, "/api/field-app/jobs/{job_id}/ai/ask": {"post": {"operationId": "fieldAppJobAIAsk", "summary": "Job Ai Ask", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "description": "A question about the job, answered as it's written (the same lines as /help/ask).", "tags": ["fieldApp"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/JobAskRequest"}}}, "required": true}, "security": [{"FieldAppAuth": []}]}}, "/api/field-app/jobs/{job_id}/ai/voice": {"post": {"operationId": "fieldAppJobAIVoice", "summary": "Job Ai Voice", "parameters": [{"in": "path", "name": "job_id", "schema": {"title": "Job Id", "type": "integer"}, "required": true}, {"in": "query", "name": "tools", "schema": {"default": false, "title": "Tools", "type": "boolean"}, "required": false}, {"in": "query", "name": "controller", "schema": {"default": false, "title": "Controller", "type": "boolean"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/VoiceSessionSchema"}}}}}, "description": "A voice conversation about the job, briefed with its facts and install review, and with its unit's\ncontroller readings when asked from the controller. 503: not set up.", "tags": ["fieldApp"], "security": [{"FieldAppAuth": []}]}}, "/api/field-app/controller/review": {"post": {"operationId": "fieldAppControllerReview", "summary": "Controller Review", "parameters": [], "responses": {"200": {"description": "OK"}}, "description": "How well the job's unit performs, from its controller readings, in Simplified Technical English (the same\nlines as /help/ask). Without a job: the demo unit. With `messages`, a follow-up question answered from the\nsame readings. Kept for the office like any other question.", "tags": ["fieldApp"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ControllerReviewRequest"}}}, "required": true}, "security": [{"FieldAppAuth": []}]}}, "/api/field-app/assistant/tool": {"post": {"operationId": "fieldAppAssistantTool", "summary": "Assistant Tool", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AssistantToolSchema"}}}}}, "description": "Answer a tool call the voice model made (job_briefing), with what this technician may see.", "tags": ["fieldApp"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AssistantToolRequest"}}}, "required": true}, "security": [{"FieldAppAuth": []}]}}, "/api/field-app/assistant/voice-transcript": {"post": {"operationId": "fieldAppAssistantVoiceTranscript", "summary": "Assistant Voice Transcript", "parameters": [], "responses": {"200": {"description": "OK"}}, "description": "Keep a voice conversation's transcript for the office to review.", "tags": ["fieldApp"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/VoiceTranscriptRequest"}}}, "required": true}, "security": [{"FieldAppAuth": []}]}}, "/api/inventory/products": {"get": {"operationId": "getStockProducts", "summary": "Stock Products", "parameters": [{"in": "query", "name": "q", "schema": {"default": "", "title": "Q", "type": "string"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/StockProductSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["inventory"]}}, "/api/inventory/summary": {"get": {"operationId": "getStockSummary", "summary": "Stock Summary", "parameters": [{"in": "query", "name": "location_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Location Id"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/StockSummarySchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["inventory"]}}, "/api/inventory/units": {"get": {"operationId": "getStockUnits", "summary": "Stock Units", "parameters": [{"in": "query", "name": "status", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "required": false}, {"in": "query", "name": "product_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Product Id"}, "required": false}, {"in": "query", "name": "q", "schema": {"default": "", "title": "Q", "type": "string"}, "required": false}, {"in": "query", "name": "job_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Job Id"}, "required": false}, {"in": "query", "name": "location_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Location Id"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/StockUnitSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["inventory"]}}, "/api/inventory/units/{unit_id}": {"get": {"operationId": "getStockUnit", "summary": "Stock Unit", "parameters": [{"in": "path", "name": "unit_id", "schema": {"title": "Unit Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/StockUnitDetailSchema"}}}}}, "tags": ["inventory"]}}, "/api/inventory/receipts": {"post": {"operationId": "receiveStock", "summary": "Receive", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReceiveResponse"}}}}}, "tags": ["inventory"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReceiveRequest"}}}, "required": true}}, "get": {"operationId": "getStockReceipts", "summary": "Receipts", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/ReceiptSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["inventory"]}}, "/api/inventory/units/{unit_id}/action": {"post": {"operationId": "actOnStockUnit", "summary": "Unit Action", "parameters": [{"in": "path", "name": "unit_id", "schema": {"title": "Unit Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/StockUnitDetailSchema"}}}}}, "tags": ["inventory"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UnitActionRequest"}}}, "required": true}}}, "/api/inventory/scan": {"get": {"operationId": "scanStockCode", "summary": "Scan", "parameters": [{"in": "query", "name": "code", "schema": {"title": "Code", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ScanResultSchema"}}}}}, "description": "What a scanned barcode is: a location sticker, a unit's serial, or a pricebook code.", "tags": ["inventory"]}}, "/api/inventory/pick-list": {"get": {"operationId": "getStockPickList", "summary": "Pick List", "parameters": [{"in": "query", "name": "days", "schema": {"default": 3, "title": "Days", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/PickJobSchema"}, "title": "Response", "type": "array"}}}}}, "description": "Equipment to pull and stage for jobs going out in the next few days.", "tags": ["inventory"]}}, "/api/inventory/counts": {"post": {"operationId": "recordStockCount", "summary": "Record Count", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CountResultSchema"}}}}}, "tags": ["inventory"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CountRequest"}}}, "required": true}}, "get": {"operationId": "getStockCounts", "summary": "Stock Counts", "parameters": [{"in": "query", "name": "product_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Product Id"}, "required": false}, {"in": "query", "name": "location_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Location Id"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/StockCountSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["inventory"]}}, "/api/inventory/receipts/{receipt_id}/cost": {"post": {"operationId": "setStockReceiptCost", "summary": "Set Receipt Cost", "parameters": [{"in": "path", "name": "receipt_id", "schema": {"title": "Receipt Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReceiptCostResponse"}}}}}, "description": "Enter what we paid per unit for one product on a delivery, once the supplier's invoice is in.", "tags": ["inventory"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ReceiptCostRequest"}}}, "required": true}}}, "/api/inventory/valuation": {"get": {"operationId": "getStockValuation", "summary": "Stock Valuation", "parameters": [{"in": "query", "name": "as_of", "schema": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "As Of"}, "required": false}, {"in": "query", "name": "location_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Location Id"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ValuationSchema"}}}}}, "description": "What inventory on hand is worth, now or at the end of a day: by equipment, and unit by unit for the books.", "tags": ["inventory"]}}, "/api/inventory/valuation/activity": {"get": {"operationId": "getStockValueActivity", "summary": "Stock Value Activity", "parameters": [{"in": "query", "name": "start", "schema": {"format": "date", "title": "Start", "type": "string"}, "required": true}, {"in": "query", "name": "end", "schema": {"format": "date", "title": "End", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ActivitySchema"}}}}}, "description": "What moved inventory value in a period: received, installed (cost of goods sold), returned, scrapped.", "tags": ["inventory"]}}, "/api/inventory/locations": {"get": {"operationId": "getStockLocations", "summary": "Locations", "parameters": [{"in": "query", "name": "include_inactive", "schema": {"default": false, "title": "Include Inactive", "type": "boolean"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/LocationSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["inventory"]}, "post": {"operationId": "createStockLocation", "summary": "Create Location", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LocationSchema"}}}}}, "tags": ["inventory"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LocationRequest"}}}, "required": true}}}, "/api/inventory/locations/{location_id}": {"get": {"operationId": "getStockLocation", "summary": "Location Detail", "parameters": [{"in": "path", "name": "location_id", "schema": {"title": "Location Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LocationDetailSchema"}}}}}, "tags": ["inventory"]}, "put": {"operationId": "updateStockLocation", "summary": "Update Location", "parameters": [{"in": "path", "name": "location_id", "schema": {"title": "Location Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LocationSchema"}}}}}, "tags": ["inventory"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LocationRequest"}}}, "required": true}}}, "/api/inventory/locations/stickers-printed": {"post": {"operationId": "markStockStickersPrinted", "summary": "Stickers Printed", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["inventory"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/StickersPrintedRequest"}}}, "required": true}}}, "/api/inventory/photos": {"post": {"operationId": "startStockPhotoUpload", "summary": "Start Photo Upload", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/StockPhotoUploadResponse"}}}}}, "tags": ["inventory"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/StockPhotoUploadRequest"}}}, "required": true}}}, "/api/inventory/photos/{media_id}/confirm": {"post": {"operationId": "confirmStockPhoto", "summary": "Confirm Photo", "parameters": [{"in": "path", "name": "media_id", "schema": {"title": "Media Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["inventory"]}}, "/api/inventory/photos/{media_id}": {"delete": {"operationId": "deleteStockPhoto", "summary": "Delete Photo", "parameters": [{"in": "path", "name": "media_id", "schema": {"title": "Media Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["inventory"]}}, "/api/cartitems": {"put": {"operationId": "updateCartItemsBulk", "summary": "Update Cartitems", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["cartitems"], "requestBody": {"content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/CartItemBulkUpdateSchema"}, "title": "Data", "type": "array"}}}, "required": true}}}, "/api/servicetitan/link-customer-location": {"post": {"operationId": "linkServiceTitanCustomerLocation", "summary": "Link Customer Location", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/LinkCustomerLocationResponse"}}}}}, "tags": ["servicetitan"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LinkCustomerLocationSchema"}}}, "required": true}}}, "/api/servicetitan/update-customer-location": {"post": {"operationId": "updateServiceTitanCustomerLocation", "summary": "Update Customer Location", "parameters": [{"in": "query", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["servicetitan"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/STCustomerLocationSchema"}}}, "required": true}}}, "/api/servicetitan/link-estimate/{quote_id}": {"post": {"operationId": "linkServiceTitanEstimate", "summary": "Link Estimate", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/STEstimateResponse"}}}}}, "tags": ["servicetitan"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LinkEstimateSchema"}}}, "required": true}}}, "/api/servicetitan/create-and-link-estimate/{quote_id}": {"post": {"operationId": "createAndLinkServiceTitanEstimate", "summary": "Create And Link Estimate", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/STEstimateResponse"}}}}}, "tags": ["servicetitan"]}}, "/api/servicetitan/estimates/{quote_id}": {"get": {"operationId": "getServiceTitanEstimates", "summary": "Get Estimates", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/EstimatesV2EstimateResponse"}, "title": "Response", "type": "array"}}}}}, "tags": ["servicetitan"]}}, "/api/servicetitan/estimates/{quote_id}/pull": {"post": {"operationId": "pullServiceTitanEstimate", "summary": "Pull St Estimate Api", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/STEstimateResponse"}}}}}, "tags": ["servicetitan"]}}, "/api/servicetitan/estimates/{quote_id}/push": {"post": {"operationId": "pushServiceTitanEstimate", "summary": "Push St Estimate Api", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/STEstimateResponse"}}}}}, "tags": ["servicetitan"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PushEstimateSchema"}}}, "required": true}}}, "/api/servicetitan/sync-pricebook": {"post": {"operationId": "syncServiceTitanPricebook", "summary": "Sync Pricebook", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/STSyncResponse"}}}}}, "tags": ["servicetitan"]}}, "/api/servicetitan/sync-pricebook/status": {"post": {"operationId": "getServiceTitanPricebookSyncStatus", "summary": "Sync Pricebook Status", "parameters": [{"in": "query", "name": "task_id", "schema": {"title": "Task Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/STSyncResponse"}}}}}, "tags": ["servicetitan"]}}, "/api/mail-messages/{mail_message_id}": {"get": {"operationId": "getMailMessage", "summary": "Get Mail Message", "parameters": [{"in": "path", "name": "mail_message_id", "schema": {"title": "Mail Message Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GetMailMessageResponse"}}}}}, "tags": ["mailMessages"]}}, "/api/email/mailboxes": {"get": {"operationId": "getEmailMailboxes", "summary": "Get Email Mailboxes", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/EmailMailboxSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["email"]}, "post": {"operationId": "upsertEmailMailbox", "summary": "Upsert Email Mailbox", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmailMailboxSchema"}}}}}, "tags": ["email"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpsertEmailMailboxSchema"}}}, "required": true}}}, "/api/email/connect": {"get": {"operationId": "connectEmailMailbox", "summary": "Connect Email Mailbox", "parameters": [{"in": "query", "name": "provider", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Provider"}, "required": false}, {"in": "query", "name": "login_hint", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Login Hint"}, "required": false}, {"in": "query", "name": "scope", "schema": {"default": "personal", "enum": ["personal", "shared"], "title": "Scope", "type": "string"}, "required": false}, {"in": "query", "name": "default_visibility", "schema": {"default": "shared", "enum": ["shared", "private"], "title": "Default Visibility", "type": "string"}, "required": false}], "responses": {"200": {"description": "OK"}}, "tags": ["email"]}}, "/api/email/mailboxes/{mailbox_id}/reauthorize-google": {"get": {"operationId": "reauthorizeGoogleMailbox", "summary": "Reauthorize Google Mailbox", "parameters": [{"in": "path", "name": "mailbox_id", "schema": {"title": "Mailbox Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "tags": ["email"]}}, "/api/email/mailboxes/{mailbox_id}": {"patch": {"operationId": "updateEmailMailbox", "summary": "Update Email Mailbox", "parameters": [{"in": "path", "name": "mailbox_id", "schema": {"title": "Mailbox Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmailMailboxSchema"}}}}}, "tags": ["email"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateEmailMailboxSchema"}}}, "required": true}}}, "/api/email/mailboxes/{mailbox_id}/sync": {"post": {"operationId": "syncEmailMailbox", "summary": "Sync Email Mailbox", "parameters": [{"in": "path", "name": "mailbox_id", "schema": {"title": "Mailbox Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmailSyncRunSchema"}}}}}, "tags": ["email"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmailSyncRequestSchema"}}}, "required": true}}}, "/api/email/mailboxes/{mailbox_id}/sync-runs/latest": {"get": {"operationId": "getLatestEmailSyncRun", "summary": "Get Latest Email Sync Run", "parameters": [{"in": "path", "name": "mailbox_id", "schema": {"title": "Mailbox Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"anyOf": [{"$ref": "#/components/schemas/EmailSyncRunSchema"}, {"type": "null"}]}}}}}, "tags": ["email"]}}, "/api/email/sync-runs/{sync_run_id}": {"get": {"operationId": "getEmailSyncRun", "summary": "Get Email Sync Run", "parameters": [{"in": "path", "name": "sync_run_id", "schema": {"title": "Sync Run Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmailSyncRunSchema"}}}}}, "tags": ["email"]}}, "/api/email/threads": {"get": {"operationId": "getEmailThreads", "summary": "Get Email Threads", "parameters": [{"in": "query", "name": "page", "schema": {"default": 1, "title": "Page", "type": "integer"}, "required": false}, {"in": "query", "name": "page_size", "schema": {"default": 25, "title": "Page Size", "type": "integer"}, "required": false}, {"in": "query", "name": "mailbox_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Mailbox Id"}, "required": false}, {"in": "query", "name": "deal_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Deal Id"}, "required": false}, {"in": "query", "name": "associated", "schema": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Associated"}, "required": false}, {"in": "query", "name": "q", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Q"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmailThreadListSchema"}}}}}, "tags": ["email"]}}, "/api/email/threads/{thread_id}/link": {"patch": {"operationId": "linkEmailThread", "summary": "Link Email Thread", "parameters": [{"in": "path", "name": "thread_id", "schema": {"title": "Thread Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmailThreadSchema"}}}}}, "tags": ["email"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/LinkEmailThreadSchema"}}}, "required": true}}}, "/api/email/threads/{thread_id}/visibility": {"patch": {"operationId": "updateEmailThreadVisibility", "summary": "Update Email Thread Visibility", "parameters": [{"in": "path", "name": "thread_id", "schema": {"title": "Thread Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmailThreadSchema"}}}}}, "tags": ["email"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateThreadVisibilitySchema"}}}, "required": true}}}, "/api/email/messages/{message_id}/body": {"get": {"operationId": "getEmailMessageBody", "summary": "Get Email Message Body", "parameters": [{"in": "path", "name": "message_id", "schema": {"title": "Message Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmailBodySchema"}}}}}, "tags": ["email"]}}, "/api/email/send": {"post": {"operationId": "sendEmail", "summary": "Send Email", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmailMessageSchema"}}}}}, "tags": ["email"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SendEmailSchema"}}}, "required": true}}}, "/api/email/drafts": {"post": {"operationId": "createEmailDraft", "summary": "Create Email Draft", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmailMessageSchema"}}}}}, "tags": ["email"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SendEmailSchema"}}}, "required": true}}}, "/api/email/cleanup": {"post": {"operationId": "cleanupEmailMetadata", "summary": "Cleanup Email Metadata", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["email"]}}, "/api/email/internal-domains": {"get": {"operationId": "getInternalEmailDomains", "summary": "Get Internal Email Domains", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InternalEmailDomainsSchema"}}}}}, "tags": ["email"]}, "put": {"operationId": "updateInternalEmailDomains", "summary": "Update Internal Email Domains", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InternalEmailDomainsSchema"}}}}}, "tags": ["email"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/InternalEmailDomainsSchema"}}}, "required": true}}}, "/api/templates": {"get": {"operationId": "getTemplateList", "summary": "Get Templates List", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/TemplateShortResponseSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["templates"]}, "post": {"operationId": "createTemplate", "summary": "Create Template", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TemplateDetailedResponseSchema"}}}}}, "tags": ["templates"]}}, "/api/templates/{template_id}": {"get": {"operationId": "getTemplateById", "summary": "Get Template", "parameters": [{"in": "path", "name": "template_id", "schema": {"title": "Template Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TemplateDetailedResponseSchema"}}}}}, "tags": ["templates"]}, "put": {"operationId": "updateTemplate", "summary": "Update Template", "parameters": [{"in": "path", "name": "template_id", "schema": {"title": "Template Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TemplatePostResponseSchema"}}}}}, "tags": ["templates"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/TemplateUpdateSchema"}}}, "required": true}}, "delete": {"operationId": "deleteTemplate", "summary": "Delete Template", "parameters": [{"in": "path", "name": "template_id", "schema": {"title": "Template Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TemplatePostResponseSchema"}}}}}, "tags": ["templates"]}}, "/api/templates/{template_id}/add_item": {"post": {"operationId": "addTemplateItem", "summary": "Add Item To Template", "parameters": [{"in": "path", "name": "template_id", "schema": {"title": "Template Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TemplatePostResponseSchema"}}}}}, "tags": ["templates"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/TemplateAddItemSchema"}}}, "required": true}}}, "/api/templates/{template_id}/update_item": {"put": {"operationId": "updateTemplateItem", "summary": "Update Item In Template", "parameters": [{"in": "path", "name": "template_id", "schema": {"title": "Template Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TemplatePostResponseSchema"}}}}}, "tags": ["templates"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/TemplateUpdateItemSchema"}}}, "required": true}}}, "/api/templates/{template_id}/delete_item": {"delete": {"operationId": "deleteTemplateItem", "summary": "Delete Item From Template", "parameters": [{"in": "path", "name": "template_id", "schema": {"title": "Template Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TemplatePostResponseSchema"}}}}}, "tags": ["templates"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/TemplateDeleteItemSchema"}}}, "required": true}}}, "/api/ashp/performance/{ahri_number}": {"get": {"operationId": "getAshpPerformance", "summary": "Get Ashp Performance", "parameters": [{"in": "path", "name": "ahri_number", "schema": {"title": "Ahri Number", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/ASHPProductSchema"}, "title": "Response", "type": "array"}}}}}, "description": "Proxy endpoint to fetch ASHP performance data from the NEEP ASHP database", "tags": ["ashp"]}}, "/api/ashp/brands": {"get": {"operationId": "getAshpBrands", "summary": "Get Neep Brands", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"type": "string"}, "title": "Response", "type": "array"}}}}}, "description": "Proxy endpoint to fetch NEEP brands from the NEEP ASHP database", "tags": ["ashp"]}}, "/api/ashp/ahri_choices": {"get": {"operationId": "getAshpAhriChoices", "summary": "Get Ahri Choices", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AHRIChoiceSchema"}}}}}, "description": "Proxy endpoint to fetch AHRI choices from the NEEP ASHP database", "tags": ["ashp"]}}, "/api/ashp/search": {"post": {"operationId": "searchAshpProducts", "summary": "Search Ashp Products", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ASHPProductSearchResponseSchema"}}}}}, "description": "Proxy endpoint to search ASHP products from the NEEP ASHP database", "tags": ["ashp"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ASHPProductSearchRequestSchema"}}}, "required": true}}}, "/api/engineering/checklist-template": {"get": {"operationId": "getEngineeringChecklistTemplate", "summary": "Get Checklist Template", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChecklistTemplateSchema"}}}}}, "tags": ["engineering"]}, "put": {"operationId": "saveEngineeringChecklistTemplate", "summary": "Save Checklist Template", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ChecklistTemplateSchema"}}}}}, "tags": ["engineering"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/SaveTemplateSchema"}}}, "required": true}}}, "/api/engineering/upload-image": {"post": {"operationId": "uploadChecklistImage", "summary": "Upload Checklist Image", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ImageUploadResponse"}}}}}, "description": "Upload an image for use in checklist notes. Returns a stable CDN/S3 URL.", "tags": ["engineering"], "requestBody": {"content": {"multipart/form-data": {"schema": {"properties": {"file": {"format": "binary", "title": "File", "type": "string"}}, "required": ["file"], "title": "FileParams", "type": "object"}}}, "required": true}}}, "/api/forms/templates": {"get": {"operationId": "listFormTemplates", "summary": "List Form Templates", "parameters": [{"in": "query", "name": "include_archived", "schema": {"default": false, "title": "Include Archived", "type": "boolean"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/FormTemplateListItemSchema"}, "title": "Response", "type": "array"}}}}}, "tags": ["forms"]}, "post": {"operationId": "createFormTemplate", "summary": "Create Form Template", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FormTemplateDetailSchema"}}}}}, "tags": ["forms"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/FormTemplateSaveSchema"}}}, "required": true}}}, "/api/forms/templates/{template_id}": {"get": {"operationId": "getFormTemplate", "summary": "Get Form Template", "parameters": [{"in": "path", "name": "template_id", "schema": {"title": "Template Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FormTemplateDetailSchema"}}}}}, "tags": ["forms"]}, "put": {"operationId": "updateFormTemplate", "summary": "Update Form Template", "parameters": [{"in": "path", "name": "template_id", "schema": {"title": "Template Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FormTemplateDetailSchema"}}}}}, "tags": ["forms"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/FormTemplateSaveSchema"}}}, "required": true}}, "delete": {"operationId": "deleteFormTemplate", "summary": "Delete Form Template", "parameters": [{"in": "path", "name": "template_id", "schema": {"title": "Template Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "description": "Archive, not delete: active=False hides the template from pickers and\nauto-triggers but keeps it listable via ?include_archived and restorable\n(saving it from the builder sets active=True again). deleted_at is\nreserved for true deletion, which has no UI.", "tags": ["forms"]}}, "/api/forms/templates/{template_id}/duplicate": {"post": {"operationId": "duplicateFormTemplate", "summary": "Duplicate Form Template", "parameters": [{"in": "path", "name": "template_id", "schema": {"title": "Template Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FormTemplateDetailSchema"}}}}}, "tags": ["forms"]}}, "/api/forms/instances": {"post": {"operationId": "createFormInstance", "summary": "Create Form Instance", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FormInstanceDetailSchema"}}}}}, "tags": ["forms"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/FormInstanceCreateSchema"}}}, "required": true}}, "get": {"operationId": "listFormInstances", "summary": "List Form Instances", "parameters": [{"in": "query", "name": "deal_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Deal Id"}, "required": false}, {"in": "query", "name": "deal_uuid", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Deal Uuid"}, "required": false}, {"in": "query", "name": "quote_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Quote Id"}, "required": false}, {"in": "query", "name": "status", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "required": false}, {"in": "query", "name": "template_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Template Id"}, "required": false}, {"in": "query", "name": "vsv_only", "schema": {"default": false, "title": "Vsv Only", "type": "boolean"}, "required": false}, {"in": "query", "name": "page", "schema": {"default": 1, "title": "Page", "type": "integer"}, "required": false}, {"in": "query", "name": "page_size", "schema": {"default": 50, "title": "Page Size", "type": "integer"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FormInstanceListSchema"}}}}}, "tags": ["forms"]}}, "/api/forms/instances/{instance_id}": {"get": {"operationId": "getFormInstance", "summary": "Get Form Instance", "parameters": [{"in": "path", "name": "instance_id", "schema": {"title": "Instance Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FormInstanceDetailSchema"}}}}}, "tags": ["forms"]}, "delete": {"operationId": "deleteFormInstance", "summary": "Delete Form Instance", "parameters": [{"in": "path", "name": "instance_id", "schema": {"title": "Instance Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["forms"]}}, "/api/forms/instances/{instance_id}/answers": {"patch": {"operationId": "updateFormInstanceAnswers", "summary": "Update Form Instance Answers", "parameters": [{"in": "path", "name": "instance_id", "schema": {"title": "Instance Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FormInstanceDetailSchema"}}}}}, "tags": ["forms"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/FormAnswersPatchSchema"}}}, "required": true}}}, "/api/forms/instances/{instance_id}/complete": {"post": {"operationId": "markFormInstanceComplete", "summary": "Mark Form Instance Complete", "parameters": [{"in": "path", "name": "instance_id", "schema": {"title": "Instance Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FormInstanceDetailSchema"}}}}}, "tags": ["forms"]}}, "/api/forms/instances/{instance_id}/reopen": {"post": {"operationId": "reopenFormInstance", "summary": "Reopen Form Instance", "parameters": [{"in": "path", "name": "instance_id", "schema": {"title": "Instance Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FormInstanceDetailSchema"}}}}}, "tags": ["forms"]}}, "/api/forms/instances/{instance_id}/fields/{field_id}/media": {"post": {"operationId": "createFormFieldMediaUpload", "summary": "Create Form Field Media Upload", "parameters": [{"in": "path", "name": "instance_id", "schema": {"title": "Instance Id", "type": "integer"}, "required": true}, {"in": "path", "name": "field_id", "schema": {"title": "Field Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FormFieldMediaUploadResponse"}}}}}, "tags": ["forms"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/FormFieldMediaUploadSchema"}}}, "required": true}}}, "/api/forms/media/{media_id}/confirm": {"patch": {"operationId": "confirmFormFieldMedia", "summary": "Confirm Form Field Media", "parameters": [{"in": "path", "name": "media_id", "schema": {"title": "Media Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FormFieldMediaSchema"}}}}}, "tags": ["forms"]}}, "/api/forms/media/{media_id}": {"delete": {"operationId": "deleteFormFieldMedia", "summary": "Delete Form Field Media", "parameters": [{"in": "path", "name": "media_id", "schema": {"title": "Media Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ApiSuccessSchema"}}}}}, "tags": ["forms"]}}, "/api/forms/templates/reference-images": {"post": {"operationId": "uploadFormReferenceImage", "summary": "Upload Form Reference Image", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ImageUploadResponse"}}}}}, "description": "Upload a reference/example image for a template field. Returns a stable S3 URL.", "tags": ["forms"], "requestBody": {"content": {"multipart/form-data": {"schema": {"properties": {"file": {"format": "binary", "title": "File", "type": "string"}}, "required": ["file"], "title": "FileParams", "type": "object"}}}, "required": true}}}, "/api/podium/status": {"get": {"operationId": "getPodiumStatus", "summary": "Get Status", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PodiumStatusSchema"}}}}}, "tags": ["podium"]}}, "/api/podium/connect": {"get": {"operationId": "connectPodium", "summary": "Connect", "parameters": [], "responses": {"200": {"description": "OK"}}, "tags": ["podium"]}}, "/api/podium/sync": {"post": {"operationId": "syncPodium", "summary": "Sync Podium", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PodiumSyncStatusSchema"}}}}}, "tags": ["podium"]}}, "/api/podium/disconnect": {"post": {"operationId": "disconnectPodium", "summary": "Disconnect", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PodiumDisconnectSchema"}}}}}, "tags": ["podium"]}}, "/api/communications/podium/messages/lookup": {"post": {"operationId": "lookupPodiumMessages", "summary": "Lookup Podium Messages", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GetMessagesResponseModel"}}}}}, "tags": ["communications"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PodiumRecordSelector"}}}, "required": true}}}, "/api/communications/podium/conversations/lookup": {"post": {"operationId": "lookupPodiumConversations", "summary": "Lookup Podium Conversations", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PodiumConversationMetadataResponseSchema"}}}}}, "tags": ["communications"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PodiumRecordSelector"}}}, "required": true}}}, "/api/communications/deals/{deal_id}/mail-messages": {"get": {"operationId": "getDealMailMessages", "summary": "Get Deal Mail Messages", "parameters": [{"in": "path", "name": "deal_id", "schema": {"title": "Deal Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GetDealMailMessagesResponse"}}}}}, "tags": ["communications"]}}, "/api/communications/podium/messages/send": {"post": {"operationId": "sendPodiumMessage", "summary": "Send Podium Message", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Message"}}}}}, "tags": ["communications"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PodiumSendMessageSchema"}}}, "required": true}}}, "/api/communications/podium/template-context": {"post": {"operationId": "getPodiumTemplateContext", "summary": "Get Podium Template Context", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PodiumTemplateContextSchema"}}}}}, "tags": ["communications"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PodiumRecordSelector"}}}, "required": true}}}, "/api/realtime/pusher/authorize": {"post": {"operationId": "authorizePusherChannel", "summary": "Authorize Pusher Channel", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PusherChannelAuthorizationSchema"}}}}}, "tags": ["realtime"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/PusherChannelAuthorizationRequestSchema"}}}, "required": true}}}, "/api/notifications": {"get": {"operationId": "getMessageNotifications", "summary": "Get Notifications", "parameters": [{"in": "query", "name": "page", "schema": {"default": 1, "title": "Page", "type": "integer"}, "required": false}, {"in": "query", "name": "page_size", "schema": {"default": 25, "title": "Page Size", "type": "integer"}, "required": false}, {"in": "query", "name": "unread_only", "schema": {"default": false, "title": "Unread Only", "type": "boolean"}, "required": false}, {"in": "query", "name": "channel", "schema": {"anyOf": [{"enum": ["email", "sms", "deal"], "type": "string"}, {"type": "null"}], "title": "Channel"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NotificationListSchema"}}}}}, "tags": ["notifications"]}}, "/api/notifications/preferences": {"get": {"operationId": "getMessageNotificationPreferences", "summary": "Get Preferences", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NotificationPreferencesResponseSchema"}}}}}, "tags": ["notifications"]}, "put": {"operationId": "updateMessageNotificationPreferences", "summary": "Update Preferences", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NotificationPreferencesResponseSchema"}}}}}, "tags": ["notifications"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/NotificationPreferencesSchema"}}}, "required": true}}}, "/api/notifications/workspace-defaults": {"put": {"operationId": "updateMessageNotificationWorkspaceDefaults", "summary": "Update Workspace Defaults", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NotificationPreferencesResponseSchema"}}}}}, "tags": ["notifications"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/NotificationPreferencesSchema"}}}, "required": true}}}, "/api/notifications/read-all": {"post": {"operationId": "markAllMessageNotificationsRead", "summary": "Mark All Read", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdatedCountSchema"}}}}}, "tags": ["notifications"]}}, "/api/notifications/read-related": {"post": {"operationId": "markRelatedMessageNotificationsRead", "summary": "Mark Related Read", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdatedCountSchema"}}}}}, "tags": ["notifications"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/MarkRelatedNotificationsSchema"}}}, "required": true}}}, "/api/companycam/quotes/{quote_id}/photos": {"get": {"operationId": "getCompanyCamPhotosForQuote", "summary": "Get Photos For Quote", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CompanyCamPhotosResponseSchema"}}}}}, "tags": ["companycam"]}}, "/api/companycam/quotes/{quote_id}/import-photos": {"post": {"operationId": "importCompanyCamPhotosForQuote", "summary": "Import Photos For Quote", "parameters": [{"in": "path", "name": "quote_id", "schema": {"title": "Quote Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ImportPhotosResponseSchema"}}}}}, "tags": ["companycam"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/ImportPhotosRequestSchema"}}}, "required": true}}}, "/api/settings/rewarming": {"get": {"operationId": "getRewarmingSettings", "summary": "Get Settings", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RewarmingSettingsSchema"}}}}}, "tags": ["rewarming"]}, "put": {"operationId": "saveRewarmingSettings", "summary": "Save Settings", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RewarmingSaveSchema"}}}}}, "tags": ["rewarming"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/RewarmingWriteSchema"}}}, "required": true}}}, "/api/settings/rewarming/catalog": {"get": {"operationId": "getRewarmingCatalog", "summary": "Get Catalog", "parameters": [{"in": "query", "name": "location_uid", "schema": {"default": "", "title": "Location Uid", "type": "string"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RewarmingCatalogSchema"}}}}}, "tags": ["rewarming"]}}, "/api/settings/rewarming/disable": {"post": {"operationId": "disableRewarming", "summary": "Disable", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RewarmingSettingsSchema"}}}}}, "tags": ["rewarming"]}}, "/api/settings/rewarming/preview": {"post": {"operationId": "previewRewarming", "summary": "Preview", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/RewarmingPreviewSchema"}}}}}, "tags": ["rewarming"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/RewarmingPreviewRequestSchema"}}}, "required": true}}}, "/api/settings/crm": {"get": {"operationId": "getCRMConfiguration", "summary": "Get Crm Configuration", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CRMConfigurationSchema"}}}}}, "tags": ["settings"]}}, "/api/settings/crm/assignment": {"put": {"operationId": "updateCRMAssignmentSettings", "summary": "Update Crm Assignment Settings", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CRMConfigurationSchema"}}}}}, "tags": ["settings"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CRMAssignmentSettingsSchema"}}}, "required": true}}}, "/api/settings/crm/milestones": {"put": {"operationId": "updateCRMMilestoneSettings", "summary": "Update Crm Milestone Settings", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CRMConfigurationSchema"}}}}}, "tags": ["settings"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CRMMilestoneSettingsSchema"}}}, "required": true}}}, "/api/settings/crm/loss-reasons": {"put": {"operationId": "updateCRMLostReasonSettings", "summary": "Update Crm Lost Reason Settings", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CRMConfigurationSchema"}}}}}, "tags": ["settings"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CRMLostReasonSettingsSchema"}}}, "required": true}}}, "/api/settings/crm/stages/order": {"put": {"operationId": "reorderCRMStages", "summary": "Reorder Crm Stages", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CRMConfigurationSchema"}}}}}, "tags": ["settings"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CRMStageOrderSchema"}}}, "required": true}}}, "/api/settings/crm/stages": {"post": {"operationId": "createCRMStage", "summary": "Create Crm Stage", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CRMStageSchema"}}}}}, "tags": ["settings"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CRMStageWriteSchema"}}}, "required": true}}}, "/api/settings/crm/stages/{stage_id}": {"put": {"operationId": "updateCRMStage", "summary": "Update Crm Stage", "parameters": [{"in": "path", "name": "stage_id", "schema": {"title": "Stage Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CRMStageSchema"}}}}}, "tags": ["settings"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CRMStageWriteSchema"}}}, "required": true}}}, "/api/settings/crm/labels": {"post": {"operationId": "createCRMDealLabel", "summary": "Create Crm Deal Label", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CRMDealLabelSchema"}}}}}, "tags": ["settings"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CRMDealLabelWriteSchema"}}}, "required": true}}}, "/api/settings/crm/labels/{label_id}": {"put": {"operationId": "updateCRMDealLabel", "summary": "Update Crm Deal Label", "parameters": [{"in": "path", "name": "label_id", "schema": {"title": "Label Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CRMDealLabelSchema"}}}}}, "tags": ["settings"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CRMDealLabelWriteSchema"}}}, "required": true}}}, "/api/settings/crm/custom-fields": {"post": {"operationId": "createCRMCustomField", "summary": "Create Crm Custom Field", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CRMCustomFieldSchema"}}}}}, "tags": ["settings"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CRMCustomFieldWriteSchema"}}}, "required": true}}}, "/api/settings/crm/custom-fields/{field_id}": {"put": {"operationId": "updateCRMCustomField", "summary": "Update Crm Custom Field", "parameters": [{"in": "path", "name": "field_id", "schema": {"title": "Field Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CRMCustomFieldSchema"}}}}}, "tags": ["settings"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CRMCustomFieldWriteSchema"}}}, "required": true}}}, "/api/settings/google-conversions": {"get": {"operationId": "getGoogleConversionSettings", "summary": "Get Google Conversion Settings", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GoogleConversionSettingsResponseSchema"}}}}}, "tags": ["settings"]}, "put": {"operationId": "updateGoogleConversionSettings", "summary": "Update Google Conversion Settings", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GoogleConversionSettingsResponseSchema"}}}}}, "tags": ["settings"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/GoogleConversionSettingsSchema"}}}, "required": true}}}, "/api/settings/google-conversions/uploads": {"get": {"operationId": "getGoogleConversionUploads", "summary": "Get Google Conversion Uploads", "parameters": [{"in": "query", "name": "page", "schema": {"default": 1, "title": "Page", "type": "integer"}, "required": false}, {"in": "query", "name": "page_size", "schema": {"default": 25, "title": "Page Size", "type": "integer"}, "required": false}, {"in": "query", "name": "status", "schema": {"anyOf": [{"enum": ["pending", "submitted", "accepted", "failed"], "type": "string"}, {"type": "null"}], "title": "Status"}, "required": false}, {"in": "query", "name": "event_type", "schema": {"anyOf": [{"enum": ["qualified_lead", "contract_signed"], "type": "string"}, {"type": "null"}], "title": "Event Type"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GoogleConversionUploadListSchema"}}}}}, "tags": ["settings"]}}, "/api/settings/meta-conversions": {"get": {"operationId": "getMetaConversionSettings", "summary": "Get Meta Conversion Settings", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MetaConversionSettingsResponseSchema"}}}}}, "tags": ["settings"]}, "put": {"operationId": "updateMetaConversionSettings", "summary": "Update Meta Conversion Settings", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MetaConversionSettingsResponseSchema"}}}}}, "tags": ["settings"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/MetaConversionSettingsSchema"}}}, "required": true}}}, "/api/settings/meta-conversions/uploads/run": {"post": {"operationId": "runMetaConversionUploads", "summary": "Run Meta Conversion Uploads", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MetaConversionRunResponseSchema"}}}}}, "tags": ["settings"]}}, "/api/settings/meta-conversions/uploads": {"get": {"operationId": "getMetaConversionUploads", "summary": "Get Meta Conversion Uploads", "parameters": [{"in": "query", "name": "page", "schema": {"default": 1, "title": "Page", "type": "integer"}, "required": false}, {"in": "query", "name": "page_size", "schema": {"default": 25, "title": "Page Size", "type": "integer"}, "required": false}, {"in": "query", "name": "status", "schema": {"anyOf": [{"enum": ["pending", "accepted", "failed", "expired", "cancelled"], "type": "string"}, {"type": "null"}], "title": "Status"}, "required": false}, {"in": "query", "name": "event_type", "schema": {"anyOf": [{"enum": ["qualified_lead", "purchase"], "type": "string"}, {"type": "null"}], "title": "Event Type"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MetaConversionUploadListSchema"}}}}}, "tags": ["settings"]}}, "/api/equipment/brands": {"get": {"operationId": "getEquipmentBrands", "summary": "List Equipment Brands", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/EquipmentBrandSchema"}, "title": "Response", "type": "array"}}}}}, "description": "List all equipment brands", "tags": ["equipment"]}, "post": {"operationId": "createEquipmentBrand", "summary": "Create Equipment Brand", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EquipmentBrandSchema"}}}}}, "description": "Create a new equipment brand", "tags": ["equipment"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EquipmentBrandCreateSchema"}}}, "required": true}}}, "/api/equipment/brands/{brand_id}": {"put": {"operationId": "updateEquipmentBrand", "summary": "Update Equipment Brand", "parameters": [{"in": "path", "name": "brand_id", "schema": {"title": "Brand Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EquipmentBrandSchema"}}}}}, "description": "Update an equipment brand", "tags": ["equipment"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EquipmentBrandUpdateSchema"}}}, "required": true}}, "delete": {"operationId": "deleteEquipmentBrand", "summary": "Delete Equipment Brand", "parameters": [{"in": "path", "name": "brand_id", "schema": {"title": "Brand Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "description": "Delete an equipment brand", "tags": ["equipment"]}}, "/api/equipment/models": {"get": {"operationId": "getEquipmentModels", "summary": "List Equipment Models", "parameters": [{"in": "query", "name": "equip_type", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Equip Type"}, "required": false}, {"in": "query", "name": "brand_id", "schema": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Brand Id"}, "required": false}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/EquipmentModelSchema"}, "title": "Response", "type": "array"}}}}}, "description": "List equipment models with optional filters", "tags": ["equipment"]}, "post": {"operationId": "createEquipmentModel", "summary": "Create Equipment Model", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EquipmentModelSchema"}}}}}, "description": "Create a new equipment model", "tags": ["equipment"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EquipmentModelCreateSchema"}}}, "required": true}}}, "/api/equipment/models/{model_id}": {"put": {"operationId": "updateEquipmentModel", "summary": "Update Equipment Model", "parameters": [{"in": "path", "name": "model_id", "schema": {"title": "Model Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EquipmentModelSchema"}}}}}, "description": "Update an equipment model", "tags": ["equipment"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EquipmentModelUpdateSchema"}}}, "required": true}}, "delete": {"operationId": "deleteEquipmentModel", "summary": "Delete Equipment Model", "parameters": [{"in": "path", "name": "model_id", "schema": {"title": "Model Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "description": "Delete an equipment model", "tags": ["equipment"]}}, "/api/equipment/performance": {"get": {"operationId": "getEquipmentPerformance", "summary": "List Equipment Performance Data", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/EquipmentPerformanceDataSchema"}, "title": "Response", "type": "array"}}}}}, "description": "List all equipment performance data", "tags": ["equipment"]}, "post": {"operationId": "createEquipmentPerformance", "summary": "Create Equipment Performance Data", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EquipmentPerformanceDataSchema"}}}}}, "description": "Create new equipment performance data", "tags": ["equipment"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EquipmentPerformanceDataCreateSchema"}}}, "required": true}}}, "/api/equipment/performance/from-neep": {"post": {"operationId": "createEquipmentPerformanceFromNeep", "summary": "Create Equipment Performance Data From Neep", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EquipmentPerformanceDataSchema"}}}}}, "description": "Create equipment performance data from NEEP product data", "tags": ["equipment"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EquipmentPerformanceDataFromNeepSchema"}}}, "required": true}}}, "/api/equipment/performance/{performance_id}": {"put": {"operationId": "updateEquipmentPerformance", "summary": "Update Equipment Performance Data", "parameters": [{"in": "path", "name": "performance_id", "schema": {"title": "Performance Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EquipmentPerformanceDataSchema"}}}}}, "description": "Update equipment performance data", "tags": ["equipment"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EquipmentPerformanceDataUpdateSchema"}}}, "required": true}}, "delete": {"operationId": "deleteEquipmentPerformance", "summary": "Delete Equipment Performance Data", "parameters": [{"in": "path", "name": "performance_id", "schema": {"title": "Performance Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "description": "Delete equipment performance data", "tags": ["equipment"]}}, "/api/equipment/matches": {"get": {"operationId": "getEquipmentMatches", "summary": "List Equipment Matches", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/EquipmentMatchSchema"}, "title": "Response", "type": "array"}}}}}, "description": "List all equipment matches", "tags": ["equipment"]}, "post": {"operationId": "createEquipmentMatch", "summary": "Create Equipment Match", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EquipmentMatchSchema"}}}}}, "description": "Create a new equipment match", "tags": ["equipment"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EquipmentMatchCreateSchema"}}}, "required": true}}}, "/api/equipment/matches/{match_id}": {"put": {"operationId": "updateEquipmentMatch", "summary": "Update Equipment Match", "parameters": [{"in": "path", "name": "match_id", "schema": {"title": "Match Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EquipmentMatchSchema"}}}}}, "description": "Update an equipment match", "tags": ["equipment"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EquipmentMatchUpdateSchema"}}}, "required": true}}, "delete": {"operationId": "deleteEquipmentMatch", "summary": "Delete Equipment Match", "parameters": [{"in": "path", "name": "match_id", "schema": {"title": "Match Id", "type": "integer"}, "required": true}], "responses": {"200": {"description": "OK"}}, "description": "Delete an equipment match", "tags": ["equipment"]}}, "/api/equipment/matchup-from-neep": {"post": {"operationId": "createEquipmentMatchupFromNeep", "summary": "Create Matchup From Neep", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EquipmentMatchupResultSchema"}}}}}, "description": "Create a complete equipment matchup from NEEP product data.\nThis will find or create all necessary entities (brand, models, performance data, and match).", "tags": ["equipment"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EquipmentMatchupFromNeepSchema"}}}, "required": true}}}}, "components": {"schemas": {"PublicCartItemSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "quantity": {"title": "Quantity", "type": "integer"}, "price": {"title": "Price", "type": "number"}, "description": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Description"}, "imageUrl": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Imageurl"}, "link": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Link"}, "displayOrder": {"title": "Displayorder", "type": "integer"}}, "required": ["name", "quantity", "price", "displayOrder"], "title": "PublicCartItemSchema", "type": "object"}, "PublicCustomerSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "email": {"title": "Email", "type": "string"}, "phone": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Phone"}}, "required": ["name", "email"], "title": "PublicCustomerSchema", "type": "object"}, "PublicDealSchema": {"properties": {"customer": {"$ref": "#/components/schemas/PublicCustomerSchema"}, "address": {"title": "Address", "type": "string"}, "addressStreet": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Addressstreet"}, "addressCity": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Addresscity"}, "addressState": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Addressstate"}, "addressZipcode": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Addresszipcode"}, "sqft": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Sqft"}, "yearBuilt": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Yearbuilt"}, "floors": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Floors"}, "mediaUploadUrl": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Mediauploadurl"}}, "required": ["customer", "address"], "title": "PublicDealSchema", "type": "object"}, "PublicDiscountSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "amount": {"title": "Amount", "type": "number"}, "quantity": {"title": "Quantity", "type": "integer"}}, "required": ["name", "amount", "quantity"], "title": "PublicDiscountSchema", "type": "object"}, "PublicFinancingSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "amount": {"title": "Amount", "type": "number"}}, "required": ["id", "amount"], "title": "PublicFinancingSchema", "type": "object"}, "PublicIncentiveSchema": {"properties": {"id": {"title": "Id", "type": "string"}, "name": {"title": "Name", "type": "string"}, "description": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": "", "title": "Description"}, "amount": {"title": "Amount", "type": "number"}, "entity": {"title": "Entity", "type": "string"}, "quantity": {"title": "Quantity", "type": "integer"}}, "required": ["id", "name", "amount", "entity", "quantity"], "title": "PublicIncentiveSchema", "type": "object"}, "PublicLoan": {"properties": {"id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Id"}, "provider": {"title": "Provider", "type": "string"}, "link": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Link"}, "fico": {"title": "Fico", "type": "number"}, "apr": {"title": "Apr", "type": "number"}, "term": {"title": "Term", "type": "number"}, "amount": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Amount"}}, "required": ["provider", "fico", "apr", "term"], "title": "PublicLoan", "type": "object"}, "PublicQuoteSchema": {"properties": {"uuid": {"title": "Uuid", "type": "string"}, "id": {"title": "Id", "type": "integer"}, "dealImg": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Dealimg"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "contract_expires_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Contract Expires At"}, "quote_expires_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Quote Expires At"}, "advisorName": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Advisorname"}, "advisorImage": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Advisorimage"}, "noteToCustomer": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Notetocustomer"}, "depositPaid": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Depositpaid"}, "uiState": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Uistate"}, "designHeatTempF": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Designheattempf"}, "designHeatLoadBtu": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Designheatloadbtu"}, "designCoolTempF": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Designcooltempf"}, "designCoolLoadBtu": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Designcoolloadbtu"}, "subtotal": {"title": "Subtotal", "type": "number"}, "priceAfterIncentives": {"title": "Priceafterincentives", "type": "number"}, "priceAfterFinancing": {"title": "Priceafterfinancing", "type": "number"}, "incentives": {"items": {"$ref": "#/components/schemas/PublicIncentiveSchema"}, "title": "Incentives", "type": "array"}, "deal": {"$ref": "#/components/schemas/PublicDealSchema"}, "cartitems": {"items": {"$ref": "#/components/schemas/PublicCartItemSchema"}, "title": "Cartitems", "type": "array"}, "discounts": {"items": {"$ref": "#/components/schemas/PublicDiscountSchema"}, "title": "Discounts", "type": "array"}, "loans": {"anyOf": [{"items": {"$ref": "#/components/schemas/PublicLoan"}, "type": "array"}, {"type": "null"}], "title": "Loans"}, "financing": {"items": {"$ref": "#/components/schemas/PublicFinancingSchema"}, "title": "Financing", "type": "array"}}, "required": ["uuid", "id", "created_at", "subtotal", "priceAfterIncentives", "priceAfterFinancing", "incentives", "deal", "cartitems", "discounts", "financing"], "title": "PublicQuoteSchema", "type": "object"}, "SigningUrlSchema": {"properties": {"status": {"title": "Status", "type": "string"}, "signingUrl": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Signingurl"}, "unsignedPdfDownloadUrl": {"title": "Unsignedpdfdownloadurl", "type": "string"}, "signedContractUrl": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Signedcontracturl"}}, "required": ["status", "signingUrl", "unsignedPdfDownloadUrl", "signedContractUrl"], "title": "SigningUrlSchema", "type": "object"}, "ReferralCodeSchema": {"properties": {"code": {"title": "Code", "type": "string"}, "link_url": {"title": "Link Url", "type": "string"}}, "required": ["code", "link_url"], "title": "ReferralCodeSchema", "type": "object"}, "SendReferralEmailResponseSchema": {"properties": {"emails_sent": {"items": {"type": "string"}, "title": "Emails Sent", "type": "array"}, "emails_not_sent": {"items": {"type": "string"}, "title": "Emails Not Sent", "type": "array"}}, "required": ["emails_sent", "emails_not_sent"], "title": "SendReferralEmailResponseSchema", "type": "object"}, "SendReferralEmailSchema": {"properties": {"emails": {"items": {"type": "string"}, "title": "Emails", "type": "array"}}, "required": ["emails"], "title": "SendReferralEmailSchema", "type": "object"}, "WebflowForm": {"properties": {"submission_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Submission Id"}, "name": {"default": "", "title": "Name", "type": "string"}, "email": {"default": "", "title": "Email", "type": "string"}, "phone": {"default": "", "title": "Phone", "type": "string"}, "address": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address"}, "address_line1": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address Line1"}, "address_line2": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address Line2"}, "city": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "City"}, "state": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "State"}, "zip": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Zip"}, "instant_quote": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Instant Quote"}, "extra_text_input": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Extra Text Input"}, "gtm_campaign_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Gtm Campaign Url"}, "redirectUrl": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Redirecturl"}, "referral_code": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Referral Code"}, "initial_query_params": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Initial Query Params"}, "initial_referrer_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Initial Referrer Url"}, "initial_current_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Initial Current Url"}, "initial_session_start": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Initial Session Start"}, "latest_query_params": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Latest Query Params"}, "latest_referrer_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Latest Referrer Url"}, "latest_current_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Latest Current Url"}, "latest_session_start": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Latest Session Start"}, "user_agent": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "User Agent"}, "ph_session_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ph Session Id"}, "ph_distinct_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ph Distinct Id"}, "fbc": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Fbc"}, "fbp": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Fbp"}, "consent_to_text": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": false, "title": "Consent To Text"}, "lead_type": {"default": "install", "enum": ["install", "repair"], "title": "Lead Type", "type": "string"}, "page_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Page Url"}, "query_parameters": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Query Parameters"}, "ga": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ga"}, "referrer": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Referrer"}, "existing_system": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Existing System"}, "num_thermostat": {"anyOf": [{"type": "integer"}, {"type": "number"}, {"type": "null"}], "title": "Num Thermostat"}}, "title": "WebflowForm", "type": "object"}, "PublicLeadCreateResponse": {"properties": {"submission_id": {"title": "Submission Id", "type": "integer"}, "lead_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Lead Id"}, "status": {"title": "Status", "type": "string"}}, "required": ["submission_id", "status"], "title": "PublicLeadCreateResponse", "type": "object"}, "PublicLeadCreateForm": {"properties": {"submission_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Submission Id"}, "external_submission_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "External Submission Id"}, "ea_org_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Ea Org Id"}, "name": {"default": "", "title": "Name", "type": "string"}, "email": {"default": "", "title": "Email", "type": "string"}, "phone": {"default": "", "title": "Phone", "type": "string"}, "address": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address"}, "address_line1": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address Line1"}, "address_line2": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address Line2"}, "city": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "City"}, "state": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "State"}, "zip": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Zip"}, "instant_quote": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Instant Quote"}, "extra_text_input": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Extra Text Input"}, "gtm_campaign_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Gtm Campaign Url"}, "redirectUrl": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Redirecturl"}, "referral_code": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Referral Code"}, "initial_query_params": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Initial Query Params"}, "initial_referrer_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Initial Referrer Url"}, "initial_current_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Initial Current Url"}, "initial_session_start": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Initial Session Start"}, "latest_query_params": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Latest Query Params"}, "latest_referrer_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Latest Referrer Url"}, "latest_current_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Latest Current Url"}, "latest_session_start": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Latest Session Start"}, "user_agent": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "User Agent"}, "ph_session_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ph Session Id"}, "ph_distinct_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ph Distinct Id"}, "fbc": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Fbc"}, "fbp": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Fbp"}, "consent_to_text": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": false, "title": "Consent To Text"}, "lead_type": {"default": "install", "enum": ["install", "repair"], "title": "Lead Type", "type": "string"}, "page_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Page Url"}, "query_parameters": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Query Parameters"}, "ga": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ga"}, "referrer": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Referrer"}, "existing_system": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Existing System"}, "num_thermostat": {"anyOf": [{"type": "integer"}, {"type": "number"}, {"type": "null"}], "title": "Num Thermostat"}}, "title": "PublicLeadCreateForm", "type": "object"}, "ElectricRatePlanEnum": {"enum": ["e-elec-2024", "e-tou-b-2023", "e-tou-d-2024", "ev2-a-2024", "e-1-2024", "e-tou-c-2024"], "title": "ElectricRatePlanEnum", "type": "string"}, "PinchIncentiveSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "description": {"title": "Description", "type": "string"}, "amount": {"title": "Amount", "type": "number"}, "quantity": {"default": 1, "title": "Quantity", "type": "integer"}, "incentiveType": {"title": "Incentivetype", "type": "string"}, "link": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Link"}}, "required": ["name", "description", "amount", "incentiveType", "link"], "title": "PinchIncentiveSchema", "type": "object"}, "PinchLoanSchema": {"properties": {"id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Id"}, "provider": {"title": "Provider", "type": "string"}, "link": {"title": "Link", "type": "string"}, "fico": {"title": "Fico", "type": "number"}, "apr": {"title": "Apr", "type": "number"}, "term": {"title": "Term", "type": "number"}, "amount": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Amount"}}, "required": ["id", "provider", "link", "fico", "apr", "term", "amount"], "title": "PinchLoanSchema", "type": "object"}, "SimulationOutputSchema": {"properties": {"zip": {"title": "Zip", "type": "string"}, "sqft": {"title": "Sqft", "type": "integer"}, "yearBuilt": {"default": 0, "title": "Yearbuilt", "type": "integer"}, "floors": {"default": 1, "title": "Floors", "type": "integer"}, "eRatePlan": {"allOf": [{"$ref": "#/components/schemas/ElectricRatePlanEnum"}], "default": "e-tou-d-2024"}, "newERatePlan": {"allOf": [{"$ref": "#/components/schemas/ElectricRatePlanEnum"}], "default": "e-elec-2024"}, "occupants": {"default": 2, "title": "Occupants", "type": "integer"}, "gasFurnaceBtu": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Gasfurnacebtu"}, "gasFurnaceEfficiency": {"anyOf": [{"type": "number"}, {"type": "null"}], "default": 0.8, "title": "Gasfurnaceefficiency"}, "acBtu": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Acbtu"}, "acSeer": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Acseer"}, "setPointHeating": {"anyOf": [{"type": "number"}, {"type": "null"}], "default": 68, "title": "Setpointheating"}, "setPointCooling": {"anyOf": [{"type": "number"}, {"type": "null"}], "default": 78, "title": "Setpointcooling"}, "useFixedRate": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": false, "title": "Usefixedrate"}, "fixedNgRate": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Fixedngrate"}, "fixedERate": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Fixederate"}, "status": {"$ref": "#/components/schemas/SimulationStatusEnum"}, "base": {"additionalProperties": true, "default": {}, "title": "Base", "type": "object"}, "baseAc": {"additionalProperties": true, "default": {}, "title": "Baseac", "type": "object"}, "mod": {"additionalProperties": true, "default": {}, "title": "Mod", "type": "object"}, "modEquipment": {"additionalProperties": true, "default": {}, "title": "Modequipment", "type": "object"}, "incentives": {"default": [], "items": {"$ref": "#/components/schemas/PinchIncentiveSchema"}, "title": "Incentives", "type": "array"}, "loans": {"default": [], "items": {"$ref": "#/components/schemas/PinchLoanSchema"}, "title": "Loans", "type": "array"}}, "required": ["zip", "sqft", "status"], "title": "SimulationOutputSchema", "type": "object"}, "SimulationStatusEnum": {"enum": ["PENDING", "COMPLETED", "FAILED"], "title": "SimulationStatusEnum", "type": "string"}, "CreateSimulationSchema": {"properties": {"zip": {"title": "Zip", "type": "string"}, "sqft": {"title": "Sqft", "type": "integer"}, "yearBuilt": {"default": 0, "title": "Yearbuilt", "type": "integer"}, "floors": {"default": 1, "title": "Floors", "type": "integer"}, "eRatePlan": {"allOf": [{"$ref": "#/components/schemas/ElectricRatePlanEnum"}], "default": "e-tou-d-2024"}, "newERatePlan": {"allOf": [{"$ref": "#/components/schemas/ElectricRatePlanEnum"}], "default": "e-elec-2024"}, "occupants": {"default": 2, "title": "Occupants", "type": "integer"}, "gasFurnaceBtu": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Gasfurnacebtu"}, "gasFurnaceEfficiency": {"anyOf": [{"type": "number"}, {"type": "null"}], "default": 0.8, "title": "Gasfurnaceefficiency"}, "acBtu": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Acbtu"}, "acSeer": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Acseer"}, "setPointHeating": {"anyOf": [{"type": "number"}, {"type": "null"}], "default": 68, "title": "Setpointheating"}, "setPointCooling": {"anyOf": [{"type": "number"}, {"type": "null"}], "default": 78, "title": "Setpointcooling"}, "useFixedRate": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": false, "title": "Usefixedrate"}, "fixedNgRate": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Fixedngrate"}, "fixedERate": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Fixederate"}}, "required": ["zip", "sqft"], "title": "CreateSimulationSchema", "type": "object"}, "IncentiveByZipSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "description": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": "", "title": "Description"}, "amount": {"title": "Amount", "type": "number"}, "entity": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": "", "title": "Entity"}}, "required": ["name", "amount"], "title": "IncentiveByZipSchema", "type": "object"}, "ReviewSchema": {"properties": {"reviewerDisplayName": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Reviewerdisplayname"}, "comment": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Comment"}, "numberRating": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Numberrating"}, "createTime": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Createtime"}, "reviewerProfilePhotoUrl": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Reviewerprofilephotourl"}}, "title": "ReviewSchema", "type": "object"}, "PresignedUrlResponse": {"properties": {"presigned_url": {"title": "Presigned Url", "type": "string"}, "s3_key": {"title": "S3 Key", "type": "string"}}, "required": ["presigned_url", "s3_key"], "title": "PresignedUrlResponse", "type": "object"}, "PresignedUrlRequest": {"properties": {"deal_id": {"title": "Deal Id", "type": "string"}, "file_type": {"title": "File Type", "type": "string"}}, "required": ["deal_id", "file_type"], "title": "PresignedUrlRequest", "type": "object"}, "GetMediaResponse": {"properties": {"deal_id": {"title": "Deal Id", "type": "string"}, "photos_submitted_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Photos Submitted At"}, "media": {"items": {"$ref": "#/components/schemas/MediaResponse"}, "title": "Media", "type": "array"}}, "required": ["deal_id", "media"], "title": "GetMediaResponse", "type": "object"}, "MediaResponse": {"properties": {"id": {"title": "Id", "type": "integer"}, "deal_id": {"title": "Deal Id", "type": "string"}, "tag": {"title": "Tag", "type": "string"}, "s3_url": {"title": "S3 Url", "type": "string"}, "s3_key": {"title": "S3 Key", "type": "string"}, "upload_status": {"default": "pending", "title": "Upload Status", "type": "string"}, "is_playable": {"default": false, "title": "Is Playable", "type": "boolean"}, "created_at": {"title": "Created At", "type": "string"}, "updated_at": {"title": "Updated At", "type": "string"}, "media_type": {"enum": ["video", "image", "text"], "title": "Media Type", "type": "string"}, "caption": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Caption"}, "original_filename": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Original Filename"}, "content_type": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Content Type"}, "file_size_bytes": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "File Size Bytes"}, "upload_error_code": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Upload Error Code"}, "upload_error_message": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Upload Error Message"}, "uploaded_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Uploaded At"}, "transcode_status": {"default": "not_required", "title": "Transcode Status", "type": "string"}, "transcoded_s3_key": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Transcoded S3 Key"}, "transcode_error_message": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Transcode Error Message"}, "playback_state": {"default": "not_ready", "title": "Playback State", "type": "string"}, "lifecycle_state": {"default": "pending_upload", "enum": ["pending_upload", "processing", "ready", "ready_degraded", "upload_failed", "canceled"], "title": "Lifecycle State", "type": "string"}}, "required": ["id", "deal_id", "tag", "s3_url", "s3_key", "created_at", "updated_at", "media_type"], "title": "MediaResponse", "type": "object"}, "MediaRequest": {"properties": {"s3_key": {"title": "S3 Key", "type": "string"}, "tag": {"title": "Tag", "type": "string"}, "deal_id": {"title": "Deal Id", "type": "string"}, "original_filename": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Original Filename"}, "media_type": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": "image", "title": "Media Type"}, "caption": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Caption"}, "upload_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Upload Status"}}, "required": ["s3_key", "tag", "deal_id"], "title": "MediaRequest", "type": "object"}, "MediaUploadCreateResponse": {"properties": {"media": {"$ref": "#/components/schemas/MediaResponse"}, "presigned_url": {"title": "Presigned Url", "type": "string"}}, "required": ["media", "presigned_url"], "title": "MediaUploadCreateResponse", "type": "object"}, "MediaUploadCreateRequest": {"properties": {"deal_id": {"title": "Deal Id", "type": "string"}, "file_type": {"title": "File Type", "type": "string"}, "tag": {"title": "Tag", "type": "string"}, "original_filename": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Original Filename"}, "media_type": {"default": "image", "enum": ["video", "image"], "title": "Media Type", "type": "string"}, "caption": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Caption"}, "file_size_bytes": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "File Size Bytes"}}, "required": ["deal_id", "file_type", "tag"], "title": "MediaUploadCreateRequest", "type": "object"}, "MultipartUploadCreateResponse": {"properties": {"media": {"$ref": "#/components/schemas/MediaResponse"}, "upload_id": {"title": "Upload Id", "type": "string"}, "part_size_bytes": {"title": "Part Size Bytes", "type": "integer"}}, "required": ["media", "upload_id", "part_size_bytes"], "title": "MultipartUploadCreateResponse", "type": "object"}, "MultipartPartUrl": {"properties": {"part_number": {"title": "Part Number", "type": "integer"}, "presigned_url": {"title": "Presigned Url", "type": "string"}}, "required": ["part_number", "presigned_url"], "title": "MultipartPartUrl", "type": "object"}, "MultipartPartUrlsResponse": {"properties": {"parts": {"items": {"$ref": "#/components/schemas/MultipartPartUrl"}, "title": "Parts", "type": "array"}}, "required": ["parts"], "title": "MultipartPartUrlsResponse", "type": "object"}, "MultipartPartUrlsRequest": {"properties": {"deal_id": {"title": "Deal Id", "type": "string"}, "part_numbers": {"items": {"type": "integer"}, "title": "Part Numbers", "type": "array"}}, "required": ["deal_id", "part_numbers"], "title": "MultipartPartUrlsRequest", "type": "object"}, "MultipartPartsResponse": {"properties": {"upload_id": {"title": "Upload Id", "type": "string"}, "part_size_bytes": {"title": "Part Size Bytes", "type": "integer"}, "parts": {"items": {"$ref": "#/components/schemas/UploadedMultipartPart"}, "title": "Parts", "type": "array"}}, "required": ["upload_id", "part_size_bytes", "parts"], "title": "MultipartPartsResponse", "type": "object"}, "UploadedMultipartPart": {"properties": {"part_number": {"title": "Part Number", "type": "integer"}, "etag": {"title": "Etag", "type": "string"}, "size": {"title": "Size", "type": "integer"}}, "required": ["part_number", "etag", "size"], "title": "UploadedMultipartPart", "type": "object"}, "CompletedMultipartPart": {"properties": {"part_number": {"title": "Part Number", "type": "integer"}, "etag": {"title": "Etag", "type": "string"}}, "required": ["part_number", "etag"], "title": "CompletedMultipartPart", "type": "object"}, "MultipartCompleteRequest": {"properties": {"deal_id": {"title": "Deal Id", "type": "string"}, "parts": {"items": {"$ref": "#/components/schemas/CompletedMultipartPart"}, "title": "Parts", "type": "array"}}, "required": ["deal_id", "parts"], "title": "MultipartCompleteRequest", "type": "object"}, "MediaUploadActionRequest": {"properties": {"deal_id": {"title": "Deal Id", "type": "string"}}, "required": ["deal_id"], "title": "MediaUploadActionRequest", "type": "object"}, "MediaUploadFailureRequest": {"properties": {"deal_id": {"title": "Deal Id", "type": "string"}, "error_code": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Error Code"}, "error_message": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Error Message"}}, "required": ["deal_id"], "title": "MediaUploadFailureRequest", "type": "object"}, "MediaTextRequest": {"properties": {"deal_id": {"title": "Deal Id", "type": "string"}, "caption": {"title": "Caption", "type": "string"}}, "required": ["deal_id", "caption"], "title": "MediaTextRequest", "type": "object"}, "SubmitPhotosRequest": {"properties": {"deal_id": {"title": "Deal Id", "type": "string"}}, "required": ["deal_id"], "title": "SubmitPhotosRequest", "type": "object"}, "MediaPatchRequest": {"properties": {"deal_id": {"title": "Deal Id", "type": "string"}, "tag": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Tag"}, "caption": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Caption"}, "upload_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Upload Status"}}, "required": ["deal_id"], "title": "MediaPatchRequest", "type": "object"}, "AnnotationResponse": {"properties": {"media_id": {"title": "Media Id", "type": "string"}, "document": {"additionalProperties": true, "title": "Document", "type": "object"}}, "required": ["media_id", "document"], "title": "AnnotationResponse", "type": "object"}, "AnnotationRequest": {"properties": {"deal_id": {"title": "Deal Id", "type": "string"}, "document": {"additionalProperties": true, "title": "Document", "type": "object"}}, "required": ["deal_id", "document"], "title": "AnnotationRequest", "type": "object"}, "UtilityApiFormResponse": {"properties": {"enabled": {"title": "Enabled", "type": "boolean"}, "status": {"title": "Status", "type": "string"}, "url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Url"}, "utility": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Utility"}, "meter_number": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Meter Number"}, "message": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Message"}, "updated_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Updated At"}, "highest_demand_kw": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Highest Demand Kw"}, "interval_minutes": {"default": [], "items": {"type": "number"}, "title": "Interval Minutes", "type": "array"}, "coverage_start": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Coverage Start"}, "coverage_end": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Coverage End"}, "coverage_days": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Coverage Days"}, "max_amps_240v": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Max Amps 240V"}, "demand_source": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Demand Source"}, "processed_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Processed At"}}, "required": ["enabled", "status"], "title": "UtilityApiFormResponse", "type": "object"}, "PublicDealSchema2": {"properties": {"uuid": {"title": "Uuid", "type": "string"}, "dealImg": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Dealimg"}, "address": {"title": "Address", "type": "string"}, "addressStreet": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Addressstreet"}, "addressCity": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Addresscity"}, "addressState": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Addressstate"}, "addressZipcode": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Addresszipcode"}, "sqft": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Sqft"}, "yearBuilt": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Yearbuilt"}, "floors": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Floors"}}, "required": ["uuid", "address"], "title": "PublicDealSchema2", "type": "object"}, "PublicProposalCustomerSchema": {"properties": {"name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}}, "title": "PublicProposalCustomerSchema", "type": "object"}, "PublicProposalDealSchema": {"properties": {"address": {"title": "Address", "type": "string"}, "dealImg": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Dealimg"}, "heroImg": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Heroimg"}, "addressStreet": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Addressstreet"}, "addressCity": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Addresscity"}, "addressState": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Addressstate"}, "addressZipcode": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Addresszipcode"}, "sqft": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Sqft"}, "yearBuilt": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Yearbuilt"}, "floors": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Floors"}, "customer": {"$ref": "#/components/schemas/PublicProposalCustomerSchema"}}, "required": ["address", "customer"], "title": "PublicProposalDealSchema", "type": "object"}, "PublicProposalQuoteSchema": {"properties": {"quoteUuid": {"title": "Quoteuuid", "type": "string"}, "category": {"title": "Category", "type": "string"}, "description": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Description"}, "priceAfterIncentives": {"title": "Priceafterincentives", "type": "number"}}, "required": ["quoteUuid", "category", "priceAfterIncentives"], "title": "PublicProposalQuoteSchema", "type": "object"}, "PublicProposalSchema": {"properties": {"uuid": {"title": "Uuid", "type": "string"}, "deal": {"$ref": "#/components/schemas/PublicProposalDealSchema"}, "quotes": {"items": {"$ref": "#/components/schemas/PublicProposalQuoteSchema"}, "title": "Quotes", "type": "array"}}, "required": ["uuid", "deal", "quotes"], "title": "PublicProposalSchema", "type": "object"}, "PublicCustomerReferralSchema": {"properties": {"customer_name": {"title": "Customer Name", "type": "string"}, "customer_token": {"title": "Customer Token", "type": "string"}, "code": {"title": "Code", "type": "string"}, "link_url": {"title": "Link Url", "type": "string"}}, "required": ["customer_name", "customer_token", "code", "link_url"], "title": "PublicCustomerReferralSchema", "type": "object"}, "PublicReferralInviteSchema": {"properties": {"email": {"title": "Email", "type": "string"}, "created_at": {"title": "Created At", "type": "string"}}, "required": ["email", "created_at"], "title": "PublicReferralInviteSchema", "type": "object"}, "SizingResponse": {"properties": {"sqft": {"title": "Sqft", "type": "integer"}, "year_built": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year Built"}, "floors": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Floors"}, "bedrooms": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Bedrooms"}, "bathrooms": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Bathrooms"}, "heating_load_btu": {"title": "Heating Load Btu", "type": "integer"}, "cooling_load_btu": {"title": "Cooling Load Btu", "type": "integer"}, "hpwh_fhr": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Hpwh Fhr"}, "manj_result": {"anyOf": [{"additionalProperties": true, "type": "object"}, {"type": "null"}], "title": "Manj Result"}, "flags": {"default": [], "items": {"type": "string"}, "title": "Flags", "type": "array"}}, "required": ["sqft", "floors", "heating_load_btu", "cooling_load_btu"], "title": "SizingResponse", "type": "object"}, "SizingPending": {"properties": {"status": {"default": "pending", "title": "Status", "type": "string"}, "retry_after": {"default": 15, "title": "Retry After", "type": "integer"}}, "title": "SizingPending", "type": "object"}, "GeocodeResponse": {"properties": {"lat": {"title": "Lat", "type": "number"}, "lng": {"title": "Lng", "type": "number"}, "street": {"title": "Street", "type": "string"}, "city": {"title": "City", "type": "string"}, "state": {"title": "State", "type": "string"}, "zipcode": {"title": "Zipcode", "type": "string"}, "country": {"title": "Country", "type": "string"}, "county": {"title": "County", "type": "string"}}, "required": ["lat", "lng", "street", "city", "state", "zipcode", "country", "county"], "title": "GeocodeResponse", "type": "object"}, "GeocodeRequest": {"properties": {"address": {"title": "Address", "type": "string"}}, "required": ["address"], "title": "GeocodeRequest", "type": "object"}, "CartItemSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "quantity": {"title": "Quantity", "type": "integer"}, "price": {"title": "Price", "type": "number"}, "total": {"title": "Total", "type": "number"}}, "required": ["name", "quantity", "price", "total"], "title": "CartItemSchema", "type": "object"}, "EstimateEmailSchema": {"properties": {"address": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address"}, "name": {"title": "Name", "type": "string"}, "email": {"title": "Email", "type": "string"}, "phone": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Phone"}, "cart": {"items": {"$ref": "#/components/schemas/CartItemSchema"}, "title": "Cart", "type": "array"}, "incentives": {"anyOf": [{"items": {"$ref": "#/components/schemas/IncentiveItemSchema"}, "type": "array"}, {"type": "null"}], "title": "Incentives"}, "financing": {"anyOf": [{"$ref": "#/components/schemas/FinancingSchema"}, {"type": "null"}]}, "subtotal": {"title": "Subtotal", "type": "number"}, "after_incentives": {"title": "After Incentives", "type": "number"}, "warrantyData": {"anyOf": [{"items": {"$ref": "#/components/schemas/WarrantyDataScheme"}, "type": "array"}, {"type": "null"}], "title": "Warrantydata"}}, "required": ["name", "email", "cart", "subtotal", "after_incentives"], "title": "EstimateEmailSchema", "type": "object"}, "FinancingSchema": {"properties": {"principal": {"title": "Principal", "type": "number"}, "monthlyPayment": {"title": "Monthlypayment", "type": "number"}, "selectedLoan": {"$ref": "#/components/schemas/SelectedLoanSchema"}}, "required": ["principal", "monthlyPayment", "selectedLoan"], "title": "FinancingSchema", "type": "object"}, "IncentiveItemSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "quantity": {"title": "Quantity", "type": "integer"}, "description": {"title": "Description", "type": "string"}, "amount": {"title": "Amount", "type": "number"}, "total": {"title": "Total", "type": "number"}}, "required": ["name", "quantity", "description", "amount", "total"], "title": "IncentiveItemSchema", "type": "object"}, "SelectedLoanSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "provider": {"title": "Provider", "type": "string"}, "id": {"title": "Id", "type": "string"}, "fico": {"title": "Fico", "type": "integer"}, "apr": {"title": "Apr", "type": "number"}, "amount": {"title": "Amount", "type": "number"}, "term": {"title": "Term", "type": "integer"}}, "required": ["name", "provider", "id", "fico", "apr", "amount", "term"], "title": "SelectedLoanSchema", "type": "object"}, "WarrantyDataScheme": {"properties": {"name": {"title": "Name", "type": "string"}, "description": {"title": "Description", "type": "string"}}, "required": ["name", "description"], "title": "WarrantyDataScheme", "type": "object"}, "PublicInvoiceCheckoutResponse": {"properties": {"url": {"title": "Url", "type": "string"}, "amount": {"title": "Amount", "type": "number"}, "surcharge": {"title": "Surcharge", "type": "number"}}, "required": ["url", "amount", "surcharge"], "title": "PublicInvoiceCheckoutResponse", "type": "object"}, "PublicInvoiceCheckoutRequest": {"properties": {"method": {"enum": ["card", "ach"], "title": "Method", "type": "string"}, "amount": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Amount"}}, "required": ["method"], "title": "PublicInvoiceCheckoutRequest", "type": "object"}, "CustomerInfoSchema": {"properties": {"quoteId": {"title": "Quoteid", "type": "integer"}, "customerName": {"title": "Customername", "type": "string"}, "customerEmail": {"title": "Customeremail", "type": "string"}, "customerPhone": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Customerphone"}, "pipedriveDealId": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Pipedrivedealid"}, "createdAt": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Createdat"}, "relatedQuoteUuids": {"default": [], "items": {"type": "string"}, "title": "Relatedquoteuuids", "type": "array"}}, "required": ["quoteId", "customerName", "customerEmail"], "title": "CustomerInfoSchema", "type": "object"}, "LoginPayload": {"properties": {"username": {"title": "Username", "type": "string"}, "password": {"title": "Password", "type": "string"}}, "required": ["username", "password"], "title": "LoginPayload", "type": "object"}, "RefreshPayload": {"properties": {"refresh_token": {"title": "Refresh Token", "type": "string"}}, "required": ["refresh_token"], "title": "RefreshPayload", "type": "object"}, "UserSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "org_id": {"title": "Org Id", "type": "integer"}, "username": {"title": "Username", "type": "string"}, "first_name": {"title": "First Name", "type": "string"}, "last_name": {"title": "Last Name", "type": "string"}, "email": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Email"}, "is_active": {"title": "Is Active", "type": "boolean"}, "is_staff": {"title": "Is Staff", "type": "boolean"}, "is_superuser": {"title": "Is Superuser", "type": "boolean"}, "avatar_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Avatar Url"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "last_seen_hvacos_update_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Last Seen Hvacos Update Id"}}, "required": ["id", "org_id", "username", "first_name", "last_name", "is_active", "is_staff", "is_superuser", "created_at"], "title": "UserSchema", "type": "object"}, "DetailErrorSchema": {"properties": {"detail": {"title": "Detail", "type": "string"}}, "required": ["detail"], "title": "DetailErrorSchema", "type": "object"}, "UpdateNotesPreferenceSchema": {"properties": {"last_seen_update_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Last Seen Update Id"}}, "title": "UpdateNotesPreferenceSchema", "type": "object"}, "UpdateNotesPreferenceUpdateSchema": {"properties": {"release_id": {"maxLength": 100, "minLength": 1, "pattern": "^[a-zA-Z0-9][a-zA-Z0-9._-]*$", "title": "Release Id", "type": "string"}}, "required": ["release_id"], "title": "UpdateNotesPreferenceUpdateSchema", "type": "object"}, "UserSchema2": {"properties": {"id": {"title": "Id", "type": "integer"}, "username": {"title": "Username", "type": "string"}, "first_name": {"title": "First Name", "type": "string"}, "last_name": {"title": "Last Name", "type": "string"}, "avatar_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Avatar Url"}}, "required": ["id", "username", "first_name", "last_name"], "title": "UserSchema2", "type": "object"}, "AdminNewCustomerForm": {"properties": {"lead_type": {"default": "install", "enum": ["install", "repair"], "title": "Lead Type", "type": "string"}, "name": {"default": "", "title": "Name", "type": "string"}, "email": {"default": "", "title": "Email", "type": "string"}, "phone": {"default": "", "title": "Phone", "type": "string"}, "address": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address"}, "address_line1": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address Line1"}, "address_line2": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address Line2"}, "city": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "City"}, "state": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "State"}, "zip": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Zip"}, "instant_quote": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Instant Quote"}, "extra_text_input": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Extra Text Input"}, "referrer": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Referrer"}, "existing_system": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Existing System"}, "is_text_automation_disabled": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": false, "title": "Is Text Automation Disabled"}, "skip_customer_dedupe": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": false, "title": "Skip Customer Dedupe"}}, "title": "AdminNewCustomerForm", "type": "object"}, "CustomerListItemSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "email": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Email"}, "phone": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Phone"}, "latest_deal_address": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Latest Deal Address"}, "deal_count": {"title": "Deal Count", "type": "integer"}, "quote_count": {"title": "Quote Count", "type": "integer"}, "proposal_count": {"title": "Proposal Count", "type": "integer"}, "sold_quote_count": {"title": "Sold Quote Count", "type": "integer"}}, "required": ["id", "deal_count", "quote_count", "proposal_count", "sold_quote_count"], "title": "CustomerListItemSchema", "type": "object"}, "CustomerListResponseSchema": {"properties": {"items": {"items": {"$ref": "#/components/schemas/CustomerListItemSchema"}, "title": "Items", "type": "array"}, "total": {"title": "Total", "type": "integer"}, "page": {"title": "Page", "type": "integer"}, "page_size": {"title": "Page Size", "type": "integer"}, "total_pages": {"title": "Total Pages", "type": "integer"}}, "required": ["items", "total", "page", "page_size", "total_pages"], "title": "CustomerListResponseSchema", "type": "object"}, "CreateCustomerResponseSchema": {"properties": {"success": {"title": "Success", "type": "boolean"}, "customer_id": {"title": "Customer Id", "type": "integer"}, "created": {"title": "Created", "type": "boolean"}}, "required": ["success", "customer_id", "created"], "title": "CreateCustomerResponseSchema", "type": "object"}, "CreateCustomerSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "email": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Email"}, "phone": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Phone"}}, "required": ["name"], "title": "CreateCustomerSchema", "type": "object"}, "CreateReferralLinkResponseSchema": {"properties": {"success": {"title": "Success", "type": "boolean"}, "referral_link": {"$ref": "#/components/schemas/CustomerReferralLinkSchema"}, "created": {"title": "Created", "type": "boolean"}}, "required": ["success", "referral_link", "created"], "title": "CreateReferralLinkResponseSchema", "type": "object"}, "CustomerReferralLinkSchema": {"properties": {"code": {"title": "Code", "type": "string"}, "link_url": {"title": "Link Url", "type": "string"}, "created_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Created At"}}, "required": ["code", "link_url"], "title": "CustomerReferralLinkSchema", "type": "object"}, "UpdateCustomerResponseSchema": {"properties": {"success": {"title": "Success", "type": "boolean"}}, "required": ["success"], "title": "UpdateCustomerResponseSchema", "type": "object"}, "UpdateCustomerSchema": {"properties": {"name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "email": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Email"}, "phone": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Phone"}}, "title": "UpdateCustomerSchema", "type": "object"}, "CustomerDealSummarySchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "address": {"title": "Address", "type": "string"}, "service_location_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Service Location Id"}, "address_line1": {"default": "", "title": "Address Line1", "type": "string"}, "address_line2": {"default": "", "title": "Address Line2", "type": "string"}, "city": {"default": "", "title": "City", "type": "string"}, "state": {"default": "", "title": "State", "type": "string"}, "postal_code": {"default": "", "title": "Postal Code", "type": "string"}, "country_code": {"default": "", "title": "Country Code", "type": "string"}, "linked_deal_count": {"default": 0, "title": "Linked Deal Count", "type": "integer"}, "created_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Created At"}, "pipedrive_stage": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Pipedrive Stage"}, "pipedrive_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Pipedrive Status"}, "quote_count": {"title": "Quote Count", "type": "integer"}, "proposal_count": {"title": "Proposal Count", "type": "integer"}, "latest_quote_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Latest Quote Id"}}, "required": ["id", "address", "quote_count", "proposal_count"], "title": "CustomerDealSummarySchema", "type": "object"}, "CustomerDetailSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "public_token": {"title": "Public Token", "type": "string"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "email": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Email"}, "phone": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Phone"}, "st_customer_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "St Customer Id"}, "deal_count": {"title": "Deal Count", "type": "integer"}, "quote_count": {"title": "Quote Count", "type": "integer"}, "proposal_count": {"title": "Proposal Count", "type": "integer"}, "sold_quote_count": {"title": "Sold Quote Count", "type": "integer"}, "latest_deal_address": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Latest Deal Address"}, "referral_link": {"anyOf": [{"$ref": "#/components/schemas/CustomerReferralLinkSchema"}, {"type": "null"}]}, "deals": {"items": {"$ref": "#/components/schemas/CustomerDealSummarySchema"}, "title": "Deals", "type": "array"}, "proposals": {"items": {"$ref": "#/components/schemas/CustomerProposalSummarySchema"}, "title": "Proposals", "type": "array"}, "quotes": {"items": {"$ref": "#/components/schemas/CustomerQuoteSummarySchema"}, "title": "Quotes", "type": "array"}, "sold_quotes": {"items": {"$ref": "#/components/schemas/CustomerQuoteSummarySchema"}, "title": "Sold Quotes", "type": "array"}}, "required": ["id", "public_token", "deal_count", "quote_count", "proposal_count", "sold_quote_count", "deals", "proposals", "quotes", "sold_quotes"], "title": "CustomerDetailSchema", "type": "object"}, "CustomerProposalSummarySchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "uuid": {"title": "Uuid", "type": "string"}, "deal_id": {"title": "Deal Id", "type": "integer"}, "deal_address": {"title": "Deal Address", "type": "string"}, "title": {"title": "Title", "type": "string"}, "created_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Created At"}, "quote_count": {"title": "Quote Count", "type": "integer"}}, "required": ["id", "uuid", "deal_id", "deal_address", "title", "quote_count"], "title": "CustomerProposalSummarySchema", "type": "object"}, "CustomerQuoteSummarySchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "uuid": {"title": "Uuid", "type": "string"}, "deal_id": {"title": "Deal Id", "type": "integer"}, "deal_address": {"title": "Deal Address", "type": "string"}, "created_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Created At"}, "subtotal": {"title": "Subtotal", "type": "number"}, "price_after_incentives": {"title": "Price After Incentives", "type": "number"}, "ui_state": {"title": "Ui State", "type": "string"}, "deposit_paid": {"title": "Deposit Paid", "type": "boolean"}, "sent_to_customer": {"title": "Sent To Customer", "type": "boolean"}, "is_sold": {"title": "Is Sold", "type": "boolean"}, "proposal_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Proposal Id"}, "proposal_uuid": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Proposal Uuid"}, "proposal_title": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Proposal Title"}, "advisor_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Advisor Name"}}, "required": ["id", "uuid", "deal_id", "deal_address", "subtotal", "price_after_incentives", "ui_state", "deposit_paid", "sent_to_customer", "is_sold"], "title": "CustomerQuoteSummarySchema", "type": "object"}, "LeadListResponseSchema": {"properties": {"items": {"items": {"$ref": "#/components/schemas/LeadSchema"}, "title": "Items", "type": "array"}, "total": {"title": "Total", "type": "integer"}, "page": {"title": "Page", "type": "integer"}, "page_size": {"title": "Page Size", "type": "integer"}, "total_pages": {"title": "Total Pages", "type": "integer"}}, "required": ["items", "total", "page", "page_size", "total_pages"], "title": "LeadListResponseSchema", "type": "object"}, "LeadSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "received_at": {"format": "date-time", "title": "Received At", "type": "string"}, "lead_type": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Lead Type"}, "status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "inbox_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Inbox Status"}, "source": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Source"}, "customer_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Customer Id"}, "service_location_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Service Location Id"}, "quote_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Quote Id"}, "deal_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Deal Id"}, "service_request_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Service Request Id"}, "pipedrive_deal_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Pipedrive Deal Id"}, "address_line1": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": "", "title": "Address Line1"}, "city": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": "", "title": "City"}, "region": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": "", "title": "Region"}, "zip_code": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": "", "title": "Zip Code"}, "extra_text_input": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": "", "title": "Extra Text Input"}, "latest_current_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": "", "title": "Latest Current Url"}, "latest_referrer_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": "", "title": "Latest Referrer Url"}, "initial_utm_source": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": "", "title": "Initial Utm Source"}, "initial_utm_campaign": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": "", "title": "Initial Utm Campaign"}, "initial_utm_medium": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": "", "title": "Initial Utm Medium"}, "referrer": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": "", "title": "Referrer"}}, "required": ["id", "name", "created_at", "received_at"], "title": "LeadSchema", "type": "object"}, "LeadFilterSchema": {"properties": {"statuses": {"default": [], "items": {"type": "string"}, "title": "Statuses", "type": "array"}, "inbox_statuses": {"default": [], "items": {"type": "string"}, "title": "Inbox Statuses", "type": "array"}, "classifications": {"default": [], "items": {"type": "string"}, "title": "Classifications", "type": "array"}, "lead_types": {"default": [], "items": {"type": "string"}, "title": "Lead Types", "type": "array"}, "sources": {"default": [], "items": {"type": "string"}, "title": "Sources", "type": "array"}, "date_preset": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Date Preset"}, "date_from": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Date From"}, "date_to": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Date To"}, "has_deal": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Has Deal"}, "has_service_request": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Has Service Request"}, "has_quote": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Has Quote"}, "has_routing_issue": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Has Routing Issue"}}, "title": "LeadFilterSchema", "type": "object"}, "LeadSavedFilterSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "visibility": {"title": "Visibility", "type": "string"}, "filters": {"$ref": "#/components/schemas/LeadFilterSchema"}, "owner_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Owner Id"}, "owner_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Owner Name"}, "created_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Created At"}, "updated_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Updated At"}}, "required": ["id", "name", "visibility", "filters"], "title": "LeadSavedFilterSchema", "type": "object"}, "LeadSavedFilterCreateSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "visibility": {"default": "user", "title": "Visibility", "type": "string"}, "filters": {"$ref": "#/components/schemas/LeadFilterSchema"}}, "required": ["name", "filters"], "title": "LeadSavedFilterCreateSchema", "type": "object"}, "LeadPreferencesSchema": {"properties": {"default_saved_filter_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Default Saved Filter Id"}}, "title": "LeadPreferencesSchema", "type": "object"}, "LeadPreferencesUpdateSchema": {"properties": {"default_saved_filter_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Default Saved Filter Id"}}, "title": "LeadPreferencesUpdateSchema", "type": "object"}, "ApiSuccessSchema": {"properties": {"success": {"title": "Success", "type": "boolean"}, "message": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Message"}}, "required": ["success"], "title": "ApiSuccessSchema", "type": "object"}, "LeadFilterOptionsSchema": {"properties": {"statuses": {"items": {"type": "string"}, "title": "Statuses", "type": "array"}, "inbox_statuses": {"items": {"type": "string"}, "title": "Inbox Statuses", "type": "array"}, "classifications": {"items": {"type": "string"}, "title": "Classifications", "type": "array"}, "lead_types": {"items": {"type": "string"}, "title": "Lead Types", "type": "array"}, "sources": {"items": {"type": "string"}, "title": "Sources", "type": "array"}}, "required": ["statuses", "inbox_statuses", "classifications", "lead_types", "sources"], "title": "LeadFilterOptionsSchema", "type": "object"}, "IntakeSearchItemSchema": {"properties": {"type": {"enum": ["customer", "service_location", "deal", "service_request", "lead"], "title": "Type", "type": "string"}, "id": {"title": "Id", "type": "integer"}, "label": {"title": "Label", "type": "string"}, "subtitle": {"default": "", "title": "Subtitle", "type": "string"}, "confidence": {"enum": ["high", "medium", "low"], "title": "Confidence", "type": "string"}, "customer_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Customer Id"}, "service_location_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Service Location Id"}, "deal_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Deal Id"}, "service_request_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Service Request Id"}, "lead_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Lead Id"}, "matched_on": {"default": [], "items": {"type": "string"}, "title": "Matched On", "type": "array"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "email": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Email"}, "phone": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Phone"}, "address": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address"}, "address_line1": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address Line1"}, "address_line2": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address Line2"}, "city": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "City"}, "state": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "State"}, "zip": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Zip"}}, "required": ["type", "id", "label", "confidence"], "title": "IntakeSearchItemSchema", "type": "object"}, "IntakeSearchResponseSchema": {"properties": {"items": {"items": {"$ref": "#/components/schemas/IntakeSearchItemSchema"}, "title": "Items", "type": "array"}}, "required": ["items"], "title": "IntakeSearchResponseSchema", "type": "object"}, "LeadIntakeCreateResponseSchema": {"properties": {"success": {"title": "Success", "type": "boolean"}, "lead_id": {"title": "Lead Id", "type": "integer"}}, "required": ["success", "lead_id"], "title": "LeadIntakeCreateResponseSchema", "type": "object"}, "LeadIntakeCreateSchema": {"properties": {"lead_type": {"default": "install", "enum": ["install", "repair"], "title": "Lead Type", "type": "string"}, "name": {"default": "", "title": "Name", "type": "string"}, "email": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Email"}, "phone": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Phone"}, "address": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address"}, "address_line1": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address Line1"}, "address_line2": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address Line2"}, "city": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "City"}, "state": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "State"}, "zip": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Zip"}, "extra_text_input": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Extra Text Input"}, "customer_id_hint": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Customer Id Hint"}, "service_location_id_hint": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Service Location Id Hint"}}, "title": "LeadIntakeCreateSchema", "type": "object"}, "InternalNoteCreateResponseSchema": {"properties": {"success": {"title": "Success", "type": "boolean"}, "note": {"$ref": "#/components/schemas/InternalNoteSchema"}}, "required": ["success", "note"], "title": "InternalNoteCreateResponseSchema", "type": "object"}, "InternalNoteSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "note_type": {"title": "Note Type", "type": "string"}, "body": {"title": "Body", "type": "string"}, "pinned": {"title": "Pinned", "type": "boolean"}, "lead_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Lead Id"}, "deal_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Deal Id"}, "service_request_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Service Request Id"}, "project_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Project Id"}, "author_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Author Id"}, "author_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Author Name"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "updated_at": {"format": "date-time", "title": "Updated At", "type": "string"}}, "required": ["id", "note_type", "body", "pinned", "created_at", "updated_at"], "title": "InternalNoteSchema", "type": "object"}, "InternalNoteCreateSchema": {"properties": {"body": {"title": "Body", "type": "string"}, "note_type": {"default": "office", "enum": ["office", "call"], "title": "Note Type", "type": "string"}}, "required": ["body"], "title": "InternalNoteCreateSchema", "type": "object"}, "LeadClassificationUpdateResponseSchema": {"properties": {"success": {"title": "Success", "type": "boolean"}, "lead_id": {"title": "Lead Id", "type": "integer"}, "classification": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Classification"}, "inbox_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Inbox Status"}, "deal_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Deal Id"}}, "required": ["success", "lead_id"], "title": "LeadClassificationUpdateResponseSchema", "type": "object"}, "LeadClassificationUpdateSchema": {"properties": {"classification": {"anyOf": [{"enum": ["qualified", "unqualified", "not_reachable", "booked", "duplicate", "spam", "test"], "type": "string"}, {"type": "null"}], "title": "Classification"}, "inbox_status": {"anyOf": [{"enum": ["new", "needs_response", "awaiting_customer", "routed", "closed"], "type": "string"}, {"type": "null"}], "title": "Inbox Status"}, "lead_type": {"anyOf": [{"enum": ["install", "repair"], "type": "string"}, {"type": "null"}], "title": "Lead Type"}}, "title": "LeadClassificationUpdateSchema", "type": "object"}, "LeadFullSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "received_at": {"format": "date-time", "title": "Received At", "type": "string"}, "updated_at": {"format": "date-time", "title": "Updated At", "type": "string"}, "lead_type": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Lead Type"}, "status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "inbox_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Inbox Status"}, "source": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Source"}, "customer_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Customer Id"}, "service_location_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Service Location Id"}, "st_customer_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "St Customer Id"}, "st_location_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "St Location Id"}, "quote_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Quote Id"}, "deal_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Deal Id"}, "service_request_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Service Request Id"}, "pipedrive_deal_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Pipedrive Deal Id"}, "email": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Email"}, "phone": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Phone"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "lead_classification": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Lead Classification"}, "internal_notes": {"default": [], "items": {"$ref": "#/components/schemas/InternalNoteSchema"}, "title": "Internal Notes", "type": "array"}, "data": {"anyOf": [{"additionalProperties": true, "type": "object"}, {"type": "null"}], "title": "Data"}}, "required": ["id", "created_at", "received_at", "updated_at"], "title": "LeadFullSchema", "type": "object"}, "DealLabelSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "color": {"title": "Color", "type": "string"}, "is_active": {"title": "Is Active", "type": "boolean"}}, "required": ["id", "name", "color", "is_active"], "title": "DealLabelSchema", "type": "object"}, "DealListItemSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "address": {"title": "Address", "type": "string"}, "customer_name": {"title": "Customer Name", "type": "string"}, "city": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "City"}, "region": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Region"}, "stage": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Stage"}, "status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "pipedrive_sync_attention_required": {"default": false, "title": "Pipedrive Sync Attention Required", "type": "boolean"}, "pipedrive_sync_attention_reason": {"default": "", "title": "Pipedrive Sync Attention Reason", "type": "string"}, "needs_response": {"default": false, "title": "Needs Response", "type": "boolean"}, "needs_response_channels": {"default": [], "items": {"enum": ["email", "sms"], "type": "string"}, "title": "Needs Response Channels", "type": "array"}, "needs_response_since": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Needs Response Since"}, "salesperson_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Salesperson Id"}, "salesperson_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Salesperson Name"}, "created_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Created At"}, "last_action_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Last Action At"}, "last_customer_action_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Last Customer Action At"}, "last_team_action_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Last Team Action At"}, "won_time": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Won Time"}, "closed_time": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Closed Time"}, "referral": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Referral"}, "deal_size": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Deal Size"}, "proposal_uuid": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Proposal Uuid"}, "quote_count": {"title": "Quote Count", "type": "integer"}, "custom_field_values": {"additionalProperties": true, "default": {}, "title": "Custom Field Values", "type": "object"}, "labels": {"default": [], "items": {"$ref": "#/components/schemas/DealLabelSchema"}, "title": "Labels", "type": "array"}}, "required": ["id", "address", "customer_name", "quote_count"], "title": "DealListItemSchema", "type": "object"}, "DealListResponseSchema": {"properties": {"items": {"items": {"$ref": "#/components/schemas/DealListItemSchema"}, "title": "Items", "type": "array"}, "total": {"title": "Total", "type": "integer"}, "page": {"title": "Page", "type": "integer"}, "page_size": {"title": "Page Size", "type": "integer"}, "total_pages": {"title": "Total Pages", "type": "integer"}}, "required": ["items", "total", "page", "page_size", "total_pages"], "title": "DealListResponseSchema", "type": "object"}, "DealFilterSchema": {"properties": {"stages": {"default": [], "items": {"type": "string"}, "title": "Stages", "type": "array"}, "statuses": {"default": [], "items": {"type": "string"}, "title": "Statuses", "type": "array"}, "date_preset": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Date Preset"}, "date_from": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Date From"}, "date_to": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Date To"}, "assigned_salesperson_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Assigned Salesperson Id"}, "label_ids": {"default": [], "items": {"type": "integer"}, "title": "Label Ids", "type": "array"}, "unlabeled": {"default": false, "title": "Unlabeled", "type": "boolean"}}, "title": "DealFilterSchema", "type": "object"}, "DealSavedFilterSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "visibility": {"title": "Visibility", "type": "string"}, "filters": {"$ref": "#/components/schemas/DealFilterSchema"}, "owner_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Owner Id"}, "owner_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Owner Name"}, "created_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Created At"}, "updated_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Updated At"}}, "required": ["id", "name", "visibility", "filters"], "title": "DealSavedFilterSchema", "type": "object"}, "DealSavedFilterCreateSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "visibility": {"default": "user", "title": "Visibility", "type": "string"}, "filters": {"$ref": "#/components/schemas/DealFilterSchema"}}, "required": ["name", "filters"], "title": "DealSavedFilterCreateSchema", "type": "object"}, "DealPreferencesSchema": {"properties": {"default_saved_filter_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Default Saved Filter Id"}, "list_columns": {"default": [], "items": {"type": "string"}, "title": "List Columns", "type": "array"}, "list_column_widths": {"additionalProperties": {"type": "integer"}, "default": {}, "title": "List Column Widths", "type": "object"}}, "title": "DealPreferencesSchema", "type": "object"}, "DealPreferencesUpdateSchema": {"properties": {"default_saved_filter_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Default Saved Filter Id"}, "list_columns": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "List Columns"}, "list_column_widths": {"anyOf": [{"additionalProperties": {"type": "integer"}, "type": "object"}, {"type": "null"}], "title": "List Column Widths"}}, "title": "DealPreferencesUpdateSchema", "type": "object"}, "DealSalespersonSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}}, "required": ["id", "name"], "title": "DealSalespersonSchema", "type": "object"}, "CRMActivityTypeSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "key": {"title": "Key", "type": "string"}, "name": {"title": "Name", "type": "string"}, "icon": {"title": "Icon", "type": "string"}, "color": {"title": "Color", "type": "string"}, "sort_order": {"title": "Sort Order", "type": "integer"}}, "required": ["id", "key", "name", "icon", "color", "sort_order"], "title": "CRMActivityTypeSchema", "type": "object"}, "DealCustomFieldDefinitionSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "field_type": {"title": "Field Type", "type": "string"}, "options": {"default": [], "items": {"type": "string"}, "title": "Options", "type": "array"}, "is_required": {"title": "Is Required", "type": "boolean"}}, "required": ["id", "name", "field_type", "is_required"], "title": "DealCustomFieldDefinitionSchema", "type": "object"}, "DealFilterOptionsSchema": {"properties": {"stages": {"items": {"type": "string"}, "title": "Stages", "type": "array"}, "statuses": {"items": {"type": "string"}, "title": "Statuses", "type": "array"}, "labels": {"default": [], "items": {"$ref": "#/components/schemas/DealLabelSchema"}, "title": "Labels", "type": "array"}, "custom_fields": {"default": [], "items": {"$ref": "#/components/schemas/DealCustomFieldDefinitionSchema"}, "title": "Custom Fields", "type": "array"}}, "required": ["stages", "statuses"], "title": "DealFilterOptionsSchema", "type": "object"}, "DealKanbanColumnSchema": {"properties": {"stage_id": {"title": "Stage Id", "type": "integer"}, "stage_name": {"title": "Stage Name", "type": "string"}, "sort_order": {"title": "Sort Order", "type": "integer"}, "probability": {"title": "Probability", "type": "integer"}, "total_value": {"title": "Total Value", "type": "number"}, "weighted_value": {"title": "Weighted Value", "type": "number"}, "items": {"items": {"$ref": "#/components/schemas/DealListItemSchema"}, "title": "Items", "type": "array"}}, "required": ["stage_id", "stage_name", "sort_order", "probability", "total_value", "weighted_value", "items"], "title": "DealKanbanColumnSchema", "type": "object"}, "DealKanbanResponseSchema": {"properties": {"columns": {"items": {"$ref": "#/components/schemas/DealKanbanColumnSchema"}, "title": "Columns", "type": "array"}, "unassigned": {"items": {"$ref": "#/components/schemas/DealListItemSchema"}, "title": "Unassigned", "type": "array"}}, "required": ["columns", "unassigned"], "title": "DealKanbanResponseSchema", "type": "object"}, "DealLabelCreateAssignSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "color": {"title": "Color", "type": "string"}}, "required": ["name", "color"], "title": "DealLabelCreateAssignSchema", "type": "object"}, "AuditEventSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "event_type": {"title": "Event Type", "type": "string"}, "subject_type": {"title": "Subject Type", "type": "string"}, "subject_id": {"title": "Subject Id", "type": "string"}, "subject_label": {"title": "Subject Label", "type": "string"}, "actor_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Actor Id"}, "actor_name": {"title": "Actor Name", "type": "string"}, "actor_type": {"title": "Actor Type", "type": "string"}, "changes": {"additionalProperties": true, "title": "Changes", "type": "object"}, "metadata": {"additionalProperties": true, "title": "Metadata", "type": "object"}, "occurred_at": {"title": "Occurred At", "type": "string"}, "created_at": {"title": "Created At", "type": "string"}}, "required": ["id", "event_type", "subject_type", "subject_id", "subject_label", "actor_name", "actor_type", "changes", "metadata", "occurred_at", "created_at"], "title": "AuditEventSchema", "type": "object"}, "CRMActivitySchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "activity_type_id": {"title": "Activity Type Id", "type": "integer"}, "activity_type_key": {"title": "Activity Type Key", "type": "string"}, "activity_type_name": {"title": "Activity Type Name", "type": "string"}, "activity_type_icon": {"title": "Activity Type Icon", "type": "string"}, "activity_type_color": {"title": "Activity Type Color", "type": "string"}, "subject": {"title": "Subject", "type": "string"}, "details": {"title": "Details", "type": "string"}, "owner_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Owner Id"}, "owner_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Owner Name"}, "created_by_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Created By Id"}, "created_by_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Created By Name"}, "due_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Due At"}, "duration_minutes": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Duration Minutes"}, "all_day": {"title": "All Day", "type": "boolean"}, "priority": {"title": "Priority", "type": "string"}, "status": {"title": "Status", "type": "string"}, "completed_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Completed At"}, "calendar_sync_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Calendar Sync Status"}, "calendar_sync_error": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Calendar Sync Error"}, "created_at": {"title": "Created At", "type": "string"}, "updated_at": {"title": "Updated At", "type": "string"}}, "required": ["id", "activity_type_id", "activity_type_key", "activity_type_name", "activity_type_icon", "activity_type_color", "subject", "details", "all_day", "priority", "status", "created_at", "updated_at"], "title": "CRMActivitySchema", "type": "object"}, "DealAcquisitionSchema": {"properties": {"source": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Source"}, "medium": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Medium"}, "campaign": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Campaign"}, "term": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Term"}, "content": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Content"}, "click_id_type": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Click Id Type"}, "click_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Click Id"}, "initial_landing_page": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Initial Landing Page"}, "initial_referrer": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Initial Referrer"}, "latest_landing_page": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Latest Landing Page"}, "latest_referrer": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Latest Referrer"}, "posthog_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Posthog Url"}, "referrer": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Referrer"}}, "title": "DealAcquisitionSchema", "type": "object"}, "DealApplicableAHJSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "level_code": {"default": "", "title": "Level Code", "type": "string"}}, "required": ["name"], "title": "DealApplicableAHJSchema", "type": "object"}, "DealCustomerSchema": {"properties": {"id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Id"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "email": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Email"}, "phone": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Phone"}, "st_customer_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "St Customer Id"}}, "title": "DealCustomerSchema", "type": "object"}, "DealDetailSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "proposal_uuid": {"title": "Proposal Uuid", "type": "string"}, "latest_quote_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Latest Quote Id"}, "customer": {"$ref": "#/components/schemas/DealCustomerSchema"}, "service_location": {"anyOf": [{"$ref": "#/components/schemas/ServiceLocationSchema"}, {"type": "null"}]}, "address": {"title": "Address", "type": "string"}, "address_street": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address Street"}, "address_subpremise": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address Subpremise"}, "address_city": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address City"}, "address_state": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address State"}, "address_zipcode": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address Zipcode"}, "address_county": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address County"}, "sqft": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Sqft"}, "floors": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Floors"}, "bedrooms": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Bedrooms"}, "year_built": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year Built"}, "ahj_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ahj Name"}, "applicable_ahjs": {"default": [], "items": {"$ref": "#/components/schemas/DealApplicableAHJSchema"}, "title": "Applicable Ahjs", "type": "array"}, "pipedrive_deal_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Pipedrive Deal Id"}, "pipedrive_stage": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Pipedrive Stage"}, "pipedrive_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Pipedrive Status"}, "pipedrive_sync_attention_required": {"default": false, "title": "Pipedrive Sync Attention Required", "type": "boolean"}, "pipedrive_sync_attention_reason": {"default": "", "title": "Pipedrive Sync Attention Reason", "type": "string"}, "stage_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Stage Id"}, "stage_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Stage Name"}, "status": {"title": "Status", "type": "string"}, "won_time": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Won Time"}, "lost_time": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Lost Time"}, "lost_reason": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Lost Reason"}, "lost_reason_detail": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Lost Reason Detail"}, "assigned_salesperson_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Assigned Salesperson Id"}, "assigned_salesperson_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Assigned Salesperson Name"}, "custom_field_values": {"additionalProperties": true, "default": {}, "title": "Custom Field Values", "type": "object"}, "custom_fields": {"default": [], "items": {"$ref": "#/components/schemas/DealCustomFieldDefinitionSchema"}, "title": "Custom Fields", "type": "array"}, "labels": {"default": [], "items": {"$ref": "#/components/schemas/DealLabelSchema"}, "title": "Labels", "type": "array"}, "notes": {"default": [], "items": {"$ref": "#/components/schemas/DealNoteSchema"}, "title": "Notes", "type": "array"}, "activities": {"default": [], "items": {"$ref": "#/components/schemas/CRMActivitySchema"}, "title": "Activities", "type": "array"}, "audit_events": {"default": [], "items": {"$ref": "#/components/schemas/AuditEventSchema"}, "title": "Audit Events", "type": "array"}, "st_location_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "St Location Id"}, "media_upload_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Media Upload Url"}, "zillow_photos": {"anyOf": [{"items": {}, "type": "array"}, {"type": "null"}], "title": "Zillow Photos"}, "media": {"items": {"$ref": "#/components/schemas/DealMediaSchema"}, "title": "Media", "type": "array"}, "categories": {"items": {"$ref": "#/components/schemas/ProposalCategorySchema"}, "title": "Categories", "type": "array"}, "proposals": {"items": {"$ref": "#/components/schemas/DealProposalGroupSchema"}, "title": "Proposals", "type": "array"}, "proposal_quotes": {"items": {"$ref": "#/components/schemas/DealProposalQuoteSchema"}, "title": "Proposal Quotes", "type": "array"}, "all_quotes": {"items": {"$ref": "#/components/schemas/DealQuoteSchema"}, "title": "All Quotes", "type": "array"}, "utility_data": {"anyOf": [{"$ref": "#/components/schemas/DealUtilityDataSchema"}, {"type": "null"}]}, "latest_quote_note_to_customer": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Latest Quote Note To Customer"}, "latest_quote_advisor_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Latest Quote Advisor Name"}, "latest_quote_advisor_image": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Latest Quote Advisor Image"}, "originating_lead": {"anyOf": [{"$ref": "#/components/schemas/DealOriginatingLeadSchema"}, {"type": "null"}]}}, "required": ["id", "proposal_uuid", "customer", "address", "status", "media", "categories", "proposals", "proposal_quotes", "all_quotes"], "title": "DealDetailSchema", "type": "object"}, "DealMediaSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "url": {"title": "Url", "type": "string"}, "caption": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Caption"}, "media_type": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Media Type"}, "tag": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Tag"}, "created_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Created At"}, "upload_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Upload Status"}, "original_filename": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Original Filename"}, "content_type": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Content Type"}, "file_size_bytes": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "File Size Bytes"}, "upload_error_code": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Upload Error Code"}, "upload_error_message": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Upload Error Message"}, "uploaded_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Uploaded At"}, "transcode_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Transcode Status"}, "transcoded_s3_key": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Transcoded S3 Key"}, "transcode_error_message": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Transcode Error Message"}, "playback_state": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Playback State"}}, "required": ["id", "url"], "title": "DealMediaSchema", "type": "object"}, "DealNoteSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "body": {"title": "Body", "type": "string"}, "note_type": {"title": "Note Type", "type": "string"}, "pinned": {"title": "Pinned", "type": "boolean"}, "author_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Author Id"}, "author_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Author Name"}, "created_at": {"title": "Created At", "type": "string"}, "updated_at": {"title": "Updated At", "type": "string"}}, "required": ["id", "body", "note_type", "pinned", "created_at", "updated_at"], "title": "DealNoteSchema", "type": "object"}, "DealOriginatingLeadSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "lead_type": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Lead Type"}, "source": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Source"}, "received_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Received At"}, "customer_request": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Customer Request"}, "source_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Source Url"}, "acquisition": {"anyOf": [{"$ref": "#/components/schemas/DealAcquisitionSchema"}, {"type": "null"}]}}, "required": ["id"], "title": "DealOriginatingLeadSchema", "type": "object"}, "DealProposalGroupSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "uuid": {"title": "Uuid", "type": "string"}, "title": {"title": "Title", "type": "string"}, "quote_count": {"title": "Quote Count", "type": "integer"}, "quotes": {"items": {"$ref": "#/components/schemas/DealProposalQuoteSchema"}, "title": "Quotes", "type": "array"}}, "required": ["id", "uuid", "title", "quote_count", "quotes"], "title": "DealProposalGroupSchema", "type": "object"}, "DealProposalQuoteSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "proposal_id": {"title": "Proposal Id", "type": "integer"}, "proposal_uuid": {"title": "Proposal Uuid", "type": "string"}, "quote_id": {"title": "Quote Id", "type": "integer"}, "quote_uuid": {"title": "Quote Uuid", "type": "string"}, "category": {"title": "Category", "type": "string"}, "description": {"title": "Description", "type": "string"}, "subtotal": {"title": "Subtotal", "type": "number"}, "price_after_incentives": {"title": "Price After Incentives", "type": "number"}, "st_estimate_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "St Estimate Id"}, "advisor_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Advisor Name"}, "created_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Created At"}, "sort_order": {"title": "Sort Order", "type": "integer"}}, "required": ["id", "proposal_id", "proposal_uuid", "quote_id", "quote_uuid", "category", "description", "subtotal", "price_after_incentives", "sort_order"], "title": "DealProposalQuoteSchema", "type": "object"}, "DealQuoteSchema": {"properties": {"quote_id": {"title": "Quote Id", "type": "integer"}, "quote_uuid": {"title": "Quote Uuid", "type": "string"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "contents_summary": {"default": [], "items": {"type": "string"}, "title": "Contents Summary", "type": "array"}, "subtotal": {"title": "Subtotal", "type": "number"}, "price_after_incentives": {"title": "Price After Incentives", "type": "number"}, "st_estimate_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "St Estimate Id"}, "advisor_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Advisor Name"}, "created_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Created At"}, "ui_state": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ui State"}, "quote_expires_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Quote Expires At"}, "in_proposal": {"title": "In Proposal", "type": "boolean"}, "proposal_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Proposal Id"}, "proposal_uuid": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Proposal Uuid"}, "proposal_quote_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Proposal Quote Id"}, "proposal_category": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Proposal Category"}, "proposal_description": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Proposal Description"}, "proposal_sort_order": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Proposal Sort Order"}}, "required": ["quote_id", "quote_uuid", "subtotal", "price_after_incentives", "in_proposal"], "title": "DealQuoteSchema", "type": "object"}, "DealUtilityDataSchema": {"properties": {"utility": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Utility"}, "meter_number": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Meter Number"}, "status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "message": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Message"}, "interval_minutes": {"default": [], "items": {"type": "number"}, "title": "Interval Minutes", "type": "array"}, "coverage_start": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Coverage Start"}, "coverage_end": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Coverage End"}, "coverage_days": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Coverage Days"}, "max_kw": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Max Kw"}, "max_amps_240v": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Max Amps 240V"}, "demand_source": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Demand Source"}, "processed_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Processed At"}, "updated_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Updated At"}}, "title": "DealUtilityDataSchema", "type": "object"}, "ProposalCategorySchema": {"properties": {"name": {"title": "Name", "type": "string"}, "sort_order": {"title": "Sort Order", "type": "integer"}}, "required": ["name", "sort_order"], "title": "ProposalCategorySchema", "type": "object"}, "ServiceLocationSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "identifier": {"title": "Identifier", "type": "string"}, "address_line1": {"title": "Address Line1", "type": "string"}, "address_line2": {"title": "Address Line2", "type": "string"}, "city": {"title": "City", "type": "string"}, "state": {"title": "State", "type": "string"}, "postal_code": {"title": "Postal Code", "type": "string"}, "country_code": {"title": "Country Code", "type": "string"}, "formatted_address": {"title": "Formatted Address", "type": "string"}, "county": {"title": "County", "type": "string"}, "latitude": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Latitude"}, "longitude": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Longitude"}, "timezone": {"title": "Timezone", "type": "string"}, "validation_status": {"title": "Validation Status", "type": "string"}, "validation_source": {"title": "Validation Source", "type": "string"}, "validated_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Validated At"}, "external_place_id": {"title": "External Place Id", "type": "string"}, "access_instructions": {"title": "Access Instructions", "type": "string"}, "st_location_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "St Location Id"}}, "required": ["id", "identifier", "address_line1", "address_line2", "city", "state", "postal_code", "country_code", "formatted_address", "county", "timezone", "validation_status", "validation_source", "external_place_id", "access_instructions"], "title": "ServiceLocationSchema", "type": "object"}, "DealUpdateSchema": {"properties": {"stage_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Stage Id"}, "status": {"anyOf": [{"enum": ["open", "won", "lost", "deleted"], "type": "string"}, {"type": "null"}], "title": "Status"}, "assigned_salesperson_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Assigned Salesperson Id"}, "lost_reason": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Lost Reason"}, "lost_reason_detail": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Lost Reason Detail"}, "custom_field_values": {"anyOf": [{"additionalProperties": true, "type": "object"}, {"type": "null"}], "title": "Custom Field Values"}, "label_ids": {"anyOf": [{"items": {"type": "integer"}, "type": "array"}, {"type": "null"}], "title": "Label Ids"}}, "title": "DealUpdateSchema", "type": "object"}, "DealNoteCreateSchema": {"properties": {"body": {"title": "Body", "type": "string"}, "note_type": {"default": "office", "enum": ["office", "call"], "title": "Note Type", "type": "string"}}, "required": ["body"], "title": "DealNoteCreateSchema", "type": "object"}, "CRMActivityCreateSchema": {"properties": {"activity_type_id": {"title": "Activity Type Id", "type": "integer"}, "subject": {"title": "Subject", "type": "string"}, "details": {"default": "", "title": "Details", "type": "string"}, "owner_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Owner Id"}, "due_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Due At"}, "duration_minutes": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Duration Minutes"}, "all_day": {"default": false, "title": "All Day", "type": "boolean"}, "priority": {"default": "normal", "enum": ["low", "normal", "high"], "title": "Priority", "type": "string"}}, "required": ["activity_type_id", "subject"], "title": "CRMActivityCreateSchema", "type": "object"}, "UpdateDealPropertyDetailsResponse": {"properties": {"success": {"title": "Success", "type": "boolean"}, "message": {"title": "Message", "type": "string"}}, "required": ["success", "message"], "title": "UpdateDealPropertyDetailsResponse", "type": "object"}, "DealPropertyDetailsRerunSchema": {"properties": {"mode": {"enum": ["none", "heat_load", "autoquote"], "title": "Mode", "type": "string"}, "quote_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Quote Id"}}, "required": ["mode"], "title": "DealPropertyDetailsRerunSchema", "type": "object"}, "UpdateDealPropertyDetailsSchema": {"properties": {"sqft": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Sqft"}, "floors": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Floors"}, "year_built": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year Built"}, "rerun": {"$ref": "#/components/schemas/DealPropertyDetailsRerunSchema"}}, "required": ["rerun"], "title": "UpdateDealPropertyDetailsSchema", "type": "object"}, "UpdateDealServiceLocationResponse": {"properties": {"success": {"title": "Success", "type": "boolean"}, "address": {"title": "Address", "type": "string"}, "service_location_id": {"title": "Service Location Id", "type": "integer"}, "linked_deal_count": {"title": "Linked Deal Count", "type": "integer"}}, "required": ["success", "address", "service_location_id", "linked_deal_count"], "title": "UpdateDealServiceLocationResponse", "type": "object"}, "UpdateDealServiceLocationSchema": {"properties": {"address_line1": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address Line1"}, "address_line2": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address Line2"}, "city": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "City"}, "state": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "State"}, "postal_code": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Postal Code"}, "country_code": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Country Code"}}, "title": "UpdateDealServiceLocationSchema", "type": "object"}, "CreateDealQuoteResponse": {"properties": {"success": {"title": "Success", "type": "boolean"}, "message": {"title": "Message", "type": "string"}, "quote_id": {"title": "Quote Id", "type": "integer"}}, "required": ["success", "message", "quote_id"], "title": "CreateDealQuoteResponse", "type": "object"}, "CreateDealQuoteSchema": {"properties": {"name": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": "", "title": "Name"}}, "title": "CreateDealQuoteSchema", "type": "object"}, "CreateProposalResponse": {"properties": {"success": {"title": "Success", "type": "boolean"}, "message": {"title": "Message", "type": "string"}, "proposal_id": {"title": "Proposal Id", "type": "integer"}, "proposal_uuid": {"title": "Proposal Uuid", "type": "string"}}, "required": ["success", "message", "proposal_id", "proposal_uuid"], "title": "CreateProposalResponse", "type": "object"}, "CreateProposalQuoteResponse": {"properties": {"success": {"title": "Success", "type": "boolean"}, "message": {"title": "Message", "type": "string"}, "quote_id": {"title": "Quote Id", "type": "integer"}, "proposal_quote_id": {"title": "Proposal Quote Id", "type": "integer"}}, "required": ["success", "message", "quote_id", "proposal_quote_id"], "title": "CreateProposalQuoteResponse", "type": "object"}, "CreateProposalQuoteSchema": {"properties": {"proposal_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Proposal Id"}, "category": {"title": "Category", "type": "string"}, "description": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": "", "title": "Description"}}, "required": ["category"], "title": "CreateProposalQuoteSchema", "type": "object"}, "AttachQuoteToProposalSchema": {"properties": {"quote_id": {"title": "Quote Id", "type": "integer"}, "category": {"title": "Category", "type": "string"}, "description": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": "", "title": "Description"}}, "required": ["quote_id", "category"], "title": "AttachQuoteToProposalSchema", "type": "object"}, "UpdateProposalQuoteSchema": {"properties": {"proposal_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Proposal Id"}, "category": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Category"}, "description": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Description"}}, "title": "UpdateProposalQuoteSchema", "type": "object"}, "CreateProposalCategorySchema": {"properties": {"name": {"title": "Name", "type": "string"}, "sort_order": {"default": 0, "title": "Sort Order", "type": "integer"}}, "required": ["name"], "title": "CreateProposalCategorySchema", "type": "object"}, "NECLoadCalcSchema": {"properties": {"doc": {"additionalProperties": true, "title": "Doc", "type": "object"}, "rev": {"title": "Rev", "type": "integer"}, "version": {"title": "Version", "type": "string"}}, "required": ["doc", "rev", "version"], "title": "NECLoadCalcSchema", "type": "object"}, "StoredFileSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "identifier": {"title": "Identifier", "type": "string"}, "display_name": {"title": "Display Name", "type": "string"}, "content_type": {"title": "Content Type", "type": "string"}, "file_size_bytes": {"title": "File Size Bytes", "type": "integer"}, "current_version_number": {"title": "Current Version Number", "type": "integer"}, "version_count": {"title": "Version Count", "type": "integer"}, "created_by_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Created By Name"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "uploaded_at": {"format": "date-time", "title": "Uploaded At", "type": "string"}, "permit_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Permit Id"}, "incentive_application_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Incentive Application Id"}, "project_area": {"default": "", "title": "Project Area", "type": "string"}}, "required": ["id", "identifier", "display_name", "content_type", "file_size_bytes", "current_version_number", "version_count", "created_at", "uploaded_at"], "title": "StoredFileSchema", "type": "object"}, "StoredFileUploadResponse": {"properties": {"file": {"$ref": "#/components/schemas/StoredFileSchema"}, "version_identifier": {"title": "Version Identifier", "type": "string"}, "presigned_url": {"title": "Presigned Url", "type": "string"}}, "required": ["file", "version_identifier", "presigned_url"], "title": "StoredFileUploadResponse", "type": "object"}, "StoredFileUploadRequest": {"properties": {"filename": {"title": "Filename", "type": "string"}, "content_type": {"title": "Content Type", "type": "string"}, "file_size_bytes": {"title": "File Size Bytes", "type": "integer"}, "replace_file_identifier": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Replace File Identifier"}, "permit_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Permit Id"}, "incentive_application_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Incentive Application Id"}, "project_area": {"default": "", "enum": ["", "post_install"], "title": "Project Area", "type": "string"}}, "required": ["filename", "content_type", "file_size_bytes"], "title": "StoredFileUploadRequest", "type": "object"}, "StoredFileUploadActionRequest": {"properties": {"version_identifier": {"title": "Version Identifier", "type": "string"}}, "required": ["version_identifier"], "title": "StoredFileUploadActionRequest", "type": "object"}, "StoredFileUploadFailureRequest": {"properties": {"version_identifier": {"title": "Version Identifier", "type": "string"}, "error_message": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Error Message"}}, "required": ["version_identifier"], "title": "StoredFileUploadFailureRequest", "type": "object"}, "StoredFileVersionSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "identifier": {"title": "Identifier", "type": "string"}, "version_number": {"title": "Version Number", "type": "integer"}, "original_filename": {"title": "Original Filename", "type": "string"}, "content_type": {"title": "Content Type", "type": "string"}, "file_size_bytes": {"title": "File Size Bytes", "type": "integer"}, "created_by_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Created By Name"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "uploaded_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Uploaded At"}}, "required": ["id", "identifier", "version_number", "original_filename", "content_type", "file_size_bytes", "created_at"], "title": "StoredFileVersionSchema", "type": "object"}, "StoredFileAccessResponse": {"properties": {"url": {"title": "Url", "type": "string"}, "disposition": {"title": "Disposition", "type": "string"}, "expires_at": {"format": "date-time", "title": "Expires At", "type": "string"}}, "required": ["url", "disposition", "expires_at"], "title": "StoredFileAccessResponse", "type": "object"}, "CRMActivityListItemSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "activity_type_id": {"title": "Activity Type Id", "type": "integer"}, "activity_type_key": {"title": "Activity Type Key", "type": "string"}, "activity_type_name": {"title": "Activity Type Name", "type": "string"}, "activity_type_icon": {"title": "Activity Type Icon", "type": "string"}, "activity_type_color": {"title": "Activity Type Color", "type": "string"}, "subject": {"title": "Subject", "type": "string"}, "details": {"title": "Details", "type": "string"}, "owner_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Owner Id"}, "owner_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Owner Name"}, "created_by_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Created By Id"}, "created_by_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Created By Name"}, "due_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Due At"}, "duration_minutes": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Duration Minutes"}, "all_day": {"title": "All Day", "type": "boolean"}, "priority": {"title": "Priority", "type": "string"}, "status": {"title": "Status", "type": "string"}, "completed_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Completed At"}, "calendar_sync_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Calendar Sync Status"}, "calendar_sync_error": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Calendar Sync Error"}, "created_at": {"title": "Created At", "type": "string"}, "updated_at": {"title": "Updated At", "type": "string"}, "deal_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Deal Id"}, "lead_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Lead Id"}, "customer_name": {"default": "", "title": "Customer Name", "type": "string"}, "deal_address": {"default": "", "title": "Deal Address", "type": "string"}, "deal_stage": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Deal Stage"}, "project_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Project Id"}, "project_record_label": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Project Record Label"}}, "required": ["id", "activity_type_id", "activity_type_key", "activity_type_name", "activity_type_icon", "activity_type_color", "subject", "details", "all_day", "priority", "status", "created_at", "updated_at"], "title": "CRMActivityListItemSchema", "type": "object"}, "CRMActivityListResponseSchema": {"properties": {"items": {"items": {"$ref": "#/components/schemas/CRMActivityListItemSchema"}, "title": "Items", "type": "array"}, "total": {"title": "Total", "type": "integer"}, "page": {"title": "Page", "type": "integer"}, "page_size": {"title": "Page Size", "type": "integer"}, "total_pages": {"title": "Total Pages", "type": "integer"}}, "required": ["items", "total", "page", "page_size", "total_pages"], "title": "CRMActivityListResponseSchema", "type": "object"}, "CRMActivityUpdateSchema": {"properties": {"activity_type_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Activity Type Id"}, "subject": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Subject"}, "details": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Details"}, "owner_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Owner Id"}, "due_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Due At"}, "duration_minutes": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Duration Minutes"}, "all_day": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "All Day"}, "priority": {"anyOf": [{"enum": ["low", "normal", "high"], "type": "string"}, {"type": "null"}], "title": "Priority"}, "status": {"anyOf": [{"enum": ["open", "completed", "cancelled"], "type": "string"}, {"type": "null"}], "title": "Status"}}, "title": "CRMActivityUpdateSchema", "type": "object"}, "GetTemplatesResponseModel": {"properties": {"data": {"items": {"$ref": "#/components/schemas/PodiumTemplate"}, "title": "Data", "type": "array"}, "metadata": {"anyOf": [{"$ref": "#/components/schemas/TemplatesMetadata"}, {"type": "null"}]}}, "title": "GetTemplatesResponseModel", "type": "object"}, "PodiumTemplate": {"properties": {"uid": {"description": "Podium unique identifier for template.", "format": "uuid", "title": "Uid", "type": "string"}, "name": {"description": "Name of the template.", "title": "Name", "type": "string"}, "body": {"description": "Message body of the template.", "title": "Body", "type": "string"}, "type": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Type of template (e.g. SMS).", "title": "Type"}, "locationUid": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "description": "Location the template belongs to.", "title": "Locationuid"}}, "required": ["uid", "name", "body"], "title": "PodiumTemplate", "type": "object"}, "TemplatesMetadata": {"properties": {"nextCursor": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Nextcursor"}, "previousCursor": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Previouscursor"}, "totalItems": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Totalitems"}, "url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Url"}}, "title": "TemplatesMetadata", "type": "object"}, "AdminMediaSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "url": {"title": "Url", "type": "string"}, "photo_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Photo Id"}, "tag": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Tag"}, "caption": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Caption"}, "media_type": {"anyOf": [{"enum": ["image", "video", "text"], "type": "string"}, {"type": "null"}], "title": "Media Type"}, "created_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Created At"}, "updated_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Updated At"}, "upload_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Upload Status"}, "original_filename": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Original Filename"}, "content_type": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Content Type"}, "file_size_bytes": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "File Size Bytes"}, "upload_error_code": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Upload Error Code"}, "upload_error_message": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Upload Error Message"}, "uploaded_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Uploaded At"}, "transcode_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Transcode Status"}, "transcoded_s3_key": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Transcoded S3 Key"}, "transcode_error_message": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Transcode Error Message"}, "playback_state": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Playback State"}}, "required": ["id", "url"], "title": "AdminMediaSchema", "type": "object"}, "AdminCartItemSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "quantity": {"title": "Quantity", "type": "integer"}, "unit_price": {"title": "Unit Price", "type": "number"}, "price": {"title": "Price", "type": "number"}, "description": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Description"}, "contractDescription": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Contractdescription"}, "imageUrl": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Imageurl"}, "link": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Link"}, "displayOrder": {"title": "Displayorder", "type": "integer"}, "st_type": {"anyOf": [{"enum": ["Service", "Equipment", "Material", "PriceModifier", "None"], "type": "string"}, {"type": "null"}], "title": "St Type"}}, "required": ["id", "name", "quantity", "unit_price", "price", "displayOrder"], "title": "AdminCartItemSchema", "type": "object"}, "AdminCustomerSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "email": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Email"}, "phone": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Phone"}, "st_customer_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "St Customer Id"}}, "required": ["id"], "title": "AdminCustomerSchema", "type": "object"}, "AdminDealSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "uuid": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Uuid"}, "st_location_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "St Location Id"}, "customer": {"$ref": "#/components/schemas/AdminCustomerSchema"}, "media": {"anyOf": [{"items": {"$ref": "#/components/schemas/AdminMediaSchema"}, "type": "array"}, {"type": "null"}], "title": "Media"}, "media_upload_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Media Upload Url"}, "address": {"title": "Address", "type": "string"}, "addressStreet": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Addressstreet"}, "addressSubpremise": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Addresssubpremise"}, "addressCity": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Addresscity"}, "addressState": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Addressstate"}, "addressZipcode": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Addresszipcode"}, "addressCounty": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Addresscounty"}, "sqft": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Sqft"}, "yearBuilt": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Yearbuilt"}, "floors": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Floors"}, "propertySqft": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Propertysqft"}, "propertyYearBuilt": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Propertyyearbuilt"}, "propertyFloors": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Propertyfloors"}, "ahjName": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ahjname"}, "pipedrive_stage": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Pipedrive Stage"}, "pipedrive_deal_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Pipedrive Deal Id"}}, "required": ["id", "customer", "address"], "title": "AdminDealSchema", "type": "object"}, "AdminDiscountSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "code": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Code"}, "st_description": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "St Description"}, "amount": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Amount"}, "st_sku_id": {"title": "St Sku Id", "type": "integer"}}, "required": ["id", "name", "st_sku_id"], "title": "AdminDiscountSchema", "type": "object"}, "AdminFinancingSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "amount": {"title": "Amount", "type": "number"}}, "required": ["id", "name", "amount"], "title": "AdminFinancingSchema", "type": "object"}, "AdminIncentiveSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "description": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": "", "title": "Description"}, "amount": {"title": "Amount", "type": "number"}, "entity": {"title": "Entity", "type": "string"}, "quantity": {"title": "Quantity", "type": "integer"}}, "required": ["id", "name", "amount", "entity", "quantity"], "title": "AdminIncentiveSchema", "type": "object"}, "AdminLoan": {"properties": {"id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Id"}, "provider": {"title": "Provider", "type": "string"}, "link": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Link"}, "fico": {"title": "Fico", "type": "number"}, "apr": {"title": "Apr", "type": "number"}, "term": {"title": "Term", "type": "number"}, "amount": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Amount"}}, "required": ["provider", "fico", "apr", "term"], "title": "AdminLoan", "type": "object"}, "AdminQuoteSchema": {"properties": {"uuid": {"title": "Uuid", "type": "string"}, "id": {"title": "Id", "type": "integer"}, "sent_to_customer": {"title": "Sent To Customer", "type": "boolean"}, "st_estimate_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "St Estimate Id"}, "dealImg": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Dealimg"}, "advisorId": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Advisorid"}, "advisorName": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Advisorname"}, "advisorImage": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Advisorimage"}, "noteToCustomer": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Notetocustomer"}, "depositPaid": {"title": "Depositpaid", "type": "boolean"}, "uiState": {"enum": ["SCHEDULE_VISIT", "PAYDEPOSIT", "TAKE_PHOTOS", "APP_ENG", "SIGN_CONTRACT", "ESIGN_CONTRACT", "CONTRACT_WIP", "PRE_INSTALL"], "title": "Uistate", "type": "string"}, "designHeatTempF": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Designheattempf"}, "designHeatLoadBtu": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Designheatloadbtu"}, "designCoolTempF": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Designcooltempf"}, "designCoolLoadBtu": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Designcoolloadbtu"}, "subtotal": {"title": "Subtotal", "type": "number"}, "priceAfterIncentives": {"title": "Priceafterincentives", "type": "number"}, "sold_hours": {"title": "Sold Hours", "type": "number"}, "incentives": {"items": {"$ref": "#/components/schemas/AdminIncentiveSchema"}, "title": "Incentives", "type": "array"}, "deal": {"$ref": "#/components/schemas/AdminDealSchema"}, "cartitems": {"items": {"$ref": "#/components/schemas/AdminCartItemSchema"}, "title": "Cartitems", "type": "array"}, "discounts": {"items": {"$ref": "#/components/schemas/AdminDiscountSchema"}, "title": "Discounts", "type": "array"}, "loans": {"anyOf": [{"items": {"$ref": "#/components/schemas/AdminLoan"}, "type": "array"}, {"type": "null"}], "title": "Loans"}, "financing": {"items": {"$ref": "#/components/schemas/AdminFinancingSchema"}, "title": "Financing", "type": "array"}, "zillow_photos": {"anyOf": [{"items": {"$ref": "#/components/schemas/OriginalPhotos"}, "type": "array"}, {"type": "null"}], "title": "Zillow Photos"}, "referred_by": {"anyOf": [{"items": {"$ref": "#/components/schemas/AdminReferralSchema"}, "type": "array"}, {"type": "null"}], "title": "Referred By"}, "quoteExpiresAt": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Quoteexpiresat"}, "contractExpiresAt": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Contractexpiresat"}}, "required": ["uuid", "id", "sent_to_customer", "depositPaid", "uiState", "subtotal", "priceAfterIncentives", "sold_hours", "incentives", "deal", "cartitems", "discounts", "financing"], "title": "AdminQuoteSchema", "type": "object"}, "AdminReferralSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "referrer_customer": {"title": "Referrer Customer", "type": "string"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}}, "required": ["id", "referrer_customer", "created_at"], "title": "AdminReferralSchema", "type": "object"}, "OriginalPhotos": {"properties": {"caption": {"title": "Caption", "type": "string"}, "mixedSources": {"additionalProperties": {"items": {"$ref": "#/components/schemas/PhotoObject"}, "type": "array"}, "title": "Mixedsources", "type": "object"}}, "required": ["caption", "mixedSources"], "title": "OriginalPhotos", "type": "object"}, "PhotoObject": {"properties": {"url": {"title": "Url", "type": "string"}, "width": {"title": "Width", "type": "integer"}}, "required": ["url", "width"], "title": "PhotoObject", "type": "object"}, "QuoteUpdateSchema": {"properties": {"st_estimate_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "St Estimate Id"}, "noteToCustomer": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Notetocustomer"}, "depositPaid": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Depositpaid"}, "uiState": {"anyOf": [{"enum": ["SCHEDULE_VISIT", "PAYDEPOSIT", "TAKE_PHOTOS", "APP_ENG", "SIGN_CONTRACT", "ESIGN_CONTRACT", "CONTRACT_WIP", "PRE_INSTALL"], "type": "string"}, {"type": "null"}], "title": "Uistate"}, "designHeatTempF": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Designheattempf"}, "designHeatLoadBtu": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Designheatloadbtu"}, "designCoolTempF": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Designcooltempf"}, "designCoolLoadBtu": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Designcoolloadbtu"}, "deal_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Deal Id"}, "quoteExpiresAt": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Quoteexpiresat"}, "contractExpiresAt": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Contractexpiresat"}}, "title": "QuoteUpdateSchema", "type": "object"}, "QuoteSchemaSimple": {"properties": {"id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Id"}, "created_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Created At"}, "address": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address"}, "customer_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Customer Name"}, "ui_state": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ui State"}, "pipedrive_stage": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Pipedrive Stage"}, "pipedrive_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Pipedrive Status"}}, "title": "QuoteSchemaSimple", "type": "object"}, "AddItemSchema": {"properties": {"st_sku_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "St Sku Id"}, "id": {"anyOf": [{"type": "integer"}, {"type": "string"}, {"type": "null"}], "title": "Id"}}, "title": "AddItemSchema", "type": "object"}, "CartItemUpdateSchema": {"properties": {"name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "quantity": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Quantity"}, "unit_price": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Unit Price"}, "description": {"default": "", "title": "Description", "type": "string"}, "contractDescription": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Contractdescription"}, "st_description": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "St Description"}}, "title": "CartItemUpdateSchema", "type": "object"}, "DiscountItemUpdateSchema": {"properties": {"quantity": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Quantity"}}, "title": "DiscountItemUpdateSchema", "type": "object"}, "IncentiveItemUpdateSchema": {"properties": {"quantity": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Quantity"}, "description": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Description"}}, "title": "IncentiveItemUpdateSchema", "type": "object"}, "FinanceItemUpdateSchema": {"properties": {"name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "quantity": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Quantity"}, "amount": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Amount"}}, "title": "FinanceItemUpdateSchema", "type": "object"}, "ContractSchema": {"properties": {"inclusions": {"anyOf": [{"$ref": "#/components/schemas/InclusionSchema"}, {"type": "null"}]}, "id": {"title": "ID", "type": "integer"}, "org_id": {"title": "Org", "type": "integer"}, "uuid": {"format": "uuid", "title": "Uuid", "type": "string"}, "quote_id": {"title": "Quote", "type": "integer"}, "created_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Created At"}, "updated_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Updated At"}, "contract_s3_unsigned": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Contract S3 Unsigned"}, "contract_s3_custom_unsigned": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Contract S3 Custom Unsigned"}, "contract_s3_signed": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Contract S3 Signed"}, "sent_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Sent At"}, "signed_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Signed At"}, "active": {"default": false, "title": "Active", "type": "boolean"}, "data": {"title": "Data", "type": "object"}, "is_test": {"default": false, "title": "Is Test", "type": "boolean"}}, "required": ["id", "org_id", "quote_id"], "title": "ContractSchema", "type": "object"}, "InclusionSchema": {"properties": {"html_data": {"title": "Html Data", "type": "string"}, "template": {"title": "Template", "type": "boolean"}}, "required": ["html_data", "template"], "title": "InclusionSchema", "type": "object"}, "ContractSchemaPatch": {"properties": {"inclusions": {"anyOf": [{"$ref": "#/components/schemas/InclusionSchema"}, {"type": "null"}]}, "id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Id"}, "org_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Org Id"}, "uuid": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "title": "Uuid"}, "quote_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Quote Id"}, "created_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Created At"}, "updated_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Updated At"}, "contract_s3_unsigned": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Contract S3 Unsigned"}, "contract_s3_custom_unsigned": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Contract S3 Custom Unsigned"}, "contract_s3_signed": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Contract S3 Signed"}, "sent_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Sent At"}, "signed_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Signed At"}, "active": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Active"}, "data": {"anyOf": [{"type": "object"}, {"type": "null"}], "title": "Data"}, "is_test": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Is Test"}}, "title": "ContractSchemaPatch", "type": "object"}, "AdditionalDataV1": {"properties": {"pagination": {"$ref": "#/components/schemas/Pagination", "description": "Paging details"}, "filesCountByDay": {"anyOf": [{"items": {}, "type": "array"}, {"type": "null"}], "title": "Filescountbyday"}}, "required": ["pagination"], "title": "AdditionalDataV1", "type": "object"}, "GetDealMailMessagesResponse": {"properties": {"success": {"description": "Response success flag", "title": "Success", "type": "boolean"}, "data": {"anyOf": [{"items": {"$ref": "#/components/schemas/MailMessageItem"}, "type": "array"}, {"type": "null"}], "description": "List of mail messages", "title": "Data"}, "additional_data": {"anyOf": [{"$ref": "#/components/schemas/AdditionalDataV1"}, {"type": "null"}], "description": "Paging details"}}, "required": ["success", "data"], "title": "GetDealMailMessagesResponse", "type": "object"}, "MailMessageData": {"description": "Full mail\u2010message data", "properties": {"id": {"description": "ID of the mail message", "title": "Id", "type": "integer"}, "from_": {"description": "The array of mail message senders", "items": {"$ref": "#/components/schemas/MailMessageParticipant"}, "title": "From", "type": "array"}, "to": {"description": "The array of mail message recipients", "items": {"$ref": "#/components/schemas/MailMessageParticipant"}, "title": "To", "type": "array"}, "cc": {"description": "The array of CC recipients", "items": {"$ref": "#/components/schemas/MailMessageParticipant"}, "title": "Cc", "type": "array"}, "bcc": {"description": "The array of BCC recipients", "items": {"$ref": "#/components/schemas/MailMessageParticipant"}, "title": "Bcc", "type": "array"}, "body_url": {"description": "The mail message body URL", "title": "Body Url", "type": "string"}, "account_id": {"description": "The connection account ID", "title": "Account Id", "type": "string"}, "user_id": {"description": "ID of the user to whom this mail message is assigned", "title": "User Id", "type": "integer"}, "mail_thread_id": {"description": "ID of the mail thread", "title": "Mail Thread Id", "type": "integer"}, "subject": {"description": "The subject of the mail message", "title": "Subject", "type": "string"}, "body": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The body of the mail message", "title": "Body"}, "snippet": {"description": "A short snippet of the mail message body", "title": "Snippet", "type": "string"}, "mail_tracking_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "choices": ["opened", "not opened"], "description": "The mail\u2010tracking status (`null` if tracking not enabled)", "title": "Mail Tracking Status"}, "mail_link_tracking_enabled_flag": {"default": 0, "description": "Whether link tracking is enabled (0 or 1)", "maximum": 1, "minimum": 0, "title": "Mail Link Tracking Enabled Flag", "type": "integer"}, "read_flag": {"default": 0, "description": "Whether the mail message is read or not (0 or 1)", "maximum": 1, "minimum": 0, "title": "Read Flag", "type": "integer"}, "draft": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "If draft, the JSON\u2010formatted mail object; otherwise `null`", "title": "Draft"}, "draft_flag": {"default": 0, "description": "Whether the mail message is a draft (0 or 1)", "maximum": 1, "minimum": 0, "title": "Draft Flag", "type": "integer"}, "synced_flag": {"default": 0, "description": "Whether synced with provider (0 or 1)", "maximum": 1, "minimum": 0, "title": "Synced Flag", "type": "integer"}, "deleted_flag": {"default": 0, "description": "Whether deleted (0 or 1)", "maximum": 1, "minimum": 0, "title": "Deleted Flag", "type": "integer"}, "has_body_flag": {"default": 0, "description": "Whether has a body (0 or 1)", "maximum": 1, "minimum": 0, "title": "Has Body Flag", "type": "integer"}, "sent_flag": {"default": 0, "description": "Whether sent (0 or 1)", "maximum": 1, "minimum": 0, "title": "Sent Flag", "type": "integer"}, "sent_from_pipedrive_flag": {"default": 0, "description": "Whether sent via Pipedrive (0 or 1)", "maximum": 1, "minimum": 0, "title": "Sent From Pipedrive Flag", "type": "integer"}, "smart_bcc_flag": {"default": 0, "description": "Whether created via Smart BCC (0 or 1)", "maximum": 1, "minimum": 0, "title": "Smart Bcc Flag", "type": "integer"}, "message_time": {"description": "When the message was sent or received", "format": "date-time", "title": "Message Time", "type": "string"}, "add_time": {"description": "When inserted into the database", "format": "date-time", "title": "Add Time", "type": "string"}, "update_time": {"description": "When last updated in the database", "format": "date-time", "title": "Update Time", "type": "string"}, "has_attachments_flag": {"default": 0, "description": "Whether has attachments (0 or 1)", "maximum": 1, "minimum": 0, "title": "Has Attachments Flag", "type": "integer"}, "has_inline_attachments_flag": {"default": 0, "description": "Whether has inline attachments (0 or 1)", "maximum": 1, "minimum": 0, "title": "Has Inline Attachments Flag", "type": "integer"}, "has_real_attachments_flag": {"default": 0, "description": "Whether has non-inline attachments (0 or 1)", "maximum": 1, "minimum": 0, "title": "Has Real Attachments Flag", "type": "integer"}}, "required": ["id", "from_", "to", "cc", "bcc", "body_url", "account_id", "user_id", "mail_thread_id", "subject", "snippet", "message_time", "add_time", "update_time"], "title": "MailMessageData", "type": "object"}, "MailMessageItem": {"properties": {"object": {"description": "Type of this item", "title": "Object", "type": "string"}, "timestamp": {"description": "When item was created", "format": "date-time", "title": "Timestamp", "type": "string"}, "data": {"$ref": "#/components/schemas/MailMessageData"}}, "required": ["object", "timestamp", "data"], "title": "MailMessageItem", "type": "object"}, "MailMessageParticipant": {"properties": {"id": {"description": "ID of the mail participant", "title": "Id", "type": "integer"}, "email_address": {"description": "Mail address of the mail participant", "title": "Email Address", "type": "string"}, "name": {"description": "Name of the mail participant", "title": "Name", "type": "string"}, "linked_person_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "description": "ID of the linked person to the mail message", "title": "Linked Person Id"}, "linked_person_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Name of the linked person to the mail message", "title": "Linked Person Name"}, "mail_message_party_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "description": "ID of the mail message participant", "title": "Mail Message Party Id"}}, "required": ["id", "email_address", "name", "linked_person_id", "linked_person_name", "mail_message_party_id"], "title": "MailMessageParticipant", "type": "object"}, "Pagination": {"properties": {"start": {"description": "Pagination start", "title": "Start", "type": "integer"}, "limit": {"description": "Items per page", "title": "Limit", "type": "integer"}, "more_items_in_collection": {"description": "Whether more items exist beyond this page", "title": "More Items In Collection", "type": "boolean"}}, "required": ["start", "limit", "more_items_in_collection"], "title": "Pagination", "type": "object"}, "GetMessagesResponseModel": {"properties": {"data": {"description": "List of messages.", "items": {"$ref": "#/components/schemas/Message"}, "title": "Data", "type": "array"}, "metadata": {"$ref": "#/components/schemas/MessagesMetadata", "description": "Paging and resource info."}}, "required": ["data", "metadata"], "title": "GetMessagesResponseModel", "type": "object"}, "Message": {"properties": {"attachmentUrl": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "URL of message attachment. Deprecated: please refer to the attachmentUrl in the items array.", "title": "Attachmenturl"}, "body": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Body of the message.", "title": "Body"}, "contact": {"anyOf": [{"additionalProperties": true, "type": "object"}, {"type": "null"}], "description": "Deprecated: To whom the message was sent or from whom it was received.", "title": "Contact"}, "contactName": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Name of the contact.", "title": "Contactname"}, "conversation": {"additionalProperties": true, "description": "The conversation to which the message belongs.", "title": "Conversation", "type": "object"}, "createdAt": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "description": "When the message was created.", "title": "Createdat"}, "direction": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Canonical locally stored message direction.", "title": "Direction"}, "failureReason": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "If the message failed to send, this will be the reason.", "title": "Failurereason"}, "items": {"anyOf": [{"items": {"$ref": "#/components/schemas/MessageItem"}, "type": "array"}, {"type": "null"}], "description": "The individual message items (attachments, bodies, etc.).", "title": "Items"}, "location": {"anyOf": [{"additionalProperties": true, "type": "object"}, {"type": "null"}], "description": "Location from which the message was sent or to where it was sent.", "title": "Location"}, "sender": {"anyOf": [{"$ref": "#/components/schemas/Sender"}, {"type": "null"}], "description": "Deprecated: If the message was sent from Podium then this will be the Podium user who sent it."}, "uid": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "description": "Podium unique identifier for message.", "title": "Uid"}}, "required": ["conversation"], "title": "Message", "type": "object"}, "MessageItem": {"properties": {"attachmentContentType": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "MIME type of the message attachment.", "title": "Attachmentcontenttype"}, "attachmentUrl": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Public URL of the message attachment. NOTE: There is an expiry of 7 days on this URL.", "title": "Attachmenturl"}, "body": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Body of the message.", "title": "Body"}, "createdAt": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "description": "When the message item was created.", "title": "Createdat"}, "deliveryStatus": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Status of the message item.", "title": "Deliverystatus"}, "encryptedAt": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "description": "When the item was encrypted. Null if the item is not encrypted.", "title": "Encryptedat"}, "sendBody": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The send body of the message item that the end consumer sees.", "title": "Sendbody"}, "sourceType": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The source type of the message item.", "title": "Sourcetype"}, "type": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The type of the message item.", "title": "Type"}, "uid": {"description": "Podium unique identifier for message item.", "format": "uuid", "title": "Uid", "type": "string"}, "location": {"anyOf": [{"additionalProperties": true, "type": "object"}, {"type": "null"}], "description": "Location from/to which the message item was sent.", "title": "Location"}, "sender": {"anyOf": [{"$ref": "#/components/schemas/Sender"}, {"type": "null"}]}}, "required": ["uid"], "title": "MessageItem", "type": "object"}, "MessagesMetadata": {"properties": {"nextCursor": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Cursor to get next set of items.", "title": "Nextcursor"}, "previousCursor": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Cursor to get previous set of items.", "title": "Previouscursor"}, "totalItems": {"anyOf": [{"type": "integer"}, {"type": "null"}], "description": "Total number of items available.", "title": "Totalitems"}, "url": {"description": "The resource URL.", "title": "Url", "type": "string"}}, "required": ["url"], "title": "MessagesMetadata", "type": "object"}, "Sender": {"properties": {"senderUid": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "description": "Podium unique identifier for user. Deprecated: If the message was sent from Podium then this will be the Podium user who sent it.", "title": "Senderuid"}}, "title": "Sender", "type": "object"}, "SendSmsSchema": {"properties": {"body": {"title": "Body", "type": "string"}}, "required": ["body"], "title": "SendSmsSchema", "type": "object"}, "SmsTemplateContextSchema": {"properties": {"contact": {"title": "Contact", "type": "string"}, "contact_first_name": {"title": "Contact First Name", "type": "string"}, "user_first_name": {"title": "User First Name", "type": "string"}, "business_name": {"title": "Business Name", "type": "string"}, "location": {"title": "Location", "type": "string"}}, "required": ["contact", "contact_first_name", "user_first_name", "business_name", "location"], "title": "SmsTemplateContextSchema", "type": "object"}, "UpdateAddressResponse": {"properties": {"pending": {"default": false, "title": "Pending", "type": "boolean"}, "success": {"title": "Success", "type": "boolean"}, "message": {"title": "Message", "type": "string"}}, "required": ["success", "message"], "title": "UpdateAddressResponse", "type": "object"}, "UpdateAddressSchema": {"properties": {"geocode_option": {"enum": ["geocode_only", "realestate_api", "google_maps", "update_sizing", "rerun_autoquote"], "title": "Geocode Option", "type": "string"}, "street": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Street"}, "subpremise": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Subpremise"}, "city": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "City"}, "state": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "State"}, "zipcode": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Zipcode"}}, "required": ["geocode_option"], "title": "UpdateAddressSchema", "type": "object"}, "UpdateHomePropsResponse": {"properties": {"success": {"title": "Success", "type": "boolean"}, "message": {"title": "Message", "type": "string"}}, "required": ["success", "message"], "title": "UpdateHomePropsResponse", "type": "object"}, "UpdateHomePropsSchema": {"properties": {"rerun_option": {"enum": ["rerun_heat_load", "rerun_autoquote", "no_rerun"], "title": "Rerun Option", "type": "string"}, "sqft": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Sqft"}, "year_built": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year Built"}, "floors": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Floors"}}, "required": ["rerun_option"], "title": "UpdateHomePropsSchema", "type": "object"}, "DuplicateQuoteResponse": {"properties": {"success": {"title": "Success", "type": "boolean"}, "message": {"title": "Message", "type": "string"}, "new_quote_id": {"title": "New Quote Id", "type": "integer"}}, "required": ["success", "message", "new_quote_id"], "title": "DuplicateQuoteResponse", "type": "object"}, "ManJResultSchema": {"properties": {"heatingBTUH": {"title": "Heatingbtuh", "type": "number"}, "coolingBTUH": {"title": "Coolingbtuh", "type": "number"}, "loads": {"additionalProperties": true, "title": "Loads", "type": "object"}, "buildprop": {"additionalProperties": true, "title": "Buildprop", "type": "object"}, "climate": {"additionalProperties": true, "title": "Climate", "type": "object"}, "defaults": {"additionalProperties": true, "title": "Defaults", "type": "object"}, "options": {"additionalProperties": true, "title": "Options", "type": "object"}, "version": {"title": "Version", "type": "string"}}, "required": ["heatingBTUH", "coolingBTUH", "loads", "buildprop", "climate", "defaults", "options", "version"], "title": "ManJResultSchema", "type": "object"}, "AuthSizingRequest": {"properties": {"zipcode": {"title": "Zipcode", "type": "string"}, "floors": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Floors"}, "sqft": {"title": "Sqft", "type": "number"}, "year_built": {"title": "Year Built", "type": "integer"}, "options": {"anyOf": [{"$ref": "#/components/schemas/SizingOptions"}, {"type": "null"}]}}, "required": ["zipcode", "sqft", "year_built"], "title": "AuthSizingRequest", "type": "object"}, "SizingOptions": {"properties": {"aspect_ratio": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Aspect Ratio"}, "outline": {"anyOf": [{"additionalProperties": true, "type": "object"}, {"type": "null"}], "title": "Outline"}, "design_temp_heating": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Design Temp Heating"}, "design_temp_cooling": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Design Temp Cooling"}, "station": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Station"}, "heating_setpoint": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Heating Setpoint"}, "cooling_setpoint": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Cooling Setpoint"}, "occupants": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Occupants"}, "tightness": {"anyOf": [{"enum": ["tight", "semi-tight", "average", "semi-loose", "loose"], "type": "string"}, {"type": "null"}], "title": "Tightness"}, "foundation_type": {"anyOf": [{"enum": ["Crawl", "Slab", "Heated Basement", "Unheated Basement"], "type": "string"}, {"type": "null"}], "title": "Foundation Type"}, "attic_type": {"anyOf": [{"enum": ["Finished Attic or Cathedral Ceilings", "None", "Unvented Attic", "Vented Attic"], "type": "string"}, {"type": "null"}], "title": "Attic Type"}, "window_type": {"anyOf": [{"enum": ["1 Pane", "2+ Pane", "No Windows"], "type": "string"}, {"type": "null"}], "title": "Window Type"}, "window_area_fraction": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Window Area Fraction"}, "insulation_wall": {"anyOf": [{"enum": ["Wood Stud, Uninsulated", "Wood Stud, R-7", "Wood Stud, R-11", "Wood Stud, R-15", "Wood Stud, R-19", "CMU, 6-in Hollow, Uninsulated", "CMU, 6-in Hollow, R-7", "CMU, 6-in Hollow, R-11", "CMU, 6-in Hollow, R-15", "CMU, 6-in Hollow, R-19"], "type": "string"}, {"type": "null"}], "title": "Insulation Wall"}, "insulation_unfin_attic": {"anyOf": [{"enum": ["None", "Uninsulated, Vented", "Ceiling R-7, Vented", "Ceiling R-13, Vented", "Ceiling R-19, Vented", "Ceiling R-30, Vented", "Ceiling R-38, Vented", "Ceiling R-49, Vented"], "type": "string"}, {"type": "null"}], "title": "Insulation Unfin Attic"}}, "title": "SizingOptions", "type": "object"}, "StationSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "elev_feet": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Elev Feet"}, "heating_99p": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Heating 99P"}, "cooling_1p0_db": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Cooling 1P0 Db"}, "cooling_design_grains_50pRH": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Cooling Design Grains 50Prh"}, "daily_range": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Daily Range"}, "lat": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Lat"}, "lng": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Lng"}, "dist_km": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Dist Km"}}, "required": ["name"], "title": "StationSchema", "type": "object"}, "OutlineLevelSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "polygon": {"items": {"items": {"type": "number"}, "type": "array"}, "title": "Polygon", "type": "array"}}, "required": ["name", "polygon"], "title": "OutlineLevelSchema", "type": "object"}, "OutlineResultSchema": {"properties": {"ok": {"default": false, "title": "Ok", "type": "boolean"}, "error": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Error"}, "polygon": {"default": [], "items": {"items": {"type": "number"}, "type": "array"}, "title": "Polygon", "type": "array"}, "levels": {"anyOf": [{"items": {"$ref": "#/components/schemas/OutlineLevelSchema"}, "type": "array"}, {"type": "null"}], "title": "Levels"}, "confidence": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Confidence"}, "estimated_floors": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Estimated Floors"}, "notes": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Notes"}, "footprint_sqft": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Footprint Sqft"}, "fewshot_examples": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Fewshot Examples"}, "resolved_sqft": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Resolved Sqft"}, "resolved_floors": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Resolved Floors"}, "sqft_source": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sqft Source"}, "floors_source": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Floors Source"}, "flags": {"default": [], "items": {"type": "string"}, "title": "Flags", "type": "array"}, "image": {"anyOf": [{"additionalProperties": true, "type": "object"}, {"type": "null"}], "title": "Image"}, "geometry": {"anyOf": [{"additionalProperties": true, "type": "object"}, {"type": "null"}], "title": "Geometry"}, "model": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Model"}, "generated_at": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Generated At"}}, "title": "OutlineResultSchema", "type": "object"}, "DetectOutlineResponse": {"properties": {"outline": {"$ref": "#/components/schemas/OutlineResultSchema"}, "manj_rerun": {"default": false, "title": "Manj Rerun", "type": "boolean"}, "manj_result": {"anyOf": [{"additionalProperties": true, "type": "object"}, {"type": "null"}], "title": "Manj Result"}}, "required": ["outline"], "title": "DetectOutlineResponse", "type": "object"}, "DetectOutlineRequest": {"properties": {"rerun_manj": {"default": false, "title": "Rerun Manj", "type": "boolean"}}, "title": "DetectOutlineRequest", "type": "object"}, "OutlineCorrectionResponse": {"properties": {"id": {"title": "Id", "type": "integer"}, "iou": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Iou"}, "footprint_sqft": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Footprint Sqft"}, "total_sqft": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Total Sqft"}, "floors": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Floors"}, "geometry": {"anyOf": [{"additionalProperties": true, "type": "object"}, {"type": "null"}], "title": "Geometry"}}, "required": ["id"], "title": "OutlineCorrectionResponse", "type": "object"}, "OutlineCorrectionRequest": {"properties": {"polygon": {"items": {"items": {"type": "number"}, "type": "array"}, "title": "Polygon", "type": "array"}, "levels": {"anyOf": [{"items": {"$ref": "#/components/schemas/OutlineLevelSchema"}, "type": "array"}, {"type": "null"}], "title": "Levels"}}, "required": ["polygon"], "title": "OutlineCorrectionRequest", "type": "object"}, "TempsData": {"properties": {"od_temp_db_cool": {"title": "Od Temp Db Cool", "type": "number"}, "od_temp_db_heat": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Od Temp Db Heat"}, "od_temp_wb_heat": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Od Temp Wb Heat"}, "id_temp_db_heat": {"title": "Id Temp Db Heat", "type": "number"}, "id_temp_db_cool": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Id Temp Db Cool"}, "id_temp_wb_cool": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Id Temp Wb Cool"}}, "required": ["od_temp_db_cool", "id_temp_db_heat"], "title": "TempsData", "type": "object"}, "ZoneBuilderSchema": {"properties": {"zonesById": {"additionalProperties": {"$ref": "#/components/schemas/ZoneSchema"}, "title": "Zonesbyid", "type": "object"}, "temps": {"anyOf": [{"$ref": "#/components/schemas/TempsData"}, {"type": "null"}]}, "zoneCapacityById": {"anyOf": [{"additionalProperties": {"$ref": "#/components/schemas/ZoneResult"}, "type": "object"}, {"type": "null"}], "title": "Zonecapacitybyid"}, "lastModified": {"title": "Lastmodified", "type": "string"}, "version": {"default": "1.0", "title": "Version", "type": "string"}}, "required": ["zonesById", "lastModified"], "title": "ZoneBuilderSchema", "type": "object"}, "ZoneResult": {"properties": {"zone_id": {"title": "Zone Id", "type": "string"}, "heating_cap": {"title": "Heating Cap", "type": "number"}, "cooling_cap": {"title": "Cooling Cap", "type": "number"}, "multi_zone": {"title": "Multi Zone", "type": "boolean"}, "odu_heat_cap_total": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Odu Heat Cap Total"}, "odu_cool_cap_total": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Odu Cool Cap Total"}}, "required": ["zone_id", "heating_cap", "cooling_cap", "multi_zone"], "title": "ZoneResult", "type": "object"}, "ZoneSchema": {"properties": {"id": {"title": "Id", "type": "string"}, "name": {"title": "Name", "type": "string"}, "sqft": {"title": "Sqft", "type": "integer"}, "cooling_load_calculated": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Cooling Load Calculated"}, "heating_load_calculated": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Heating Load Calculated"}, "cooling_load_override": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Cooling Load Override"}, "heating_load_override": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Heating Load Override"}, "unit_type": {"anyOf": [{"enum": ["ducted", "ductless"], "type": "string"}, {"type": "null"}], "title": "Unit Type"}, "brand_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Brand Id"}, "indoor_unit_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Indoor Unit Id"}, "outdoor_unit_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Outdoor Unit Id"}, "outdoor_unit_instance_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Outdoor Unit Instance Id"}}, "required": ["id", "name", "sqft"], "title": "ZoneSchema", "type": "object"}, "CapacityCalculationResponse": {"properties": {"temps": {"$ref": "#/components/schemas/TempsData"}, "zonesById": {"additionalProperties": {"$ref": "#/components/schemas/ZoneSchema"}, "title": "Zonesbyid", "type": "object"}, "zoneCapacityById": {"additionalProperties": {"$ref": "#/components/schemas/ZoneResult"}, "title": "Zonecapacitybyid", "type": "object"}, "lastModified": {"title": "Lastmodified", "type": "string"}, "version": {"title": "Version", "type": "string"}}, "required": ["temps", "zonesById", "zoneCapacityById", "lastModified", "version"], "title": "CapacityCalculationResponse", "type": "object"}, "CapacityCalculationRequest": {"properties": {"zonesById": {"additionalProperties": {"$ref": "#/components/schemas/ZoneSchema"}, "title": "Zonesbyid", "type": "object"}, "temps": {"$ref": "#/components/schemas/TempsData"}}, "required": ["zonesById", "temps"], "title": "CapacityCalculationRequest", "type": "object"}, "EngineeringChecklistSchema": {"properties": {"template_version": {"title": "Template Version", "type": "integer"}, "items": {"items": {"additionalProperties": true, "type": "object"}, "title": "Items", "type": "array"}, "checks": {"additionalProperties": true, "title": "Checks", "type": "object"}}, "required": ["template_version", "items", "checks"], "title": "EngineeringChecklistSchema", "type": "object"}, "EngineeringChecklistUpdateSchema": {"properties": {"checks": {"additionalProperties": true, "title": "Checks", "type": "object"}}, "required": ["checks"], "title": "EngineeringChecklistUpdateSchema", "type": "object"}, "AdminProductSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "code": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Code"}, "description": {"title": "Description", "type": "string"}, "contract_description": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Contract Description"}, "price": {"title": "Price", "type": "number"}, "cost": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Cost"}, "st_sku_id": {"title": "St Sku Id", "type": "integer"}, "st_type": {"enum": ["Equipment", "Material", "Service"], "title": "St Type", "type": "string"}, "image_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Image Url"}, "model": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Model"}, "manufacturer": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Manufacturer"}}, "required": ["id", "name", "description", "price", "st_sku_id", "st_type"], "title": "AdminProductSchema", "type": "object"}, "AdminProductDetailSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "code": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Code"}, "st_description": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "St Description"}, "description": {"title": "Description", "type": "string"}, "contract_description": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Contract Description"}, "price": {"title": "Price", "type": "number"}, "cost": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Cost"}, "st_sku_id": {"title": "St Sku Id", "type": "integer"}, "st_type": {"enum": ["Equipment", "Material", "Service"], "title": "St Type", "type": "string"}, "image_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Image Url"}, "images": {"anyOf": [{"items": {"$ref": "#/components/schemas/AdminProductImageSchema"}, "type": "array"}, {"type": "null"}], "title": "Images"}, "model": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Model"}, "manufacturer": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Manufacturer"}}, "required": ["id", "name", "description", "price", "st_sku_id", "st_type"], "title": "AdminProductDetailSchema", "type": "object"}, "AdminProductImageSchema": {"properties": {"image_url": {"title": "Image Url", "type": "string"}, "active": {"title": "Active", "type": "boolean"}}, "required": ["image_url", "active"], "title": "AdminProductImageSchema", "type": "object"}, "AdminUpdateProductSchema": {"properties": {"description": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Description"}, "contract_description": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Contract Description"}}, "title": "AdminUpdateProductSchema", "type": "object"}, "IncentiveListSchema": {"properties": {"items": {"items": {"$ref": "#/components/schemas/IncentiveReadSchema"}, "title": "Items", "type": "array"}, "total": {"title": "Total", "type": "integer"}, "total_pages": {"title": "Total Pages", "type": "integer"}, "page": {"title": "Page", "type": "integer"}, "page_size": {"title": "Page Size", "type": "integer"}}, "required": ["items", "total", "total_pages", "page", "page_size"], "title": "IncentiveListSchema", "type": "object"}, "IncentiveReadSchema": {"properties": {"id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Id"}, "entity_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Entity Id"}, "entity_type": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Entity Type"}, "entity_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Entity Name"}, "amount": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Amount"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "st_sku_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "St Sku Id"}, "code": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Code"}, "sync_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sync Status"}, "sync_error": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sync Error"}, "new_equipment_type": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "New Equipment Type"}, "property_type": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Property Type"}, "amount_unit": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Amount Unit"}, "incentive_type": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Incentive Type"}, "displayname_override": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Displayname Override"}, "display_description": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Display Description"}, "instant_rebate": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Instant Rebate"}, "notes": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Notes"}, "zipcodes": {"items": {"type": "string"}, "title": "Zipcodes", "type": "array"}}, "title": "IncentiveReadSchema", "type": "object"}, "IncentiveWriteSchema": {"properties": {"entity_id": {"title": "Entity Id", "type": "string"}, "new_equipment_type": {"items": {"type": "string"}, "title": "New Equipment Type", "type": "array"}, "property_type": {"items": {"type": "string"}, "title": "Property Type", "type": "array"}, "amount": {"title": "Amount", "type": "number"}, "amount_unit": {"title": "Amount Unit", "type": "string"}, "incentive_type": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Incentive Type"}, "displayname_override": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Displayname Override"}, "display_description": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Display Description"}, "instant_rebate": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Instant Rebate"}, "notes": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Notes"}}, "required": ["entity_id", "new_equipment_type", "property_type", "amount", "amount_unit"], "title": "IncentiveWriteSchema", "type": "object"}, "IncentiveMetaSchema": {"properties": {"entity_types": {"items": {"type": "string"}, "title": "Entity Types", "type": "array"}, "new_equipment_types": {"items": {"type": "string"}, "title": "New Equipment Types", "type": "array"}, "property_types": {"items": {"type": "string"}, "title": "Property Types", "type": "array"}, "amount_units": {"items": {"type": "string"}, "title": "Amount Units", "type": "array"}}, "required": ["entity_types", "new_equipment_types", "property_types", "amount_units"], "title": "IncentiveMetaSchema", "type": "object"}, "IncentiveIdsSchema": {"properties": {"api_ids": {"items": {"type": "string"}, "title": "Api Ids", "type": "array"}}, "required": ["api_ids"], "title": "IncentiveIdsSchema", "type": "object"}, "IncentiveEntityReadSchema": {"properties": {"api_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Api Id"}, "type": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Type"}, "entity_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Entity Id"}, "website_source_of_truth": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Website Source Of Truth"}, "program_admin_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Program Admin Name"}, "program_admin_email": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Program Admin Email"}, "program_admin_phone": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Program Admin Phone"}, "deleted": {"default": false, "title": "Deleted", "type": "boolean"}, "zipcodes": {"items": {"type": "string"}, "title": "Zipcodes", "type": "array"}, "zipcode_count": {"default": 0, "title": "Zipcode Count", "type": "integer"}, "zipcode_preview": {"items": {"type": "string"}, "title": "Zipcode Preview", "type": "array"}}, "title": "IncentiveEntityReadSchema", "type": "object"}, "IncentiveEntityWriteSchema": {"properties": {"type": {"title": "Type", "type": "string"}, "entity_id": {"title": "Entity Id", "type": "string"}, "zipcodes": {"items": {"type": "string"}, "title": "Zipcodes", "type": "array"}, "website_source_of_truth": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Website Source Of Truth"}, "program_admin_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Program Admin Name"}, "program_admin_email": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Program Admin Email"}, "program_admin_phone": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Program Admin Phone"}}, "required": ["type", "entity_id", "zipcodes"], "title": "IncentiveEntityWriteSchema", "type": "object"}, "IncentiveEntityZipcodeListSchema": {"properties": {"items": {"items": {"type": "string"}, "title": "Items", "type": "array"}, "total": {"title": "Total", "type": "integer"}, "total_pages": {"title": "Total Pages", "type": "integer"}, "page": {"title": "Page", "type": "integer"}, "page_size": {"title": "Page Size", "type": "integer"}}, "required": ["items", "total", "total_pages", "page", "page_size"], "title": "IncentiveEntityZipcodeListSchema", "type": "object"}, "IncentiveOverrideReadSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "api_id": {"title": "Api Id", "type": "string"}, "action": {"title": "Action", "type": "string"}, "reason": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Reason"}, "created_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Created At"}}, "required": ["id", "api_id", "action"], "title": "IncentiveOverrideReadSchema", "type": "object"}, "IncentiveOverrideWriteSchema": {"properties": {"api_id": {"title": "Api Id", "type": "string"}, "action": {"title": "Action", "type": "string"}, "reason": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Reason"}}, "required": ["api_id", "action"], "title": "IncentiveOverrideWriteSchema", "type": "object"}, "AHJReadSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "external_id": {"title": "External Id", "type": "string"}, "name": {"title": "Name", "type": "string"}, "active": {"title": "Active", "type": "boolean"}, "source_data": {"additionalProperties": true, "title": "Source Data", "type": "object"}, "deal_count": {"default": 0, "title": "Deal Count", "type": "integer"}, "location_count": {"default": 0, "title": "Location Count", "type": "integer"}, "sync_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sync Status"}, "sync_error": {"default": "", "title": "Sync Error", "type": "string"}, "retry_after_seconds": {"default": 0, "title": "Retry After Seconds", "type": "integer"}}, "required": ["id", "external_id", "name", "active", "source_data"], "title": "AHJReadSchema", "type": "object"}, "AHJSearchResponseSchema": {"properties": {"count": {"title": "Count", "type": "integer"}, "results": {"items": {"$ref": "#/components/schemas/AHJSearchResultSchema"}, "title": "Results", "type": "array"}}, "required": ["count", "results"], "title": "AHJSearchResponseSchema", "type": "object"}, "AHJSearchResultSchema": {"properties": {"external_id": {"title": "External Id", "type": "string"}, "name": {"title": "Name", "type": "string"}, "code": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Code"}, "level_code": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Level Code"}, "state": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "State"}, "county": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "County"}}, "required": ["external_id", "name"], "title": "AHJSearchResultSchema", "type": "object"}, "AHJImportResponseSchema": {"properties": {"imported": {"title": "Imported", "type": "integer"}, "queued": {"title": "Queued", "type": "integer"}, "failed_ids": {"items": {"type": "string"}, "title": "Failed Ids", "type": "array"}}, "required": ["imported", "queued", "failed_ids"], "title": "AHJImportResponseSchema", "type": "object"}, "AHJImportSchema": {"properties": {"external_ids": {"items": {"type": "string"}, "title": "External Ids", "type": "array"}}, "required": ["external_ids"], "title": "AHJImportSchema", "type": "object"}, "AHJMapFeatureSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "external_id": {"title": "External Id", "type": "string"}, "name": {"title": "Name", "type": "string"}, "level_code": {"default": "", "title": "Level Code", "type": "string"}, "geometry": {"additionalProperties": true, "title": "Geometry", "type": "object"}, "center_latitude": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Center Latitude"}, "center_longitude": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Center Longitude"}, "requirement_count": {"default": 0, "title": "Requirement Count", "type": "integer"}}, "required": ["id", "external_id", "name", "geometry"], "title": "AHJMapFeatureSchema", "type": "object"}, "IdsSchema": {"properties": {"ids": {"items": {"type": "integer"}, "title": "Ids", "type": "array"}}, "required": ["ids"], "title": "IdsSchema", "type": "object"}, "AHJServiceReadSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "description": {"default": "", "title": "Description", "type": "string"}, "price": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}], "title": "Price"}, "code": {"title": "Code", "type": "string"}, "id": {"title": "Id", "type": "integer"}, "st_sku_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "St Sku Id"}, "sync_status": {"title": "Sync Status", "type": "string"}, "sync_error": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sync Error"}}, "required": ["name", "price", "code", "id", "sync_status"], "title": "AHJServiceReadSchema", "type": "object"}, "AHJServiceWriteSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "description": {"default": "", "title": "Description", "type": "string"}, "price": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}], "title": "Price"}, "code": {"title": "Code", "type": "string"}}, "required": ["name", "price", "code"], "title": "AHJServiceWriteSchema", "type": "object"}, "AHJRequirementReadSchema": {"properties": {"ahj_id": {"title": "Ahj Id", "type": "string"}, "ahj_name": {"title": "Ahj Name", "type": "string"}, "title": {"title": "Title", "type": "string"}, "category": {"default": "other", "title": "Category", "type": "string"}, "description": {"default": "", "title": "Description", "type": "string"}, "source_url": {"default": "", "title": "Source Url", "type": "string"}, "setback_feet": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}, {"type": "null"}], "title": "Setback Feet"}, "property_types": {"default": [], "items": {"type": "string"}, "title": "Property Types", "type": "array"}, "new_system_types": {"default": [], "items": {"type": "string"}, "title": "New System Types", "type": "array"}, "service_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Service Id"}, "default_quantity": {"default": 1, "title": "Default Quantity", "type": "integer"}, "active": {"default": true, "title": "Active", "type": "boolean"}, "id": {"title": "Id", "type": "integer"}, "service": {"anyOf": [{"$ref": "#/components/schemas/AHJServiceReadSchema"}, {"type": "null"}]}}, "required": ["ahj_id", "ahj_name", "title", "id"], "title": "AHJRequirementReadSchema", "type": "object"}, "AHJRequirementWriteSchema": {"properties": {"ahj_id": {"title": "Ahj Id", "type": "string"}, "ahj_name": {"title": "Ahj Name", "type": "string"}, "title": {"title": "Title", "type": "string"}, "category": {"default": "other", "title": "Category", "type": "string"}, "description": {"default": "", "title": "Description", "type": "string"}, "source_url": {"default": "", "title": "Source Url", "type": "string"}, "setback_feet": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}, {"type": "null"}], "title": "Setback Feet"}, "property_types": {"default": [], "items": {"type": "string"}, "title": "Property Types", "type": "array"}, "new_system_types": {"default": [], "items": {"type": "string"}, "title": "New System Types", "type": "array"}, "service_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Service Id"}, "default_quantity": {"default": 1, "title": "Default Quantity", "type": "integer"}, "active": {"default": true, "title": "Active", "type": "boolean"}}, "required": ["ahj_id", "ahj_name", "title"], "title": "AHJRequirementWriteSchema", "type": "object"}, "QuoteAHJSummarySchema": {"properties": {"id": {"title": "Id", "type": "string"}, "name": {"title": "Name", "type": "string"}, "level_code": {"default": "", "title": "Level Code", "type": "string"}, "is_primary": {"default": false, "title": "Is Primary", "type": "boolean"}}, "required": ["id", "name"], "title": "QuoteAHJSummarySchema", "type": "object"}, "QuoteRequirementSchema": {"properties": {"ahj_id": {"title": "Ahj Id", "type": "string"}, "ahj_name": {"title": "Ahj Name", "type": "string"}, "title": {"title": "Title", "type": "string"}, "category": {"default": "other", "title": "Category", "type": "string"}, "description": {"default": "", "title": "Description", "type": "string"}, "source_url": {"default": "", "title": "Source Url", "type": "string"}, "setback_feet": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}, {"type": "null"}], "title": "Setback Feet"}, "property_types": {"default": [], "items": {"type": "string"}, "title": "Property Types", "type": "array"}, "new_system_types": {"default": [], "items": {"type": "string"}, "title": "New System Types", "type": "array"}, "service_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Service Id"}, "default_quantity": {"default": 1, "title": "Default Quantity", "type": "integer"}, "active": {"default": true, "title": "Active", "type": "boolean"}, "id": {"title": "Id", "type": "integer"}, "service": {"anyOf": [{"$ref": "#/components/schemas/AHJServiceReadSchema"}, {"type": "null"}]}, "already_added": {"title": "Already Added", "type": "boolean"}, "address_changed": {"title": "Address Changed", "type": "boolean"}}, "required": ["ahj_id", "ahj_name", "title", "id", "already_added", "address_changed"], "title": "QuoteRequirementSchema", "type": "object"}, "QuoteRequirementsSchema": {"properties": {"ahj_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ahj Id"}, "ahj_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ahj Name"}, "ahjs": {"default": [], "items": {"$ref": "#/components/schemas/QuoteAHJSummarySchema"}, "title": "Ahjs", "type": "array"}, "requirements": {"items": {"$ref": "#/components/schemas/QuoteRequirementSchema"}, "title": "Requirements", "type": "array"}, "address_changed": {"title": "Address Changed", "type": "boolean"}}, "required": ["requirements", "address_changed"], "title": "QuoteRequirementsSchema", "type": "object"}, "AdminFinanceSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "amount": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Amount"}, "code": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Code"}, "st_sku_id": {"title": "St Sku Id", "type": "integer"}, "st_description": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "St Description"}}, "required": ["id", "name", "st_sku_id"], "title": "AdminFinanceSchema", "type": "object"}, "ChoiceSchema": {"properties": {"value": {"title": "Value", "type": "string"}, "label": {"title": "Label", "type": "string"}}, "required": ["value", "label"], "title": "ChoiceSchema", "type": "object"}, "ProjectOptionsSchema": {"properties": {"statuses": {"items": {"$ref": "#/components/schemas/ChoiceSchema"}, "title": "Statuses", "type": "array"}, "hers_statuses": {"items": {"$ref": "#/components/schemas/ChoiceSchema"}, "title": "Hers Statuses", "type": "array"}, "payment_statuses": {"items": {"$ref": "#/components/schemas/ChoiceSchema"}, "title": "Payment Statuses", "type": "array"}, "permit_statuses": {"items": {"$ref": "#/components/schemas/ChoiceSchema"}, "title": "Permit Statuses", "type": "array"}, "permit_applied_by": {"items": {"$ref": "#/components/schemas/ChoiceSchema"}, "title": "Permit Applied By", "type": "array"}, "incentive_statuses": {"items": {"$ref": "#/components/schemas/ChoiceSchema"}, "title": "Incentive Statuses", "type": "array"}, "incentive_payees": {"items": {"$ref": "#/components/schemas/ChoiceSchema"}, "title": "Incentive Payees", "type": "array"}, "loan_statuses": {"items": {"$ref": "#/components/schemas/ChoiceSchema"}, "title": "Loan Statuses", "type": "array"}, "equipment_kinds": {"items": {"$ref": "#/components/schemas/ChoiceSchema"}, "title": "Equipment Kinds", "type": "array"}, "delivery_managers": {"items": {"$ref": "#/components/schemas/UserRefSchema"}, "title": "Delivery Managers", "type": "array"}, "ahjs": {"items": {"$ref": "#/components/schemas/RefSchema"}, "title": "Ahjs", "type": "array"}, "incentives": {"items": {"$ref": "#/components/schemas/ChoiceSchema"}, "title": "Incentives", "type": "array"}, "finance_programs": {"items": {"$ref": "#/components/schemas/RefSchema"}, "title": "Finance Programs", "type": "array"}, "phases": {"additionalProperties": {"items": {"type": "string"}, "type": "array"}, "title": "Phases", "type": "object"}}, "required": ["statuses", "hers_statuses", "payment_statuses", "permit_statuses", "permit_applied_by", "incentive_statuses", "incentive_payees", "loan_statuses", "equipment_kinds", "delivery_managers", "ahjs", "incentives", "finance_programs", "phases"], "title": "ProjectOptionsSchema", "type": "object"}, "RefSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}}, "required": ["id", "name"], "title": "RefSchema", "type": "object"}, "UserRefSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}}, "required": ["id", "name"], "title": "UserRefSchema", "type": "object"}, "KpiSchema": {"properties": {"key": {"title": "Key", "type": "string"}, "label": {"title": "Label", "type": "string"}, "value": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Value"}, "unit": {"const": "days", "title": "Unit", "type": "string"}, "detail": {"title": "Detail", "type": "string"}, "sample_size": {"title": "Sample Size", "type": "integer"}, "previous_value": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Previous Value"}, "previous_sample_size": {"default": 0, "title": "Previous Sample Size", "type": "integer"}, "change_pct": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Change Pct"}}, "required": ["key", "label", "unit", "detail", "sample_size"], "title": "KpiSchema", "type": "object"}, "ProjectSummarySchema": {"properties": {"period": {"enum": ["30d", "3m", "1y"], "title": "Period", "type": "string"}, "backlog_count": {"title": "Backlog Count", "type": "integer"}, "backlog_value": {"title": "Backlog Value", "type": "number"}, "kpis": {"items": {"$ref": "#/components/schemas/KpiSchema"}, "title": "Kpis", "type": "array"}, "tiles": {"items": {"$ref": "#/components/schemas/SummaryTileSchema"}, "title": "Tiles", "type": "array"}, "by_status": {"items": {"$ref": "#/components/schemas/SummaryTileSchema"}, "title": "By Status", "type": "array"}}, "required": ["period", "backlog_count", "backlog_value", "kpis", "tiles", "by_status"], "title": "ProjectSummarySchema", "type": "object"}, "SummaryTileSchema": {"properties": {"key": {"title": "Key", "type": "string"}, "label": {"title": "Label", "type": "string"}, "count": {"title": "Count", "type": "integer"}, "href": {"title": "Href", "type": "string"}, "severity": {"default": "info", "title": "Severity", "type": "string"}}, "required": ["key", "label", "count", "href"], "title": "SummaryTileSchema", "type": "object"}, "ProjectListItemSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "deal_id": {"title": "Deal Id", "type": "integer"}, "customer_name": {"title": "Customer Name", "type": "string"}, "customer_phone": {"title": "Customer Phone", "type": "string"}, "address": {"title": "Address", "type": "string"}, "locality": {"title": "Locality", "type": "string"}, "status": {"title": "Status", "type": "string"}, "status_label": {"title": "Status Label", "type": "string"}, "phase": {"title": "Phase", "type": "string"}, "hers_status": {"title": "Hers Status", "type": "string"}, "payment_status": {"title": "Payment Status", "type": "string"}, "delivery_manager": {"anyOf": [{"$ref": "#/components/schemas/UserRefSchema"}, {"type": "null"}]}, "contract_value": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Contract Value"}, "sold_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Sold At"}, "completed_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Completed At"}, "days_in_status": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Days In Status"}, "permit_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Permit Status"}, "permit_status_label": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Permit Status Label"}, "incentive_summary": {"title": "Incentive Summary", "type": "string"}, "loan_summary": {"title": "Loan Summary", "type": "string"}, "warranty_registered": {"title": "Warranty Registered", "type": "boolean"}, "pre_install_checklist": {"items": {"type": "integer"}, "title": "Pre Install Checklist", "type": "array"}, "closeout_checklist": {"items": {"type": "integer"}, "title": "Closeout Checklist", "type": "array"}}, "required": ["id", "deal_id", "customer_name", "customer_phone", "address", "locality", "status", "status_label", "phase", "hers_status", "payment_status", "incentive_summary", "loan_summary", "warranty_registered", "pre_install_checklist", "closeout_checklist"], "title": "ProjectListItemSchema", "type": "object"}, "ProjectListSchema": {"properties": {"items": {"items": {"$ref": "#/components/schemas/ProjectListItemSchema"}, "title": "Items", "type": "array"}, "total": {"title": "Total", "type": "integer"}}, "required": ["items", "total"], "title": "ProjectListSchema", "type": "object"}, "PermitSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "project_id": {"title": "Project Id", "type": "integer"}, "deal_id": {"title": "Deal Id", "type": "integer"}, "ahj_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Ahj Id"}, "ahj_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ahj Name"}, "jurisdiction_name": {"title": "Jurisdiction Name", "type": "string"}, "name_override": {"title": "Name Override", "type": "string"}, "permit_number": {"title": "Permit Number", "type": "string"}, "status": {"title": "Status", "type": "string"}, "status_label": {"title": "Status Label", "type": "string"}, "applied_by": {"title": "Applied By", "type": "string"}, "responsible": {"anyOf": [{"$ref": "#/components/schemas/UserRefSchema"}, {"type": "null"}]}, "permit_fee": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Permit Fee"}, "processing_fee": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Processing Fee"}, "other_costs": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Other Costs"}, "total_cost": {"title": "Total Cost", "type": "number"}, "applied_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Applied On"}, "issued_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Issued On"}, "expires_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Expires On"}, "days_to_issue": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Days To Issue"}, "inspection_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Inspection At"}, "requires_onsite_inspection": {"title": "Requires Onsite Inspection", "type": "boolean"}, "is_closed": {"title": "Is Closed", "type": "boolean"}, "status_changed_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Status Changed At"}, "project": {"anyOf": [{"$ref": "#/components/schemas/ProjectRefSchema"}, {"type": "null"}]}, "note_count": {"default": 0, "title": "Note Count", "type": "integer"}, "latest_note": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Latest Note"}, "latest_note_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Latest Note At"}, "latest_note_author": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Latest Note Author"}}, "required": ["id", "project_id", "deal_id", "jurisdiction_name", "name_override", "permit_number", "status", "status_label", "applied_by", "total_cost", "requires_onsite_inspection", "is_closed"], "title": "PermitSchema", "type": "object"}, "ProjectRefSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "deal_id": {"title": "Deal Id", "type": "integer"}, "customer_name": {"title": "Customer Name", "type": "string"}, "address": {"title": "Address", "type": "string"}, "locality": {"title": "Locality", "type": "string"}, "status": {"title": "Status", "type": "string"}, "status_label": {"title": "Status Label", "type": "string"}, "phase": {"title": "Phase", "type": "string"}}, "required": ["id", "deal_id", "customer_name", "address", "locality", "status", "status_label", "phase"], "title": "ProjectRefSchema", "type": "object"}, "IncentiveApplicationSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "project_id": {"title": "Project Id", "type": "integer"}, "deal_id": {"title": "Deal Id", "type": "integer"}, "incentive_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Incentive Id"}, "incentive_quote_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Incentive Quote Id"}, "on_contract": {"title": "On Contract", "type": "boolean"}, "name": {"title": "Name", "type": "string"}, "program_name": {"title": "Program Name", "type": "string"}, "status": {"title": "Status", "type": "string"}, "status_label": {"title": "Status Label", "type": "string"}, "requires_preapproval": {"title": "Requires Preapproval", "type": "boolean"}, "payee": {"title": "Payee", "type": "string"}, "expected_amount": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Expected Amount"}, "received_amount": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Received Amount"}, "reservation_number": {"title": "Reservation Number", "type": "string"}, "reservation_expires_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Reservation Expires On"}, "submitted_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Submitted On"}, "responsible": {"anyOf": [{"$ref": "#/components/schemas/UserRefSchema"}, {"type": "null"}]}, "is_closed": {"title": "Is Closed", "type": "boolean"}, "status_changed_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Status Changed At"}, "project": {"anyOf": [{"$ref": "#/components/schemas/ProjectRefSchema"}, {"type": "null"}]}, "note_count": {"default": 0, "title": "Note Count", "type": "integer"}, "latest_note": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Latest Note"}, "latest_note_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Latest Note At"}, "latest_note_author": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Latest Note Author"}}, "required": ["id", "project_id", "deal_id", "on_contract", "name", "program_name", "status", "status_label", "requires_preapproval", "payee", "reservation_number", "is_closed"], "title": "IncentiveApplicationSchema", "type": "object"}, "LoanSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "project_id": {"title": "Project Id", "type": "integer"}, "finance_program": {"anyOf": [{"$ref": "#/components/schemas/RefSchema"}, {"type": "null"}]}, "finance_to_quote_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Finance To Quote Id"}, "on_contract": {"title": "On Contract", "type": "boolean"}, "name": {"title": "Name", "type": "string"}, "lender_name": {"title": "Lender Name", "type": "string"}, "status": {"title": "Status", "type": "string"}, "status_label": {"title": "Status Label", "type": "string"}, "amount": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Amount"}, "approved_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Approved On"}, "expires_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Expires On"}, "funded_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Funded On"}, "document_link": {"title": "Document Link", "type": "string"}, "is_closed": {"title": "Is Closed", "type": "boolean"}, "status_changed_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Status Changed At"}, "project": {"anyOf": [{"$ref": "#/components/schemas/ProjectRefSchema"}, {"type": "null"}]}, "note_count": {"default": 0, "title": "Note Count", "type": "integer"}, "latest_note": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Latest Note"}, "latest_note_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Latest Note At"}, "latest_note_author": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Latest Note Author"}}, "required": ["id", "project_id", "on_contract", "name", "lender_name", "status", "status_label", "document_link", "is_closed"], "title": "LoanSchema", "type": "object"}, "AttentionSchema": {"properties": {"area": {"title": "Area", "type": "string"}, "label": {"title": "Label", "type": "string"}, "severity": {"title": "Severity", "type": "string"}}, "required": ["area", "label", "severity"], "title": "AttentionSchema", "type": "object"}, "ChecklistItemSchema": {"properties": {"key": {"title": "Key", "type": "string"}, "label": {"title": "Label", "type": "string"}, "checked_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Checked At"}}, "required": ["key", "label"], "title": "ChecklistItemSchema", "type": "object"}, "EquipmentSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "project_id": {"title": "Project Id", "type": "integer"}, "kind": {"title": "Kind", "type": "string"}, "kind_label": {"title": "Kind Label", "type": "string"}, "manufacturer": {"title": "Manufacturer", "type": "string"}, "model_number": {"title": "Model Number", "type": "string"}, "serial_number": {"title": "Serial Number", "type": "string"}, "warranty_years": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Warranty Years"}, "registration_number": {"title": "Registration Number", "type": "string"}, "registered_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Registered At"}, "registered_by": {"anyOf": [{"$ref": "#/components/schemas/UserRefSchema"}, {"type": "null"}]}, "notes": {"title": "Notes", "type": "string"}}, "required": ["id", "project_id", "kind", "kind_label", "manufacturer", "model_number", "serial_number", "registration_number", "notes"], "title": "EquipmentSchema", "type": "object"}, "ProjectContractSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "quote_id": {"title": "Quote Id", "type": "integer"}, "signed_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Signed At"}, "url": {"title": "Url", "type": "string"}, "kind": {"enum": ["signed", "custom", "generated"], "title": "Kind", "type": "string"}}, "required": ["id", "quote_id", "url", "kind"], "title": "ProjectContractSchema", "type": "object"}, "ProjectDetailSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "deal_id": {"title": "Deal Id", "type": "integer"}, "customer_name": {"title": "Customer Name", "type": "string"}, "customer_phone": {"title": "Customer Phone", "type": "string"}, "address": {"title": "Address", "type": "string"}, "locality": {"title": "Locality", "type": "string"}, "status": {"title": "Status", "type": "string"}, "status_label": {"title": "Status Label", "type": "string"}, "phase": {"title": "Phase", "type": "string"}, "hers_status": {"title": "Hers Status", "type": "string"}, "payment_status": {"title": "Payment Status", "type": "string"}, "delivery_manager": {"anyOf": [{"$ref": "#/components/schemas/UserRefSchema"}, {"type": "null"}]}, "contract_value": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Contract Value"}, "sold_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Sold At"}, "completed_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Completed At"}, "days_in_status": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Days In Status"}, "permit_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Permit Status"}, "permit_status_label": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Permit Status Label"}, "incentive_summary": {"title": "Incentive Summary", "type": "string"}, "loan_summary": {"title": "Loan Summary", "type": "string"}, "warranty_registered": {"title": "Warranty Registered", "type": "boolean"}, "pre_install_checklist": {"items": {"type": "integer"}, "title": "Pre Install Checklist", "type": "array"}, "closeout_checklist": {"items": {"type": "integer"}, "title": "Closeout Checklist", "type": "array"}, "customer_email": {"title": "Customer Email", "type": "string"}, "installed_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Installed On"}, "final_inspection_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Final Inspection On"}, "done_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Done On"}, "notes": {"title": "Notes", "type": "string"}, "quote_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Quote Id"}, "onboarding_items": {"items": {"$ref": "#/components/schemas/ChecklistItemSchema"}, "title": "Onboarding Items", "type": "array"}, "closeout_items": {"items": {"$ref": "#/components/schemas/ChecklistItemSchema"}, "title": "Closeout Items", "type": "array"}, "permits": {"items": {"$ref": "#/components/schemas/PermitSchema"}, "title": "Permits", "type": "array"}, "incentive_applications": {"items": {"$ref": "#/components/schemas/IncentiveApplicationSchema"}, "title": "Incentive Applications", "type": "array"}, "loans": {"items": {"$ref": "#/components/schemas/LoanSchema"}, "title": "Loans", "type": "array"}, "equipment": {"items": {"$ref": "#/components/schemas/EquipmentSchema"}, "title": "Equipment", "type": "array"}, "contract": {"anyOf": [{"$ref": "#/components/schemas/ProjectContractSchema"}, {"type": "null"}]}, "sold_scope": {"$ref": "#/components/schemas/SoldScopeSchema"}}, "required": ["id", "deal_id", "customer_name", "customer_phone", "address", "locality", "status", "status_label", "phase", "hers_status", "payment_status", "incentive_summary", "loan_summary", "warranty_registered", "pre_install_checklist", "closeout_checklist", "customer_email", "notes", "onboarding_items", "closeout_items", "permits", "incentive_applications", "loans", "equipment", "sold_scope"], "title": "ProjectDetailSchema", "type": "object"}, "SoldAhjSchema": {"properties": {"ahj_id": {"title": "Ahj Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "is_primary": {"title": "Is Primary", "type": "boolean"}, "permit_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Permit Id"}, "permit_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Permit Status"}, "permit_status_label": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Permit Status Label"}, "requirements": {"items": {"$ref": "#/components/schemas/SoldRequirementSchema"}, "title": "Requirements", "type": "array"}}, "required": ["ahj_id", "name", "is_primary", "requirements"], "title": "SoldAhjSchema", "type": "object"}, "SoldFinancingSchema": {"properties": {"finance_to_quote_id": {"title": "Finance To Quote Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "amount": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Amount"}, "program_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Program Id"}, "loan_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Loan Id"}, "loan_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Loan Status"}, "loan_status_label": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Loan Status Label"}, "loan_amount": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Loan Amount"}}, "required": ["finance_to_quote_id", "name"], "title": "SoldFinancingSchema", "type": "object"}, "SoldIncentiveSchema": {"properties": {"incentive_quote_id": {"title": "Incentive Quote Id", "type": "integer"}, "incentive_id": {"title": "Incentive Id", "type": "string"}, "name": {"title": "Name", "type": "string"}, "quantity": {"title": "Quantity", "type": "integer"}, "amount": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Amount"}, "instant": {"title": "Instant", "type": "boolean"}, "application_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Application Id"}, "application_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Application Status"}, "application_status_label": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Application Status Label"}, "application_amount": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Application Amount"}}, "required": ["incentive_quote_id", "incentive_id", "name", "quantity", "instant"], "title": "SoldIncentiveSchema", "type": "object"}, "SoldRequirementSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "title": {"title": "Title", "type": "string"}, "category": {"title": "Category", "type": "string"}, "description": {"title": "Description", "type": "string"}, "on_quote": {"title": "On Quote", "type": "boolean"}}, "required": ["id", "title", "category", "description", "on_quote"], "title": "SoldRequirementSchema", "type": "object"}, "SoldScopeSchema": {"properties": {"quote_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Quote Id"}, "contract_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Contract Id"}, "contract_signed_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Contract Signed At"}, "contract_subtotal": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Contract Subtotal"}, "ahjs": {"items": {"$ref": "#/components/schemas/SoldAhjSchema"}, "title": "Ahjs", "type": "array"}, "incentives": {"items": {"$ref": "#/components/schemas/SoldIncentiveSchema"}, "title": "Incentives", "type": "array"}, "financing": {"items": {"$ref": "#/components/schemas/SoldFinancingSchema"}, "title": "Financing", "type": "array"}, "mismatches": {"items": {"$ref": "#/components/schemas/AttentionSchema"}, "title": "Mismatches", "type": "array"}}, "required": ["ahjs", "incentives", "financing", "mismatches"], "title": "SoldScopeSchema", "type": "object"}, "DealProjectSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "status": {"title": "Status", "type": "string"}, "status_label": {"title": "Status Label", "type": "string"}, "sold_quote_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Sold Quote Id"}}, "required": ["id", "status", "status_label"], "title": "DealProjectSchema", "type": "object"}, "ProjectUpdateSchema": {"properties": {"status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "hers_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Hers Status"}, "payment_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Payment Status"}, "delivery_manager_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Delivery Manager Id"}, "notes": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Notes"}, "installed_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Installed On"}, "final_inspection_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Final Inspection On"}, "done_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Done On"}}, "title": "ProjectUpdateSchema", "type": "object"}, "ChecklistTickSchema": {"properties": {"key": {"title": "Key", "type": "string"}, "checked": {"title": "Checked", "type": "boolean"}}, "required": ["key", "checked"], "title": "ChecklistTickSchema", "type": "object"}, "ProjectNoteSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "body": {"title": "Body", "type": "string"}, "author": {"anyOf": [{"$ref": "#/components/schemas/UserRefSchema"}, {"type": "null"}]}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "edited_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Edited At"}, "topic": {"enum": ["project", "permit", "incentive", "loan", "sales"], "title": "Topic", "type": "string"}, "record_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Record Id"}, "record_label": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Record Label"}, "can_edit": {"title": "Can Edit", "type": "boolean"}}, "required": ["id", "body", "created_at", "topic", "can_edit"], "title": "ProjectNoteSchema", "type": "object"}, "ProjectNoteWriteSchema": {"properties": {"body": {"title": "Body", "type": "string"}, "permit_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Permit Id"}, "incentive_application_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Incentive Application Id"}, "loan_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Loan Id"}}, "required": ["body"], "title": "ProjectNoteWriteSchema", "type": "object"}, "ProjectNoteUpdateSchema": {"properties": {"body": {"title": "Body", "type": "string"}}, "required": ["body"], "title": "ProjectNoteUpdateSchema", "type": "object"}, "ProjectTaskSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "activity_type_id": {"title": "Activity Type Id", "type": "integer"}, "activity_type_key": {"title": "Activity Type Key", "type": "string"}, "activity_type_name": {"title": "Activity Type Name", "type": "string"}, "activity_type_icon": {"title": "Activity Type Icon", "type": "string"}, "activity_type_color": {"title": "Activity Type Color", "type": "string"}, "subject": {"title": "Subject", "type": "string"}, "details": {"title": "Details", "type": "string"}, "owner_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Owner Id"}, "owner_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Owner Name"}, "created_by_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Created By Id"}, "created_by_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Created By Name"}, "due_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Due At"}, "duration_minutes": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Duration Minutes"}, "all_day": {"title": "All Day", "type": "boolean"}, "priority": {"title": "Priority", "type": "string"}, "status": {"title": "Status", "type": "string"}, "completed_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Completed At"}, "calendar_sync_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Calendar Sync Status"}, "calendar_sync_error": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Calendar Sync Error"}, "created_at": {"title": "Created At", "type": "string"}, "updated_at": {"title": "Updated At", "type": "string"}, "project_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Project Id"}, "record_kind": {"anyOf": [{"enum": ["permit", "incentive", "loan"], "type": "string"}, {"type": "null"}], "title": "Record Kind"}, "record_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Record Id"}, "record_label": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Record Label"}}, "required": ["id", "activity_type_id", "activity_type_key", "activity_type_name", "activity_type_icon", "activity_type_color", "subject", "details", "all_day", "priority", "status", "created_at", "updated_at"], "title": "ProjectTaskSchema", "type": "object"}, "ProjectTaskCreateSchema": {"properties": {"activity_type_id": {"title": "Activity Type Id", "type": "integer"}, "subject": {"title": "Subject", "type": "string"}, "details": {"default": "", "title": "Details", "type": "string"}, "owner_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Owner Id"}, "due_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Due At"}, "duration_minutes": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Duration Minutes"}, "all_day": {"default": false, "title": "All Day", "type": "boolean"}, "priority": {"default": "normal", "enum": ["low", "normal", "high"], "title": "Priority", "type": "string"}, "permit_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Permit Id"}, "incentive_application_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Incentive Application Id"}, "loan_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Loan Id"}}, "required": ["activity_type_id", "subject"], "title": "ProjectTaskCreateSchema", "type": "object"}, "SyncSoldScopeSchema": {"properties": {"created": {"title": "Created", "type": "integer"}, "linked": {"title": "Linked", "type": "integer"}, "project": {"$ref": "#/components/schemas/ProjectDetailSchema"}}, "required": ["created", "linked", "project"], "title": "SyncSoldScopeSchema", "type": "object"}, "AhjLookupSchema": {"properties": {"ahj": {"anyOf": [{"$ref": "#/components/schemas/RefSchema"}, {"type": "null"}]}}, "title": "AhjLookupSchema", "type": "object"}, "PermitWriteSchema": {"properties": {"ahj_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Ahj Id"}, "jurisdiction_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Jurisdiction Name"}, "permit_number": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Permit Number"}, "status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "applied_by": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Applied By"}, "responsible_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Responsible Id"}, "permit_fee": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}, {"type": "null"}], "title": "Permit Fee"}, "processing_fee": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}, {"type": "null"}], "title": "Processing Fee"}, "other_costs": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}, {"type": "null"}], "title": "Other Costs"}, "applied_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Applied On"}, "issued_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Issued On"}, "expires_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Expires On"}, "inspection_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Inspection At"}, "requires_onsite_inspection": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Requires Onsite Inspection"}}, "title": "PermitWriteSchema", "type": "object"}, "IncentiveApplicationWriteSchema": {"properties": {"incentive_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Incentive Id"}, "program_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Program Name"}, "status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "requires_preapproval": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Requires Preapproval"}, "payee": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Payee"}, "expected_amount": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}, {"type": "null"}], "title": "Expected Amount"}, "received_amount": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}, {"type": "null"}], "title": "Received Amount"}, "reservation_number": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Reservation Number"}, "reservation_expires_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Reservation Expires On"}, "submitted_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Submitted On"}, "responsible_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Responsible Id"}}, "title": "IncentiveApplicationWriteSchema", "type": "object"}, "LoanWriteSchema": {"properties": {"finance_program_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Finance Program Id"}, "lender_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Lender Name"}, "status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "amount": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}, {"type": "null"}], "title": "Amount"}, "approved_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Approved On"}, "expires_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Expires On"}, "funded_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Funded On"}, "document_link": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Document Link"}}, "title": "LoanWriteSchema", "type": "object"}, "EquipmentWriteSchema": {"properties": {"kind": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Kind"}, "manufacturer": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Manufacturer"}, "model_number": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Model Number"}, "serial_number": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Serial Number"}, "warranty_years": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Warranty Years"}, "registration_number": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Registration Number"}, "registered": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Registered"}, "notes": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Notes"}}, "title": "EquipmentWriteSchema", "type": "object"}, "FieldOptionsSchema": {"properties": {"job_types": {"items": {"$ref": "#/components/schemas/JobTypeSchema"}, "title": "Job Types", "type": "array"}, "technicians": {"items": {"$ref": "#/components/schemas/TechnicianRefSchema"}, "title": "Technicians", "type": "array"}, "vehicles": {"items": {"$ref": "#/components/schemas/ChoiceSchema"}, "title": "Vehicles", "type": "array"}, "job_statuses": {"items": {"$ref": "#/components/schemas/ChoiceSchema"}, "title": "Job Statuses", "type": "array"}, "visit_statuses": {"items": {"$ref": "#/components/schemas/ChoiceSchema"}, "title": "Visit Statuses", "type": "array"}, "categories": {"items": {"$ref": "#/components/schemas/ChoiceSchema"}, "title": "Categories", "type": "array"}, "business_units": {"items": {"$ref": "#/components/schemas/ChoiceSchema"}, "title": "Business Units", "type": "array"}, "technician_roles": {"items": {"$ref": "#/components/schemas/ChoiceSchema"}, "title": "Technician Roles", "type": "array"}, "technician_skills": {"items": {"type": "string"}, "title": "Technician Skills", "type": "array"}, "item_kinds": {"items": {"$ref": "#/components/schemas/ChoiceSchema"}, "title": "Item Kinds", "type": "array"}, "item_statuses": {"items": {"$ref": "#/components/schemas/ChoiceSchema"}, "title": "Item Statuses", "type": "array"}, "time_kinds": {"items": {"$ref": "#/components/schemas/ChoiceSchema"}, "title": "Time Kinds", "type": "array"}, "bonus_bases": {"items": {"$ref": "#/components/schemas/ChoiceSchema"}, "title": "Bonus Bases", "type": "array"}, "bonus_splits": {"items": {"$ref": "#/components/schemas/ChoiceSchema"}, "title": "Bonus Splits", "type": "array"}, "adjustment_kinds": {"items": {"$ref": "#/components/schemas/ChoiceSchema"}, "title": "Adjustment Kinds", "type": "array"}, "payment_methods": {"items": {"$ref": "#/components/schemas/ChoiceSchema"}, "title": "Payment Methods", "type": "array"}, "invoice_line_kinds": {"items": {"$ref": "#/components/schemas/ChoiceSchema"}, "title": "Invoice Line Kinds", "type": "array"}, "form_templates": {"items": {"$ref": "#/components/schemas/ChoiceSchema"}, "title": "Form Templates", "type": "array"}, "timezone": {"title": "Timezone", "type": "string"}}, "required": ["job_types", "technicians", "vehicles", "job_statuses", "visit_statuses", "categories", "business_units", "technician_roles", "technician_skills", "item_kinds", "item_statuses", "time_kinds", "bonus_bases", "bonus_splits", "adjustment_kinds", "payment_methods", "invoice_line_kinds", "form_templates", "timezone"], "title": "FieldOptionsSchema", "type": "object"}, "JobTypeSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "category": {"title": "Category", "type": "string"}, "business_unit": {"title": "Business Unit", "type": "string"}, "default_duration_hours": {"title": "Default Duration Hours", "type": "number"}, "default_crew_size": {"title": "Default Crew Size", "type": "integer"}, "summary_template": {"title": "Summary Template", "type": "string"}, "active": {"title": "Active", "type": "boolean"}}, "required": ["id", "name", "category", "business_unit", "default_duration_hours", "default_crew_size", "summary_template", "active"], "title": "JobTypeSchema", "type": "object"}, "TechnicianRefSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "color": {"title": "Color", "type": "string"}, "role": {"title": "Role", "type": "string"}, "team": {"title": "Team", "type": "string"}}, "required": ["id", "name", "color", "role", "team"], "title": "TechnicianRefSchema", "type": "object"}, "AttentionItemSchema": {"properties": {"kind": {"title": "Kind", "type": "string"}, "severity": {"title": "Severity", "type": "string"}, "label": {"title": "Label", "type": "string"}, "detail": {"title": "Detail", "type": "string"}, "link": {"title": "Link", "type": "string"}}, "required": ["kind", "severity", "label", "detail", "link"], "title": "AttentionItemSchema", "type": "object"}, "CrewTodaySchema": {"properties": {"technician": {"$ref": "#/components/schemas/TechnicianRefSchema"}, "clocked_in": {"title": "Clocked In", "type": "boolean"}, "current_kind": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Current Kind"}, "current_job_number": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Current Job Number"}, "since": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Since"}, "today_hours": {"title": "Today Hours", "type": "number"}, "visits": {"items": {"type": "string"}, "title": "Visits", "type": "array"}}, "required": ["technician", "clocked_in", "today_hours", "visits"], "title": "CrewTodaySchema", "type": "object"}, "DashboardSchema": {"properties": {"today": {"format": "date", "title": "Today", "type": "string"}, "stats": {"items": {"$ref": "#/components/schemas/StatSchema"}, "title": "Stats", "type": "array"}, "attention": {"items": {"$ref": "#/components/schemas/AttentionItemSchema"}, "title": "Attention", "type": "array"}, "crew": {"items": {"$ref": "#/components/schemas/CrewTodaySchema"}, "title": "Crew", "type": "array"}, "jobs_by_status": {"items": {"$ref": "#/components/schemas/ChoiceSchema"}, "title": "Jobs By Status", "type": "array"}}, "required": ["today", "stats", "attention", "crew", "jobs_by_status"], "title": "DashboardSchema", "type": "object"}, "StatSchema": {"properties": {"key": {"title": "Key", "type": "string"}, "label": {"title": "Label", "type": "string"}, "value": {"title": "Value", "type": "number"}, "format": {"title": "Format", "type": "string"}, "hint": {"default": "", "title": "Hint", "type": "string"}}, "required": ["key", "label", "value", "format"], "title": "StatSchema", "type": "object"}, "AddressSchema": {"properties": {"line1": {"title": "Line1", "type": "string"}, "line2": {"title": "Line2", "type": "string"}, "city": {"title": "City", "type": "string"}, "state": {"title": "State", "type": "string"}, "postal_code": {"title": "Postal Code", "type": "string"}, "formatted": {"title": "Formatted", "type": "string"}, "latitude": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Latitude"}, "longitude": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Longitude"}}, "required": ["line1", "line2", "city", "state", "postal_code", "formatted"], "title": "AddressSchema", "type": "object"}, "DispatchTagSchema": {"properties": {"key": {"title": "Key", "type": "string"}, "label": {"title": "Label", "type": "string"}, "detail": {"title": "Detail", "type": "string"}}, "required": ["key", "label", "detail"], "title": "DispatchTagSchema", "type": "object"}, "JobCardSchema": {"description": "A job as it appears on a list or the schedule board.", "properties": {"id": {"title": "Id", "type": "integer"}, "number": {"title": "Number", "type": "string"}, "summary": {"title": "Summary", "type": "string"}, "job_type_id": {"title": "Job Type Id", "type": "integer"}, "job_type_name": {"title": "Job Type Name", "type": "string"}, "category": {"title": "Category", "type": "string"}, "business_unit": {"title": "Business Unit", "type": "string"}, "status": {"title": "Status", "type": "string"}, "status_label": {"title": "Status Label", "type": "string"}, "priority": {"title": "Priority", "type": "integer"}, "customer_name": {"title": "Customer Name", "type": "string"}, "address": {"anyOf": [{"$ref": "#/components/schemas/AddressSchema"}, {"type": "null"}]}, "project_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Project Id"}, "deal_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Deal Id"}, "service_request_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Service Request Id"}, "customer_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Customer Id"}, "estimated_hours": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Estimated Hours"}, "planned_days": {"default": 1, "title": "Planned Days", "type": "integer"}, "sold_hours": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Sold Hours"}, "crew_size": {"default": 2, "title": "Crew Size", "type": "integer"}, "suggest_helper": {"default": false, "title": "Suggest Helper", "type": "boolean"}, "plan_note": {"default": "", "title": "Plan Note", "type": "string"}, "next_visit_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Next Visit At"}, "completed_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Completed At"}, "forms_open": {"default": 0, "title": "Forms Open", "type": "integer"}, "job_summary": {"default": "", "title": "Job Summary", "type": "string"}, "starts_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Starts At"}, "finish_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Finish At"}, "finish_overridden": {"default": false, "title": "Finish Overridden", "type": "boolean"}, "unbooked_days": {"default": [], "items": {"format": "date", "type": "string"}, "title": "Unbooked Days", "type": "array"}, "appointments_needed": {"default": 1, "title": "Appointments Needed", "type": "integer"}, "appointments_booked": {"default": 0, "title": "Appointments Booked", "type": "integer"}, "appointments_crewed": {"default": 0, "title": "Appointments Crewed", "type": "integer"}, "appointments_started": {"default": 0, "title": "Appointments Started", "type": "integer"}, "tags": {"default": [], "items": {"$ref": "#/components/schemas/DispatchTagSchema"}, "title": "Tags", "type": "array"}}, "required": ["id", "number", "summary", "job_type_id", "job_type_name", "category", "business_unit", "status", "status_label", "priority", "customer_name"], "title": "JobCardSchema", "type": "object"}, "JobListSchema": {"properties": {"items": {"items": {"$ref": "#/components/schemas/JobCardSchema"}, "title": "Items", "type": "array"}, "total": {"title": "Total", "type": "integer"}}, "required": ["items", "total"], "title": "JobListSchema", "type": "object"}, "AddressInput": {"properties": {"address_line1": {"title": "Address Line1", "type": "string"}, "address_line2": {"default": "", "title": "Address Line2", "type": "string"}, "city": {"title": "City", "type": "string"}, "state": {"default": "CA", "title": "State", "type": "string"}, "postal_code": {"default": "", "title": "Postal Code", "type": "string"}}, "required": ["address_line1", "city"], "title": "AddressInput", "type": "object"}, "JobCreateRequest": {"description": "Pick one target: project, deal, service request, or customer (+ address).", "properties": {"job_type_id": {"title": "Job Type Id", "type": "integer"}, "project_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Project Id"}, "deal_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Deal Id"}, "service_request_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Service Request Id"}, "customer_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Customer Id"}, "service_location_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Service Location Id"}, "new_customer": {"anyOf": [{"$ref": "#/components/schemas/NewCustomerInput"}, {"type": "null"}]}, "new_location": {"anyOf": [{"$ref": "#/components/schemas/AddressInput"}, {"type": "null"}]}, "summary": {"default": "", "title": "Summary", "type": "string"}, "job_summary": {"default": "", "title": "Job Summary", "type": "string"}, "instructions": {"default": "", "title": "Instructions", "type": "string"}, "priority": {"default": 3, "title": "Priority", "type": "integer"}, "callback_of_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Callback Of Id"}, "copy_quote_items": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Copy Quote Items"}}, "required": ["job_type_id"], "title": "JobCreateRequest", "type": "object"}, "NewCustomerInput": {"properties": {"name": {"title": "Name", "type": "string"}, "phone": {"default": "", "title": "Phone", "type": "string"}, "email": {"default": "", "title": "Email", "type": "string"}}, "required": ["name"], "title": "NewCustomerInput", "type": "object"}, "JobTargetsSchema": {"properties": {"projects": {"items": {"$ref": "#/components/schemas/TargetOptionSchema"}, "title": "Projects", "type": "array"}, "deals": {"items": {"$ref": "#/components/schemas/TargetOptionSchema"}, "title": "Deals", "type": "array"}, "service_requests": {"items": {"$ref": "#/components/schemas/TargetOptionSchema"}, "title": "Service Requests", "type": "array"}, "customers": {"items": {"$ref": "#/components/schemas/TargetCustomerSchema"}, "title": "Customers", "type": "array"}}, "required": ["projects", "deals", "service_requests", "customers"], "title": "JobTargetsSchema", "type": "object"}, "TargetCustomerSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "label": {"title": "Label", "type": "string"}, "detail": {"title": "Detail", "type": "string"}, "locations": {"items": {"$ref": "#/components/schemas/TargetLocationSchema"}, "title": "Locations", "type": "array"}}, "required": ["id", "label", "detail", "locations"], "title": "TargetCustomerSchema", "type": "object"}, "TargetLocationSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "address": {"title": "Address", "type": "string"}}, "required": ["id", "address"], "title": "TargetLocationSchema", "type": "object"}, "TargetOptionSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "label": {"title": "Label", "type": "string"}, "detail": {"title": "Detail", "type": "string"}, "status": {"default": "", "title": "Status", "type": "string"}}, "required": ["id", "label", "detail"], "title": "TargetOptionSchema", "type": "object"}, "CrewMemberSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "color": {"title": "Color", "type": "string"}, "role": {"title": "Role", "type": "string"}, "team": {"title": "Team", "type": "string"}, "is_lead": {"title": "Is Lead", "type": "boolean"}, "vehicle_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Vehicle Name"}}, "required": ["id", "name", "color", "role", "team", "is_lead"], "title": "CrewMemberSchema", "type": "object"}, "ReadinessCheckSchema": {"properties": {"key": {"title": "Key", "type": "string"}, "label": {"title": "Label", "type": "string"}, "ok": {"title": "Ok", "type": "boolean"}, "detail": {"title": "Detail", "type": "string"}}, "required": ["key", "label", "ok", "detail"], "title": "ReadinessCheckSchema", "type": "object"}, "ReadinessSchema": {"properties": {"ready": {"title": "Ready", "type": "boolean"}, "first_day": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "First Day"}, "checks": {"items": {"$ref": "#/components/schemas/ReadinessCheckSchema"}, "title": "Checks", "type": "array"}}, "required": ["ready", "checks"], "title": "ReadinessSchema", "type": "object"}, "UpcomingJobSchema": {"properties": {"job": {"$ref": "#/components/schemas/JobCardSchema"}, "readiness": {"$ref": "#/components/schemas/ReadinessSchema"}, "tentative_visit": {"anyOf": [{"$ref": "#/components/schemas/VisitSchema"}, {"type": "null"}]}}, "required": ["job", "readiness"], "title": "UpcomingJobSchema", "type": "object"}, "VisitSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "job_id": {"title": "Job Id", "type": "integer"}, "starts_at": {"format": "date-time", "title": "Starts At", "type": "string"}, "ends_at": {"format": "date-time", "title": "Ends At", "type": "string"}, "arrival_window_start": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Arrival Window Start"}, "arrival_window_end": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Arrival Window End"}, "status": {"title": "Status", "type": "string"}, "status_label": {"title": "Status Label", "type": "string"}, "tentative": {"default": false, "title": "Tentative", "type": "boolean"}, "notes": {"title": "Notes", "type": "string"}, "arrived_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Arrived At"}, "finished_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Finished At"}, "crew": {"items": {"$ref": "#/components/schemas/CrewMemberSchema"}, "title": "Crew", "type": "array"}}, "required": ["id", "job_id", "starts_at", "ends_at", "status", "status_label", "notes", "crew"], "title": "VisitSchema", "type": "object"}, "ConfirmCustomerRequest": {"properties": {"confirmed": {"default": true, "title": "Confirmed", "type": "boolean"}}, "title": "ConfirmCustomerRequest", "type": "object"}, "BonusAwardSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "technician_id": {"title": "Technician Id", "type": "integer"}, "technician_name": {"title": "Technician Name", "type": "string"}, "amount": {"title": "Amount", "type": "number"}, "reason": {"title": "Reason", "type": "string"}, "awarded_by": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Awarded By"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}}, "required": ["id", "technician_id", "technician_name", "amount", "reason", "created_at"], "title": "BonusAwardSchema", "type": "object"}, "BonusLineSchema": {"properties": {"rule_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Rule Id"}, "award_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Award Id"}, "rule": {"title": "Rule", "type": "string"}, "technician_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Technician Id"}, "amount": {"title": "Amount", "type": "number"}, "total": {"title": "Total", "type": "number"}, "reason": {"title": "Reason", "type": "string"}}, "required": ["rule", "amount", "total", "reason"], "title": "BonusLineSchema", "type": "object"}, "ContractItemSchema": {"description": "A line the customer bought, shown to the crew without prices.", "properties": {"kind": {"title": "Kind", "type": "string"}, "name": {"title": "Name", "type": "string"}, "quantity": {"title": "Quantity", "type": "number"}, "description": {"default": "", "title": "Description", "type": "string"}}, "required": ["kind", "name", "quantity"], "title": "ContractItemSchema", "type": "object"}, "FormSummarySchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "job_form_id": {"title": "Job Form Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "audience": {"title": "Audience", "type": "string"}, "required": {"title": "Required", "type": "boolean"}, "status": {"title": "Status", "type": "string"}, "complete": {"title": "Complete", "type": "integer"}, "total": {"title": "Total", "type": "integer"}}, "required": ["id", "job_form_id", "name", "audience", "required", "status", "complete", "total"], "title": "FormSummarySchema", "type": "object"}, "InstallReviewSchema": {"description": "The install manager's review from the photos and the office QC form, and what it pays.", "properties": {"rating": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Rating"}, "notes": {"title": "Notes", "type": "string"}, "reviewed_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Reviewed At"}, "reviewed_by": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Reviewed By"}, "qc_passed_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Qc Passed At"}, "office_qc_form_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Office Qc Form Id"}, "office_qc_complete": {"default": 0, "title": "Office Qc Complete", "type": "integer"}, "office_qc_total": {"default": 0, "title": "Office Qc Total", "type": "integer"}, "open_punch_items": {"default": 0, "title": "Open Punch Items", "type": "integer"}, "awards": {"items": {"$ref": "#/components/schemas/BonusAwardSchema"}, "title": "Awards", "type": "array"}, "can_edit": {"title": "Can Edit", "type": "boolean"}}, "required": ["notes", "awards", "can_edit"], "title": "InstallReviewSchema", "type": "object"}, "InvoiceRowSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "number": {"title": "Number", "type": "string"}, "title": {"title": "Title", "type": "string"}, "status": {"title": "Status", "type": "string"}, "status_label": {"title": "Status Label", "type": "string"}, "customer_name": {"title": "Customer Name", "type": "string"}, "job_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Job Id"}, "job_number": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Job Number"}, "issued_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Issued On"}, "due_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Due On"}, "total": {"title": "Total", "type": "number"}, "amount_paid": {"title": "Amount Paid", "type": "number"}, "balance": {"title": "Balance", "type": "number"}, "days_overdue": {"title": "Days Overdue", "type": "integer"}, "qbo_synced": {"title": "Qbo Synced", "type": "boolean"}, "qbo_sync_error": {"title": "Qbo Sync Error", "type": "string"}}, "required": ["id", "number", "title", "status", "status_label", "customer_name", "total", "amount_paid", "balance", "days_overdue", "qbo_synced", "qbo_sync_error"], "title": "InvoiceRowSchema", "type": "object"}, "JobCostSchema": {"properties": {"labor_hours": {"title": "Labor Hours", "type": "number"}, "labor_cost": {"title": "Labor Cost", "type": "number"}, "material_cost": {"title": "Material Cost", "type": "number"}, "revenue": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Revenue"}, "gross_margin": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Gross Margin"}}, "required": ["labor_hours", "labor_cost", "material_cost"], "title": "JobCostSchema", "type": "object"}, "JobDetailSchema": {"properties": {"job": {"$ref": "#/components/schemas/JobCardSchema"}, "customer_phone": {"title": "Customer Phone", "type": "string"}, "customer_email": {"title": "Customer Email", "type": "string"}, "instructions": {"title": "Instructions", "type": "string"}, "office_notes": {"title": "Office Notes", "type": "string"}, "contract_items": {"items": {"$ref": "#/components/schemas/ContractItemSchema"}, "title": "Contract Items", "type": "array"}, "finish_override_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Finish Override At"}, "budget_hours": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Budget Hours"}, "revenue": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Revenue"}, "is_callback": {"title": "Is Callback", "type": "boolean"}, "callback_of": {"anyOf": [{"$ref": "#/components/schemas/JobCardSchema"}, {"type": "null"}]}, "visits": {"items": {"$ref": "#/components/schemas/VisitSchema"}, "title": "Visits", "type": "array"}, "items": {"items": {"$ref": "#/components/schemas/JobItemSchema"}, "title": "Items", "type": "array"}, "sold_lines": {"default": 0, "title": "Sold Lines", "type": "integer"}, "missing_sold_lines": {"default": 0, "title": "Missing Sold Lines", "type": "integer"}, "forms": {"items": {"$ref": "#/components/schemas/FormSummarySchema"}, "title": "Forms", "type": "array"}, "photos": {"items": {"$ref": "#/components/schemas/PhotoSchema"}, "title": "Photos", "type": "array"}, "time": {"items": {"$ref": "#/components/schemas/JobTimeSchema"}, "title": "Time", "type": "array"}, "bonus_preview": {"items": {"$ref": "#/components/schemas/BonusLineSchema"}, "title": "Bonus Preview", "type": "array"}, "invoices": {"items": {"$ref": "#/components/schemas/InvoiceRowSchema"}, "title": "Invoices", "type": "array"}, "cost": {"$ref": "#/components/schemas/JobCostSchema"}, "completion_notes": {"title": "Completion Notes", "type": "string"}, "customer_signed_name": {"title": "Customer Signed Name", "type": "string"}, "signature_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Signature Url"}, "qc_passed_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Qc Passed At"}, "review": {"$ref": "#/components/schemas/InstallReviewSchema"}, "project_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Project Status"}, "readiness": {"anyOf": [{"$ref": "#/components/schemas/ReadinessSchema"}, {"type": "null"}]}}, "required": ["job", "customer_phone", "customer_email", "instructions", "office_notes", "contract_items", "is_callback", "visits", "items", "forms", "photos", "time", "bonus_preview", "invoices", "cost", "completion_notes", "customer_signed_name", "review"], "title": "JobDetailSchema", "type": "object"}, "JobItemSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "kind": {"title": "Kind", "type": "string"}, "kind_label": {"title": "Kind Label", "type": "string"}, "name": {"title": "Name", "type": "string"}, "sku": {"title": "Sku", "type": "string"}, "quantity": {"title": "Quantity", "type": "number"}, "quantity_used": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Quantity Used"}, "status": {"title": "Status", "type": "string"}, "status_label": {"title": "Status Label", "type": "string"}, "serial_number": {"title": "Serial Number", "type": "string"}, "source": {"title": "Source", "type": "string"}, "stock_unit_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Stock Unit Id"}, "product_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Product Id"}, "cart_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Cart Id"}, "unit_price": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Unit Price"}, "invoice_number": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Invoice Number"}}, "required": ["id", "kind", "kind_label", "name", "sku", "quantity", "status", "status_label", "serial_number", "source"], "title": "JobItemSchema", "type": "object"}, "JobTimeSchema": {"properties": {"technician": {"$ref": "#/components/schemas/TechnicianRefSchema"}, "hours": {"title": "Hours", "type": "number"}}, "required": ["technician", "hours"], "title": "JobTimeSchema", "type": "object"}, "PhotoSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "url": {"title": "Url", "type": "string"}, "category": {"title": "Category", "type": "string"}, "caption": {"title": "Caption", "type": "string"}, "taken_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Taken At"}, "technician_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Technician Name"}, "uploaded_by_technician_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Uploaded By Technician Id"}, "uploaded_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Uploaded At"}, "ready": {"title": "Ready", "type": "boolean"}, "form_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Form Name"}, "media_type": {"default": "image", "title": "Media Type", "type": "string"}, "content_type": {"default": "", "title": "Content Type", "type": "string"}}, "required": ["id", "url", "category", "caption", "ready"], "title": "PhotoSchema", "type": "object"}, "JobUpdateRequest": {"properties": {"summary": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Summary"}, "job_summary": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Job Summary"}, "instructions": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Instructions"}, "finish_override_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Finish Override At"}, "office_notes": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Office Notes"}, "priority": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Priority"}, "job_type_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Job Type Id"}, "estimated_hours": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Estimated Hours"}, "budget_hours": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Budget Hours"}, "sold_hours": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Sold Hours"}, "revenue": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Revenue"}, "status": {"anyOf": [{"enum": ["on_hold", "resume", "cancelled", "reopen"], "type": "string"}, {"type": "null"}], "title": "Status"}}, "title": "JobUpdateRequest", "type": "object"}, "CompleteRequest": {"properties": {"notes": {"default": "", "title": "Notes", "type": "string"}, "force": {"default": false, "title": "Force", "type": "boolean"}}, "title": "CompleteRequest", "type": "object"}, "VisitResultSchema": {"properties": {"visit": {"$ref": "#/components/schemas/VisitSchema"}, "conflicts": {"items": {"type": "string"}, "title": "Conflicts", "type": "array"}}, "required": ["visit", "conflicts"], "title": "VisitResultSchema", "type": "object"}, "VisitRequest": {"properties": {"starts_at": {"format": "date-time", "title": "Starts At", "type": "string"}, "ends_at": {"format": "date-time", "title": "Ends At", "type": "string"}, "technician_ids": {"default": [], "items": {"type": "integer"}, "title": "Technician Ids", "type": "array"}, "tentative": {"default": false, "title": "Tentative", "type": "boolean"}, "lead_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Lead Id"}, "arrival_window_start": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Arrival Window Start"}, "arrival_window_end": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Arrival Window End"}, "notes": {"default": "", "title": "Notes", "type": "string"}, "allow_conflicts": {"default": false, "title": "Allow Conflicts", "type": "boolean"}}, "required": ["starts_at", "ends_at"], "title": "VisitRequest", "type": "object"}, "InstallDaysRequest": {"properties": {"first_day": {"format": "date", "title": "First Day", "type": "string"}, "days": {"default": 1, "title": "Days", "type": "integer"}, "technician_ids": {"default": [], "items": {"type": "integer"}, "title": "Technician Ids", "type": "array"}, "lead_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Lead Id"}, "skip_weekends": {"default": true, "title": "Skip Weekends", "type": "boolean"}, "tentative": {"default": false, "title": "Tentative", "type": "boolean"}, "finish_override_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Finish Override At"}}, "required": ["first_day"], "title": "InstallDaysRequest", "type": "object"}, "VisitUpdateRequest": {"properties": {"starts_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Starts At"}, "ends_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Ends At"}, "technician_ids": {"anyOf": [{"items": {"type": "integer"}, "type": "array"}, {"type": "null"}], "title": "Technician Ids"}, "lead_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Lead Id"}, "arrival_window_start": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Arrival Window Start"}, "arrival_window_end": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Arrival Window End"}, "notes": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Notes"}, "status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "tentative": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Tentative"}}, "title": "VisitUpdateRequest", "type": "object"}, "ItemRequest": {"properties": {"product_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Product Id"}, "kind": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Kind"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "sku": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sku"}, "quantity": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Quantity"}, "quantity_used": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Quantity Used"}, "unit_cost": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Unit Cost"}, "status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "serial_number": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Serial Number"}}, "title": "ItemRequest", "type": "object"}, "AddFormRequest": {"properties": {"template_id": {"title": "Template Id", "type": "integer"}, "audience": {"default": "technician", "enum": ["technician", "office"], "title": "Audience", "type": "string"}, "required": {"default": true, "title": "Required", "type": "boolean"}}, "required": ["template_id"], "title": "AddFormRequest", "type": "object"}, "PhotoUploadResponse": {"properties": {"media_id": {"title": "Media Id", "type": "integer"}, "presigned_url": {"title": "Presigned Url", "type": "string"}}, "required": ["media_id", "presigned_url"], "title": "PhotoUploadResponse", "type": "object"}, "PhotoUploadRequest": {"properties": {"file_type": {"title": "File Type", "type": "string"}, "original_filename": {"default": "", "title": "Original Filename", "type": "string"}, "category": {"default": "", "title": "Category", "type": "string"}, "caption": {"default": "", "title": "Caption", "type": "string"}, "taken_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Taken At"}}, "required": ["file_type"], "title": "PhotoUploadRequest", "type": "object"}, "BlockSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "technician_id": {"title": "Technician Id", "type": "integer"}, "technician_name": {"title": "Technician Name", "type": "string"}, "kind": {"title": "Kind", "type": "string"}, "kind_label": {"title": "Kind Label", "type": "string"}, "starts_at": {"format": "date-time", "title": "Starts At", "type": "string"}, "ends_at": {"format": "date-time", "title": "Ends At", "type": "string"}, "notes": {"title": "Notes", "type": "string"}}, "required": ["id", "technician_id", "technician_name", "kind", "kind_label", "starts_at", "ends_at", "notes"], "title": "BlockSchema", "type": "object"}, "CapacityDaySchema": {"properties": {"day": {"format": "date", "title": "Day", "type": "string"}, "crews": {"title": "Crews", "type": "integer"}, "confirmed": {"title": "Confirmed", "type": "integer"}, "tentative": {"title": "Tentative", "type": "integer"}, "open": {"title": "Open", "type": "integer"}, "crews_off": {"title": "Crews Off", "type": "integer"}}, "required": ["day", "crews", "confirmed", "tentative", "open", "crews_off"], "title": "CapacityDaySchema", "type": "object"}, "DispatchBoardSchema": {"properties": {"start": {"format": "date", "title": "Start", "type": "string"}, "end": {"format": "date", "title": "End", "type": "string"}, "timezone": {"title": "Timezone", "type": "string"}, "technicians": {"items": {"$ref": "#/components/schemas/DispatchTechnicianSchema"}, "title": "Technicians", "type": "array"}, "visits": {"items": {"$ref": "#/components/schemas/DispatchVisitSchema"}, "title": "Visits", "type": "array"}, "unscheduled": {"items": {"$ref": "#/components/schemas/JobCardSchema"}, "title": "Unscheduled", "type": "array"}, "blocks": {"items": {"$ref": "#/components/schemas/BlockSchema"}, "title": "Blocks", "type": "array"}, "capacity": {"items": {"$ref": "#/components/schemas/CapacityDaySchema"}, "title": "Capacity", "type": "array"}}, "required": ["start", "end", "timezone", "technicians", "visits", "unscheduled", "blocks", "capacity"], "title": "DispatchBoardSchema", "type": "object"}, "DispatchTechnicianSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "color": {"title": "Color", "type": "string"}, "role": {"title": "Role", "type": "string"}, "team": {"title": "Team", "type": "string"}, "clocked_in": {"title": "Clocked In", "type": "boolean"}, "current_kind": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Current Kind"}, "latitude": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Latitude"}, "longitude": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Longitude"}, "location_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Location At"}, "vehicle_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Vehicle Name"}}, "required": ["id", "name", "color", "role", "team", "clocked_in"], "title": "DispatchTechnicianSchema", "type": "object"}, "DispatchVisitSchema": {"properties": {"visit": {"$ref": "#/components/schemas/VisitSchema"}, "job": {"$ref": "#/components/schemas/JobCardSchema"}}, "required": ["visit", "job"], "title": "DispatchVisitSchema", "type": "object"}, "OpeningSchema": {"properties": {"days": {"items": {"format": "date", "type": "string"}, "title": "Days", "type": "array"}}, "required": ["days"], "title": "OpeningSchema", "type": "object"}, "MoveBlockResultSchema": {"properties": {"visits": {"items": {"$ref": "#/components/schemas/VisitSchema"}, "title": "Visits", "type": "array"}, "conflicts": {"items": {"type": "string"}, "title": "Conflicts", "type": "array"}}, "required": ["visits", "conflicts"], "title": "MoveBlockResultSchema", "type": "object"}, "MoveBlockRequest": {"properties": {"first_day": {"format": "date", "title": "First Day", "type": "string"}}, "required": ["first_day"], "title": "MoveBlockRequest", "type": "object"}, "PlanMoveSchema": {"properties": {"job_id": {"title": "Job Id", "type": "integer"}, "job_number": {"title": "Job Number", "type": "string"}, "customer_name": {"title": "Customer Name", "type": "string"}, "days": {"title": "Days", "type": "integer"}, "from_day": {"format": "date", "title": "From Day", "type": "string"}, "to_day": {"format": "date", "title": "To Day", "type": "string"}}, "required": ["job_id", "job_number", "customer_name", "days", "from_day", "to_day"], "title": "PlanMoveSchema", "type": "object"}, "BusyItemSchema": {"properties": {"kind": {"title": "Kind", "type": "string"}, "starts_at": {"format": "date-time", "title": "Starts At", "type": "string"}, "ends_at": {"format": "date-time", "title": "Ends At", "type": "string"}, "label": {"title": "Label", "type": "string"}, "job_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Job Id"}}, "required": ["kind", "starts_at", "ends_at", "label"], "title": "BusyItemSchema", "type": "object"}, "TechnicianAvailabilitySchema": {"properties": {"technician": {"$ref": "#/components/schemas/TechnicianRefSchema"}, "busy": {"items": {"$ref": "#/components/schemas/BusyItemSchema"}, "title": "Busy", "type": "array"}}, "required": ["technician", "busy"], "title": "TechnicianAvailabilitySchema", "type": "object"}, "BlockRequest": {"properties": {"technician_ids": {"items": {"type": "integer"}, "title": "Technician Ids", "type": "array"}, "kind": {"default": "time_off", "title": "Kind", "type": "string"}, "starts_at": {"format": "date-time", "title": "Starts At", "type": "string"}, "ends_at": {"format": "date-time", "title": "Ends At", "type": "string"}, "notes": {"default": "", "title": "Notes", "type": "string"}}, "required": ["technician_ids", "starts_at", "ends_at"], "title": "BlockRequest", "type": "object"}, "DeviceSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "app_version": {"title": "App Version", "type": "string"}, "last_seen_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Last Seen At"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}}, "required": ["id", "name", "app_version", "created_at"], "title": "DeviceSchema", "type": "object"}, "ProfileJobSchema": {"properties": {"job": {"$ref": "#/components/schemas/JobCardSchema"}, "days_on_site": {"title": "Days On Site", "type": "integer"}, "was_lead": {"title": "Was Lead", "type": "boolean"}, "had_callback": {"title": "Had Callback", "type": "boolean"}}, "required": ["job", "days_on_site", "was_lead", "had_callback"], "title": "ProfileJobSchema", "type": "object"}, "ProfileStatsSchema": {"properties": {"installs_90_days": {"title": "Installs 90 Days", "type": "integer"}, "jobs_90_days": {"title": "Jobs 90 Days", "type": "integer"}, "avg_install_days": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Avg Install Days"}, "callbacks_90_days": {"title": "Callbacks 90 Days", "type": "integer"}, "qc_passed_share": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Qc Passed Share"}, "hours_this_week": {"title": "Hours This Week", "type": "number"}, "lead_share": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Lead Share"}}, "required": ["installs_90_days", "jobs_90_days", "callbacks_90_days", "hours_this_week"], "title": "ProfileStatsSchema", "type": "object"}, "TechnicianProfileSchema": {"properties": {"technician": {"$ref": "#/components/schemas/TechnicianSchema"}, "stats": {"$ref": "#/components/schemas/ProfileStatsSchema"}, "upcoming": {"items": {"$ref": "#/components/schemas/DispatchVisitSchema"}, "title": "Upcoming", "type": "array"}, "recent_jobs": {"items": {"$ref": "#/components/schemas/ProfileJobSchema"}, "title": "Recent Jobs", "type": "array"}, "time_off": {"items": {"$ref": "#/components/schemas/BlockSchema"}, "title": "Time Off", "type": "array"}, "vehicle": {"anyOf": [{"$ref": "#/components/schemas/VehicleSchema"}, {"type": "null"}]}, "worked_with": {"items": {"$ref": "#/components/schemas/TechnicianRefSchema"}, "title": "Worked With", "type": "array"}}, "required": ["technician", "stats", "upcoming", "recent_jobs", "time_off", "worked_with"], "title": "TechnicianProfileSchema", "type": "object"}, "TechnicianSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "color": {"title": "Color", "type": "string"}, "role": {"title": "Role", "type": "string"}, "team": {"title": "Team", "type": "string"}, "email": {"title": "Email", "type": "string"}, "phone": {"title": "Phone", "type": "string"}, "active": {"title": "Active", "type": "boolean"}, "pay_type": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Pay Type"}, "hourly_rate": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Hourly Rate"}, "salary_per_period": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Salary Per Period"}, "burden_rate": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Burden Rate"}, "level": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Level"}, "skills": {"items": {"type": "string"}, "title": "Skills", "type": "array"}, "hire_date": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Hire Date"}, "user_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "User Id"}, "notes": {"title": "Notes", "type": "string"}, "ai_coaching": {"default": "", "title": "Ai Coaching", "type": "string"}, "vehicles": {"items": {"type": "string"}, "title": "Vehicles", "type": "array"}, "devices": {"items": {"$ref": "#/components/schemas/DeviceSchema"}, "title": "Devices", "type": "array"}, "pairing_pending": {"title": "Pairing Pending", "type": "boolean"}, "jobs_last_90_days": {"default": 0, "title": "Jobs Last 90 Days", "type": "integer"}, "next_visit_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Next Visit At"}, "next_visit_label": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Next Visit Label"}, "clocked_in": {"default": false, "title": "Clocked In", "type": "boolean"}}, "required": ["id", "name", "color", "role", "team", "email", "phone", "active", "skills", "notes", "vehicles", "devices", "pairing_pending"], "title": "TechnicianSchema", "type": "object"}, "VehicleSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "make": {"title": "Make", "type": "string"}, "model": {"title": "Model", "type": "string"}, "year": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year"}, "plate": {"title": "Plate", "type": "string"}, "vin": {"title": "Vin", "type": "string"}, "status": {"title": "Status", "type": "string"}, "status_label": {"title": "Status Label", "type": "string"}, "technicians": {"items": {"$ref": "#/components/schemas/TechnicianRefSchema"}, "title": "Technicians", "type": "array"}, "odometer": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Odometer"}, "next_service_miles": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Next Service Miles"}, "next_service_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Next Service On"}, "registration_expires_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Registration Expires On"}, "insurance_expires_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Insurance Expires On"}, "notes": {"title": "Notes", "type": "string"}, "alerts": {"items": {"type": "string"}, "title": "Alerts", "type": "array"}}, "required": ["id", "name", "make", "model", "plate", "vin", "status", "status_label", "technicians", "notes", "alerts"], "title": "VehicleSchema", "type": "object"}, "TechnicianRequest": {"properties": {"name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "email": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Email"}, "phone": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Phone"}, "role": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Role"}, "color": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Color"}, "active": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Active"}, "pay_type": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Pay Type"}, "hourly_rate": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Hourly Rate"}, "salary_per_period": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Salary Per Period"}, "burden_rate": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Burden Rate"}, "team": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Team"}, "level": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Level"}, "skills": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Skills"}, "hire_date": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Hire Date"}, "notes": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Notes"}, "ai_coaching": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ai Coaching"}}, "title": "TechnicianRequest", "type": "object"}, "PairingCodeSchema": {"properties": {"code": {"title": "Code", "type": "string"}, "expires_at": {"format": "date-time", "title": "Expires At", "type": "string"}, "technician_name": {"title": "Technician Name", "type": "string"}}, "required": ["code", "expires_at", "technician_name"], "title": "PairingCodeSchema", "type": "object"}, "RoutePointSchema": {"properties": {"recorded_at": {"format": "date-time", "title": "Recorded At", "type": "string"}, "latitude": {"title": "Latitude", "type": "number"}, "longitude": {"title": "Longitude", "type": "number"}, "accuracy_m": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Accuracy M"}}, "required": ["recorded_at", "latitude", "longitude"], "title": "RoutePointSchema", "type": "object"}, "TechnicianDaySchema": {"properties": {"entries": {"items": {"$ref": "#/components/schemas/TimeEntrySchema"}, "title": "Entries", "type": "array"}, "route": {"items": {"$ref": "#/components/schemas/RoutePointSchema"}, "title": "Route", "type": "array"}, "visits": {"items": {"$ref": "#/components/schemas/DispatchVisitSchema"}, "title": "Visits", "type": "array"}}, "required": ["entries", "route", "visits"], "title": "TechnicianDaySchema", "type": "object"}, "TimeEntrySchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "technician_id": {"title": "Technician Id", "type": "integer"}, "kind": {"title": "Kind", "type": "string"}, "kind_label": {"title": "Kind Label", "type": "string"}, "job_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Job Id"}, "job_number": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Job Number"}, "started_at": {"format": "date-time", "title": "Started At", "type": "string"}, "ended_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Ended At"}, "hours": {"title": "Hours", "type": "number"}, "start_latitude": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Start Latitude"}, "start_longitude": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Start Longitude"}, "end_latitude": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "End Latitude"}, "end_longitude": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "End Longitude"}, "source": {"title": "Source", "type": "string"}, "notes": {"title": "Notes", "type": "string"}, "edited": {"title": "Edited", "type": "boolean"}, "approved": {"title": "Approved", "type": "boolean"}}, "required": ["id", "technician_id", "kind", "kind_label", "started_at", "hours", "source", "notes", "edited", "approved"], "title": "TimeEntrySchema", "type": "object"}, "PeriodSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "starts_on": {"format": "date", "title": "Starts On", "type": "string"}, "ends_on": {"format": "date", "title": "Ends On", "type": "string"}, "status": {"title": "Status", "type": "string"}, "status_label": {"title": "Status Label", "type": "string"}}, "required": ["id", "starts_on", "ends_on", "status", "status_label"], "title": "PeriodSchema", "type": "object"}, "TimesheetRowSchema": {"properties": {"technician": {"$ref": "#/components/schemas/TechnicianRefSchema"}, "days": {"items": {"additionalProperties": true, "type": "object"}, "title": "Days", "type": "array"}, "regular_hours": {"title": "Regular Hours", "type": "number"}, "overtime_hours": {"title": "Overtime Hours", "type": "number"}, "double_time_hours": {"title": "Double Time Hours", "type": "number"}, "total_hours": {"title": "Total Hours", "type": "number"}, "flags": {"items": {"type": "string"}, "title": "Flags", "type": "array"}, "unapproved": {"title": "Unapproved", "type": "integer"}}, "required": ["technician", "days", "regular_hours", "overtime_hours", "double_time_hours", "total_hours", "flags", "unapproved"], "title": "TimesheetRowSchema", "type": "object"}, "TimesheetsSchema": {"properties": {"period": {"$ref": "#/components/schemas/PeriodSchema"}, "rows": {"items": {"$ref": "#/components/schemas/TimesheetRowSchema"}, "title": "Rows", "type": "array"}}, "required": ["period", "rows"], "title": "TimesheetsSchema", "type": "object"}, "TimeEntryRequest": {"properties": {"technician_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Technician Id"}, "kind": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Kind"}, "started_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Started At"}, "ended_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Ended At"}, "job_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Job Id"}, "notes": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Notes"}}, "title": "TimeEntryRequest", "type": "object"}, "ApproveRequest": {"properties": {"technician_id": {"title": "Technician Id", "type": "integer"}, "period_id": {"title": "Period Id", "type": "integer"}, "approved": {"default": true, "title": "Approved", "type": "boolean"}}, "required": ["technician_id", "period_id"], "title": "ApproveRequest", "type": "object"}, "PayPeriodDetailSchema": {"properties": {"period": {"$ref": "#/components/schemas/PeriodSchema"}, "sheets": {"items": {"additionalProperties": true, "type": "object"}, "title": "Sheets", "type": "array"}, "unpaid_bonus_lines": {"items": {"additionalProperties": true, "type": "object"}, "title": "Unpaid Bonus Lines", "type": "array"}, "totals": {"additionalProperties": {"type": "number"}, "title": "Totals", "type": "object"}}, "required": ["period", "sheets", "unpaid_bonus_lines", "totals"], "title": "PayPeriodDetailSchema", "type": "object"}, "AdjustmentRequest": {"properties": {"technician_id": {"title": "Technician Id", "type": "integer"}, "kind": {"default": "bonus", "title": "Kind", "type": "string"}, "amount": {"title": "Amount", "type": "number"}, "description": {"title": "Description", "type": "string"}, "job_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Job Id"}}, "required": ["technician_id", "amount", "description"], "title": "AdjustmentRequest", "type": "object"}, "BonusRuleSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "basis": {"title": "Basis", "type": "string"}, "amount": {"title": "Amount", "type": "number"}, "categories": {"items": {"type": "string"}, "title": "Categories", "type": "array"}, "business_units": {"items": {"type": "string"}, "title": "Business Units", "type": "array"}, "roles": {"items": {"type": "string"}, "title": "Roles", "type": "array"}, "split": {"title": "Split", "type": "string"}, "max_visit_days": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Max Visit Days"}, "forfeit_on_callback_days": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Forfeit On Callback Days"}, "active": {"title": "Active", "type": "boolean"}}, "required": ["id", "name", "basis", "amount", "categories", "business_units", "roles", "split", "active"], "title": "BonusRuleSchema", "type": "object"}, "BonusRuleRequest": {"properties": {"name": {"title": "Name", "type": "string"}, "basis": {"title": "Basis", "type": "string"}, "amount": {"title": "Amount", "type": "number"}, "categories": {"default": [], "items": {"type": "string"}, "title": "Categories", "type": "array"}, "business_units": {"default": [], "items": {"type": "string"}, "title": "Business Units", "type": "array"}, "roles": {"default": [], "items": {"type": "string"}, "title": "Roles", "type": "array"}, "split": {"default": "by_hours", "title": "Split", "type": "string"}, "max_visit_days": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Max Visit Days"}, "forfeit_on_callback_days": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Forfeit On Callback Days"}, "active": {"default": true, "title": "Active", "type": "boolean"}}, "required": ["name", "basis", "amount"], "title": "BonusRuleRequest", "type": "object"}, "VehicleRequest": {"properties": {"name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "make": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Make"}, "model": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Model"}, "year": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Year"}, "plate": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Plate"}, "vin": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Vin"}, "status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "technician_ids": {"anyOf": [{"items": {"type": "integer"}, "type": "array"}, {"type": "null"}], "title": "Technician Ids"}, "odometer": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Odometer"}, "next_service_miles": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Next Service Miles"}, "next_service_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Next Service On"}, "registration_expires_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Registration Expires On"}, "insurance_expires_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Insurance Expires On"}, "notes": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Notes"}}, "title": "VehicleRequest", "type": "object"}, "VehicleLogSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "kind": {"title": "Kind", "type": "string"}, "kind_label": {"title": "Kind Label", "type": "string"}, "occurred_on": {"format": "date", "title": "Occurred On", "type": "string"}, "odometer": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Odometer"}, "cost": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Cost"}, "notes": {"title": "Notes", "type": "string"}, "by": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "By"}, "resolved_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Resolved At"}}, "required": ["id", "kind", "kind_label", "occurred_on", "notes"], "title": "VehicleLogSchema", "type": "object"}, "VehicleLogRequest": {"properties": {"kind": {"title": "Kind", "type": "string"}, "occurred_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Occurred On"}, "odometer": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Odometer"}, "cost": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Cost"}, "notes": {"default": "", "title": "Notes", "type": "string"}}, "required": ["kind"], "title": "VehicleLogRequest", "type": "object"}, "InvoiceListSchema": {"properties": {"items": {"items": {"$ref": "#/components/schemas/InvoiceRowSchema"}, "title": "Items", "type": "array"}, "total": {"title": "Total", "type": "integer"}, "aging": {"additionalProperties": {"type": "number"}, "title": "Aging", "type": "object"}}, "required": ["items", "total", "aging"], "title": "InvoiceListSchema", "type": "object"}, "BilledExtraSchema": {"properties": {"line_id": {"title": "Line Id", "type": "integer"}, "product_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Product Id"}, "description": {"title": "Description", "type": "string"}, "quantity": {"title": "Quantity", "type": "number"}, "amount": {"title": "Amount", "type": "number"}, "invoice_number": {"title": "Invoice Number", "type": "string"}}, "required": ["line_id", "description", "quantity", "amount", "invoice_number"], "title": "BilledExtraSchema", "type": "object"}, "ProjectBillingSchema": {"properties": {"sold_total": {"title": "Sold Total", "type": "number"}, "invoiced": {"title": "Invoiced", "type": "number"}, "paid": {"title": "Paid", "type": "number"}, "balance_due": {"title": "Balance Due", "type": "number"}, "not_yet_invoiced": {"title": "Not Yet Invoiced", "type": "number"}, "invoices": {"items": {"$ref": "#/components/schemas/InvoiceRowSchema"}, "title": "Invoices", "type": "array"}, "sold_items": {"items": {"$ref": "#/components/schemas/SoldItemSchema"}, "title": "Sold Items", "type": "array"}, "extras": {"items": {"$ref": "#/components/schemas/BilledExtraSchema"}, "title": "Extras", "type": "array"}, "uninvoiced_extras": {"items": {"$ref": "#/components/schemas/UninvoicedItemSchema"}, "title": "Uninvoiced Extras", "type": "array"}}, "required": ["sold_total", "invoiced", "paid", "balance_due", "not_yet_invoiced", "invoices", "sold_items", "extras", "uninvoiced_extras"], "title": "ProjectBillingSchema", "type": "object"}, "SoldItemSchema": {"properties": {"cart_id": {"title": "Cart Id", "type": "integer"}, "product_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Product Id"}, "name": {"title": "Name", "type": "string"}, "sku": {"title": "Sku", "type": "string"}, "kind": {"title": "Kind", "type": "string"}, "quantity": {"title": "Quantity", "type": "number"}, "sold_amount": {"title": "Sold Amount", "type": "number"}, "bundled": {"title": "Bundled", "type": "boolean"}, "installed_quantity": {"title": "Installed Quantity", "type": "number"}, "invoiced_quantity": {"title": "Invoiced Quantity", "type": "number"}, "invoiced_amount": {"title": "Invoiced Amount", "type": "number"}, "invoices": {"items": {"type": "string"}, "title": "Invoices", "type": "array"}, "fully_invoiced": {"title": "Fully Invoiced", "type": "boolean"}}, "required": ["cart_id", "name", "sku", "kind", "quantity", "sold_amount", "bundled", "installed_quantity", "invoiced_quantity", "invoiced_amount", "invoices", "fully_invoiced"], "title": "SoldItemSchema", "type": "object"}, "UninvoicedItemSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "job_number": {"title": "Job Number", "type": "string"}, "name": {"title": "Name", "type": "string"}, "sku": {"title": "Sku", "type": "string"}, "quantity": {"title": "Quantity", "type": "number"}, "unit_price": {"title": "Unit Price", "type": "number"}, "unit_cost": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Unit Cost"}, "product_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Product Id"}}, "required": ["id", "job_number", "name", "sku", "quantity", "unit_price"], "title": "UninvoicedItemSchema", "type": "object"}, "InvoiceDetailSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "number": {"title": "Number", "type": "string"}, "title": {"title": "Title", "type": "string"}, "status": {"title": "Status", "type": "string"}, "status_label": {"title": "Status Label", "type": "string"}, "customer_name": {"title": "Customer Name", "type": "string"}, "job_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Job Id"}, "job_number": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Job Number"}, "issued_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Issued On"}, "due_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Due On"}, "total": {"title": "Total", "type": "number"}, "amount_paid": {"title": "Amount Paid", "type": "number"}, "balance": {"title": "Balance", "type": "number"}, "days_overdue": {"title": "Days Overdue", "type": "integer"}, "qbo_synced": {"title": "Qbo Synced", "type": "boolean"}, "qbo_sync_error": {"title": "Qbo Sync Error", "type": "string"}, "bill_to_email": {"title": "Bill To Email", "type": "string"}, "business_unit": {"title": "Business Unit", "type": "string"}, "tax_rate_percent": {"title": "Tax Rate Percent", "type": "number"}, "subtotal": {"title": "Subtotal", "type": "number"}, "tax": {"title": "Tax", "type": "number"}, "memo": {"title": "Memo", "type": "string"}, "allow_card": {"title": "Allow Card", "type": "boolean"}, "allow_ach": {"title": "Allow Ach", "type": "boolean"}, "sent_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Sent At"}, "pay_url": {"title": "Pay Url", "type": "string"}, "project_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Project Id"}, "deal_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Deal Id"}, "quote_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Quote Id"}, "quote_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Quote Name"}, "contract_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Contract Id"}, "contract_signed_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Contract Signed At"}, "contract_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Contract Url"}, "lines": {"items": {"$ref": "#/components/schemas/InvoiceLineSchema"}, "title": "Lines", "type": "array"}, "lines_version": {"title": "Lines Version", "type": "string"}, "payments": {"items": {"$ref": "#/components/schemas/PaymentSchema"}, "title": "Payments", "type": "array"}, "uninvoiced_items": {"default": [], "items": {"$ref": "#/components/schemas/UninvoicedItemSchema"}, "title": "Uninvoiced Items", "type": "array"}}, "required": ["id", "number", "title", "status", "status_label", "customer_name", "total", "amount_paid", "balance", "days_overdue", "qbo_synced", "qbo_sync_error", "bill_to_email", "business_unit", "tax_rate_percent", "subtotal", "tax", "memo", "allow_card", "allow_ach", "pay_url", "lines", "lines_version", "payments"], "title": "InvoiceDetailSchema", "type": "object"}, "InvoiceLineSchema": {"properties": {"id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Id"}, "kind": {"title": "Kind", "type": "string"}, "description": {"title": "Description", "type": "string"}, "quantity": {"title": "Quantity", "type": "number"}, "unit_price": {"title": "Unit Price", "type": "number"}, "amount": {"default": 0, "title": "Amount", "type": "number"}, "unit_cost": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Unit Cost"}, "taxable": {"default": false, "title": "Taxable", "type": "boolean"}, "qbo_item_id": {"default": "", "title": "Qbo Item Id", "type": "string"}, "product_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Product Id"}, "cart_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Cart Id"}, "job_item_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Job Item Id"}, "sku": {"default": "", "title": "Sku", "type": "string"}, "added_by": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Added By"}}, "required": ["kind", "description", "quantity", "unit_price"], "title": "InvoiceLineSchema", "type": "object"}, "PaymentSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "method": {"title": "Method", "type": "string"}, "method_label": {"title": "Method Label", "type": "string"}, "status": {"title": "Status", "type": "string"}, "status_label": {"title": "Status Label", "type": "string"}, "amount": {"title": "Amount", "type": "number"}, "surcharge": {"title": "Surcharge", "type": "number"}, "received_on": {"format": "date", "title": "Received On", "type": "string"}, "reference": {"title": "Reference", "type": "string"}, "collected_by": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Collected By"}, "notes": {"title": "Notes", "type": "string"}, "check_photo_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Check Photo Url"}, "qbo_synced": {"title": "Qbo Synced", "type": "boolean"}, "qbo_sync_error": {"title": "Qbo Sync Error", "type": "string"}}, "required": ["id", "method", "method_label", "status", "status_label", "amount", "surcharge", "received_on", "reference", "notes", "qbo_synced", "qbo_sync_error"], "title": "PaymentSchema", "type": "object"}, "ProjectInvoiceRequest": {"properties": {"kind": {"enum": ["deposit", "progress", "final", "blank"], "title": "Kind", "type": "string"}, "amount": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Amount"}, "percent": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Percent"}, "title": {"default": "", "title": "Title", "type": "string"}}, "required": ["kind"], "title": "ProjectInvoiceRequest", "type": "object"}, "InvoiceUpdateRequest": {"properties": {"title": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Title"}, "bill_to_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Bill To Name"}, "bill_to_email": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Bill To Email"}, "due_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Due On"}, "tax_rate_percent": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}, {"type": "null"}], "title": "Tax Rate Percent"}, "memo": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Memo"}, "allow_card": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Allow Card"}, "allow_ach": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Allow Ach"}, "business_unit": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Business Unit"}, "lines": {"anyOf": [{"items": {"$ref": "#/components/schemas/InvoiceLineSchema"}, "type": "array"}, {"type": "null"}], "title": "Lines"}, "lines_version": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Lines Version"}}, "title": "InvoiceUpdateRequest", "type": "object"}, "PricebookItemSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "code": {"title": "Code", "type": "string"}, "kind": {"title": "Kind", "type": "string"}, "price": {"title": "Price", "type": "number"}, "cost": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Cost"}, "description": {"default": "", "title": "Description", "type": "string"}}, "required": ["id", "name", "code", "kind", "price"], "title": "PricebookItemSchema", "type": "object"}, "SendInvoiceRequest": {"properties": {"to": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "To"}}, "title": "SendInvoiceRequest", "type": "object"}, "StripeStatusSchema": {"properties": {"configured": {"title": "Configured", "type": "boolean"}, "mode": {"title": "Mode", "type": "string"}, "account_name": {"default": "", "title": "Account Name", "type": "string"}, "card_payments": {"default": "", "title": "Card Payments", "type": "string"}, "ach_payments": {"default": "", "title": "Ach Payments", "type": "string"}, "webhook_secret_set": {"title": "Webhook Secret Set", "type": "boolean"}, "error": {"default": "", "title": "Error", "type": "string"}}, "required": ["configured", "mode", "webhook_secret_set"], "title": "StripeStatusSchema", "type": "object"}, "PaymentRequest": {"properties": {"method": {"title": "Method", "type": "string"}, "amount": {"title": "Amount", "type": "number"}, "reference": {"default": "", "title": "Reference", "type": "string"}, "received_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Received On"}, "notes": {"default": "", "title": "Notes", "type": "string"}}, "required": ["method", "amount"], "title": "PaymentRequest", "type": "object"}, "FieldSettingsSchema": {"properties": {"timezone": {"title": "Timezone", "type": "string"}, "pay_frequency": {"title": "Pay Frequency", "type": "string"}, "pay_period_anchor": {"format": "date", "title": "Pay Period Anchor", "type": "string"}, "daily_overtime_after_hours": {"title": "Daily Overtime After Hours", "type": "number"}, "daily_double_time_after_hours": {"title": "Daily Double Time After Hours", "type": "number"}, "weekly_overtime_after_hours": {"title": "Weekly Overtime After Hours", "type": "number"}, "overtime_multiplier": {"title": "Overtime Multiplier", "type": "number"}, "double_time_multiplier": {"title": "Double Time Multiplier", "type": "number"}, "meal_required_after_hours": {"title": "Meal Required After Hours", "type": "number"}, "meal_minimum_minutes": {"title": "Meal Minimum Minutes", "type": "integer"}, "gps_ping_seconds": {"title": "Gps Ping Seconds", "type": "integer"}, "default_crew_size": {"title": "Default Crew Size", "type": "integer"}, "crew_hours_per_day": {"title": "Crew Hours Per Day", "type": "number"}, "helper_threshold_days": {"title": "Helper Threshold Days", "type": "number"}, "invoice_prefix": {"title": "Invoice Prefix", "type": "string"}, "job_prefix": {"title": "Job Prefix", "type": "string"}, "default_payment_terms_days": {"title": "Default Payment Terms Days", "type": "integer"}, "invoice_footer": {"title": "Invoice Footer", "type": "string"}, "card_surcharge_percent": {"title": "Card Surcharge Percent", "type": "number"}, "accept_card": {"title": "Accept Card", "type": "boolean"}, "accept_ach": {"title": "Accept Ach", "type": "boolean"}, "accept_check": {"title": "Accept Check", "type": "boolean"}, "check_payable_to": {"title": "Check Payable To", "type": "string"}, "check_mail_to": {"title": "Check Mail To", "type": "string"}, "invoice_email_template_id": {"title": "Invoice Email Template Id", "type": "string"}, "invoice_from_email": {"title": "Invoice From Email", "type": "string"}, "invoice_bcc_email": {"title": "Invoice Bcc Email", "type": "string"}, "auto_send_invoice_on_complete": {"title": "Auto Send Invoice On Complete", "type": "boolean"}}, "required": ["timezone", "pay_frequency", "pay_period_anchor", "daily_overtime_after_hours", "daily_double_time_after_hours", "weekly_overtime_after_hours", "overtime_multiplier", "double_time_multiplier", "meal_required_after_hours", "meal_minimum_minutes", "gps_ping_seconds", "default_crew_size", "crew_hours_per_day", "helper_threshold_days", "invoice_prefix", "job_prefix", "default_payment_terms_days", "invoice_footer", "card_surcharge_percent", "accept_card", "accept_ach", "accept_check", "check_payable_to", "check_mail_to", "invoice_email_template_id", "invoice_from_email", "invoice_bcc_email", "auto_send_invoice_on_complete"], "title": "FieldSettingsSchema", "type": "object"}, "FieldSettingsUpdate": {"properties": {"timezone": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Timezone"}, "pay_frequency": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Pay Frequency"}, "pay_period_anchor": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Pay Period Anchor"}, "daily_overtime_after_hours": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Daily Overtime After Hours"}, "daily_double_time_after_hours": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Daily Double Time After Hours"}, "weekly_overtime_after_hours": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Weekly Overtime After Hours"}, "overtime_multiplier": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Overtime Multiplier"}, "double_time_multiplier": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Double Time Multiplier"}, "meal_required_after_hours": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Meal Required After Hours"}, "meal_minimum_minutes": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Meal Minimum Minutes"}, "gps_ping_seconds": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Gps Ping Seconds"}, "default_crew_size": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Default Crew Size"}, "crew_hours_per_day": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Crew Hours Per Day"}, "helper_threshold_days": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Helper Threshold Days"}, "invoice_prefix": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Invoice Prefix"}, "job_prefix": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Job Prefix"}, "default_payment_terms_days": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Default Payment Terms Days"}, "invoice_footer": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Invoice Footer"}, "card_surcharge_percent": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Card Surcharge Percent"}, "accept_card": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Accept Card"}, "accept_ach": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Accept Ach"}, "accept_check": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Accept Check"}, "check_payable_to": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Check Payable To"}, "check_mail_to": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Check Mail To"}, "invoice_email_template_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Invoice Email Template Id"}, "invoice_from_email": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Invoice From Email"}, "invoice_bcc_email": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Invoice Bcc Email"}, "auto_send_invoice_on_complete": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Auto Send Invoice On Complete"}}, "title": "FieldSettingsUpdate", "type": "object"}, "JobTypeRequest": {"properties": {"name": {"title": "Name", "type": "string"}, "category": {"title": "Category", "type": "string"}, "business_unit": {"title": "Business Unit", "type": "string"}, "default_duration_hours": {"default": 8, "title": "Default Duration Hours", "type": "number"}, "default_crew_size": {"default": 2, "title": "Default Crew Size", "type": "integer"}, "summary_template": {"default": "", "title": "Summary Template", "type": "string"}, "active": {"default": true, "title": "Active", "type": "boolean"}}, "required": ["name", "category", "business_unit"], "title": "JobTypeRequest", "type": "object"}, "FormRuleSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "template_id": {"title": "Template Id", "type": "integer"}, "template_name": {"title": "Template Name", "type": "string"}, "category": {"title": "Category", "type": "string"}, "job_type_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Job Type Id"}, "audience": {"title": "Audience", "type": "string"}, "incentive_contains": {"title": "Incentive Contains", "type": "string"}, "equipment_contains": {"title": "Equipment Contains", "type": "string"}, "required_to_complete": {"title": "Required To Complete", "type": "boolean"}, "active": {"title": "Active", "type": "boolean"}}, "required": ["id", "template_id", "template_name", "category", "audience", "incentive_contains", "equipment_contains", "required_to_complete", "active"], "title": "FormRuleSchema", "type": "object"}, "FormRuleRequest": {"properties": {"template_id": {"title": "Template Id", "type": "integer"}, "category": {"default": "", "title": "Category", "type": "string"}, "job_type_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Job Type Id"}, "audience": {"default": "technician", "title": "Audience", "type": "string"}, "incentive_contains": {"default": "", "title": "Incentive Contains", "type": "string"}, "equipment_contains": {"default": "", "title": "Equipment Contains", "type": "string"}, "required_to_complete": {"default": true, "title": "Required To Complete", "type": "boolean"}, "active": {"default": true, "title": "Active", "type": "boolean"}}, "required": ["template_id"], "title": "FormRuleRequest", "type": "object"}, "QuickBooksStatusSchema": {"properties": {"connected": {"title": "Connected", "type": "boolean"}, "company_name": {"title": "Company Name", "type": "string"}, "realm_id": {"title": "Realm Id", "type": "string"}, "connected_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Connected At"}, "fake": {"title": "Fake", "type": "boolean"}, "configured": {"title": "Configured", "type": "boolean"}, "config": {"additionalProperties": true, "title": "Config", "type": "object"}, "pending_invoices": {"title": "Pending Invoices", "type": "integer"}, "pending_payments": {"title": "Pending Payments", "type": "integer"}, "errors": {"title": "Errors", "type": "integer"}}, "required": ["connected", "company_name", "realm_id", "fake", "configured", "config", "pending_invoices", "pending_payments", "errors"], "title": "QuickBooksStatusSchema", "type": "object"}, "UrlSchema": {"properties": {"url": {"title": "Url", "type": "string"}}, "required": ["url"], "title": "UrlSchema", "type": "object"}, "QuickBooksAccountSchema": {"properties": {"id": {"title": "Id", "type": "string"}, "name": {"title": "Name", "type": "string"}, "number": {"default": "", "title": "Number", "type": "string"}, "type": {"default": "", "title": "Type", "type": "string"}, "classification": {"default": "", "title": "Classification", "type": "string"}}, "required": ["id", "name"], "title": "QuickBooksAccountSchema", "type": "object"}, "QuickBooksItemSchema": {"properties": {"id": {"title": "Id", "type": "string"}, "name": {"title": "Name", "type": "string"}, "type": {"default": "", "title": "Type", "type": "string"}, "account_id": {"default": "", "title": "Account Id", "type": "string"}, "account": {"default": "", "title": "Account", "type": "string"}}, "required": ["id", "name"], "title": "QuickBooksItemSchema", "type": "object"}, "QuickBooksReferenceSchema": {"properties": {"items": {"items": {"$ref": "#/components/schemas/QuickBooksItemSchema"}, "title": "Items", "type": "array"}, "classes": {"items": {"additionalProperties": {"type": "string"}, "type": "object"}, "title": "Classes", "type": "array"}, "accounts": {"items": {"additionalProperties": {"type": "string"}, "type": "object"}, "title": "Accounts", "type": "array"}, "chart": {"items": {"$ref": "#/components/schemas/QuickBooksAccountSchema"}, "title": "Chart", "type": "array"}}, "required": ["items", "classes", "accounts", "chart"], "title": "QuickBooksReferenceSchema", "type": "object"}, "QuickBooksConfigRequest": {"properties": {"items": {"additionalProperties": {"type": "string"}, "default": {}, "title": "Items", "type": "object"}, "classes": {"additionalProperties": {"type": "string"}, "default": {}, "title": "Classes", "type": "object"}, "deposit_account_id": {"default": "", "title": "Deposit Account Id", "type": "string"}, "deposit_accounts": {"additionalProperties": {"type": "string"}, "default": {}, "title": "Deposit Accounts", "type": "object"}, "start_date": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Start Date"}}, "title": "QuickBooksConfigRequest", "type": "object"}, "SyncResultSchema": {"properties": {"invoices": {"title": "Invoices", "type": "integer"}, "payments": {"title": "Payments", "type": "integer"}}, "required": ["invoices", "payments"], "title": "SyncResultSchema", "type": "object"}, "AssistantOverviewSchema": {"properties": {"documents": {"title": "Documents", "type": "integer"}, "rules": {"title": "Rules", "type": "integer"}, "examples": {"title": "Examples", "type": "integer"}, "conversations_last_7_days": {"title": "Conversations Last 7 Days", "type": "integer"}, "answers_to_review": {"title": "Answers To Review", "type": "integer"}, "answers_marked_wrong": {"title": "Answers Marked Wrong", "type": "integer"}, "coached_technicians": {"title": "Coached Technicians", "type": "integer"}, "keep_days": {"title": "Keep Days", "type": "integer"}}, "required": ["documents", "rules", "examples", "conversations_last_7_days", "answers_to_review", "answers_marked_wrong", "coached_technicians", "keep_days"], "title": "AssistantOverviewSchema", "type": "object"}, "AssistantDocumentSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "title": {"title": "Title", "type": "string"}, "filename": {"title": "Filename", "type": "string"}, "enabled": {"title": "Enabled", "type": "boolean"}, "characters": {"title": "Characters", "type": "integer"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "updated_at": {"format": "date-time", "title": "Updated At", "type": "string"}, "created_by": {"title": "Created By", "type": "string"}}, "required": ["id", "title", "filename", "enabled", "characters", "created_at", "updated_at", "created_by"], "title": "AssistantDocumentSchema", "type": "object"}, "AssistantDocumentDetailSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "title": {"title": "Title", "type": "string"}, "filename": {"title": "Filename", "type": "string"}, "enabled": {"title": "Enabled", "type": "boolean"}, "characters": {"title": "Characters", "type": "integer"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "updated_at": {"format": "date-time", "title": "Updated At", "type": "string"}, "created_by": {"title": "Created By", "type": "string"}, "text": {"title": "Text", "type": "string"}}, "required": ["id", "title", "filename", "enabled", "characters", "created_at", "updated_at", "created_by", "text"], "title": "AssistantDocumentDetailSchema", "type": "object"}, "AssistantManualSchema": {"properties": {"title": {"title": "Title", "type": "string"}, "pages": {"title": "Pages", "type": "integer"}, "characters": {"title": "Characters", "type": "integer"}, "text": {"title": "Text", "type": "string"}}, "required": ["title", "pages", "characters", "text"], "title": "AssistantManualSchema", "type": "object"}, "AssistantDocumentUpdate": {"properties": {"title": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Title"}, "text": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Text"}, "enabled": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Enabled"}}, "title": "AssistantDocumentUpdate", "type": "object"}, "AssistantTrainingSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "kind": {"title": "Kind", "type": "string"}, "question": {"title": "Question", "type": "string"}, "answer": {"title": "Answer", "type": "string"}, "enabled": {"title": "Enabled", "type": "boolean"}, "from_conversation_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "From Conversation Id"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "created_by": {"title": "Created By", "type": "string"}}, "required": ["id", "kind", "question", "answer", "enabled", "created_at", "created_by"], "title": "AssistantTrainingSchema", "type": "object"}, "AssistantTrainingRequest": {"properties": {"kind": {"anyOf": [{"enum": ["rule", "example"], "type": "string"}, {"type": "null"}], "title": "Kind"}, "question": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Question"}, "answer": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Answer"}, "enabled": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Enabled"}}, "title": "AssistantTrainingRequest", "type": "object"}, "AssistantConversationSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "technician_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Technician Id"}, "technician_name": {"title": "Technician Name", "type": "string"}, "job_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Job Id"}, "job_number": {"title": "Job Number", "type": "string"}, "channel": {"title": "Channel", "type": "string"}, "first_question": {"title": "First Question", "type": "string"}, "answers": {"title": "Answers", "type": "integer"}, "unreviewed": {"title": "Unreviewed", "type": "integer"}, "marked_wrong": {"title": "Marked Wrong", "type": "integer"}, "started_at": {"format": "date-time", "title": "Started At", "type": "string"}, "updated_at": {"format": "date-time", "title": "Updated At", "type": "string"}}, "required": ["id", "technician_name", "job_number", "channel", "first_question", "answers", "unreviewed", "marked_wrong", "started_at", "updated_at"], "title": "AssistantConversationSchema", "type": "object"}, "AssistantConversationDetailSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "technician_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Technician Id"}, "technician_name": {"title": "Technician Name", "type": "string"}, "job_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Job Id"}, "job_number": {"title": "Job Number", "type": "string"}, "channel": {"title": "Channel", "type": "string"}, "first_question": {"title": "First Question", "type": "string"}, "answers": {"title": "Answers", "type": "integer"}, "unreviewed": {"title": "Unreviewed", "type": "integer"}, "marked_wrong": {"title": "Marked Wrong", "type": "integer"}, "started_at": {"format": "date-time", "title": "Started At", "type": "string"}, "updated_at": {"format": "date-time", "title": "Updated At", "type": "string"}, "messages": {"items": {"$ref": "#/components/schemas/AssistantMessageSchema"}, "title": "Messages", "type": "array"}}, "required": ["id", "technician_name", "job_number", "channel", "first_question", "answers", "unreviewed", "marked_wrong", "started_at", "updated_at", "messages"], "title": "AssistantConversationDetailSchema", "type": "object"}, "AssistantMessageSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "role": {"title": "Role", "type": "string"}, "text": {"title": "Text", "type": "string"}, "photos": {"title": "Photos", "type": "integer"}, "rating": {"title": "Rating", "type": "string"}, "correction": {"title": "Correction", "type": "string"}, "reviewed_by": {"title": "Reviewed By", "type": "string"}, "reviewed_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Reviewed At"}, "training_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Training Id"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}}, "required": ["id", "role", "text", "photos", "rating", "correction", "reviewed_by", "created_at"], "title": "AssistantMessageSchema", "type": "object"}, "AssistantReviewRequest": {"properties": {"rating": {"anyOf": [{"enum": ["", "good", "wrong"], "type": "string"}, {"type": "null"}], "title": "Rating"}, "correction": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Correction"}, "add_to_training": {"default": false, "title": "Add To Training", "type": "boolean"}}, "title": "AssistantReviewRequest", "type": "object"}, "AskTurn": {"properties": {"role": {"enum": ["user", "assistant"], "title": "Role", "type": "string"}, "content": {"title": "Content", "type": "string"}, "images": {"default": [], "items": {"type": "string"}, "title": "Images", "type": "array"}}, "required": ["role", "content"], "title": "AskTurn", "type": "object"}, "AssistantTryRequest": {"properties": {"technician_id": {"title": "Technician Id", "type": "integer"}, "job_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Job Id"}, "messages": {"items": {"$ref": "#/components/schemas/AskTurn"}, "title": "Messages", "type": "array"}}, "required": ["technician_id", "messages"], "title": "AssistantTryRequest", "type": "object"}, "AssistantJobOptionSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "label": {"title": "Label", "type": "string"}}, "required": ["id", "label"], "title": "AssistantJobOptionSchema", "type": "object"}, "PersonSchema": {"properties": {"kind": {"title": "Kind", "type": "string"}, "id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "detail": {"title": "Detail", "type": "string"}, "color": {"title": "Color", "type": "string"}}, "required": ["kind", "id", "name", "detail", "color"], "title": "PersonSchema", "type": "object"}, "CollabSchema": {"properties": {"notes": {"items": {"$ref": "#/components/schemas/NoteSchema"}, "title": "Notes", "type": "array"}, "punch_items": {"items": {"$ref": "#/components/schemas/PunchItemSchema"}, "title": "Punch Items", "type": "array"}, "photos": {"items": {"$ref": "#/components/schemas/PhotoActivitySchema"}, "title": "Photos", "type": "array"}, "categories": {"items": {"$ref": "#/components/schemas/ChoiceSchema"}, "title": "Categories", "type": "array"}, "statuses": {"items": {"$ref": "#/components/schemas/ChoiceSchema"}, "title": "Statuses", "type": "array"}, "can_check": {"title": "Can Check", "type": "boolean"}}, "required": ["notes", "punch_items", "photos", "categories", "statuses", "can_check"], "title": "CollabSchema", "type": "object"}, "NotePhotoSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "url": {"title": "Url", "type": "string"}, "ready": {"title": "Ready", "type": "boolean"}}, "required": ["id", "url", "ready"], "title": "NotePhotoSchema", "type": "object"}, "NoteSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "body": {"title": "Body", "type": "string"}, "kind": {"title": "Kind", "type": "string"}, "author": {"anyOf": [{"$ref": "#/components/schemas/PersonRefSchema"}, {"type": "null"}]}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "photos": {"items": {"$ref": "#/components/schemas/NotePhotoSchema"}, "title": "Photos", "type": "array"}, "comment_count": {"title": "Comment Count", "type": "integer"}}, "required": ["id", "body", "kind", "created_at", "photos", "comment_count"], "title": "NoteSchema", "type": "object"}, "PersonRefSchema": {"properties": {"kind": {"title": "Kind", "type": "string"}, "id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}}, "required": ["kind", "id", "name"], "title": "PersonRefSchema", "type": "object"}, "PhotoActivitySchema": {"description": "What's been said and drawn on each photo, for the review grid.", "properties": {"id": {"title": "Id", "type": "integer"}, "has_markup": {"title": "Has Markup", "type": "boolean"}, "comment_count": {"title": "Comment Count", "type": "integer"}, "open_punch_count": {"title": "Open Punch Count", "type": "integer"}}, "required": ["id", "has_markup", "comment_count", "open_punch_count"], "title": "PhotoActivitySchema", "type": "object"}, "PunchItemSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "number": {"title": "Number", "type": "integer"}, "title": {"title": "Title", "type": "string"}, "details": {"title": "Details", "type": "string"}, "category": {"title": "Category", "type": "string"}, "category_label": {"title": "Category Label", "type": "string"}, "status": {"title": "Status", "type": "string"}, "status_label": {"title": "Status Label", "type": "string"}, "photo_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Photo Id"}, "photo_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Photo Url"}, "x": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "X"}, "y": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Y"}, "assignees": {"items": {"$ref": "#/components/schemas/PersonRefSchema"}, "title": "Assignees", "type": "array"}, "created_by": {"anyOf": [{"$ref": "#/components/schemas/PersonRefSchema"}, {"type": "null"}]}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "done_by": {"anyOf": [{"$ref": "#/components/schemas/PersonRefSchema"}, {"type": "null"}]}, "done_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Done At"}, "done_note": {"title": "Done Note", "type": "string"}, "done_photo_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Done Photo Url"}, "verified_by": {"anyOf": [{"$ref": "#/components/schemas/PersonRefSchema"}, {"type": "null"}]}, "verified_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Verified At"}, "comment_count": {"title": "Comment Count", "type": "integer"}}, "required": ["id", "number", "title", "details", "category", "category_label", "status", "status_label", "assignees", "created_at", "done_note", "comment_count"], "title": "PunchItemSchema", "type": "object"}, "NoteRequest": {"properties": {"user_ids": {"default": [], "items": {"type": "integer"}, "title": "User Ids", "type": "array"}, "technician_ids": {"default": [], "items": {"type": "integer"}, "title": "Technician Ids", "type": "array"}, "body": {"title": "Body", "type": "string"}, "photo_ids": {"default": [], "items": {"type": "integer"}, "title": "Photo Ids", "type": "array"}, "client_id": {"default": "", "title": "Client Id", "type": "string"}}, "required": ["body"], "title": "NoteRequest", "type": "object"}, "CommentSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "body": {"title": "Body", "type": "string"}, "author": {"anyOf": [{"$ref": "#/components/schemas/PersonRefSchema"}, {"type": "null"}]}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "photo_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Photo Id"}, "punch_item_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Punch Item Id"}, "note_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Note Id"}}, "required": ["id", "body", "created_at"], "title": "CommentSchema", "type": "object"}, "PhotoReviewSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "url": {"title": "Url", "type": "string"}, "ready": {"title": "Ready", "type": "boolean"}, "caption": {"title": "Caption", "type": "string"}, "uploaded_by": {"anyOf": [{"$ref": "#/components/schemas/PersonRefSchema"}, {"type": "null"}]}, "taken_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Taken At"}, "uploaded_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Uploaded At"}, "markup": {"additionalProperties": true, "title": "Markup", "type": "object"}, "markup_by": {"anyOf": [{"$ref": "#/components/schemas/PersonRefSchema"}, {"type": "null"}]}, "markup_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Markup At"}, "comments": {"items": {"$ref": "#/components/schemas/CommentSchema"}, "title": "Comments", "type": "array"}, "punch_items": {"items": {"$ref": "#/components/schemas/PunchItemSchema"}, "title": "Punch Items", "type": "array"}}, "required": ["id", "url", "ready", "caption", "markup", "comments", "punch_items"], "title": "PhotoReviewSchema", "type": "object"}, "MarkupRequest": {"properties": {"document": {"additionalProperties": true, "title": "Document", "type": "object"}}, "required": ["document"], "title": "MarkupRequest", "type": "object"}, "PunchCreateRequest": {"properties": {"user_ids": {"default": [], "items": {"type": "integer"}, "title": "User Ids", "type": "array"}, "technician_ids": {"default": [], "items": {"type": "integer"}, "title": "Technician Ids", "type": "array"}, "title": {"title": "Title", "type": "string"}, "category": {"default": "other", "title": "Category", "type": "string"}, "details": {"default": "", "title": "Details", "type": "string"}, "photo_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Photo Id"}, "x": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "X"}, "y": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Y"}, "assignee_ids": {"default": [], "items": {"type": "integer"}, "title": "Assignee Ids", "type": "array"}, "client_id": {"default": "", "title": "Client Id", "type": "string"}}, "required": ["title"], "title": "PunchCreateRequest", "type": "object"}, "PunchUpdateRequest": {"properties": {"status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "title": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Title"}, "details": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Details"}, "category": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Category"}, "assignee_ids": {"anyOf": [{"items": {"type": "integer"}, "type": "array"}, {"type": "null"}], "title": "Assignee Ids"}, "done_note": {"default": "", "title": "Done Note", "type": "string"}, "done_photo_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Done Photo Id"}}, "title": "PunchUpdateRequest", "type": "object"}, "CommentRequest": {"properties": {"user_ids": {"default": [], "items": {"type": "integer"}, "title": "User Ids", "type": "array"}, "technician_ids": {"default": [], "items": {"type": "integer"}, "title": "Technician Ids", "type": "array"}, "body": {"title": "Body", "type": "string"}, "photo_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Photo Id"}, "punch_item_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Punch Item Id"}, "note_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Note Id"}}, "required": ["body"], "title": "CommentRequest", "type": "object"}, "InstallReviewRequest": {"properties": {"rating": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Rating"}, "notes": {"default": "", "title": "Notes", "type": "string"}, "passed": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Passed"}}, "title": "InstallReviewRequest", "type": "object"}, "BonusAwardRequest": {"properties": {"technician_id": {"title": "Technician Id", "type": "integer"}, "amount": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}], "title": "Amount"}, "reason": {"title": "Reason", "type": "string"}}, "required": ["technician_id", "amount", "reason"], "title": "BonusAwardRequest", "type": "object"}, "ClockStatusSchema": {"properties": {"clocked_in": {"title": "Clocked In", "type": "boolean"}, "entry": {"anyOf": [{"$ref": "#/components/schemas/TimeEntrySchema"}, {"type": "null"}]}, "today_hours": {"title": "Today Hours", "type": "number"}, "week_hours": {"title": "Week Hours", "type": "number"}, "meal_due_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Meal Due At"}}, "required": ["clocked_in", "today_hours", "week_hours"], "title": "ClockStatusSchema", "type": "object"}, "MeSchema": {"properties": {"technician": {"$ref": "#/components/schemas/TechnicianRefSchema"}, "email": {"title": "Email", "type": "string"}, "phone": {"title": "Phone", "type": "string"}, "org": {"$ref": "#/components/schemas/OrgSchema"}, "clock": {"$ref": "#/components/schemas/ClockStatusSchema"}, "vehicle": {"anyOf": [{"$ref": "#/components/schemas/VehicleSchema"}, {"type": "null"}]}}, "required": ["technician", "email", "phone", "org", "clock"], "title": "MeSchema", "type": "object"}, "OrgSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "timezone": {"title": "Timezone", "type": "string"}, "gps_ping_seconds": {"title": "Gps Ping Seconds", "type": "integer"}}, "required": ["name", "timezone", "gps_ping_seconds"], "title": "OrgSchema", "type": "object"}, "PairResponse": {"properties": {"token": {"title": "Token", "type": "string"}, "me": {"$ref": "#/components/schemas/MeSchema"}}, "required": ["token", "me"], "title": "PairResponse", "type": "object"}, "PairRequest": {"properties": {"code": {"title": "Code", "type": "string"}, "device_name": {"default": "", "title": "Device Name", "type": "string"}, "app_version": {"default": "", "title": "App Version", "type": "string"}}, "required": ["code"], "title": "PairRequest", "type": "object"}, "ScheduleVisitSchema": {"properties": {"visit": {"$ref": "#/components/schemas/VisitSchema"}, "job": {"$ref": "#/components/schemas/JobCardSchema"}}, "required": ["visit", "job"], "title": "ScheduleVisitSchema", "type": "object"}, "AppInvoiceLineSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "description": {"title": "Description", "type": "string"}, "quantity": {"title": "Quantity", "type": "number"}, "unit_price": {"title": "Unit Price", "type": "number"}, "amount": {"title": "Amount", "type": "number"}, "product_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Product Id"}, "job_item_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Job Item Id"}}, "required": ["id", "description", "quantity", "unit_price", "amount"], "title": "AppInvoiceLineSchema", "type": "object"}, "AppInvoiceSchema": {"description": "The invoice the crew is building on a service job, before it is issued.", "properties": {"id": {"title": "Id", "type": "integer"}, "number": {"title": "Number", "type": "string"}, "title": {"title": "Title", "type": "string"}, "lines": {"items": {"$ref": "#/components/schemas/AppInvoiceLineSchema"}, "title": "Lines", "type": "array"}, "subtotal": {"title": "Subtotal", "type": "number"}, "tax": {"title": "Tax", "type": "number"}, "total": {"title": "Total", "type": "number"}}, "required": ["id", "number", "title", "lines", "subtotal", "tax", "total"], "title": "AppInvoiceSchema", "type": "object"}, "AppJobDetailSchema": {"properties": {"job": {"$ref": "#/components/schemas/JobCardSchema"}, "customer": {"$ref": "#/components/schemas/CustomerContactSchema"}, "job_summary": {"title": "Job Summary", "type": "string"}, "instructions": {"title": "Instructions", "type": "string"}, "contract_items": {"items": {"$ref": "#/components/schemas/ContractItemSchema"}, "title": "Contract Items", "type": "array"}, "visits": {"items": {"$ref": "#/components/schemas/VisitSchema"}, "title": "Visits", "type": "array"}, "items": {"items": {"$ref": "#/components/schemas/JobItemSchema"}, "title": "Items", "type": "array"}, "sold_lines": {"default": 0, "title": "Sold Lines", "type": "integer"}, "missing_sold_lines": {"default": 0, "title": "Missing Sold Lines", "type": "integer"}, "forms": {"items": {"$ref": "#/components/schemas/FormSummarySchema"}, "title": "Forms", "type": "array"}, "photos": {"items": {"$ref": "#/components/schemas/PhotoSchema"}, "title": "Photos", "type": "array"}, "invoices": {"items": {"$ref": "#/components/schemas/InvoiceSummarySchema"}, "title": "Invoices", "type": "array"}, "completion_notes": {"title": "Completion Notes", "type": "string"}, "can_complete": {"title": "Can Complete", "type": "boolean"}, "blocking_forms": {"items": {"type": "string"}, "title": "Blocking Forms", "type": "array"}, "can_send_invoice": {"default": false, "title": "Can Send Invoice", "type": "boolean"}, "can_bill": {"default": false, "title": "Can Bill", "type": "boolean"}, "draft_invoice": {"anyOf": [{"$ref": "#/components/schemas/AppInvoiceSchema"}, {"type": "null"}]}}, "required": ["job", "customer", "job_summary", "instructions", "contract_items", "visits", "items", "forms", "photos", "invoices", "completion_notes", "can_complete", "blocking_forms"], "title": "AppJobDetailSchema", "type": "object"}, "CustomerContactSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "phone": {"title": "Phone", "type": "string"}, "email": {"title": "Email", "type": "string"}}, "required": ["name", "phone", "email"], "title": "CustomerContactSchema", "type": "object"}, "InvoiceSummarySchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "number": {"title": "Number", "type": "string"}, "title": {"title": "Title", "type": "string"}, "status": {"title": "Status", "type": "string"}, "status_label": {"title": "Status Label", "type": "string"}, "total": {"title": "Total", "type": "number"}, "balance": {"title": "Balance", "type": "number"}, "pay_url": {"title": "Pay Url", "type": "string"}}, "required": ["id", "number", "title", "status", "status_label", "total", "balance", "pay_url"], "title": "InvoiceSummarySchema", "type": "object"}, "VisitStatusRequest": {"properties": {"status": {"enum": ["en_route", "working", "done"], "title": "Status", "type": "string"}, "latitude": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Latitude"}, "longitude": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Longitude"}, "accuracy_m": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Accuracy M"}, "switch_clock": {"default": true, "title": "Switch Clock", "type": "boolean"}}, "required": ["status"], "title": "VisitStatusRequest", "type": "object"}, "CompleteJobRequest": {"properties": {"notes": {"default": "", "title": "Notes", "type": "string"}, "signed_name": {"default": "", "title": "Signed Name", "type": "string"}, "signature_media_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Signature Media Id"}}, "title": "CompleteJobRequest", "type": "object"}, "ItemUpdateRequest": {"properties": {"status": {"anyOf": [{"enum": ["loaded", "installed", "returned", "needed"], "type": "string"}, {"type": "null"}], "title": "Status"}, "serial_number": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Serial Number"}, "quantity": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Quantity"}, "quantity_used": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Quantity Used"}}, "title": "ItemUpdateRequest", "type": "object"}, "ItemCreateRequest": {"properties": {"product_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Product Id"}, "name": {"default": "", "title": "Name", "type": "string"}, "quantity": {"default": 1, "title": "Quantity", "type": "number"}, "kind": {"default": "material", "enum": ["material", "equipment"], "title": "Kind", "type": "string"}, "serial_number": {"default": "", "title": "Serial Number", "type": "string"}, "client_id": {"default": "", "title": "Client Id", "type": "string"}}, "title": "ItemCreateRequest", "type": "object"}, "AppPricebookItemSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "code": {"title": "Code", "type": "string"}, "kind": {"title": "Kind", "type": "string"}, "price": {"title": "Price", "type": "number"}, "description": {"default": "", "title": "Description", "type": "string"}}, "required": ["id", "name", "code", "kind", "price"], "title": "AppPricebookItemSchema", "type": "object"}, "UploadResponse": {"properties": {"media_id": {"title": "Media Id", "type": "integer"}, "presigned_url": {"title": "Presigned Url", "type": "string"}, "s3_key": {"title": "S3 Key", "type": "string"}}, "required": ["media_id", "presigned_url", "s3_key"], "title": "UploadResponse", "type": "object"}, "UploadRequest": {"properties": {"file_type": {"title": "File Type", "type": "string"}, "original_filename": {"default": "", "title": "Original Filename", "type": "string"}, "category": {"default": "", "title": "Category", "type": "string"}, "caption": {"default": "", "title": "Caption", "type": "string"}, "taken_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Taken At"}, "latitude": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Latitude"}, "longitude": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Longitude"}, "client_id": {"default": "", "title": "Client Id", "type": "string"}}, "required": ["file_type"], "title": "UploadRequest", "type": "object"}, "FormDetailSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "job_id": {"title": "Job Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "status": {"title": "Status", "type": "string"}, "definition": {"additionalProperties": true, "title": "Definition", "type": "object"}, "answers": {"additionalProperties": true, "title": "Answers", "type": "object"}, "media": {"items": {"$ref": "#/components/schemas/FormMediaSchema"}, "title": "Media", "type": "array"}, "complete": {"title": "Complete", "type": "integer"}, "total": {"title": "Total", "type": "integer"}}, "required": ["id", "job_id", "name", "status", "definition", "answers", "media", "complete", "total"], "title": "FormDetailSchema", "type": "object"}, "FormMediaSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "field_id": {"title": "Field Id", "type": "string"}, "url": {"title": "Url", "type": "string"}, "ready": {"title": "Ready", "type": "boolean"}}, "required": ["id", "field_id", "url", "ready"], "title": "FormMediaSchema", "type": "object"}, "FormAnswersRequest": {"properties": {"answers": {"additionalProperties": true, "title": "Answers", "type": "object"}}, "required": ["answers"], "title": "FormAnswersRequest", "type": "object"}, "ClockRequest": {"properties": {"action": {"enum": ["in", "out", "switch", "meal_start", "meal_end"], "title": "Action", "type": "string"}, "at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "At"}, "client_id": {"default": "", "title": "Client Id", "type": "string"}, "kind": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Kind"}, "job_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Job Id"}, "latitude": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Latitude"}, "longitude": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Longitude"}, "accuracy_m": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Accuracy M"}, "notes": {"default": "", "title": "Notes", "type": "string"}}, "required": ["action"], "title": "ClockRequest", "type": "object"}, "PingsResponse": {"properties": {"stored": {"title": "Stored", "type": "integer"}}, "required": ["stored"], "title": "PingsResponse", "type": "object"}, "PingSchema": {"properties": {"recorded_at": {"format": "date-time", "title": "Recorded At", "type": "string"}, "latitude": {"title": "Latitude", "type": "number"}, "longitude": {"title": "Longitude", "type": "number"}, "accuracy_m": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Accuracy M"}, "speed_mps": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Speed Mps"}, "battery": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Battery"}}, "required": ["recorded_at", "latitude", "longitude"], "title": "PingSchema", "type": "object"}, "PingsRequest": {"properties": {"pings": {"items": {"$ref": "#/components/schemas/PingSchema"}, "title": "Pings", "type": "array"}}, "required": ["pings"], "title": "PingsRequest", "type": "object"}, "TimesheetDaySchema": {"properties": {"day": {"format": "date", "title": "Day", "type": "string"}, "worked_hours": {"title": "Worked Hours", "type": "number"}, "pto_hours": {"title": "Pto Hours", "type": "number"}, "meal_minutes": {"title": "Meal Minutes", "type": "integer"}, "regular_hours": {"title": "Regular Hours", "type": "number"}, "overtime_hours": {"title": "Overtime Hours", "type": "number"}, "double_time_hours": {"title": "Double Time Hours", "type": "number"}, "first_in": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "First In"}, "last_out": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Last Out"}, "flags": {"items": {"type": "string"}, "title": "Flags", "type": "array"}, "entries": {"items": {"$ref": "#/components/schemas/TimeEntrySchema"}, "title": "Entries", "type": "array"}}, "required": ["day", "worked_hours", "pto_hours", "meal_minutes", "regular_hours", "overtime_hours", "double_time_hours", "flags", "entries"], "title": "TimesheetDaySchema", "type": "object"}, "TimesheetSchema": {"properties": {"period_id": {"title": "Period Id", "type": "integer"}, "starts_on": {"format": "date", "title": "Starts On", "type": "string"}, "ends_on": {"format": "date", "title": "Ends On", "type": "string"}, "status": {"title": "Status", "type": "string"}, "days": {"items": {"$ref": "#/components/schemas/TimesheetDaySchema"}, "title": "Days", "type": "array"}, "total_hours": {"title": "Total Hours", "type": "number"}}, "required": ["period_id", "starts_on", "ends_on", "status", "days", "total_hours"], "title": "TimesheetSchema", "type": "object"}, "MyPaySchema": {"properties": {"sheet": {"additionalProperties": true, "title": "Sheet", "type": "object"}, "periods": {"items": {"$ref": "#/components/schemas/PeriodRefSchema"}, "title": "Periods", "type": "array"}, "potential_bonuses": {"items": {"$ref": "#/components/schemas/PotentialBonusSchema"}, "title": "Potential Bonuses", "type": "array"}}, "required": ["sheet", "periods", "potential_bonuses"], "title": "MyPaySchema", "type": "object"}, "PeriodRefSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "starts_on": {"format": "date", "title": "Starts On", "type": "string"}, "ends_on": {"format": "date", "title": "Ends On", "type": "string"}, "status": {"title": "Status", "type": "string"}}, "required": ["id", "starts_on", "ends_on", "status"], "title": "PeriodRefSchema", "type": "object"}, "PotentialBonusSchema": {"properties": {"job_id": {"title": "Job Id", "type": "integer"}, "job_number": {"title": "Job Number", "type": "string"}, "rule": {"title": "Rule", "type": "string"}, "amount": {"title": "Amount", "type": "number"}, "condition": {"title": "Condition", "type": "string"}}, "required": ["job_id", "job_number", "rule", "amount", "condition"], "title": "PotentialBonusSchema", "type": "object"}, "MyVehicleSchema": {"properties": {"vehicle": {"anyOf": [{"$ref": "#/components/schemas/VehicleSchema"}, {"type": "null"}]}, "logs": {"items": {"$ref": "#/components/schemas/VehicleLogSchema"}, "title": "Logs", "type": "array"}}, "required": ["logs"], "title": "MyVehicleSchema", "type": "object"}, "AppVehicleLogRequest": {"properties": {"kind": {"enum": ["odometer", "fuel", "issue"], "title": "Kind", "type": "string"}, "odometer": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Odometer"}, "cost": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Cost"}, "notes": {"default": "", "title": "Notes", "type": "string"}}, "required": ["kind"], "title": "AppVehicleLogRequest", "type": "object"}, "FieldPaymentRequest": {"properties": {"method": {"enum": ["check", "cash"], "title": "Method", "type": "string"}, "amount": {"title": "Amount", "type": "number"}, "reference": {"default": "", "title": "Reference", "type": "string"}, "check_photo_media_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Check Photo Media Id"}}, "required": ["method", "amount"], "title": "FieldPaymentRequest", "type": "object"}, "AppSendInvoiceRequest": {"properties": {"to": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "To"}}, "title": "AppSendInvoiceRequest", "type": "object"}, "AppCheckoutResponse": {"properties": {"url": {"title": "Url", "type": "string"}, "amount": {"title": "Amount", "type": "number"}, "surcharge": {"title": "Surcharge", "type": "number"}}, "required": ["url", "amount", "surcharge"], "title": "AppCheckoutResponse", "type": "object"}, "AppCheckoutRequest": {"properties": {"method": {"enum": ["card", "ach"], "title": "Method", "type": "string"}}, "required": ["method"], "title": "AppCheckoutRequest", "type": "object"}, "MentionSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "job_id": {"title": "Job Id", "type": "integer"}, "job_number": {"title": "Job Number", "type": "string"}, "customer_name": {"title": "Customer Name", "type": "string"}, "by": {"anyOf": [{"$ref": "#/components/schemas/PersonRefSchema"}, {"type": "null"}]}, "excerpt": {"title": "Excerpt", "type": "string"}, "photo_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Photo Id"}, "punch_item_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Punch Item Id"}, "note_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Note Id"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "read": {"title": "Read", "type": "boolean"}}, "required": ["id", "job_id", "job_number", "customer_name", "excerpt", "created_at", "read"], "title": "MentionSchema", "type": "object"}, "MentionReadRequest": {"properties": {"ids": {"default": [], "items": {"type": "integer"}, "title": "Ids", "type": "array"}}, "title": "MentionReadRequest", "type": "object"}, "GuideSummarySchema": {"properties": {"slug": {"title": "Slug", "type": "string"}, "title": {"title": "Title", "type": "string"}, "subtitle": {"title": "Subtitle", "type": "string"}, "cover_file": {"default": "", "title": "Cover File", "type": "string"}, "cover_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Cover Url"}, "step_count": {"title": "Step Count", "type": "integer"}, "equipment_names": {"items": {"type": "string"}, "title": "Equipment Names", "type": "array"}}, "required": ["slug", "title", "subtitle", "step_count", "equipment_names"], "title": "GuideSummarySchema", "type": "object"}, "GuideSchema": {"properties": {"slug": {"title": "Slug", "type": "string"}, "title": {"title": "Title", "type": "string"}, "subtitle": {"title": "Subtitle", "type": "string"}, "signed_in": {"title": "Signed In", "type": "boolean"}, "steps": {"items": {"$ref": "#/components/schemas/GuideStepSchema"}, "title": "Steps", "type": "array"}}, "required": ["slug", "title", "subtitle", "signed_in", "steps"], "title": "GuideSchema", "type": "object"}, "GuideSlideSchema": {"properties": {"kind": {"title": "Kind", "type": "string"}, "file": {"default": "", "title": "File", "type": "string"}, "url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Url"}, "caption": {"default": "", "title": "Caption", "type": "string"}}, "required": ["kind"], "title": "GuideSlideSchema", "type": "object"}, "GuideStepSchema": {"properties": {"number": {"title": "Number", "type": "integer"}, "title": {"title": "Title", "type": "string"}, "warning": {"title": "Warning", "type": "string"}, "slides": {"items": {"$ref": "#/components/schemas/GuideSlideSchema"}, "title": "Slides", "type": "array"}, "hearts": {"title": "Hearts", "type": "integer"}, "hearted": {"title": "Hearted", "type": "boolean"}, "comments": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Comments"}}, "required": ["number", "title", "warning", "slides", "hearts", "hearted"], "title": "GuideStepSchema", "type": "object"}, "GuideCommentSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "body": {"title": "Body", "type": "string"}, "author_name": {"title": "Author Name", "type": "string"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "mine": {"title": "Mine", "type": "boolean"}}, "required": ["id", "body", "author_name", "created_at", "mine"], "title": "GuideCommentSchema", "type": "object"}, "GuideCommentRequest": {"properties": {"body": {"title": "Body", "type": "string"}}, "required": ["body"], "title": "GuideCommentRequest", "type": "object"}, "GuideHeartSchema": {"properties": {"hearts": {"title": "Hearts", "type": "integer"}, "hearted": {"title": "Hearted", "type": "boolean"}}, "required": ["hearts", "hearted"], "title": "GuideHeartSchema", "type": "object"}, "HelpAskRequest": {"properties": {"messages": {"items": {"$ref": "#/components/schemas/AskTurn"}, "title": "Messages", "type": "array"}, "guide_slug": {"default": "", "title": "Guide Slug", "type": "string"}, "step_number": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Step Number"}, "voice": {"default": false, "title": "Voice", "type": "boolean"}, "conversation_id": {"default": "", "title": "Conversation Id", "type": "string"}}, "required": ["messages"], "title": "HelpAskRequest", "type": "object"}, "VoiceSessionSchema": {"properties": {"client_secret": {"title": "Client Secret", "type": "string"}, "expires_at": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Expires At"}, "model": {"title": "Model", "type": "string"}, "websocket_url": {"title": "Websocket Url", "type": "string"}}, "required": ["client_secret", "model", "websocket_url"], "title": "VoiceSessionSchema", "type": "object"}, "HelpVoiceRequest": {"properties": {"tools": {"default": false, "title": "Tools", "type": "boolean"}, "guide_slug": {"default": "", "title": "Guide Slug", "type": "string"}, "step_number": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Step Number"}, "controller": {"default": false, "title": "Controller", "type": "boolean"}}, "title": "HelpVoiceRequest", "type": "object"}, "JobReviewSchema": {"properties": {"status": {"enum": ["ready", "writing", "failed"], "title": "Status", "type": "string"}, "review": {"default": "", "title": "Review", "type": "string"}, "photos": {"default": 0, "title": "Photos", "type": "integer"}, "contract": {"default": false, "title": "Contract", "type": "boolean"}, "error": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Error"}}, "required": ["status"], "title": "JobReviewSchema", "type": "object"}, "JobAskRequest": {"properties": {"messages": {"items": {"$ref": "#/components/schemas/AskTurn"}, "title": "Messages", "type": "array"}, "voice": {"default": false, "title": "Voice", "type": "boolean"}, "conversation_id": {"default": "", "title": "Conversation Id", "type": "string"}}, "required": ["messages"], "title": "JobAskRequest", "type": "object"}, "ControllerReviewRequest": {"properties": {"job_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Job Id"}, "conversation_id": {"default": "", "title": "Conversation Id", "type": "string"}, "messages": {"default": [], "items": {"$ref": "#/components/schemas/AskTurn"}, "title": "Messages", "type": "array"}}, "title": "ControllerReviewRequest", "type": "object"}, "AssistantToolSchema": {"properties": {"output": {"title": "Output", "type": "string"}}, "required": ["output"], "title": "AssistantToolSchema", "type": "object"}, "AssistantToolRequest": {"properties": {"name": {"title": "Name", "type": "string"}, "arguments": {"additionalProperties": true, "default": {}, "title": "Arguments", "type": "object"}}, "required": ["name"], "title": "AssistantToolRequest", "type": "object"}, "VoiceTranscriptRequest": {"properties": {"conversation_id": {"title": "Conversation Id", "type": "string"}, "job_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Job Id"}, "turns": {"items": {"$ref": "#/components/schemas/VoiceTranscriptTurn"}, "maxItems": 2000, "title": "Turns", "type": "array"}}, "required": ["conversation_id", "turns"], "title": "VoiceTranscriptRequest", "type": "object"}, "VoiceTranscriptTurn": {"properties": {"role": {"enum": ["user", "assistant"], "title": "Role", "type": "string"}, "content": {"title": "Content", "type": "string"}}, "required": ["role", "content"], "title": "VoiceTranscriptTurn", "type": "object"}, "StockProductSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "code": {"title": "Code", "type": "string"}, "cost": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}, {"type": "null"}], "title": "Cost"}}, "required": ["id", "name", "code"], "title": "StockProductSchema", "type": "object"}, "StockSummarySchema": {"properties": {"product_id": {"title": "Product Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "code": {"title": "Code", "type": "string"}, "in_stock": {"title": "In Stock", "type": "integer"}, "allocated": {"title": "Allocated", "type": "integer"}, "installed_30d": {"title": "Installed 30D", "type": "integer"}, "returned": {"title": "Returned", "type": "integer"}, "scrapped": {"title": "Scrapped", "type": "integer"}, "needed_by_jobs": {"title": "Needed By Jobs", "type": "integer"}, "last_counted_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Last Counted At"}, "last_variance": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Last Variance"}}, "required": ["product_id", "name", "code", "in_stock", "allocated", "installed_30d", "returned", "scrapped", "needed_by_jobs"], "title": "StockSummarySchema", "type": "object"}, "LocationRefSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "code": {"title": "Code", "type": "string"}, "name": {"title": "Name", "type": "string"}, "path": {"title": "Path", "type": "string"}, "kind": {"title": "Kind", "type": "string"}}, "required": ["id", "code", "name", "path", "kind"], "title": "LocationRefSchema", "type": "object"}, "StockUnitSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "product_id": {"title": "Product Id", "type": "integer"}, "product_name": {"title": "Product Name", "type": "string"}, "serial_number": {"title": "Serial Number", "type": "string"}, "status": {"title": "Status", "type": "string"}, "status_label": {"title": "Status Label", "type": "string"}, "location": {"anyOf": [{"$ref": "#/components/schemas/LocationRefSchema"}, {"type": "null"}]}, "unit_cost": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Unit Cost"}, "cost_source": {"default": "", "title": "Cost Source", "type": "string"}, "received_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Received On"}, "receipt_reference": {"default": "", "title": "Receipt Reference", "type": "string"}, "supplier": {"default": "", "title": "Supplier", "type": "string"}, "job": {"anyOf": [{"$ref": "#/components/schemas/UnitJobSchema"}, {"type": "null"}]}, "installed_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Installed At"}, "packed_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Packed At"}, "disposition_reference": {"title": "Disposition Reference", "type": "string"}, "notes": {"title": "Notes", "type": "string"}}, "required": ["id", "product_id", "product_name", "serial_number", "status", "status_label", "disposition_reference", "notes"], "title": "StockUnitSchema", "type": "object"}, "UnitJobSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "number": {"title": "Number", "type": "string"}, "customer_name": {"title": "Customer Name", "type": "string"}}, "required": ["id", "number", "customer_name"], "title": "UnitJobSchema", "type": "object"}, "CostChangeSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "unit_id": {"title": "Unit Id", "type": "integer"}, "product_name": {"title": "Product Name", "type": "string"}, "serial_number": {"title": "Serial Number", "type": "string"}, "old_cost": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}, {"type": "null"}], "title": "Old Cost"}, "old_source": {"title": "Old Source", "type": "string"}, "new_cost": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}], "title": "New Cost"}, "new_source": {"title": "New Source", "type": "string"}, "change": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}], "title": "Change"}, "receipt_reference": {"title": "Receipt Reference", "type": "string"}, "user_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "User Name"}, "notes": {"title": "Notes", "type": "string"}}, "required": ["id", "created_at", "unit_id", "product_name", "serial_number", "old_source", "new_cost", "new_source", "change", "receipt_reference", "notes"], "title": "CostChangeSchema", "type": "object"}, "MovementSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "from_status": {"title": "From Status", "type": "string"}, "to_status": {"title": "To Status", "type": "string"}, "to_label": {"title": "To Label", "type": "string"}, "from_location": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "From Location"}, "to_location": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "To Location"}, "job_number": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Job Number"}, "user_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "User Name"}, "notes": {"title": "Notes", "type": "string"}}, "required": ["id", "created_at", "from_status", "to_status", "to_label", "notes"], "title": "MovementSchema", "type": "object"}, "StockPhotoSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "url": {"title": "Url", "type": "string"}, "caption": {"title": "Caption", "type": "string"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "taken_by": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Taken By"}, "ready": {"title": "Ready", "type": "boolean"}}, "required": ["id", "url", "caption", "created_at", "ready"], "title": "StockPhotoSchema", "type": "object"}, "StockUnitDetailSchema": {"properties": {"unit": {"$ref": "#/components/schemas/StockUnitSchema"}, "movements": {"items": {"$ref": "#/components/schemas/MovementSchema"}, "title": "Movements", "type": "array"}, "cost_changes": {"items": {"$ref": "#/components/schemas/CostChangeSchema"}, "title": "Cost Changes", "type": "array"}, "photos": {"items": {"$ref": "#/components/schemas/StockPhotoSchema"}, "title": "Photos", "type": "array"}}, "required": ["unit", "movements", "cost_changes", "photos"], "title": "StockUnitDetailSchema", "type": "object"}, "ReceiveResponse": {"properties": {"receipt_id": {"title": "Receipt Id", "type": "integer"}, "units": {"items": {"$ref": "#/components/schemas/StockUnitSchema"}, "title": "Units", "type": "array"}}, "required": ["receipt_id", "units"], "title": "ReceiveResponse", "type": "object"}, "ReceiveRequest": {"properties": {"product_id": {"title": "Product Id", "type": "integer"}, "quantity": {"default": 1, "title": "Quantity", "type": "integer"}, "serials": {"default": [], "items": {"type": "string"}, "title": "Serials", "type": "array"}, "supplier": {"default": "", "title": "Supplier", "type": "string"}, "reference": {"default": "", "title": "Reference", "type": "string"}, "received_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Received On"}, "location_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Location Id"}, "unit_cost": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}, {"type": "null"}], "title": "Unit Cost"}, "notes": {"default": "", "title": "Notes", "type": "string"}}, "required": ["product_id"], "title": "ReceiveRequest", "type": "object"}, "ReceiptLineSchema": {"properties": {"product_id": {"title": "Product Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "units": {"title": "Units", "type": "integer"}, "unit_cost": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}, {"type": "null"}], "title": "Unit Cost"}, "value": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}], "title": "Value"}, "paid": {"title": "Paid", "type": "boolean"}}, "required": ["product_id", "name", "units", "value", "paid"], "title": "ReceiptLineSchema", "type": "object"}, "ReceiptSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "received_on": {"format": "date", "title": "Received On", "type": "string"}, "supplier": {"title": "Supplier", "type": "string"}, "reference": {"title": "Reference", "type": "string"}, "location": {"anyOf": [{"$ref": "#/components/schemas/LocationRefSchema"}, {"type": "null"}]}, "units": {"title": "Units", "type": "integer"}, "products": {"items": {"type": "string"}, "title": "Products", "type": "array"}, "received_by": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Received By"}, "photos": {"title": "Photos", "type": "integer"}, "lines": {"items": {"$ref": "#/components/schemas/ReceiptLineSchema"}, "title": "Lines", "type": "array"}, "value": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}], "title": "Value"}, "awaiting_invoice": {"title": "Awaiting Invoice", "type": "integer"}}, "required": ["id", "received_on", "supplier", "reference", "units", "products", "photos", "lines", "value", "awaiting_invoice"], "title": "ReceiptSchema", "type": "object"}, "UnitActionRequest": {"properties": {"action": {"enum": ["allocate", "install", "back_to_stock", "return", "scrap", "serial", "note", "move", "pack", "cost"], "title": "Action", "type": "string"}, "job_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Job Id"}, "job_item_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Job Item Id"}, "location_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Location Id"}, "location_code": {"default": "", "title": "Location Code", "type": "string"}, "reference": {"default": "", "title": "Reference", "type": "string"}, "reason": {"default": "", "title": "Reason", "type": "string"}, "serial_number": {"default": "", "title": "Serial Number", "type": "string"}, "unit_cost": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}, {"type": "null"}], "title": "Unit Cost"}, "notes": {"default": "", "title": "Notes", "type": "string"}}, "required": ["action"], "title": "UnitActionRequest", "type": "object"}, "ScanResultSchema": {"properties": {"kind": {"enum": ["location", "unit", "product", "unknown"], "title": "Kind", "type": "string"}, "code": {"title": "Code", "type": "string"}, "location": {"anyOf": [{"$ref": "#/components/schemas/LocationRefSchema"}, {"type": "null"}]}, "unit": {"anyOf": [{"$ref": "#/components/schemas/StockUnitSchema"}, {"type": "null"}]}, "product": {"anyOf": [{"$ref": "#/components/schemas/StockProductSchema"}, {"type": "null"}]}}, "required": ["kind", "code"], "title": "ScanResultSchema", "type": "object"}, "PickJobSchema": {"properties": {"job": {"$ref": "#/components/schemas/UnitJobSchema"}, "address": {"title": "Address", "type": "string"}, "first_visit_at": {"format": "date-time", "title": "First Visit At", "type": "string"}, "packed": {"title": "Packed", "type": "integer"}, "total": {"title": "Total", "type": "integer"}, "lines": {"items": {"$ref": "#/components/schemas/PickLineSchema"}, "title": "Lines", "type": "array"}}, "required": ["job", "address", "first_visit_at", "packed", "total", "lines"], "title": "PickJobSchema", "type": "object"}, "PickLineSchema": {"properties": {"item_id": {"title": "Item Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "product_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Product Id"}, "status": {"title": "Status", "type": "string"}, "status_label": {"title": "Status Label", "type": "string"}, "unit": {"anyOf": [{"$ref": "#/components/schemas/StockUnitSchema"}, {"type": "null"}]}, "candidates": {"items": {"$ref": "#/components/schemas/StockUnitSchema"}, "title": "Candidates", "type": "array"}}, "required": ["item_id", "name", "status", "status_label", "candidates"], "title": "PickLineSchema", "type": "object"}, "CountResultSchema": {"properties": {"count": {"$ref": "#/components/schemas/StockCountSchema"}, "missing": {"items": {"type": "string"}, "title": "Missing", "type": "array"}, "unexpected": {"items": {"type": "string"}, "title": "Unexpected", "type": "array"}}, "required": ["count", "missing", "unexpected"], "title": "CountResultSchema", "type": "object"}, "StockCountSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "product_id": {"title": "Product Id", "type": "integer"}, "product_name": {"title": "Product Name", "type": "string"}, "location": {"anyOf": [{"$ref": "#/components/schemas/LocationRefSchema"}, {"type": "null"}]}, "expected": {"title": "Expected", "type": "integer"}, "counted": {"title": "Counted", "type": "integer"}, "variance": {"title": "Variance", "type": "integer"}, "counted_by": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Counted By"}, "notes": {"title": "Notes", "type": "string"}}, "required": ["id", "created_at", "product_id", "product_name", "expected", "counted", "variance", "notes"], "title": "StockCountSchema", "type": "object"}, "CountRequest": {"properties": {"product_id": {"title": "Product Id", "type": "integer"}, "counted": {"title": "Counted", "type": "integer"}, "serials_found": {"default": [], "items": {"type": "string"}, "title": "Serials Found", "type": "array"}, "location_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Location Id"}, "notes": {"default": "", "title": "Notes", "type": "string"}}, "required": ["product_id", "counted"], "title": "CountRequest", "type": "object"}, "ReceiptCostResponse": {"properties": {"updated": {"title": "Updated", "type": "integer"}}, "required": ["updated"], "title": "ReceiptCostResponse", "type": "object"}, "ReceiptCostRequest": {"properties": {"product_id": {"title": "Product Id", "type": "integer"}, "unit_cost": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}], "title": "Unit Cost"}, "notes": {"default": "", "title": "Notes", "type": "string"}}, "required": ["product_id", "unit_cost"], "title": "ReceiptCostRequest", "type": "object"}, "ValuationLineSchema": {"properties": {"unit_id": {"title": "Unit Id", "type": "integer"}, "product_name": {"title": "Product Name", "type": "string"}, "code": {"title": "Code", "type": "string"}, "serial_number": {"title": "Serial Number", "type": "string"}, "status": {"title": "Status", "type": "string"}, "location": {"title": "Location", "type": "string"}, "job": {"title": "Job", "type": "string"}, "received_on": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "Received On"}, "receipt_reference": {"title": "Receipt Reference", "type": "string"}, "supplier": {"title": "Supplier", "type": "string"}, "value": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}], "title": "Value"}, "cost_source": {"title": "Cost Source", "type": "string"}}, "required": ["unit_id", "product_name", "code", "serial_number", "status", "location", "job", "receipt_reference", "supplier", "value", "cost_source"], "title": "ValuationLineSchema", "type": "object"}, "ValuationRowSchema": {"properties": {"product_id": {"title": "Product Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "code": {"title": "Code", "type": "string"}, "units": {"title": "Units", "type": "integer"}, "in_stock": {"title": "In Stock", "type": "integer"}, "allocated": {"title": "Allocated", "type": "integer"}, "value": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}], "title": "Value"}, "allocated_value": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}], "title": "Allocated Value"}, "paid_units": {"title": "Paid Units", "type": "integer"}, "pricebook_units": {"title": "Pricebook Units", "type": "integer"}, "uncosted_units": {"title": "Uncosted Units", "type": "integer"}, "pricebook_cost": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}, {"type": "null"}], "title": "Pricebook Cost"}}, "required": ["product_id", "name", "code", "units", "in_stock", "allocated", "value", "allocated_value", "paid_units", "pricebook_units", "uncosted_units"], "title": "ValuationRowSchema", "type": "object"}, "ValuationSchema": {"properties": {"as_of": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "title": "As Of"}, "total_units": {"title": "Total Units", "type": "integer"}, "total_value": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}], "title": "Total Value"}, "allocated_value": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}], "title": "Allocated Value"}, "uncosted_units": {"title": "Uncosted Units", "type": "integer"}, "rows": {"items": {"$ref": "#/components/schemas/ValuationRowSchema"}, "title": "Rows", "type": "array"}, "lines": {"items": {"$ref": "#/components/schemas/ValuationLineSchema"}, "title": "Lines", "type": "array"}}, "required": ["total_units", "total_value", "allocated_value", "uncosted_units", "rows", "lines"], "title": "ValuationSchema", "type": "object"}, "ActivityLineSchema": {"properties": {"at": {"format": "date-time", "title": "At", "type": "string"}, "kind": {"title": "Kind", "type": "string"}, "unit_id": {"title": "Unit Id", "type": "integer"}, "product_name": {"title": "Product Name", "type": "string"}, "serial_number": {"title": "Serial Number", "type": "string"}, "job": {"title": "Job", "type": "string"}, "value": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}], "title": "Value"}, "cost_source": {"title": "Cost Source", "type": "string"}}, "required": ["at", "kind", "unit_id", "product_name", "serial_number", "job", "value", "cost_source"], "title": "ActivityLineSchema", "type": "object"}, "ActivitySchema": {"properties": {"start": {"format": "date", "title": "Start", "type": "string"}, "end": {"format": "date", "title": "End", "type": "string"}, "opening_value": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}], "title": "Opening Value"}, "closing_value": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}], "title": "Closing Value"}, "totals": {"items": {"$ref": "#/components/schemas/ActivityTotalSchema"}, "title": "Totals", "type": "array"}, "lines": {"items": {"$ref": "#/components/schemas/ActivityLineSchema"}, "title": "Lines", "type": "array"}, "cost_changes": {"items": {"$ref": "#/components/schemas/CostChangeSchema"}, "title": "Cost Changes", "type": "array"}}, "required": ["start", "end", "opening_value", "closing_value", "totals", "lines", "cost_changes"], "title": "ActivitySchema", "type": "object"}, "ActivityTotalSchema": {"properties": {"kind": {"title": "Kind", "type": "string"}, "label": {"title": "Label", "type": "string"}, "units": {"title": "Units", "type": "integer"}, "value": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}], "title": "Value"}}, "required": ["kind", "label", "units", "value"], "title": "ActivityTotalSchema", "type": "object"}, "LocationSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "code": {"title": "Code", "type": "string"}, "name": {"title": "Name", "type": "string"}, "path": {"title": "Path", "type": "string"}, "kind": {"title": "Kind", "type": "string"}, "parent_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Parent Id"}, "vehicle_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Vehicle Id"}, "vehicle_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Vehicle Name"}, "address": {"title": "Address", "type": "string"}, "active": {"title": "Active", "type": "boolean"}, "notes": {"title": "Notes", "type": "string"}, "sticker_printed_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Sticker Printed At"}, "units_here": {"title": "Units Here", "type": "integer"}, "units_inside": {"title": "Units Inside", "type": "integer"}, "photo_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Photo Url"}}, "required": ["id", "code", "name", "path", "kind", "address", "active", "notes", "units_here", "units_inside"], "title": "LocationSchema", "type": "object"}, "LocationRequest": {"properties": {"name": {"title": "Name", "type": "string"}, "code": {"title": "Code", "type": "string"}, "kind": {"default": "bin", "enum": ["warehouse", "zone", "bin", "staging", "vehicle"], "title": "Kind", "type": "string"}, "parent_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Parent Id"}, "vehicle_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Vehicle Id"}, "address": {"default": "", "title": "Address", "type": "string"}, "active": {"default": true, "title": "Active", "type": "boolean"}, "notes": {"default": "", "title": "Notes", "type": "string"}}, "required": ["name", "code"], "title": "LocationRequest", "type": "object"}, "LocationDetailSchema": {"properties": {"location": {"$ref": "#/components/schemas/LocationSchema"}, "children": {"items": {"$ref": "#/components/schemas/LocationSchema"}, "title": "Children", "type": "array"}, "units": {"items": {"$ref": "#/components/schemas/StockUnitSchema"}, "title": "Units", "type": "array"}, "photos": {"items": {"$ref": "#/components/schemas/StockPhotoSchema"}, "title": "Photos", "type": "array"}}, "required": ["location", "children", "units", "photos"], "title": "LocationDetailSchema", "type": "object"}, "StickersPrintedRequest": {"properties": {"location_ids": {"items": {"type": "integer"}, "title": "Location Ids", "type": "array"}}, "required": ["location_ids"], "title": "StickersPrintedRequest", "type": "object"}, "StockPhotoUploadResponse": {"properties": {"media_id": {"title": "Media Id", "type": "integer"}, "presigned_url": {"title": "Presigned Url", "type": "string"}}, "required": ["media_id", "presigned_url"], "title": "StockPhotoUploadResponse", "type": "object"}, "StockPhotoUploadRequest": {"properties": {"file_type": {"title": "File Type", "type": "string"}, "original_filename": {"default": "", "title": "Original Filename", "type": "string"}, "caption": {"default": "", "title": "Caption", "type": "string"}, "unit_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Unit Id"}, "location_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Location Id"}, "receipt_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Receipt Id"}}, "required": ["file_type"], "title": "StockPhotoUploadRequest", "type": "object"}, "CartItemBulkUpdateSchema": {"properties": {"id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Id"}, "display_order": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Display Order"}}, "required": ["display_order"], "title": "CartItemBulkUpdateSchema", "type": "object"}, "LinkCustomerLocationResponse": {"properties": {"success": {"title": "Success", "type": "boolean"}, "message": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Message"}, "customer_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Customer Id"}, "location_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Location Id"}, "customer_created": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Customer Created"}, "location_created": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Location Created"}}, "required": ["success"], "title": "LinkCustomerLocationResponse", "type": "object"}, "LinkCustomerLocationSchema": {"properties": {"quote_id": {"title": "Quote Id", "type": "integer"}}, "required": ["quote_id"], "title": "LinkCustomerLocationSchema", "type": "object"}, "STCustomerLocationSchema": {"properties": {"st_customer_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "St Customer Id"}, "st_location_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "St Location Id"}}, "required": ["st_customer_id", "st_location_id"], "title": "STCustomerLocationSchema", "type": "object"}, "STEstimateResponse": {"properties": {"success": {"title": "Success", "type": "boolean"}, "message": {"title": "Message", "type": "string"}, "estimate_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Estimate Id"}}, "required": ["success", "message"], "title": "STEstimateResponse", "type": "object"}, "LinkEstimateSchema": {"properties": {"st_estimate_id": {"title": "St Estimate Id", "type": "integer"}}, "required": ["st_estimate_id"], "title": "LinkEstimateSchema", "type": "object"}, "EstimatesTypesEstimateReviewStatus": {"description": "    \n    ", "enum": ["None", "NeedsApproval", "Approved", "NotApproved"], "title": "EstimatesTypesEstimateReviewStatus", "type": "string"}, "EstimatesV2EstimateItemResponse": {"description": "EstimatesV2EstimateItemResponse", "properties": {"id": {"title": "Id", "type": "integer"}, "sku": {"anyOf": [{"$ref": "#/components/schemas/EstimatesV2SkuModel"}, {"type": "null"}]}, "sku_account": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Sku Account"}, "description": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Description"}, "membership_type_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Membership Type Id"}, "qty": {"anyOf": [{"type": "number"}, {"type": "integer"}, {"type": "null"}], "title": "Qty"}, "unit_rate": {"anyOf": [{"type": "number"}, {"type": "integer"}, {"type": "null"}], "title": "Unit Rate"}, "total": {"anyOf": [{"type": "number"}, {"type": "integer"}, {"type": "null"}], "title": "Total"}, "unit_cost": {"anyOf": [{"type": "number"}, {"type": "integer"}, {"type": "null"}], "title": "Unit Cost"}, "total_cost": {"anyOf": [{"type": "number"}, {"type": "integer"}, {"type": "null"}], "title": "Total Cost"}, "item_group_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Item Group Name"}, "item_group_root_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Item Group Root Id"}, "created_on": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Created On"}, "modified_on": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Modified On"}, "chargeable": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Chargeable"}}, "required": ["id"], "title": "EstimatesV2EstimateItemResponse", "type": "object"}, "EstimatesV2EstimateResponse": {"description": "EstimatesV2EstimateResponse", "properties": {"id": {"title": "Id", "type": "integer"}, "job_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Job Id"}, "project_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Project Id"}, "location_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Location Id"}, "customer_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Customer Id"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "job_number": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Job Number"}, "status": {"anyOf": [{"$ref": "#/components/schemas/EstimatesV2EstimateStatusModel"}, {"type": "null"}]}, "review_status": {"anyOf": [{"$ref": "#/components/schemas/EstimatesTypesEstimateReviewStatus"}, {"type": "null"}]}, "summary": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Summary"}, "created_on": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Created On"}, "modified_on": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Modified On"}, "sold_on": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Sold On"}, "sold_by": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Sold By"}, "active": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Active"}, "items": {"anyOf": [{"items": {"$ref": "#/components/schemas/EstimatesV2EstimateItemResponse"}, "type": "array"}, {"type": "null"}], "title": "Items"}, "external_links": {"anyOf": [{"items": {"$ref": "#/components/schemas/EstimatesV2ExternalLinkResponse"}, "type": "array"}, {"type": "null"}], "title": "External Links"}, "subtotal": {"anyOf": [{"type": "number"}, {"type": "integer"}, {"type": "null"}], "title": "Subtotal"}, "tax": {"anyOf": [{"type": "number"}, {"type": "integer"}, {"type": "null"}], "title": "Tax"}, "business_unit_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Business Unit Id"}, "business_unit_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Business Unit Name"}}, "required": ["id"], "title": "EstimatesV2EstimateResponse", "type": "object"}, "EstimatesV2EstimateStatusModel": {"description": "EstimatesV2EstimateStatusModel", "properties": {"value": {"title": "Value", "type": "integer"}, "name": {"title": "Name", "type": "string"}}, "required": ["value", "name"], "title": "EstimatesV2EstimateStatusModel", "type": "object"}, "EstimatesV2ExternalLinkResponse": {"description": "EstimatesV2ExternalLinkResponse", "properties": {"name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Url"}}, "title": "EstimatesV2ExternalLinkResponse", "type": "object"}, "EstimatesV2SkuModel": {"description": "EstimatesV2SkuModel", "properties": {"id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Id"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "display_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Display Name"}, "type": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Type"}, "sold_hours": {"anyOf": [{"type": "number"}, {"type": "integer"}, {"type": "null"}], "title": "Sold Hours"}, "general_ledger_account_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "General Ledger Account Id"}, "general_ledger_account_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "General Ledger Account Name"}, "modified_on": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Modified On"}}, "required": ["id", "name", "display_name", "type", "sold_hours", "general_ledger_account_id", "general_ledger_account_name", "modified_on"], "title": "EstimatesV2SkuModel", "type": "object"}, "PushEstimateSchema": {"properties": {"st_estimate_id": {"title": "St Estimate Id", "type": "integer"}}, "required": ["st_estimate_id"], "title": "PushEstimateSchema", "type": "object"}, "STSyncResponse": {"properties": {"success": {"title": "Success", "type": "boolean"}, "message": {"title": "Message", "type": "string"}, "task_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Task Id"}, "status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Status"}, "result": {"anyOf": [{"items": {"additionalProperties": true, "type": "object"}, "type": "array"}, {"type": "null"}], "title": "Result"}}, "required": ["success", "message"], "title": "STSyncResponse", "type": "object"}, "GetMailMessageResponse": {"description": "Response for GET /mailbox/mailMessages/{id}", "properties": {"success": {"description": "If the response is successful or not", "title": "Success", "type": "boolean"}, "statusCode": {"description": "The email\u2010service specific status code", "title": "Statuscode", "type": "integer"}, "statusText": {"description": "The status text of the response", "title": "Statustext", "type": "string"}, "service": {"description": "The service name of the response", "title": "Service", "type": "string"}, "data": {"$ref": "#/components/schemas/MailMessageData", "description": "The requested mail message data"}}, "required": ["success", "statusCode", "statusText", "service", "data"], "title": "GetMailMessageResponse", "type": "object"}, "EmailMailboxSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "email_address": {"title": "Email Address", "type": "string"}, "display_name": {"title": "Display Name", "type": "string"}, "scope": {"enum": ["personal", "shared"], "title": "Scope", "type": "string"}, "default_visibility": {"enum": ["shared", "private"], "title": "Default Visibility", "type": "string"}, "provider": {"title": "Provider", "type": "string"}, "active": {"title": "Active", "type": "boolean"}, "last_synced_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Last Synced At"}}, "required": ["id", "email_address", "display_name", "scope", "default_visibility", "provider", "active"], "title": "EmailMailboxSchema", "type": "object"}, "UpsertEmailMailboxSchema": {"properties": {"email_address": {"title": "Email Address", "type": "string"}, "nylas_grant_id": {"title": "Nylas Grant Id", "type": "string"}, "display_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": "", "title": "Display Name"}, "scope": {"default": "personal", "enum": ["personal", "shared"], "title": "Scope", "type": "string"}, "default_visibility": {"default": "shared", "enum": ["shared", "private"], "title": "Default Visibility", "type": "string"}, "active": {"default": true, "title": "Active", "type": "boolean"}}, "required": ["email_address", "nylas_grant_id"], "title": "UpsertEmailMailboxSchema", "type": "object"}, "UpdateEmailMailboxSchema": {"properties": {"display_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Display Name"}, "scope": {"anyOf": [{"enum": ["personal", "shared"], "type": "string"}, {"type": "null"}], "title": "Scope"}, "default_visibility": {"anyOf": [{"enum": ["shared", "private"], "type": "string"}, {"type": "null"}], "title": "Default Visibility"}, "active": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Active"}}, "title": "UpdateEmailMailboxSchema", "type": "object"}, "EmailSyncRunSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "mailbox_id": {"title": "Mailbox Id", "type": "integer"}, "period_days": {"title": "Period Days", "type": "integer"}, "status": {"title": "Status", "type": "string"}, "messages_scanned": {"title": "Messages Scanned", "type": "integer"}, "messages_created": {"title": "Messages Created", "type": "integer"}, "messages_updated": {"title": "Messages Updated", "type": "integer"}, "threads_linked": {"title": "Threads Linked", "type": "integer"}, "error": {"title": "Error", "type": "string"}, "started_at": {"format": "date-time", "title": "Started At", "type": "string"}, "finished_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Finished At"}}, "required": ["id", "mailbox_id", "period_days", "status", "messages_scanned", "messages_created", "messages_updated", "threads_linked", "error", "started_at"], "title": "EmailSyncRunSchema", "type": "object"}, "EmailSyncRequestSchema": {"properties": {"period_days": {"enum": [30, 90, 180, 365], "title": "Period Days", "type": "integer"}}, "required": ["period_days"], "title": "EmailSyncRequestSchema", "type": "object"}, "EmailAttachmentSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "filename": {"title": "Filename", "type": "string"}, "content_type": {"title": "Content Type", "type": "string"}, "size": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Size"}, "is_inline": {"title": "Is Inline", "type": "boolean"}}, "required": ["id", "filename", "content_type", "is_inline"], "title": "EmailAttachmentSchema", "type": "object"}, "EmailMessageSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "subject": {"title": "Subject", "type": "string"}, "snippet": {"title": "Snippet", "type": "string"}, "from_participants": {"items": {"$ref": "#/components/schemas/EmailParticipantSchema"}, "title": "From Participants", "type": "array"}, "to_participants": {"items": {"$ref": "#/components/schemas/EmailParticipantSchema"}, "title": "To Participants", "type": "array"}, "cc_participants": {"items": {"$ref": "#/components/schemas/EmailParticipantSchema"}, "title": "Cc Participants", "type": "array"}, "direction": {"title": "Direction", "type": "string"}, "is_read": {"title": "Is Read", "type": "boolean"}, "is_draft": {"title": "Is Draft", "type": "boolean"}, "sent_from_hvacos": {"title": "Sent From Hvacos", "type": "boolean"}, "has_attachments": {"title": "Has Attachments", "type": "boolean"}, "message_time": {"format": "date-time", "title": "Message Time", "type": "string"}, "attachments": {"items": {"$ref": "#/components/schemas/EmailAttachmentSchema"}, "title": "Attachments", "type": "array"}}, "required": ["id", "subject", "snippet", "from_participants", "to_participants", "cc_participants", "direction", "is_read", "is_draft", "sent_from_hvacos", "has_attachments", "message_time", "attachments"], "title": "EmailMessageSchema", "type": "object"}, "EmailParticipantSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "email": {"title": "Email", "type": "string"}}, "required": ["name", "email"], "title": "EmailParticipantSchema", "type": "object"}, "EmailThreadListSchema": {"properties": {"items": {"items": {"$ref": "#/components/schemas/EmailThreadSchema"}, "title": "Items", "type": "array"}, "total": {"title": "Total", "type": "integer"}, "page": {"title": "Page", "type": "integer"}, "page_size": {"title": "Page Size", "type": "integer"}, "total_pages": {"title": "Total Pages", "type": "integer"}}, "required": ["items", "total", "page", "page_size", "total_pages"], "title": "EmailThreadListSchema", "type": "object"}, "EmailThreadSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "mailbox_id": {"title": "Mailbox Id", "type": "integer"}, "mailbox_email": {"title": "Mailbox Email", "type": "string"}, "subject": {"title": "Subject", "type": "string"}, "snippet": {"title": "Snippet", "type": "string"}, "participant_emails": {"items": {"type": "string"}, "title": "Participant Emails", "type": "array"}, "deal_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Deal Id"}, "deal_label": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Deal Label"}, "customer_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Customer Name"}, "association_source": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Association Source"}, "visibility": {"enum": ["shared", "private"], "title": "Visibility", "type": "string"}, "last_message_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Last Message At"}, "message_count": {"title": "Message Count", "type": "integer"}, "has_attachments": {"title": "Has Attachments", "type": "boolean"}, "messages": {"items": {"$ref": "#/components/schemas/EmailMessageSchema"}, "title": "Messages", "type": "array"}}, "required": ["id", "mailbox_id", "mailbox_email", "subject", "snippet", "participant_emails", "visibility", "message_count", "has_attachments", "messages"], "title": "EmailThreadSchema", "type": "object"}, "LinkEmailThreadSchema": {"properties": {"deal_id": {"title": "Deal Id", "type": "integer"}}, "required": ["deal_id"], "title": "LinkEmailThreadSchema", "type": "object"}, "UpdateThreadVisibilitySchema": {"properties": {"visibility": {"enum": ["shared", "private"], "title": "Visibility", "type": "string"}}, "required": ["visibility"], "title": "UpdateThreadVisibilitySchema", "type": "object"}, "EmailBodySchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "body": {"title": "Body", "type": "string"}}, "required": ["id", "body"], "title": "EmailBodySchema", "type": "object"}, "SendEmailSchema": {"properties": {"mailbox_id": {"title": "Mailbox Id", "type": "integer"}, "to": {"items": {"$ref": "#/components/schemas/EmailParticipantSchema"}, "title": "To", "type": "array"}, "subject": {"title": "Subject", "type": "string"}, "body": {"title": "Body", "type": "string"}, "cc": {"default": [], "items": {"$ref": "#/components/schemas/EmailParticipantSchema"}, "title": "Cc", "type": "array"}, "bcc": {"default": [], "items": {"$ref": "#/components/schemas/EmailParticipantSchema"}, "title": "Bcc", "type": "array"}, "deal_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Deal Id"}}, "required": ["mailbox_id", "to", "subject", "body"], "title": "SendEmailSchema", "type": "object"}, "InternalEmailDomainsSchema": {"properties": {"domains": {"default": [], "items": {"type": "string"}, "title": "Domains", "type": "array"}}, "title": "InternalEmailDomainsSchema", "type": "object"}, "TemplateShortResponseSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "active": {"title": "Active", "type": "boolean"}, "autoquote": {"title": "Autoquote", "type": "boolean"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "updated_at": {"format": "date-time", "title": "Updated At", "type": "string"}}, "required": ["id", "name", "active", "autoquote", "created_at", "updated_at"], "title": "TemplateShortResponseSchema", "type": "object"}, "TemplateCartItemResponseSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "quantity": {"title": "Quantity", "type": "integer"}, "display_order": {"title": "Display Order", "type": "integer"}, "product": {"$ref": "#/components/schemas/TemplateProductResponseSchema"}}, "required": ["id", "quantity", "display_order", "product"], "title": "TemplateCartItemResponseSchema", "type": "object"}, "TemplateDetailedResponseSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "active": {"title": "Active", "type": "boolean"}, "autoquote": {"title": "Autoquote", "type": "boolean"}, "ahri_number": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ahri Number"}, "data": {"anyOf": [{"additionalProperties": true, "type": "object"}, {"type": "null"}], "title": "Data"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "updated_at": {"format": "date-time", "title": "Updated At", "type": "string"}, "items": {"anyOf": [{"items": {"$ref": "#/components/schemas/TemplateCartItemResponseSchema"}, "type": "array"}, {"items": {}, "type": "array"}], "title": "Items"}}, "required": ["id", "name", "active", "autoquote", "created_at", "updated_at", "items"], "title": "TemplateDetailedResponseSchema", "type": "object"}, "TemplateProductResponseSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "description": {"title": "Description", "type": "string"}, "price": {"title": "Price", "type": "number"}, "st_sku_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "St Sku Id"}, "st_type": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "St Type"}}, "required": ["id", "name", "description", "price"], "title": "TemplateProductResponseSchema", "type": "object"}, "TemplatePostResponseSchema": {"properties": {"success": {"title": "Success", "type": "boolean"}}, "required": ["success"], "title": "TemplatePostResponseSchema", "type": "object"}, "TemplateUpdateSchema": {"properties": {"name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "active": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Active"}, "autoquote": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Autoquote"}, "ahri_number": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ahri Number"}, "data": {"anyOf": [{"additionalProperties": true, "type": "object"}, {"type": "null"}], "title": "Data"}}, "title": "TemplateUpdateSchema", "type": "object"}, "TemplateAddItemSchema": {"properties": {"product_id": {"title": "Product Id", "type": "integer"}, "quantity": {"title": "Quantity", "type": "integer"}, "display_order": {"title": "Display Order", "type": "integer"}}, "required": ["product_id", "quantity", "display_order"], "title": "TemplateAddItemSchema", "type": "object"}, "TemplateUpdateItemSchema": {"properties": {"cartitem_id": {"title": "Cartitem Id", "type": "integer"}, "product_id": {"title": "Product Id", "type": "integer"}, "quantity": {"title": "Quantity", "type": "integer"}, "display_order": {"title": "Display Order", "type": "integer"}}, "required": ["cartitem_id", "product_id", "quantity", "display_order"], "title": "TemplateUpdateItemSchema", "type": "object"}, "TemplateDeleteItemSchema": {"properties": {"cartitem_id": {"title": "Cartitem Id", "type": "integer"}}, "required": ["cartitem_id"], "title": "TemplateDeleteItemSchema", "type": "object"}, "ASHPManufacturerSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "company_url": {"title": "Company Url", "type": "string"}, "product_count": {"title": "Product Count", "type": "integer"}, "brands": {"title": "Brands", "type": "string"}}, "required": ["id", "name", "company_url", "product_count", "brands"], "title": "ASHPManufacturerSchema", "type": "object"}, "ASHPProductSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "manufacturer": {"$ref": "#/components/schemas/ASHPManufacturerSchema"}, "brand": {"title": "Brand", "type": "string"}, "model_series": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Model Series"}, "indoor_unit_number": {"title": "Indoor Unit Number", "type": "string"}, "outdoor_unit_number": {"title": "Outdoor Unit Number", "type": "string"}, "ahri_certificate_number": {"title": "Ahri Certificate Number", "type": "integer"}, "cooling_capacity_rated_95": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Cooling Capacity Rated 95"}, "heating_capacity_rated_47": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Heating Capacity Rated 47"}, "heating_capacity_max_5": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Heating Capacity Max 5"}, "cop_max_5": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Cop Max 5"}, "seer_2": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Seer 2"}, "eer_2": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Eer 2"}, "hspf_region_iv_2": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Hspf Region Iv 2"}, "hspf_region_v_2": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Hspf Region V 2"}, "system_type": {"title": "System Type", "type": "string"}, "ducting_configuration": {"title": "Ducting Configuration", "type": "string"}, "variable_capacity": {"title": "Variable Capacity", "type": "boolean"}, "energy_star": {"title": "Energy Star", "type": "boolean"}, "energy_star_cold_climate": {"title": "Energy Star Cold Climate", "type": "boolean"}, "refrigerant": {"title": "Refrigerant", "type": "string"}, "ratings": {"default": [], "items": {"$ref": "#/components/schemas/ASHPRatingSchema"}, "title": "Ratings", "type": "array"}, "pan_heater": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Pan Heater"}, "pan_heater_input_power": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Pan Heater Input Power"}}, "required": ["id", "manufacturer", "brand", "indoor_unit_number", "outdoor_unit_number", "ahri_certificate_number", "system_type", "ducting_configuration", "variable_capacity", "energy_star", "energy_star_cold_climate", "refrigerant"], "title": "ASHPProductSchema", "type": "object"}, "ASHPRatingSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "heat_cool": {"enum": ["Heating", "Cooling"], "title": "Heat Cool", "type": "string"}, "outdoor_dry_bulb": {"title": "Outdoor Dry Bulb", "type": "number"}, "indoor_dry_bulb": {"title": "Indoor Dry Bulb", "type": "number"}, "capacity_min": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Capacity Min"}, "capacity_rated": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Capacity Rated"}, "capacity_max": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Capacity Max"}, "power_min": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Power Min"}, "power_rated": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Power Rated"}, "power_max": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Power Max"}, "cop_min": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Cop Min"}, "cop_rated": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Cop Rated"}, "cop_max": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Cop Max"}}, "required": ["id", "heat_cool", "outdoor_dry_bulb", "indoor_dry_bulb"], "title": "ASHPRatingSchema", "type": "object"}, "AHRIChoiceSchema": {"properties": {"ahri_choices": {"items": {"items": {}, "type": "array"}, "title": "Ahri Choices", "type": "array"}, "ahri_choices_rev": {"items": {"items": {}, "type": "array"}, "title": "Ahri Choices Rev", "type": "array"}, "ducting_configuration": {"items": {"items": {}, "type": "array"}, "title": "Ducting Configuration", "type": "array"}, "status_choices": {"items": {"items": {}, "type": "array"}, "title": "Status Choices", "type": "array"}, "indoor_choices": {"items": {"items": {}, "type": "array"}, "title": "Indoor Choices", "type": "array"}, "system_type_choices": {"items": {"items": {}, "type": "array"}, "title": "System Type Choices", "type": "array"}, "system_type_mapping": {"items": {"$ref": "#/components/schemas/AHRISystemTypeMappingSchema"}, "title": "System Type Mapping", "type": "array"}, "maximum_capacity": {"title": "Maximum Capacity", "type": "number"}, "bucket": {"title": "Bucket", "type": "string"}}, "required": ["ahri_choices", "ahri_choices_rev", "ducting_configuration", "status_choices", "indoor_choices", "system_type_choices", "system_type_mapping", "maximum_capacity", "bucket"], "title": "AHRIChoiceSchema", "type": "object"}, "AHRISystemTypeMappingSchema": {"properties": {"f": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "F"}, "st": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "St"}, "st_id": {"title": "St Id", "type": "integer"}}, "required": ["st_id"], "title": "AHRISystemTypeMappingSchema", "type": "object"}, "ASHPProductListItemSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "brand": {"title": "Brand", "type": "string"}, "model_series": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Model Series"}, "ahri_certificate_number": {"title": "Ahri Certificate Number", "type": "integer"}, "outdoor_unit_number": {"title": "Outdoor Unit Number", "type": "string"}, "indoor_unit_number": {"title": "Indoor Unit Number", "type": "string"}, "model_number": {"title": "Model Number", "type": "string"}, "system_type": {"title": "System Type", "type": "string"}, "system_type_id": {"title": "System Type Id", "type": "integer"}, "ducting_configuration": {"title": "Ducting Configuration", "type": "string"}, "hspf_region_iv": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Hspf Region Iv"}, "hspf_region_iv_2": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Hspf Region Iv 2"}, "seer": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Seer"}, "eer": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Eer"}, "seer_2": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Seer 2"}, "eer_2": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Eer 2"}, "ieer": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Ieer"}, "cop_max_5": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Cop Max 5"}, "heating_capacity_max_5": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Heating Capacity Max 5"}, "heating_capacity_rated_47": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Heating Capacity Rated 47"}, "cooling_capacity_rated_95": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Cooling Capacity Rated 95"}, "furnace_unit_number": {"title": "Furnace Unit Number", "type": "string"}}, "required": ["id", "brand", "ahri_certificate_number", "outdoor_unit_number", "indoor_unit_number", "model_number", "system_type", "system_type_id", "ducting_configuration", "hspf_region_iv", "hspf_region_iv_2", "seer", "eer", "seer_2", "eer_2", "ieer", "cop_max_5", "heating_capacity_max_5", "heating_capacity_rated_47", "cooling_capacity_rated_95", "furnace_unit_number"], "title": "ASHPProductListItemSchema", "type": "object"}, "ASHPProductSearchResponseSchema": {"properties": {"page": {"title": "Page", "type": "integer"}, "page_size": {"title": "Page Size", "type": "integer"}, "total_pages": {"title": "Total Pages", "type": "integer"}, "total_count": {"title": "Total Count", "type": "integer"}, "results": {"items": {"$ref": "#/components/schemas/ASHPProductListItemSchema"}, "title": "Results", "type": "array"}}, "required": ["page", "page_size", "total_pages", "total_count", "results"], "title": "ASHPProductSearchResponseSchema", "type": "object"}, "ASHPProductSearchRequestSchema": {"properties": {"page": {"title": "Page", "type": "integer"}, "style": {"anyOf": [{"enum": ["1", "list", "tile"], "type": "string"}, {"type": "null"}], "default": "list", "title": "Style"}, "brand": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Brand"}, "ahri_certificate_number": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Ahri Certificate Number"}, "system_type": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "System Type"}, "config": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Config"}, "refrigerant": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Refrigerant"}, "cap5min": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Cap5Min"}, "cap5max": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Cap5Max"}, "capmin": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Capmin"}, "capmax": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Capmax"}, "energy_star": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Energy Star"}, "energy_star_cold_climate": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Energy Star Cold Climate"}, "fed_tax_credit_n": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Fed Tax Credit N"}, "fed_tax_credit_s": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Fed Tax Credit S"}, "cee_tier_a": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Cee Tier A"}, "cee_tier_b": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "title": "Cee Tier B"}}, "required": ["page"], "title": "ASHPProductSearchRequestSchema", "type": "object"}, "ChecklistTemplateSchema": {"properties": {"version": {"title": "Version", "type": "integer"}, "items": {"items": {"$ref": "#/components/schemas/TemplateItemSchema"}, "title": "Items", "type": "array"}}, "required": ["version", "items"], "title": "ChecklistTemplateSchema", "type": "object"}, "TemplateItemSchema": {"properties": {"key": {"title": "Key", "type": "string"}, "label": {"title": "Label", "type": "string"}, "learnMore": {"title": "Learnmore", "type": "string"}}, "required": ["key", "label", "learnMore"], "title": "TemplateItemSchema", "type": "object"}, "SaveTemplateSchema": {"properties": {"items": {"items": {"$ref": "#/components/schemas/TemplateItemSchema"}, "title": "Items", "type": "array"}, "push_to_existing": {"default": false, "title": "Push To Existing", "type": "boolean"}}, "required": ["items"], "title": "SaveTemplateSchema", "type": "object"}, "ImageUploadResponse": {"properties": {"url": {"title": "Url", "type": "string"}}, "required": ["url"], "title": "ImageUploadResponse", "type": "object"}, "FormTemplateListItemSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "description": {"title": "Description", "type": "string"}, "active": {"title": "Active", "type": "boolean"}, "show_in_virtual_site_visit": {"title": "Show In Virtual Site Visit", "type": "boolean"}, "section_count": {"title": "Section Count", "type": "integer"}, "field_count": {"title": "Field Count", "type": "integer"}, "trigger_config": {"additionalProperties": true, "title": "Trigger Config", "type": "object"}, "updated_at": {"format": "date-time", "title": "Updated At", "type": "string"}}, "required": ["id", "name", "description", "active", "show_in_virtual_site_visit", "section_count", "field_count", "trigger_config", "updated_at"], "title": "FormTemplateListItemSchema", "type": "object"}, "FormTemplateDetailSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "description": {"title": "Description", "type": "string"}, "active": {"title": "Active", "type": "boolean"}, "show_in_virtual_site_visit": {"title": "Show In Virtual Site Visit", "type": "boolean"}, "section_count": {"title": "Section Count", "type": "integer"}, "field_count": {"title": "Field Count", "type": "integer"}, "trigger_config": {"additionalProperties": true, "title": "Trigger Config", "type": "object"}, "updated_at": {"format": "date-time", "title": "Updated At", "type": "string"}, "definition": {"additionalProperties": true, "title": "Definition", "type": "object"}}, "required": ["id", "name", "description", "active", "show_in_virtual_site_visit", "section_count", "field_count", "trigger_config", "updated_at", "definition"], "title": "FormTemplateDetailSchema", "type": "object"}, "FormTemplateSaveSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "description": {"default": "", "title": "Description", "type": "string"}, "definition": {"additionalProperties": true, "title": "Definition", "type": "object"}, "trigger_config": {"additionalProperties": true, "default": {}, "title": "Trigger Config", "type": "object"}, "active": {"default": true, "title": "Active", "type": "boolean"}, "show_in_virtual_site_visit": {"default": false, "title": "Show In Virtual Site Visit", "type": "boolean"}}, "required": ["name", "definition"], "title": "FormTemplateSaveSchema", "type": "object"}, "FormFieldMediaSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "url": {"title": "Url", "type": "string"}, "media_type": {"title": "Media Type", "type": "string"}, "upload_status": {"title": "Upload Status", "type": "string"}, "original_filename": {"title": "Original Filename", "type": "string"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}}, "required": ["id", "url", "media_type", "upload_status", "original_filename", "created_at"], "title": "FormFieldMediaSchema", "type": "object"}, "FormInstanceDetailSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "template_id": {"title": "Template Id", "type": "integer"}, "template_name": {"title": "Template Name", "type": "string"}, "status": {"title": "Status", "type": "string"}, "source": {"title": "Source", "type": "string"}, "deal_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Deal Id"}, "quote_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Quote Id"}, "target_label": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Target Label"}, "progress_complete": {"title": "Progress Complete", "type": "integer"}, "progress_total": {"title": "Progress Total", "type": "integer"}, "completed_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Completed At"}, "completed_by_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Completed By Name"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "updated_at": {"format": "date-time", "title": "Updated At", "type": "string"}, "definition": {"additionalProperties": true, "title": "Definition", "type": "object"}, "answers": {"additionalProperties": true, "title": "Answers", "type": "object"}, "media_by_field": {"additionalProperties": {"items": {"$ref": "#/components/schemas/FormFieldMediaSchema"}, "type": "array"}, "title": "Media By Field", "type": "object"}}, "required": ["id", "template_id", "template_name", "status", "source", "progress_complete", "progress_total", "created_at", "updated_at", "definition", "answers", "media_by_field"], "title": "FormInstanceDetailSchema", "type": "object"}, "FormInstanceCreateSchema": {"properties": {"template_id": {"title": "Template Id", "type": "integer"}, "deal_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Deal Id"}, "deal_uuid": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Deal Uuid"}, "quote_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Quote Id"}}, "required": ["template_id"], "title": "FormInstanceCreateSchema", "type": "object"}, "FormInstanceListItemSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "template_id": {"title": "Template Id", "type": "integer"}, "template_name": {"title": "Template Name", "type": "string"}, "status": {"title": "Status", "type": "string"}, "source": {"title": "Source", "type": "string"}, "deal_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Deal Id"}, "quote_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Quote Id"}, "target_label": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Target Label"}, "progress_complete": {"title": "Progress Complete", "type": "integer"}, "progress_total": {"title": "Progress Total", "type": "integer"}, "completed_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Completed At"}, "completed_by_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Completed By Name"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "updated_at": {"format": "date-time", "title": "Updated At", "type": "string"}}, "required": ["id", "template_id", "template_name", "status", "source", "progress_complete", "progress_total", "created_at", "updated_at"], "title": "FormInstanceListItemSchema", "type": "object"}, "FormInstanceListSchema": {"properties": {"items": {"items": {"$ref": "#/components/schemas/FormInstanceListItemSchema"}, "title": "Items", "type": "array"}, "total": {"title": "Total", "type": "integer"}, "page": {"title": "Page", "type": "integer"}, "page_size": {"title": "Page Size", "type": "integer"}}, "required": ["items", "total", "page", "page_size"], "title": "FormInstanceListSchema", "type": "object"}, "FormAnswersPatchSchema": {"properties": {"answers": {"additionalProperties": true, "title": "Answers", "type": "object"}}, "required": ["answers"], "title": "FormAnswersPatchSchema", "type": "object"}, "FormFieldMediaUploadResponse": {"properties": {"media": {"$ref": "#/components/schemas/FormFieldMediaSchema"}, "presigned_url": {"title": "Presigned Url", "type": "string"}, "s3_key": {"title": "S3 Key", "type": "string"}}, "required": ["media", "presigned_url", "s3_key"], "title": "FormFieldMediaUploadResponse", "type": "object"}, "FormFieldMediaUploadSchema": {"properties": {"file_type": {"title": "File Type", "type": "string"}, "original_filename": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Original Filename"}}, "required": ["file_type"], "title": "FormFieldMediaUploadSchema", "type": "object"}, "PodiumStatusSchema": {"properties": {"connected": {"title": "Connected", "type": "boolean"}, "expires_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Expires At"}, "scope": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Scope"}, "connected_by_user_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Connected By User Id"}, "sync": {"$ref": "#/components/schemas/PodiumSyncStatusSchema"}}, "required": ["connected", "sync"], "title": "PodiumStatusSchema", "type": "object"}, "PodiumSyncStatusSchema": {"properties": {"status": {"title": "Status", "type": "string"}, "mode": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Mode"}, "source": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Source"}, "requested_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Requested At"}, "started_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Started At"}, "finished_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Finished At"}, "last_completed_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Last Completed At"}, "conversations_scanned": {"default": 0, "title": "Conversations Scanned", "type": "integer"}, "conversations_changed": {"default": 0, "title": "Conversations Changed", "type": "integer"}, "messages_scanned": {"default": 0, "title": "Messages Scanned", "type": "integer"}, "error": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Error"}, "active": {"title": "Active", "type": "boolean"}, "can_sync": {"title": "Can Sync", "type": "boolean"}, "retry_after_seconds": {"default": 0, "title": "Retry After Seconds", "type": "integer"}}, "required": ["status", "active", "can_sync"], "title": "PodiumSyncStatusSchema", "type": "object"}, "PodiumDisconnectSchema": {"properties": {"success": {"title": "Success", "type": "boolean"}}, "required": ["success"], "title": "PodiumDisconnectSchema", "type": "object"}, "PodiumRecordSelector": {"properties": {"deal_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Deal Id"}, "quote_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Quote Id"}, "customer_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Customer Id"}, "lead_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Lead Id"}, "phone": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Phone"}}, "title": "PodiumRecordSelector", "type": "object"}, "PodiumConversationMetadataResponseSchema": {"properties": {"data": {"items": {"$ref": "#/components/schemas/PodiumConversationMetadataSchema"}, "title": "Data", "type": "array"}}, "required": ["data"], "title": "PodiumConversationMetadataResponseSchema", "type": "object"}, "PodiumConversationMetadataSchema": {"properties": {"uid": {"title": "Uid", "type": "string"}, "contact_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Contact Name"}, "channel_type": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Channel Type"}, "channel_identifier": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Channel Identifier"}, "assigned_user_uid": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Assigned User Uid"}, "assigned_user_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Assigned User Name"}, "closed": {"default": false, "title": "Closed", "type": "boolean"}, "created_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Created At"}, "updated_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Updated At"}, "last_item_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Last Item At"}, "location_uid": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Location Uid"}, "call_uid": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Call Uid"}, "call_duration_seconds": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Call Duration Seconds"}, "call_created_at": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Call Created At"}, "call_event_type": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Call Event Type"}, "inbox_url": {"title": "Inbox Url", "type": "string"}}, "required": ["uid", "inbox_url"], "title": "PodiumConversationMetadataSchema", "type": "object"}, "PodiumSendMessageSchema": {"properties": {"deal_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Deal Id"}, "quote_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Quote Id"}, "customer_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Customer Id"}, "lead_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Lead Id"}, "phone": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Phone"}, "body": {"title": "Body", "type": "string"}}, "required": ["body"], "title": "PodiumSendMessageSchema", "type": "object"}, "PodiumTemplateContextSchema": {"properties": {"contact": {"title": "Contact", "type": "string"}, "contact_first_name": {"title": "Contact First Name", "type": "string"}, "user_first_name": {"title": "User First Name", "type": "string"}, "business_name": {"title": "Business Name", "type": "string"}, "location": {"title": "Location", "type": "string"}}, "required": ["contact", "contact_first_name", "user_first_name", "business_name", "location"], "title": "PodiumTemplateContextSchema", "type": "object"}, "PusherChannelAuthorizationSchema": {"properties": {"auth": {"title": "Auth", "type": "string"}}, "required": ["auth"], "title": "PusherChannelAuthorizationSchema", "type": "object"}, "PusherChannelAuthorizationRequestSchema": {"properties": {"socket_id": {"title": "Socket Id", "type": "string"}, "channel_name": {"title": "Channel Name", "type": "string"}}, "required": ["socket_id", "channel_name"], "title": "PusherChannelAuthorizationRequestSchema", "type": "object"}, "NotificationListSchema": {"properties": {"items": {"items": {"$ref": "#/components/schemas/NotificationSchema"}, "title": "Items", "type": "array"}, "total": {"title": "Total", "type": "integer"}, "unread_count": {"title": "Unread Count", "type": "integer"}, "page": {"title": "Page", "type": "integer"}, "page_size": {"title": "Page Size", "type": "integer"}, "total_pages": {"title": "Total Pages", "type": "integer"}, "cards_enabled": {"title": "Cards Enabled", "type": "boolean"}}, "required": ["items", "total", "unread_count", "page", "page_size", "total_pages", "cards_enabled"], "title": "NotificationListSchema", "type": "object"}, "NotificationSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "channel": {"enum": ["email", "sms", "deal"], "title": "Channel", "type": "string"}, "title": {"title": "Title", "type": "string"}, "preview": {"title": "Preview", "type": "string"}, "target_url": {"title": "Target Url", "type": "string"}, "source_message_id": {"title": "Source Message Id", "type": "string"}, "source_thread_id": {"title": "Source Thread Id", "type": "string"}, "related_deal_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Related Deal Id"}, "read_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Read At"}, "resolved_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Resolved At"}, "actionable": {"default": true, "title": "Actionable", "type": "boolean"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}}, "required": ["id", "channel", "title", "preview", "target_url", "source_message_id", "source_thread_id", "created_at"], "title": "NotificationSchema", "type": "object"}, "NotificationPreferencesResponseSchema": {"properties": {"preferences": {"$ref": "#/components/schemas/NotificationPreferencesSchema"}, "workspace_defaults": {"$ref": "#/components/schemas/NotificationPreferencesSchema"}, "is_admin": {"title": "Is Admin", "type": "boolean"}}, "required": ["preferences", "workspace_defaults", "is_admin"], "title": "NotificationPreferencesResponseSchema", "type": "object"}, "NotificationPreferencesSchema": {"properties": {"email_enabled": {"default": true, "title": "Email Enabled", "type": "boolean"}, "sms_enabled": {"default": true, "title": "Sms Enabled", "type": "boolean"}, "deal_enabled": {"default": true, "title": "Deal Enabled", "type": "boolean"}, "cards_enabled": {"default": true, "title": "Cards Enabled", "type": "boolean"}, "scope": {"default": "all", "enum": ["all", "assigned"], "title": "Scope", "type": "string"}}, "title": "NotificationPreferencesSchema", "type": "object"}, "UpdatedCountSchema": {"properties": {"updated": {"title": "Updated", "type": "integer"}}, "required": ["updated"], "title": "UpdatedCountSchema", "type": "object"}, "MarkRelatedNotificationsSchema": {"properties": {"channel": {"enum": ["email", "sms", "deal"], "title": "Channel", "type": "string"}, "source_thread_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Source Thread Id"}, "related_deal_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Related Deal Id"}}, "required": ["channel"], "title": "MarkRelatedNotificationsSchema", "type": "object"}, "CompanyCamDealSchema": {"properties": {"id": {"title": "Id", "type": "string"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "deal_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Deal Url"}, "address_street_1": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address Street 1"}, "address_city": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address City"}, "address_state": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address State"}, "address_postal_code": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address Postal Code"}}, "required": ["id"], "title": "CompanyCamDealSchema", "type": "object"}, "CompanyCamPhotoSchema": {"properties": {"id": {"title": "Id", "type": "string"}, "photo_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Photo Url"}, "creator_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Creator Name"}, "captured_at": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Captured At"}, "processing_status": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Processing Status"}, "uris": {"default": [], "items": {"$ref": "#/components/schemas/CompanyCamPhotoUriSchema"}, "title": "Uris", "type": "array"}}, "required": ["id"], "title": "CompanyCamPhotoSchema", "type": "object"}, "CompanyCamPhotoUriSchema": {"properties": {"type": {"title": "Type", "type": "string"}, "url": {"title": "Url", "type": "string"}}, "required": ["type", "url"], "title": "CompanyCamPhotoUriSchema", "type": "object"}, "CompanyCamPhotosResponseSchema": {"properties": {"matched": {"title": "Matched", "type": "boolean"}, "deal": {"anyOf": [{"$ref": "#/components/schemas/CompanyCamDealSchema"}, {"type": "null"}]}, "photos": {"default": [], "items": {"$ref": "#/components/schemas/CompanyCamPhotoSchema"}, "title": "Photos", "type": "array"}, "address_searched": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Address Searched"}}, "required": ["matched"], "title": "CompanyCamPhotosResponseSchema", "type": "object"}, "ImportPhotosResponseSchema": {"properties": {"imported": {"title": "Imported", "type": "integer"}, "skipped": {"title": "Skipped", "type": "integer"}, "failed": {"title": "Failed", "type": "integer"}, "failed_photo_ids": {"default": [], "items": {"type": "string"}, "title": "Failed Photo Ids", "type": "array"}}, "required": ["imported", "skipped", "failed"], "title": "ImportPhotosResponseSchema", "type": "object"}, "ImportPhotosRequestSchema": {"properties": {"photo_ids": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Photo Ids"}}, "title": "ImportPhotosRequestSchema", "type": "object"}, "RewarmingCampaignSchema": {"properties": {"key": {"enum": ["unqualified", "qualified", "waiting_for_signature"], "title": "Key", "type": "string"}, "enabled": {"default": false, "title": "Enabled", "type": "boolean"}, "stage_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Stage Id"}, "touches": {"items": {"$ref": "#/components/schemas/RewarmingTouchSchema"}, "maxItems": 6, "minItems": 1, "title": "Touches", "type": "array"}}, "required": ["key", "touches"], "title": "RewarmingCampaignSchema", "type": "object"}, "RewarmingChoiceSchema": {"properties": {"id": {"title": "Id", "type": "string"}, "name": {"title": "Name", "type": "string"}}, "required": ["id", "name"], "title": "RewarmingChoiceSchema", "type": "object"}, "RewarmingDraftSchema": {"properties": {"enabled": {"default": false, "title": "Enabled", "type": "boolean"}, "timezone": {"default": "", "maxLength": 100, "title": "Timezone", "type": "string"}, "start_hour": {"default": 12, "maximum": 12, "minimum": 0, "title": "Start Hour", "type": "integer"}, "end_hour": {"default": 17, "maximum": 24, "minimum": 13, "title": "End Hour", "type": "integer"}, "minimum_interval_hours": {"default": 24, "maximum": 168, "minimum": 1, "title": "Minimum Interval Hours", "type": "integer"}, "location_uid": {"default": "", "maxLength": 100, "title": "Location Uid", "type": "string"}, "campaigns": {"items": {"$ref": "#/components/schemas/RewarmingCampaignSchema"}, "maxItems": 3, "minItems": 3, "title": "Campaigns", "type": "array"}}, "required": ["campaigns"], "title": "RewarmingDraftSchema", "type": "object"}, "RewarmingSettingsSchema": {"properties": {"draft": {"$ref": "#/components/schemas/RewarmingDraftSchema"}, "revision": {"title": "Revision", "type": "string"}, "stages": {"items": {"$ref": "#/components/schemas/RewarmingChoiceSchema"}, "title": "Stages", "type": "array"}}, "required": ["draft", "revision", "stages"], "title": "RewarmingSettingsSchema", "type": "object"}, "RewarmingTouchSchema": {"properties": {"day": {"maximum": 90, "minimum": 1, "title": "Day", "type": "integer"}, "template_id": {"default": "", "maxLength": 100, "title": "Template Id", "type": "string"}}, "required": ["day"], "title": "RewarmingTouchSchema", "type": "object"}, "RewarmingSaveSchema": {"properties": {"settings": {"$ref": "#/components/schemas/RewarmingSettingsSchema"}, "issues": {"items": {"type": "string"}, "title": "Issues", "type": "array"}}, "required": ["settings", "issues"], "title": "RewarmingSaveSchema", "type": "object"}, "RewarmingWriteSchema": {"properties": {"draft": {"$ref": "#/components/schemas/RewarmingDraftSchema"}, "revision": {"title": "Revision", "type": "string"}}, "required": ["draft", "revision"], "title": "RewarmingWriteSchema", "type": "object"}, "RewarmingCatalogSchema": {"properties": {"locations": {"items": {"$ref": "#/components/schemas/RewarmingChoiceSchema"}, "title": "Locations", "type": "array"}, "templates": {"items": {"$ref": "#/components/schemas/RewarmingTemplateSchema"}, "title": "Templates", "type": "array"}, "message": {"default": "", "title": "Message", "type": "string"}}, "required": ["locations", "templates"], "title": "RewarmingCatalogSchema", "type": "object"}, "RewarmingTemplateSchema": {"properties": {"id": {"title": "Id", "type": "string"}, "name": {"title": "Name", "type": "string"}, "body": {"title": "Body", "type": "string"}}, "required": ["id", "name", "body"], "title": "RewarmingTemplateSchema", "type": "object"}, "RewarmingExampleSchema": {"properties": {"deal_id": {"title": "Deal Id", "type": "integer"}, "customer_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Customer Name"}, "campaign_key": {"enum": ["unqualified", "qualified", "waiting_for_signature"], "title": "Campaign Key", "type": "string"}, "reason": {"title": "Reason", "type": "string"}, "step": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Step"}, "scheduled_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Scheduled At"}}, "required": ["deal_id", "customer_name", "campaign_key", "reason", "step", "scheduled_at"], "title": "RewarmingExampleSchema", "type": "object"}, "RewarmingPreviewSchema": {"properties": {"counts": {"additionalProperties": {"type": "integer"}, "title": "Counts", "type": "object"}, "examples": {"items": {"$ref": "#/components/schemas/RewarmingExampleSchema"}, "title": "Examples", "type": "array"}, "after": {"title": "After", "type": "integer"}, "done": {"title": "Done", "type": "boolean"}, "as_of": {"format": "date-time", "title": "As Of", "type": "string"}, "issues": {"items": {"type": "string"}, "title": "Issues", "type": "array"}}, "required": ["counts", "examples", "after", "done", "as_of", "issues"], "title": "RewarmingPreviewSchema", "type": "object"}, "RewarmingPreviewRequestSchema": {"properties": {"draft": {"$ref": "#/components/schemas/RewarmingDraftSchema"}, "revision": {"title": "Revision", "type": "string"}, "after": {"default": 0, "minimum": 0, "title": "After", "type": "integer"}, "as_of": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "As Of"}}, "required": ["draft", "revision"], "title": "RewarmingPreviewRequestSchema", "type": "object"}, "CRMConfigurationSchema": {"properties": {"assignment_strategy": {"enum": ["manual", "round_robin", "default"], "title": "Assignment Strategy", "type": "string"}, "default_salesperson_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Default Salesperson Id"}, "initial_stage_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Initial Stage Id"}, "qualified_stage_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Qualified Stage Id"}, "proposal_sent_stage_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Proposal Sent Stage Id"}, "contract_signed_stage_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Contract Signed Stage Id"}, "lost_reason_options": {"items": {"type": "string"}, "title": "Lost Reason Options", "type": "array"}, "stages": {"items": {"$ref": "#/components/schemas/CRMStageSchema"}, "title": "Stages", "type": "array"}, "labels": {"items": {"$ref": "#/components/schemas/CRMDealLabelSchema"}, "title": "Labels", "type": "array"}, "custom_fields": {"items": {"$ref": "#/components/schemas/CRMCustomFieldSchema"}, "title": "Custom Fields", "type": "array"}, "salespeople": {"items": {"$ref": "#/components/schemas/CRMSalespersonSchema"}, "title": "Salespeople", "type": "array"}}, "required": ["assignment_strategy", "lost_reason_options", "stages", "labels", "custom_fields", "salespeople"], "title": "CRMConfigurationSchema", "type": "object"}, "CRMCustomFieldSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "field_type": {"title": "Field Type", "type": "string"}, "options": {"default": [], "items": {"type": "string"}, "title": "Options", "type": "array"}, "sort_order": {"title": "Sort Order", "type": "integer"}, "is_required": {"title": "Is Required", "type": "boolean"}, "is_active": {"title": "Is Active", "type": "boolean"}}, "required": ["id", "name", "field_type", "sort_order", "is_required", "is_active"], "title": "CRMCustomFieldSchema", "type": "object"}, "CRMDealLabelSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "color": {"title": "Color", "type": "string"}, "sort_order": {"title": "Sort Order", "type": "integer"}, "is_active": {"title": "Is Active", "type": "boolean"}, "deal_count": {"default": 0, "title": "Deal Count", "type": "integer"}}, "required": ["id", "name", "color", "sort_order", "is_active"], "title": "CRMDealLabelSchema", "type": "object"}, "CRMSalespersonSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}}, "required": ["id", "name"], "title": "CRMSalespersonSchema", "type": "object"}, "CRMStageSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "sort_order": {"title": "Sort Order", "type": "integer"}, "probability": {"title": "Probability", "type": "integer"}, "is_active": {"title": "Is Active", "type": "boolean"}, "deal_count": {"default": 0, "title": "Deal Count", "type": "integer"}, "open_deal_count": {"default": 0, "title": "Open Deal Count", "type": "integer"}, "won_deal_count": {"default": 0, "title": "Won Deal Count", "type": "integer"}, "lost_deal_count": {"default": 0, "title": "Lost Deal Count", "type": "integer"}}, "required": ["id", "name", "sort_order", "probability", "is_active"], "title": "CRMStageSchema", "type": "object"}, "CRMAssignmentSettingsSchema": {"properties": {"assignment_strategy": {"enum": ["manual", "round_robin", "default"], "title": "Assignment Strategy", "type": "string"}, "default_salesperson_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Default Salesperson Id"}}, "required": ["assignment_strategy"], "title": "CRMAssignmentSettingsSchema", "type": "object"}, "CRMMilestoneSettingsSchema": {"properties": {"initial_stage_id": {"title": "Initial Stage Id", "type": "integer"}, "qualified_stage_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Qualified Stage Id"}, "proposal_sent_stage_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Proposal Sent Stage Id"}, "contract_signed_stage_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Contract Signed Stage Id"}}, "required": ["initial_stage_id"], "title": "CRMMilestoneSettingsSchema", "type": "object"}, "CRMLostReasonSettingsSchema": {"properties": {"options": {"items": {"type": "string"}, "title": "Options", "type": "array"}}, "required": ["options"], "title": "CRMLostReasonSettingsSchema", "type": "object"}, "CRMStageOrderSchema": {"properties": {"stage_ids": {"items": {"type": "integer"}, "title": "Stage Ids", "type": "array"}}, "required": ["stage_ids"], "title": "CRMStageOrderSchema", "type": "object"}, "CRMStageWriteSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "sort_order": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Sort Order"}, "probability": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Probability"}, "is_active": {"default": true, "title": "Is Active", "type": "boolean"}, "replacement_stage_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Replacement Stage Id"}}, "required": ["name"], "title": "CRMStageWriteSchema", "type": "object"}, "CRMDealLabelWriteSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "color": {"title": "Color", "type": "string"}, "sort_order": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Sort Order"}, "is_active": {"default": true, "title": "Is Active", "type": "boolean"}}, "required": ["name", "color"], "title": "CRMDealLabelWriteSchema", "type": "object"}, "CRMCustomFieldWriteSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "field_type": {"enum": ["text", "long_text", "number", "date", "datetime", "boolean", "select", "multi_select"], "title": "Field Type", "type": "string"}, "options": {"default": [], "items": {"type": "string"}, "title": "Options", "type": "array"}, "sort_order": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Sort Order"}, "is_required": {"default": false, "title": "Is Required", "type": "boolean"}, "is_active": {"default": true, "title": "Is Active", "type": "boolean"}}, "required": ["name", "field_type"], "title": "CRMCustomFieldWriteSchema", "type": "object"}, "GoogleConversionSettingsResponseSchema": {"properties": {"enabled": {"default": false, "title": "Enabled", "type": "boolean"}, "customer_id": {"default": "", "title": "Customer Id", "type": "string"}, "login_customer_id": {"default": "", "title": "Login Customer Id", "type": "string"}, "qualified_action_id": {"default": "", "title": "Qualified Action Id", "type": "string"}, "contract_signed_action_id": {"default": "", "title": "Contract Signed Action Id", "type": "string"}, "credential_configured": {"default": false, "title": "Credential Configured", "type": "boolean"}}, "title": "GoogleConversionSettingsResponseSchema", "type": "object"}, "GoogleConversionSettingsSchema": {"properties": {"enabled": {"default": false, "title": "Enabled", "type": "boolean"}, "customer_id": {"default": "", "title": "Customer Id", "type": "string"}, "login_customer_id": {"default": "", "title": "Login Customer Id", "type": "string"}, "qualified_action_id": {"default": "", "title": "Qualified Action Id", "type": "string"}, "contract_signed_action_id": {"default": "", "title": "Contract Signed Action Id", "type": "string"}}, "title": "GoogleConversionSettingsSchema", "type": "object"}, "GoogleConversionUploadListSchema": {"properties": {"items": {"items": {"$ref": "#/components/schemas/GoogleConversionUploadSchema"}, "title": "Items", "type": "array"}, "total": {"title": "Total", "type": "integer"}, "page": {"title": "Page", "type": "integer"}, "page_size": {"title": "Page Size", "type": "integer"}, "total_pages": {"title": "Total Pages", "type": "integer"}}, "required": ["items", "total", "page", "page_size", "total_pages"], "title": "GoogleConversionUploadListSchema", "type": "object"}, "GoogleConversionUploadSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "contract_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Contract Id"}, "conversion_value": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Conversion Value"}, "currency": {"default": "", "title": "Currency", "type": "string"}, "customer_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Customer Id"}, "customer_name": {"title": "Customer Name", "type": "string"}, "deal_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Deal Id"}, "address": {"title": "Address", "type": "string"}, "event_type": {"title": "Event Type", "type": "string"}, "action": {"title": "Action", "type": "string"}, "status": {"title": "Status", "type": "string"}, "attempt_count": {"title": "Attempt Count", "type": "integer"}, "occurred_at": {"format": "date-time", "title": "Occurred At", "type": "string"}, "submitted_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Submitted At"}, "processed_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Processed At"}, "attribution": {"additionalProperties": {"type": "string"}, "title": "Attribution", "type": "object"}, "match_keys": {"items": {"type": "string"}, "title": "Match Keys", "type": "array"}, "error": {"default": "", "title": "Error", "type": "string"}}, "required": ["id", "customer_name", "address", "event_type", "action", "status", "attempt_count", "occurred_at", "attribution", "match_keys"], "title": "GoogleConversionUploadSchema", "type": "object"}, "MetaConversionSettingsResponseSchema": {"properties": {"enabled": {"default": false, "title": "Enabled", "type": "boolean"}, "dataset_id": {"default": "", "title": "Dataset Id", "type": "string"}, "credential_configured": {"default": false, "title": "Credential Configured", "type": "boolean"}, "qualified_event_name": {"default": "QualifiedLead", "title": "Qualified Event Name", "type": "string"}, "qualified_trigger_type": {"default": "stage", "enum": ["stage", "status"], "title": "Qualified Trigger Type", "type": "string"}, "qualified_stage_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Qualified Stage Id"}, "qualified_status": {"default": "", "title": "Qualified Status", "type": "string"}, "purchase_event_name": {"default": "Purchase", "title": "Purchase Event Name", "type": "string"}, "purchase_trigger_type": {"default": "contract_signed", "enum": ["stage", "status", "contract_signed"], "title": "Purchase Trigger Type", "type": "string"}, "purchase_stage_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Purchase Stage Id"}, "purchase_status": {"default": "won", "title": "Purchase Status", "type": "string"}}, "title": "MetaConversionSettingsResponseSchema", "type": "object"}, "MetaConversionSettingsSchema": {"properties": {"enabled": {"default": false, "title": "Enabled", "type": "boolean"}, "dataset_id": {"default": "", "title": "Dataset Id", "type": "string"}, "access_token": {"default": "", "title": "Access Token", "type": "string"}, "clear_access_token": {"default": false, "title": "Clear Access Token", "type": "boolean"}, "qualified_event_name": {"default": "QualifiedLead", "title": "Qualified Event Name", "type": "string"}, "qualified_trigger_type": {"default": "stage", "enum": ["stage", "status"], "title": "Qualified Trigger Type", "type": "string"}, "qualified_stage_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Qualified Stage Id"}, "qualified_status": {"default": "", "title": "Qualified Status", "type": "string"}, "purchase_event_name": {"default": "Purchase", "title": "Purchase Event Name", "type": "string"}, "purchase_trigger_type": {"default": "contract_signed", "enum": ["stage", "status", "contract_signed"], "title": "Purchase Trigger Type", "type": "string"}, "purchase_stage_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Purchase Stage Id"}, "purchase_status": {"default": "won", "title": "Purchase Status", "type": "string"}}, "title": "MetaConversionSettingsSchema", "type": "object"}, "MetaConversionRunResponseSchema": {"properties": {"queued": {"title": "Queued", "type": "boolean"}, "task_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Task Id"}, "message": {"title": "Message", "type": "string"}}, "required": ["queued", "message"], "title": "MetaConversionRunResponseSchema", "type": "object"}, "MetaConversionUploadListSchema": {"properties": {"items": {"items": {"$ref": "#/components/schemas/MetaConversionUploadSchema"}, "title": "Items", "type": "array"}, "total": {"title": "Total", "type": "integer"}, "page": {"title": "Page", "type": "integer"}, "page_size": {"title": "Page Size", "type": "integer"}, "total_pages": {"title": "Total Pages", "type": "integer"}}, "required": ["items", "total", "page", "page_size", "total_pages"], "title": "MetaConversionUploadListSchema", "type": "object"}, "MetaConversionUploadSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "contract_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Contract Id"}, "conversion_value": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Conversion Value"}, "currency": {"default": "", "title": "Currency", "type": "string"}, "customer_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Customer Id"}, "customer_name": {"title": "Customer Name", "type": "string"}, "deal_id": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Deal Id"}, "address": {"title": "Address", "type": "string"}, "event_type": {"title": "Event Type", "type": "string"}, "event_name": {"title": "Event Name", "type": "string"}, "status": {"title": "Status", "type": "string"}, "attempt_count": {"title": "Attempt Count", "type": "integer"}, "occurred_at": {"format": "date-time", "title": "Occurred At", "type": "string"}, "submitted_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Submitted At"}, "processed_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Processed At"}, "attribution": {"additionalProperties": {"type": "string"}, "title": "Attribution", "type": "object"}, "match_keys": {"items": {"type": "string"}, "title": "Match Keys", "type": "array"}, "error": {"default": "", "title": "Error", "type": "string"}}, "required": ["id", "customer_name", "address", "event_type", "event_name", "status", "attempt_count", "occurred_at", "attribution", "match_keys"], "title": "MetaConversionUploadSchema", "type": "object"}, "EquipmentBrandSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "created_at": {"title": "Created At", "type": "string"}, "updated_at": {"title": "Updated At", "type": "string"}}, "required": ["id", "name", "created_at", "updated_at"], "title": "EquipmentBrandSchema", "type": "object"}, "EquipmentBrandCreateSchema": {"properties": {"name": {"title": "Name", "type": "string"}}, "required": ["name"], "title": "EquipmentBrandCreateSchema", "type": "object"}, "EquipmentBrandUpdateSchema": {"properties": {"name": {"title": "Name", "type": "string"}}, "required": ["name"], "title": "EquipmentBrandUpdateSchema", "type": "object"}, "EquipmentModelSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "name": {"title": "Name", "type": "string"}, "equip_type": {"title": "Equip Type", "type": "string"}, "equip_style": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Equip Style"}, "brand_id": {"title": "Brand Id", "type": "integer"}, "brand_name": {"title": "Brand Name", "type": "string"}, "model_number": {"title": "Model Number", "type": "string"}, "multi_zone": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": false, "title": "Multi Zone"}, "max_connections": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Max Connections"}, "created_at": {"title": "Created At", "type": "string"}, "updated_at": {"title": "Updated At", "type": "string"}}, "required": ["id", "name", "equip_type", "brand_id", "brand_name", "model_number", "created_at", "updated_at"], "title": "EquipmentModelSchema", "type": "object"}, "EquipmentIndoorModelDataSchema": {"properties": {"multi_zone_cap_heating": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Multi Zone Cap Heating"}, "multi_zone_cap_cooling": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Multi Zone Cap Cooling"}}, "title": "EquipmentIndoorModelDataSchema", "type": "object"}, "EquipmentModelCreateSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "equip_type": {"title": "Equip Type", "type": "string"}, "equip_style": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Equip Style"}, "brand_id": {"title": "Brand Id", "type": "integer"}, "model_number": {"title": "Model Number", "type": "string"}, "multi_zone": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": false, "title": "Multi Zone"}, "indoor_model_data": {"anyOf": [{"$ref": "#/components/schemas/EquipmentIndoorModelDataSchema"}, {"type": "null"}]}}, "required": ["name", "equip_type", "brand_id", "model_number"], "title": "EquipmentModelCreateSchema", "type": "object"}, "EquipmentModelUpdateSchema": {"properties": {"name": {"title": "Name", "type": "string"}, "equip_type": {"title": "Equip Type", "type": "string"}, "equip_style": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Equip Style"}, "brand_id": {"title": "Brand Id", "type": "integer"}, "model_number": {"title": "Model Number", "type": "string"}, "multi_zone": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": false, "title": "Multi Zone"}, "indoor_model_data": {"anyOf": [{"$ref": "#/components/schemas/EquipmentIndoorModelDataSchema"}, {"type": "null"}]}}, "required": ["name", "equip_type", "brand_id", "model_number"], "title": "EquipmentModelUpdateSchema", "type": "object"}, "EquipmentPerformanceDataSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "ahri_number": {"title": "Ahri Number", "type": "string"}, "neep_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Neep Id"}, "data": {"additionalProperties": true, "title": "Data", "type": "object"}, "created_at": {"title": "Created At", "type": "string"}, "updated_at": {"title": "Updated At", "type": "string"}}, "required": ["id", "ahri_number", "data", "created_at", "updated_at"], "title": "EquipmentPerformanceDataSchema", "type": "object"}, "EquipmentPerformanceDataCreateSchema": {"properties": {"ahri_number": {"title": "Ahri Number", "type": "string"}, "neep_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Neep Id"}, "data": {"additionalProperties": true, "title": "Data", "type": "object"}}, "required": ["ahri_number", "data"], "title": "EquipmentPerformanceDataCreateSchema", "type": "object"}, "EquipmentPerformanceDataFromNeepSchema": {"properties": {"neep_product_data": {"additionalProperties": true, "title": "Neep Product Data", "type": "object"}}, "required": ["neep_product_data"], "title": "EquipmentPerformanceDataFromNeepSchema", "type": "object"}, "EquipmentPerformanceDataUpdateSchema": {"properties": {"ahri_number": {"title": "Ahri Number", "type": "string"}, "neep_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Neep Id"}, "data": {"additionalProperties": true, "title": "Data", "type": "object"}}, "required": ["ahri_number", "data"], "title": "EquipmentPerformanceDataUpdateSchema", "type": "object"}, "EquipmentMatchSchema": {"properties": {"id": {"title": "Id", "type": "integer"}, "indoor_unit_id": {"title": "Indoor Unit Id", "type": "integer"}, "indoor_unit_name": {"title": "Indoor Unit Name", "type": "string"}, "indoor_unit_model": {"title": "Indoor Unit Model", "type": "string"}, "outdoor_unit_id": {"title": "Outdoor Unit Id", "type": "integer"}, "outdoor_unit_name": {"title": "Outdoor Unit Name", "type": "string"}, "outdoor_unit_model": {"title": "Outdoor Unit Model", "type": "string"}, "performance_data_id": {"title": "Performance Data Id", "type": "integer"}, "created_at": {"title": "Created At", "type": "string"}, "updated_at": {"title": "Updated At", "type": "string"}}, "required": ["id", "indoor_unit_id", "indoor_unit_name", "indoor_unit_model", "outdoor_unit_id", "outdoor_unit_name", "outdoor_unit_model", "performance_data_id", "created_at", "updated_at"], "title": "EquipmentMatchSchema", "type": "object"}, "EquipmentMatchCreateSchema": {"properties": {"indoor_unit_id": {"title": "Indoor Unit Id", "type": "integer"}, "outdoor_unit_id": {"title": "Outdoor Unit Id", "type": "integer"}, "performance_data_id": {"title": "Performance Data Id", "type": "integer"}}, "required": ["indoor_unit_id", "outdoor_unit_id", "performance_data_id"], "title": "EquipmentMatchCreateSchema", "type": "object"}, "EquipmentMatchUpdateSchema": {"properties": {"indoor_unit_id": {"title": "Indoor Unit Id", "type": "integer"}, "outdoor_unit_id": {"title": "Outdoor Unit Id", "type": "integer"}, "performance_data_id": {"title": "Performance Data Id", "type": "integer"}}, "required": ["indoor_unit_id", "outdoor_unit_id", "performance_data_id"], "title": "EquipmentMatchUpdateSchema", "type": "object"}, "EquipmentMatchupResultSchema": {"properties": {"match": {"$ref": "#/components/schemas/EquipmentMatchSchema"}, "brand_created": {"title": "Brand Created", "type": "boolean"}, "indoor_unit_created": {"title": "Indoor Unit Created", "type": "boolean"}, "outdoor_unit_created": {"title": "Outdoor Unit Created", "type": "boolean"}, "performance_data_created": {"title": "Performance Data Created", "type": "boolean"}}, "required": ["match", "brand_created", "indoor_unit_created", "outdoor_unit_created", "performance_data_created"], "title": "EquipmentMatchupResultSchema", "type": "object"}, "EquipmentMatchupFromNeepSchema": {"properties": {"neep_product_data": {"additionalProperties": true, "title": "Neep Product Data", "type": "object"}}, "required": ["neep_product_data"], "title": "EquipmentMatchupFromNeepSchema", "type": "object"}}, "securitySchemes": {"SessionAuth": {"type": "apiKey", "in": "cookie", "name": "sessionid"}, "FieldAppAuth": {"type": "http", "scheme": "bearer"}}}, "servers": []}