{"openapi": "3.1.0", "info": {"title": "TrueBiz Web Presence Review API", "version": "1.0.0", "description": "# Introduction\nTrueBiz provides tools to automate assessing a merchant's web presence through the entire customer lifecycle.\n\n# Authentication\n\nMost requests to TrueBiz are authenticated with an API key sent as a header.  The expected header name is\n\"X-API-KEY\", and it is the mechanism used by every endpoint in the integration guides below unless stated\notherwise.\n\nA small number of endpoints authenticate differently - the UI Authentication Relay signs its requests with a\nquery-string HMAC signature rather than a header (see the Auth Relay Guide).\n"}, "paths": {"/api/v1/company/search": {"post": {"operationId": "core_api_company_review_company", "summary": "Review Company", "parameters": [{"in": "query", "name": "async", "schema": {"anyOf": [{"const": "true", "type": "string"}, {"type": "null"}], "description": "Pass `async=true` to enqueue the review and get a `201` with a `Location` header to poll, instead of holding the connection open until the review completes.  `true` is the only accepted value; omit the parameter entirely to wait for the result.", "title": "Async"}, "required": false, "description": "Pass `async=true` to enqueue the review and get a `201` with a `Location` header to poll, instead of holding the connection open until the review completes.  `true` is the only accepted value; omit the parameter entirely to wait for the result."}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Company"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BadRequest"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Unauthorized"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NotFound"}}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvalidRequest"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TooManyRequests"}}}}, "500": {"description": "Internal Server Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InternalServerError"}}}}, "504": {"description": "Gateway Timeout", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GatewayTimeout"}}}}, "201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AsyncMessage"}}}}}, "description": "Conduct a web presence review of a business. You must identify the business one of two ways:\n\n- **By domain** \u2014 submit `domain` (accepts a bare domain, full URL, or email; we extract the registered\n   domain).\n- **By name + address** \u2014 submit `submitted_business_name` together with at least one address field\n   (`address_line_1`, `city`, `state_province`, `postal_code`, or `country`).\n\nAll other fields (`submitted_phone`, `submitted_email`, `submitted_full_name`, `submitted_description`)\nare optional and help us identify the business and surface additional detail.\n\nRequires a valid `X-API-KEY` header. Rate limited to 5 requests per second.\n\n**Unstable connections:** a review can take up to 90 seconds, and some integrations cannot hold a\nconnection open that long. Pass `?async=true` to have us validate and enqueue the review, then respond\n`201` right away with a tracking id and a `Location` header. `true` is the only value this parameter\naccepts; omit it entirely to wait for the result as usual. Poll that URL (`GET` for the full result,\n`HEAD` if you only need the status) until it returns `200`; it returns `202` while the review is still\nrunning. The review itself is unchanged \u2014 it still runs under the same time budget as a waiting request,\nso a job that reaches a worker too late is abandoned rather than left running. That makes this different\nfrom the `/company/async/*` endpoints, which run a review to completion however long it takes and notify\nyou by webhook; use those if your priority is that the review finishes rather than that it finishes soon.\n\n**Testing:** You can use `example.org` as a test domain to verify your integration without\nhitting real data sources or incurring any cost to you. It returns a static fixture response with realistic data,\nand it honours `async=true` as well \u2014 the review is already complete, so the URL you are handed returns the\nfixture on your first poll. Test domain requests are never counted in your search statistics.", "tags": ["Web Presence Review"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CompanyQuery"}}}, "required": true}, "security": [{"AsyncApiKeyAuth": []}, {"AsyncPropelAuthBearer": []}]}}, "/api/v1/company/async/search": {"post": {"operationId": "core_api_async_company_async_review_company", "summary": "Async Review Company", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/AsyncMessage"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BadRequest"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Unauthorized"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NotFound"}}}}, "412": {"description": "Precondition Failed", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PreconditionFailed"}}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvalidRequest"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TooManyRequests"}}}}, "500": {"description": "Internal Server Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InternalServerError"}}}}}, "description": "This API endpoint allows you to enqueue a web presence review based on either a website (as a URL, domain,\nor email) or both a business name and address. Other optional information about the company and\n applicant (phone, email, applicant name) can help identify the business and locate additional detail.\nYou may either poll for status updates using the url provided in the response's `Location` header, or,\nif you have a webhook configured, wait for us to notify you when the web presence review is completed.\n(You may then request the details from the Web Presence Review History endpoint.)\nThis API requires a valid API key (X-API-KEY) to be  provided in the headers and is rate limited to 5 requests\nper second.", "tags": ["Async Web Presence Review"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/AsyncCompanyQuery"}}}, "required": true}, "security": [{"AsyncApiKeyAuth": []}, {"AsyncPropelAuthBearer": []}]}}, "/api/v1/company/evaluate": {"post": {"operationId": "core_api_async_company_blocklist_evaluate_blocked_domains", "summary": "Evaluate Blocked Domains", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EvaluateBlockResponse"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BadRequest"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Unauthorized"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NotFound"}}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvalidRequest"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TooManyRequests"}}}}, "500": {"description": "Internal Server Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InternalServerError"}}}}}, "tags": ["Web Presence Review Blocklist"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/EvaluateBlockInput"}}}, "required": true}, "security": [{"AsyncApiKeyAuth": []}, {"AsyncPropelAuthBearer": []}]}}, "/api/v1/company/block": {"post": {"operationId": "core_api_company_blocklist_create_blocked_domain", "summary": "Create Blocked Domain", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BlockMessage"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BadRequest"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Unauthorized"}}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvalidRequest"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TooManyRequests"}}}}, "500": {"description": "Internal Server Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InternalServerError"}}}}}, "description": "This API endpoint allows you to add a domain to a block list.\nThis API requires a valid API key (X-API-KEY) to be  provided in the headers and is rate limited to 5 requests\nper second.", "tags": ["Web Presence Review Blocklist"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/BlockInput"}}}, "required": true}, "security": [{"ApiKeyAuth": []}, {"PropelAuthBearer": []}]}, "delete": {"operationId": "core_api_company_blocklist_delete_blocked_domain", "summary": "Delete Blocked Domain", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BlockMessage"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BadRequest"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Unauthorized"}}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvalidRequest"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TooManyRequests"}}}}, "500": {"description": "Internal Server Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InternalServerError"}}}}}, "description": "This API endpoint allows you to remove a domain from the block list.\nThis API requires a valid API key (X-API-KEY) to be  provided in the headers and is rate limited to 5 requests\nper second.", "tags": ["Web Presence Review Blocklist"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteBlockInput"}}}, "required": true}, "security": [{"ApiKeyAuth": []}, {"PropelAuthBearer": []}]}, "get": {"operationId": "core_api_company_blocklist_list_blocked_domains", "summary": "List Blocked Domains", "parameters": [{"in": "query", "name": "limit", "schema": {"default": 50, "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/PagedBlockedDomain"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BadRequest"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Unauthorized"}}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvalidRequest"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TooManyRequests"}}}}, "500": {"description": "Internal Server Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InternalServerError"}}}}}, "description": "This (paginated) API endpoint allows you to see domains that you have added to the block list.\nThis API requires a valid API key (X-API-KEY) to be  provided in the headers and is rate limited to 5 requests\nper second.", "tags": ["Web Presence Review Blocklist"], "security": [{"ApiKeyAuth": []}, {"PropelAuthBearer": []}]}}, "/api/v1/pdf_summary/{web_presence_review_id}": {"get": {"operationId": "core_api_pdf_summary_get_pdf_summary_by_id", "summary": "Get Pdf Summary By Id", "parameters": [{"in": "path", "name": "web_presence_review_id", "schema": {"format": "uuid", "title": "Web Presence Review Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PDFSummary"}}}}, "202": {"description": "Accepted", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ResourceNotReady"}}}}, "204": {"description": "No Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NoContent"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BadRequest"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Unauthorized"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NotFound"}}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvalidRequest"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TooManyRequests"}}}}, "500": {"description": "Internal Server Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InternalServerError"}}}}}, "description": "This API endpoint returns a PDF summary of a web presence review.\nThis API requires a valid API key (X-API-KEY) to be provided in the headers and is rate limited to 5 requests\nper second.\n\nPDF summaries are rendered on demand, so this request is what starts generation. If the PDF does not exist yet,\nor needs to be regenerated, a HTTP 202 is returned and rendering begins; repeat the request until it returns a\nHTTP 200, whose body is the PDF. Rendering usually takes about a minute.\n\nRather than polling, you can subscribe to the `one_time.web_presence_review.pdf_summary.status` webhook event,\nwhich is emitted when the render finishes. That event is only emitted for a review whose PDF was requested here.", "tags": ["Web Presence Review"], "security": [{"AsyncApiKeyAuth": []}, {"AsyncPropelAuthBearer": []}]}}, "/api/v1/history/combined_lookups": {"get": {"operationId": "core_api_company_lookup_get_combined_lookups_history", "summary": "Get Combined Lookups History", "parameters": [{"in": "query", "name": "min_datetime", "schema": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Min Datetime"}, "required": false}, {"in": "query", "name": "max_datetime", "schema": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Max Datetime"}, "required": false}, {"in": "query", "name": "search_term", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Search Term"}, "required": false}, {"in": "query", "name": "report_type", "schema": {"items": {"type": "string"}, "title": "Report Type", "type": "array"}, "required": false}, {"in": "query", "name": "include_errored", "schema": {"default": false, "title": "Include Errored", "type": "boolean"}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 50, "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/PagedCombinedMetaLookup"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BadRequest"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Unauthorized"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NotFound"}}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvalidRequest"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TooManyRequests"}}}}, "500": {"description": "Internal Server Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InternalServerError"}}}}}, "security": [{"ApiKeyAuth": []}, {"PropelAuthBearer": []}]}}, "/api/v1/history/industry": {"get": {"operationId": "core_api_company_lookup_get_industry_lookups_history", "summary": "Get Industry Lookups History", "parameters": [{"in": "query", "name": "min_datetime", "schema": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Min Datetime"}, "required": false}, {"in": "query", "name": "max_datetime", "schema": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Max Datetime"}, "required": false}, {"in": "query", "name": "search_term", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Search Term"}, "required": false}, {"in": "query", "name": "include_errored", "schema": {"default": false, "title": "Include Errored", "type": "boolean"}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 50, "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/PagedIndustryLookup"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BadRequest"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Unauthorized"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NotFound"}}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvalidRequest"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TooManyRequests"}}}}, "500": {"description": "Internal Server Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InternalServerError"}}}}}, "tags": ["Industry Discovery History"], "security": [{"ApiKeyAuth": []}, {"PropelAuthBearer": []}]}}, "/api/v1/history/industry/{request_id}": {"get": {"operationId": "core_api_company_lookup_get_industry_lookup_history", "summary": "Get Industry Lookup History", "parameters": [{"in": "path", "name": "request_id", "schema": {"format": "uuid", "title": "Request Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/IndustryLookup"}}}}, "202": {"description": "Accepted", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/IndustryLookup"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BadRequest"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Unauthorized"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NotFound"}}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvalidRequest"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TooManyRequests"}}}}, "500": {"description": "Internal Server Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InternalServerError"}}}}}, "tags": ["Industry Discovery History"], "security": [{"ApiKeyAuth": []}, {"PropelAuthBearer": []}]}}, "/api/v1/history/company": {"get": {"operationId": "core_api_company_lookup_get_web_presence_reviews_history", "summary": "Get Web Presence Reviews History", "parameters": [{"in": "query", "name": "min_datetime", "schema": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Min Datetime"}, "required": false}, {"in": "query", "name": "max_datetime", "schema": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Max Datetime"}, "required": false}, {"in": "query", "name": "search_term", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Search Term"}, "required": false}, {"in": "query", "name": "include_monitoring", "schema": {"default": false, "title": "Include Monitoring", "type": "boolean"}, "required": false}, {"in": "query", "name": "include_internal", "schema": {"default": false, "title": "Include Internal", "type": "boolean"}, "required": false}, {"in": "query", "name": "include_errored", "schema": {"default": false, "title": "Include Errored", "type": "boolean"}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 50, "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/PagedCompanyLookup"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BadRequest"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Unauthorized"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NotFound"}}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvalidRequest"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TooManyRequests"}}}}, "500": {"description": "Internal Server Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InternalServerError"}}}}}, "tags": ["Web Presence Review History"], "security": [{"ApiKeyAuth": []}, {"PropelAuthBearer": []}]}}, "/api/v1/history/company/{request_id}": {"get": {"operationId": "core_api_company_lookup_get_web_presence_review_history", "summary": "Get Web Presence Review History", "parameters": [{"in": "path", "name": "request_id", "schema": {"format": "uuid", "title": "Request Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CompanyLookup"}}}}, "202": {"description": "Accepted", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/CompanyLookup"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BadRequest"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Unauthorized"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NotFound"}}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvalidRequest"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TooManyRequests"}}}}, "500": {"description": "Internal Server Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InternalServerError"}}}}}, "tags": ["Web Presence Review History"], "security": [{"ApiKeyAuth": []}, {"PropelAuthBearer": []}]}, "head": {"operationId": "core_api_company_lookup_head_web_presence_review_history", "summary": "Head Web Presence Review History", "parameters": [{"in": "path", "name": "request_id", "schema": {"format": "uuid", "title": "Request Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK"}, "202": {"description": "Accepted"}, "401": {"description": "Unauthorized"}, "404": {"description": "Not Found"}, "422": {"description": "Unprocessable Entity"}, "429": {"description": "Too Many Requests"}, "500": {"description": "Internal Server Error"}}, "description": "Check whether a web presence review is ready without transferring the result.\n\nThe status codes are the same ones the GET returns: `200` once the review is complete, `202`\nwhile it is still running, `404` if it does not exist, and `500` if it failed. Use this when\npolling \u2014 there is no body to download, and we skip building the response payload entirely.\n\nRequires a valid `X-API-KEY` header.", "tags": ["Web Presence Review History"], "security": [{"ApiKeyAuth": []}, {"PropelAuthBearer": []}]}}, "/api/v1/website/status": {"post": {"operationId": "core_api_website_get_website_status", "summary": "Get Website Status", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/StatusResponse"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BadRequest"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Unauthorized"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NotFound"}}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvalidRequest"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TooManyRequests"}}}}, "500": {"description": "Internal Server Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InternalServerError"}}}}}, "description": "This API endpoint allows you to test if a webserver is responsive similar to popular \"is it up\" type sites.\nIt will also check to see if the website link corresponds to known social media or marketplace sites.  Given\nthat some pages load extremely slowly, the higher you set the timeout the more likely you are to get an accurate\nresult.  Our default of 7.5 seconds is accurate about 99% of the time in our testing.\nThis API requires a valid API key (X-API-KEY) to be provided in the headers and is rate limited to 5 requests per\nsecond.", "tags": ["Website Status"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/WebsiteInput"}}}, "required": true}, "security": [{"AsyncApiKeyAuth": []}, {"AsyncPropelAuthBearer": []}]}}, "/api/v1/monitoring/alerts/{alert_id}": {"get": {"operationId": "monitoring_api_router_alerts_routes_get_alert_get_monitoring_alert", "summary": "Get Monitoring Alert", "parameters": [{"in": "path", "name": "alert_id", "schema": {"title": "Alert Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MonitoringAlert"}}}}, "202": {"description": "Accepted", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ResourceNotReady"}}}}, "204": {"description": "No Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NoContent"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BadRequest"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Unauthorized"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Forbidden"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NotFound"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Conflict"}}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvalidRequest"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TooManyRequests"}}}}, "500": {"description": "Internal Server Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InternalServerError"}}}}}, "description": "Get details about a particular monitoring alert.\nThis endpoint requires a valid API key (X-API-KEY) to be  provided in the headers and is rate limited to 5 requests\nper second.", "tags": ["Monitoring Alerts"], "security": [{"ApiKeyAuth": []}, {"PropelAuthBearer": []}]}}, "/api/v1/monitoring/alerts": {"get": {"operationId": "monitoring_api_router_alerts_routes_list_alerts_list_monitoring_alerts", "summary": "List Monitoring Alerts", "parameters": [{"in": "query", "name": "created_before", "schema": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "q": "created_at__lt", "title": "Created Before"}, "required": false}, {"in": "query", "name": "created_after", "schema": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "q": "created_at__gte", "title": "Created After"}, "required": false}, {"in": "query", "name": "domain", "schema": {"anyOf": [{"items": {"anyOf": [{"type": "string"}, {"const": "[]", "type": "string"}]}, "type": "array"}, {"type": "null"}], "title": "Domain"}, "required": false}, {"in": "query", "name": "external_ref_id", "schema": {"anyOf": [{"items": {"anyOf": [{"type": "string"}, {"const": "[]", "type": "string"}]}, "type": "array"}, {"type": "null"}], "title": "External Ref Id"}, "required": false}, {"in": "query", "name": "flagged_categories", "schema": {"anyOf": [{"items": {"anyOf": [{"type": "string"}, {"const": "[]", "type": "string"}]}, "type": "array"}, {"type": "null"}], "title": "Flagged Categories"}, "required": false}, {"in": "query", "name": "order_by", "schema": {"anyOf": [{"items": {"$ref": "#/components/schemas/AlertsOrderingField"}, "type": "array"}, {"type": "null"}], "title": "Order By"}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 50, "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/PagedMonitoringAlert"}}}}, "202": {"description": "Accepted", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ResourceNotReady"}}}}, "204": {"description": "No Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NoContent"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BadRequest"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Unauthorized"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Forbidden"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NotFound"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Conflict"}}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvalidRequest"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TooManyRequests"}}}}, "500": {"description": "Internal Server Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InternalServerError"}}}}}, "description": "List all monitoring alerts.\nThis endpoint requires a valid API key (X-API-KEY) to be  provided in the headers and is rate limited to 5 requests\nper second.", "tags": ["Monitoring Alerts"], "security": [{"ApiKeyAuth": []}, {"PropelAuthBearer": []}]}}, "/api/v1/monitoring/domains/{domain}": {"get": {"operationId": "monitoring_api_router_domains_routes_get_domain_get_monitored_domain", "summary": "Get Monitored Domain", "parameters": [{"in": "path", "name": "domain", "schema": {"title": "Domain", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MonitoredDomain"}}}}, "202": {"description": "Accepted", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ResourceNotReady"}}}}, "204": {"description": "No Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NoContent"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BadRequest"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Unauthorized"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Forbidden"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NotFound"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Conflict"}}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvalidRequest"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TooManyRequests"}}}}, "500": {"description": "Internal Server Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InternalServerError"}}}}}, "description": "Get information about a particular domain or platform URL TrueBiz is currently monitoring.\nThis endpoint requires a valid API key (X-API-KEY) to be  provided in the headers and is rate limited to 5 requests\nper second.", "tags": ["Monitoring Domains"], "security": [{"ApiKeyAuth": []}, {"PropelAuthBearer": []}]}}, "/api/v1/monitoring/domains": {"get": {"operationId": "monitoring_api_router_domains_routes_list_domains_list_monitored_domains", "summary": "List Monitored Domains", "parameters": [{"in": "query", "name": "domain", "schema": {"anyOf": [{"items": {"anyOf": [{"type": "string"}, {"const": "[]", "type": "string"}]}, "type": "array"}, {"type": "null"}], "title": "Domain"}, "required": false}, {"in": "query", "name": "package_type", "schema": {"anyOf": [{"items": {"anyOf": [{"$ref": "#/components/schemas/PackageType"}, {"const": "[]", "type": "string"}]}, "type": "array"}, {"type": "null"}], "title": "Package Type"}, "required": false}, {"in": "query", "name": "external_ref_id", "schema": {"anyOf": [{"items": {"anyOf": [{"type": "string"}, {"const": "", "type": "string"}]}, "type": "array"}, {"type": "null"}], "title": "External Ref Id"}, "required": false}, {"in": "query", "name": "order_by", "schema": {"anyOf": [{"items": {"$ref": "#/components/schemas/DomainsOrderingField"}, "type": "array"}, {"type": "null"}], "title": "Order By"}, "required": false}, {"in": "query", "name": "limit", "schema": {"default": 50, "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/PagedMonitoredDomain"}}}}, "202": {"description": "Accepted", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ResourceNotReady"}}}}, "204": {"description": "No Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NoContent"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BadRequest"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Unauthorized"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Forbidden"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NotFound"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Conflict"}}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvalidRequest"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TooManyRequests"}}}}, "500": {"description": "Internal Server Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InternalServerError"}}}}}, "description": "List all domains and platform URLs currently monitored by TrueBiz.\nThis endpoint requires a valid API key (X-API-KEY) to be  provided in the headers and is rate limited to 5 requests\nper second.", "tags": ["Monitoring Domains"], "security": [{"ApiKeyAuth": []}, {"PropelAuthBearer": []}]}}, "/api/v1/monitoring/start": {"post": {"operationId": "monitoring_api_router_domains_routes_start_start_monitoring_domain", "summary": "Start Monitoring Domain", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/MonitoredDomain"}}}}, "202": {"description": "Accepted", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ResourceNotReady"}}}}, "204": {"description": "No Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NoContent"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BadRequest"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Unauthorized"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Forbidden"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NotFound"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Conflict"}}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvalidRequest"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TooManyRequests"}}}}, "500": {"description": "Internal Server Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InternalServerError"}}}}}, "description": "Start monitoring a domain or a platform URL.\n\nAccepts either a bare domain (\"example.com\") or a page on a known platform\n(\"facebook.com/acmecorp\"), which is monitored as its own enrollment rather than being\nflattened to the bare platform domain.\n\nThis endpoint requires a valid API key (X-API-KEY) to be  provided in the headers and is rate limited to 5 requests\nper second.", "tags": ["Monitoring Domains"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/StartInput"}}}, "required": true}, "security": [{"ApiKeyAuth": []}, {"PropelAuthBearer": []}]}}, "/api/v1/industry-searches": {"post": {"operationId": "core_api_business_search_create_industry_search", "summary": "Create Industry Search", "parameters": [], "responses": {"202": {"description": "Accepted", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BusinessSearch"}}}}, "204": {"description": "No Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NoContent"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BadRequest"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Unauthorized"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Forbidden"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NotFound"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Conflict"}}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvalidRequest"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TooManyRequests"}}}}, "500": {"description": "Internal Server Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InternalServerError"}}}}}, "description": "Create Industry Search endpoints allow you to start a new industry discovery request. You provide a business\nname and location details, and TrueBiz creates a search record. The response includes a unique identifier for\nthe search, which can be used to retrieve the results from the corresponding retrieval endpoint once processing\nis complete. In addition to the the ID returned in the response body, the full retrieval URL is also included\nin the Location header sent with the response.\n\nThis API requires a valid API key (X-API-KEY) to be provided in the headers and is rate limited to 5\nrequests per second.", "tags": ["Industry Discovery"], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/CreateSearchInput"}}}, "required": true}, "security": [{"ApiKeyAuth": []}, {"PropelAuthBearer": []}]}, "get": {"operationId": "core_api_business_search_list_industry_searches", "summary": "List Industry Searches", "parameters": [{"in": "query", "name": "limit", "schema": {"default": 50, "title": "Limit", "type": "integer"}, "required": false}, {"in": "query", "name": "offset", "schema": {"default": 0, "title": "Offset", "type": "integer"}, "required": false}], "responses": {"202": {"description": "Accepted", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ResourceNotReady"}}}}, "204": {"description": "No Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NoContent"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BadRequest"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Unauthorized"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Forbidden"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NotFound"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Conflict"}}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InvalidRequest"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TooManyRequests"}}}}, "500": {"description": "Internal Server Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InternalServerError"}}}}, "200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PagedBusinessSearch"}}}}}, "description": "The List Industry Searches endpoint retrieves a list of all industry discovery requests associated with the\naccount linked to the provided API key. Each entry in the list includes the unique identifier, creation and\nupdate timestamps, current status, and a brief status description. If a search has been completed, the\nresult field will contain the discovered industry information; otherwise, it will be null.", "tags": ["Industry Discovery"], "security": [{"ApiKeyAuth": []}, {"PropelAuthBearer": []}]}}, "/api/v1/industry-searches/{search_id}": {"get": {"operationId": "core_api_business_search_get_industry_search", "summary": "Get Industry Search", "parameters": [{"in": "path", "name": "search_id", "schema": {"format": "uuid", "title": "Search Id", "type": "string"}, "required": true}], "responses": {"202": {"description": "Accepted", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BusinessSearch"}}}}, "204": {"description": "No Content", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NoContent"}}}}, "400": {"description": "Bad Request", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BadRequest"}}}}, "401": {"description": "Unauthorized", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Unauthorized"}}}}, "403": {"description": "Forbidden", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Forbidden"}}}}, "404": {"description": "Not Found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/NotFound"}}}}, "409": {"description": "Conflict", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Conflict"}}}}, "422": {"description": "Unprocessable Entity", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BusinessSearch"}}}}, "429": {"description": "Too Many Requests", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TooManyRequests"}}}}, "500": {"description": "Internal Server Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/InternalServerError"}}}}, "200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/BusinessSearch"}}}}}, "description": "The Get Industry Search endpoint retrieves the status and results of a previously created industry discovery\nrequest. If the discovery is still in progress, the endpoint responds with HTTP 202 (Accepted). When the discovery\nis complete, the endpoint responds with HTTP 200 (OK) and returns the discovered industry information,\nincluding name, address, description, and industry classifications (e.g., NAICS, SIC, MCC).\n\nClients should poll the Get Industry Search endpoint using exponential backoff rather than continuous requests.\nWe recommend starting with a short delay (2\u20133 seconds) after the initial 202 response, then doubling the wait\ntime between each subsequent attempt until reaching a maximum interval (for example, 30 seconds). Continue polling\nuntil the endpoint returns 200 (discovery complete) or until a reasonable overall timeout is reached. This\napproach reduces unnecessary load while ensuring timely retrieval of results.\n\nThis API requires a valid API key (X-API-KEY) to be provided in the headers and is rate limited to 5\nrequests per second.", "tags": ["Industry Discovery"], "security": [{"ApiKeyAuth": []}, {"PropelAuthBearer": []}]}}}, "components": {"schemas": {"ActivityLevel": {"enum": ["Low", "Medium", "High"], "title": "ActivityLevel", "type": "string"}, "Address": {"properties": {"full_address": {"anyOf": [{"maxLength": 8192, "minLength": 1, "type": "string"}, {"type": "null"}], "description": "The primary address of the company", "example": "5000 Market Street, #9616, San Francisco, CA 94103, United States", "title": "Full address"}, "line_1": {"anyOf": [{"maxLength": 2048, "minLength": 1, "type": "string"}, {"type": "null"}], "description": "The primary address of the company.", "example": "5000 Market Street", "title": "Line 1"}, "line_2": {"anyOf": [{"maxLength": 2048, "minLength": 1, "type": "string"}, {"type": "null"}], "description": "The primary address of the company.", "example": "#9616", "title": "Line 2"}, "city": {"anyOf": [{"maxLength": 255, "minLength": 1, "type": "string"}, {"type": "null"}], "description": "The primary city the company operates in.", "example": "San Francisco", "title": "City"}, "state_province": {"anyOf": [{"maxLength": 255, "minLength": 1, "type": "string"}, {"type": "null"}], "description": "The primary State the company operates in.", "example": "CA", "title": "State / province"}, "postal_code": {"anyOf": [{"maxLength": 255, "minLength": 1, "type": "string"}, {"type": "null"}], "description": "The Zip Code of the company.", "example": "94103", "title": "Postal code"}, "country": {"anyOf": [{"maxLength": 255, "minLength": 1, "type": "string"}, {"type": "null"}], "description": "The primary Country the company operates in.", "example": "United States", "title": "Country"}, "postal_service_flags": {"default": [], "description": "A list of flags indicating what the local postal service knows about this address (Only US addresses supported currently).", "example": [], "items": {"$ref": "#/components/schemas/PostalServiceFlag"}, "title": "Postal service flags", "type": "array"}, "is_shared_with_registered_agent": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "Indicates if the discovered address is shared with a known registered agent.", "example": null, "title": "Is shared with registered agent?"}, "coordinates": {"anyOf": [{"$ref": "#/components/schemas/Coordinates"}, {"type": "null"}], "description": "Latitude and longitude object for the address.", "example": {"lat": 37.7756852, "lon": -122.4179707}, "title": "Coordinates"}, "coordinates_accuracy": {"anyOf": [{"$ref": "#/components/schemas/AddressCoordinatesAccuracy"}, {"type": "null"}], "description": "The level of precision of the coordinates", "example": "ROOFTOP", "title": "Precision of coordinates"}, "google_maps_link": {"anyOf": [{"format": "uri", "maxLength": 2083, "minLength": 1, "type": "string"}, {"type": "null"}], "description": "A link to view the address on google maps.", "example": "https://maps.google.com/?q=37.7756852,-122.4179707", "title": "Google Maps Link"}, "is_valid": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "Is the address a valid, known address?", "example": true, "title": "Is the address valid?"}, "source": {"anyOf": [{"$ref": "#/components/schemas/DataSource"}, {"type": "null"}], "description": "The data source for this address.", "example": "website", "title": "Source"}}, "title": "Address", "type": "object"}, "AddressCoordinatesAccuracy": {"description": "Order matters here, list from least to most accurate", "enum": ["APPROXIMATE", "ROOFTOP"], "title": "AddressCoordinatesAccuracy", "type": "string"}, "Application": {"properties": {"phone_business_connections": {"anyOf": [{"items": {"$ref": "#/components/schemas/DataSource"}, "type": "array"}, {"type": "null"}], "description": "The submitted phone number was found to have associations with the business.", "example": true, "title": "phone has business connections?"}, "email_business_connections": {"anyOf": [{"items": {"$ref": "#/components/schemas/DataSource"}, "type": "array"}, {"type": "null"}], "description": "The submitted email was found to have associations with the business.", "example": true, "title": "email has business connections?"}, "address_business_connections": {"anyOf": [{"items": {"$ref": "#/components/schemas/DataSource"}, "type": "array"}, {"type": "null"}], "description": "The submitted address was found to have associations with the business.", "example": true, "title": "address has business connections?"}, "person_business_connections": {"anyOf": [{"items": {"$ref": "#/components/schemas/DataSource"}, "type": "array"}, {"type": "null"}], "description": "The submitted person was found to have associations with the business.", "example": true, "title": "person has business connections?"}, "description": {"anyOf": [{"$ref": "#/components/schemas/SubmittedDescriptionAnalysis"}, {"type": "null"}], "description": "Does the submitted description describe what the business does?", "example": {"match_type": "Full match", "text": "A used bookstore that also sells coffee and records"}}}, "title": "Application", "type": "object"}, "AverageEngagement": {"enum": ["Low", "Medium", "High"], "title": "AverageEngagement", "type": "string"}, "Company": {"properties": {"name": {"anyOf": [{"maxLength": 2048, "minLength": 1, "type": "string"}, {"type": "null"}], "description": "The name of the company.", "example": "Acme, Inc.", "title": "Company name"}, "domain": {"anyOf": [{"$ref": "#/components/schemas/Domain"}, {"type": "null"}], "description": "Details about the company's domain name.", "title": "Domain"}, "application": {"anyOf": [{"$ref": "#/components/schemas/Application"}, {"type": "null"}], "description": "Information about the submitted/applicant data provided along with the domain.", "example": {"address_has_business_connections": true, "description": {"match_type": "Full match", "text": "A used bookstore that also sells coffee and records"}, "email_has_business_connections": true, "person_has_business_connections": true, "phone_has_business_connections": true}, "title": "Application"}, "formation_type": {"anyOf": [{"$ref": "#/components/schemas/CompanyType"}, {"type": "null"}], "description": "The legal business structure this company was formed under.", "example": "Corporation", "title": "Formation type"}, "has_closed_indicators": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "`true` when any one supported source signals the business is closed \u2014 either permanently or temporarily. Signals include closure language on the website, a `CLOSED_PERMANENTLY` or `CLOSED_TEMPORARILY` status from Google Places, and matching Yelp/Scrap.io flags. Treat as a strong indicator the business should not be approved without manual review. `null` means we did not gather enough signal to make a determination \u2014 it is not the same as `false`.", "example": false, "title": "Has closure indicators"}, "website_content": {"anyOf": [{"$ref": "#/components/schemas/WebsiteContent"}, {"type": "null"}], "description": "Information about the content on the company's website.", "title": "Website content"}, "website_traffic": {"anyOf": [{"$ref": "#/components/schemas/WebsiteTraffic"}, {"type": "null"}], "description": "Information on traffic to the company's website.", "title": "Website traffic"}, "primary_address": {"anyOf": [{"$ref": "#/components/schemas/Address"}, {"type": "null"}], "description": "The company's primary address.", "title": "Primary address"}, "additional_addresses": {"anyOf": [{"items": {"$ref": "#/components/schemas/Address"}, "type": "array"}, {"type": "null"}], "description": "Additional addresses that are associated with the company.", "title": "Additional addresses"}, "founded_year": {"anyOf": [{"minimum": 578, "type": "integer"}, {"type": "null"}], "description": "The year the company was founded.", "example": 1955, "title": "Founded Year"}, "description": {"anyOf": [{"maxLength": 65536, "minLength": 1, "type": "string"}, {"type": "null"}], "description": "A short summary of what the company does, sourced from the company's own website content and/or third-party business data providers. May be `null` for parked, unreachable, or extremely sparse sites where no usable description could be derived.", "example": "Acme, Inc. is a large manufacturing company best known for it's quality anvils.", "title": "Description"}, "industry": {"anyOf": [{"$ref": "#/components/schemas/Industry"}, {"type": "null"}], "description": "Information about various industry classification(s) for the company.", "title": "Industry"}, "primary_phone_number": {"anyOf": [{"$ref": "#/components/schemas/Phone"}, {"type": "null"}], "description": "The primary phone number of the company.", "example": {"country_code": "US", "country_name": "United States", "is_valid": true, "line_type": "Landline", "links_to_company": [{"duration": "P2Y10M", "type": "Direct"}], "number": "+15558675309"}, "title": "Phone number"}, "additional_phone_numbers": {"anyOf": [{"items": {"$ref": "#/components/schemas/Phone"}, "type": "array"}, {"type": "null"}], "description": "Additional phone numbers associated with the company.", "example": [{"country_code": "US", "country_name": "United States", "is_valid": true, "line_type": "Landline", "links_to_company": [{"duration": "P2Y10M", "type": "Direct"}], "number": "+15558675309"}], "title": "Additional phone numbers"}, "foot_traffic": {"anyOf": [{"$ref": "#/components/schemas/FootTraffic"}, {"type": "null"}], "description": "Foot traffic data for the company.", "title": "Foot traffic"}, "email_addresses": {"anyOf": [{"items": {"$ref": "#/components/schemas/Email"}, "type": "array"}, {"type": "null"}], "default": [], "description": "Email addresses known to be associated with this company.", "example": [{"address": "partners@acme.com", "is_valid": true}], "title": "Email addresses"}, "customer_reviews": {"anyOf": [{"$ref": "#/components/schemas/CustomerReviews"}, {"type": "null"}], "description": "Customer reviews data and analysis", "example": {"analysis": {"flags": [], "level_of_concern": "low", "text": "The company has a good reputation with customers."}, "providers": [{"meta": {"name": "AcmeInc", "review_average": 4.3, "review_count": 3339, "url": "https://www.yelp.com/biz/acme-anvil"}, "provider": "yelp"}, {"meta": {"name": "Acme", "review_average": 4.5, "review_count": 11239, "url": "https://www.google.com/maps/place/?q=place_id:ChIJE_P9I5yAhYARkssH6GvVJ2g"}, "provider": "google"}, {"meta": {"name": "Acme", "review_average": 4.3, "review_count": 22678, "url": "https://www.trustpilot.com/review/www.acme.com"}, "provider": "trustpilot"}]}, "title": "Customer review"}, "news_articles": {"default": [], "description": "Recent news articles about the company filtered to risk-relevant themes only. Each article's `concerns` field is tagged with one or more of: `Fraud`, `Legal`, or `Bankruptcy`. Articles that do not match any of these themes are not returned.", "example": [{"concerns": ["Bankruptcy"], "date": "2026-09-27T01:00:38.964306Z", "link": "https://example.com/news/acme-inc-files-for-bankruptcy", "snippet": "CEO Wiley E. Coyote announced that Acme, Inc. is filing for bankruptcy tomorrow at 9 AM.", "thumbnail": "https://example.com/thumn/acme-vault-empty.png", "title": "Acme, Inc. announces it is filing for bankruptcy."}], "items": {"$ref": "#/components/schemas/NewsArticle"}, "title": "News articles", "type": "array"}, "social_media_profiles": {"default": [], "description": "All social media profile URLs we associate with the company. This is the complete set; `social_media_detailed_profiles` is the enriched subset of these for which we were able to collect follower counts and other per-profile metrics.", "example": ["https://facebook.com/acme", "https://linkedin.com/company/acme-inc", "https://crunchbase.com/organization/acme", "https://twitter.com/acme", "https://www.google.com/maps/place/?q=place_id:ChIJE_P9I5yAhYARkssH6GvVJ2g"], "items": {"type": "string"}, "title": "Social media profile links", "type": "array"}, "social_media_detailed_profiles": {"default": [], "description": "Enriched per-profile data (follower counts, post recency, activity level, and where available, average audience engagement) for the subset of `social_media_profiles` we could collect detail for. Coverage varies by platform: Facebook, Instagram, LinkedIn, Twitter/X, Pinterest, TikTok, YouTube, and Snapchat are supported, but `activity_level` is only populated for Instagram and LinkedIn, and `average_engagement` only for Instagram.", "example": [{"follower_count": 22232239, "last_posted_content_at": "2023-07-01T10:23:00Z", "like_count": 22160933, "url": "https://facebook.com/acme"}], "items": {"$ref": "#/components/schemas/SocialMediaProfile"}, "title": "Detailed social media profiles", "type": "array"}, "metrics": {"anyOf": [{"$ref": "#/components/schemas/Metrics"}, {"type": "null"}], "description": "Estimated company size and revenue, returned as bucketed ranges (not exact figures). Includes `estimated_employee_count_range` (e.g. `1-10`, `5,000+`) and `estimated_annual_revenue_range` (e.g. `0-1M`, `1B+`). Either sub-field may be absent if no source can estimate it.", "example": {"estimated_annual_revenue_range": "10M-50M", "estimated_employee_count_range": "201-500"}, "title": "Metrics"}, "people": {"default": [], "description": "CXO-level executives and owners.", "example": [{"city": "San Francisco", "country": "United States", "job_title": "Chief Executive Officer", "linkedin_url": "https://www.linkedin.com/in/wiley-e-coyote/", "name": "Wiley E. Coyote", "profile_picture": "https://media.licdn.com/dms/image/D4D03AQGDnwFEps6idg/profile-displayphoto-shrink_200_200/0/1673360179524?e=1688601600&v=beta&t=bpXAkQdRR7liIMck3FQ7maRE-XeMwtChfWt73oB7YZ0", "state_province": "California"}], "items": {"$ref": "#/components/schemas/Person"}, "title": "People", "type": "array"}, "ecommerce": {"anyOf": [{"$ref": "#/components/schemas/Ecommerce"}, {"type": "null"}], "description": "Metrics and information on the online store present at the website", "title": "Ecommerce"}, "connected_entities": {"default": [], "description": "Other entities discovered to be connected to this business. Each entity's `sources` list explains how the connection was established; possible source types include `Referring site`, `Duplicate website text`, `External email domain`, `Shared executive`, `Shared phone number`, `Shared credentials`, `Cohosted domain`, `Redirect domain`, `Searched domain redirects`, `Associated person`, `Phone owner`, `Shared address`, `Shared email`, and `Associated web page`.", "example": [{"domain": "roadrunner-restaurants.com", "name": "Roadrunner Restaurants", "sources": [{"context": "Both businesses are listed at 123 Main Street, Chicago, IL.", "type": "Shared address", "url": "https://roadrunner-restaurants.com"}]}], "items": {"$ref": "#/components/schemas/ConnectedEntity"}, "title": "Related entities", "type": "array"}, "pdf_report_link": {"anyOf": [{"format": "uri", "minLength": 1, "type": "string"}, {"type": "null"}], "description": "URL for a PDF outlining the results in a visual format. The PDF is rendered on demand, so the first request to this URL starts generation and returns a 202; repeat it until it returns 200. See the Async Web Presence Review Integration Guide.", "title": "PDF report link"}, "ui_portal_link": {"anyOf": [{"format": "uri", "minLength": 1, "type": "string"}, {"type": "null"}], "description": "Link to see the full response in TrueBiz's web portal.", "title": "UI portal link"}, "recommendation": {"anyOf": [{"$ref": "#/components/schemas/Recommendation"}, {"type": "null"}], "description": "TrueBiz's overall opinion on whether this business passes review, derived from the risk indicators above. `decision` is one of `Pass` or `Fail`.", "example": {"decision": "Pass"}, "title": "Recommendation"}, "risks": {"allOf": [{"$ref": "#/components/schemas/RiskIndicators"}], "default": {"validity": [], "notice": [], "risk": []}, "description": "All risk indicators evaluated for the business, partitioned into three buckets: `validity` (data points supporting legitimacy), `notice` (informational signals worth reviewing but not necessarily disqualifying), and `risk` (data points indicating risk from interacting with the business). The `recommendation` field summarizes the net verdict derived from these indicators.", "example": {"notice": [], "risk": [], "validity": [{"category": "business", "classification_type": "Validity", "description": "Is TrueBiz able to find any supplemental data suggesting the business interacts in a high risk area?", "name": "is_industry_classified", "score": 10000, "subcategory": "classification"}, {"category": "business", "classification_type": "Validity", "description": "Is TrueBiz able to find any industry classification data for this business?", "name": "is_no_classification_data_found", "score": 10000, "subcategory": "classification"}, {"category": "business", "classification_type": "Validity", "description": "Has the business been founded recently?", "name": "is_founded_recently", "score": 10000, "subcategory": "metadata"}, {"category": "business", "classification_type": "Validity", "description": "Are the business metrics around employee count and revenue within expectations?", "name": "is_company_size_and_revenue_metrics_aligned", "score": 10000, "subcategory": "metrics"}, {"category": "website", "classification_type": "Validity", "description": "Is the domain registered with a domain registrar?", "name": "is_registered", "score": 10000, "subcategory": "registration"}, {"category": "website", "classification_type": "Validity", "description": "Is the domain registration expired?", "name": "is_registration_expired", "score": 10000, "subcategory": "registration"}, {"category": "website", "classification_type": "Validity", "description": "Is the domain resolvable to an IP address?", "name": "is_resolvable", "score": 10000, "subcategory": "availability"}, {"category": "website", "classification_type": "Validity", "description": "Does the domain's responding web server(s) serve a simple HTTP or HTTPS request on port 80 or 443.", "name": "is_webserver_responsive", "score": 10000, "subcategory": "availability"}, {"category": "website", "classification_type": "Validity", "description": "Is the domain's responding web server(s) using a valid, properly configured SSL certificate?", "name": "is_ssl_valid", "score": 10000, "subcategory": "availability"}, {"category": "website", "classification_type": "Validity", "description": "Is the domain associated with a known, free email provider?", "name": "is_known_free_email_host", "score": 10000, "subcategory": "reputation"}, {"category": "website", "classification_type": "Validity", "description": "Is the top level domain a known, non-business TLD?", "name": "is_tld_non_business", "score": 10000, "subcategory": "reputation"}, {"category": "website", "classification_type": "Validity", "description": "Is the domain owned by a known social media company?", "name": "is_known_social_media_domain", "score": 10000, "subcategory": "reputation"}]}, "title": "Risks"}, "risk_analysis": {"anyOf": [{"$ref": "#/components/schemas/RiskAnalysis"}, {"type": "null"}], "description": "Higher-level fraud risk classification (`LOW` / `MEDIUM` / `HIGH`). Populated only for accounts enrolled in supplementary fraud-analysis workflows; standard `/company/search` responses leave this null. Contact your account manager if you need this signal.", "example": {"fraud_risk": "LOW"}, "title": "Risk Analysis"}, "is_blocked": {"default": false, "description": "Is this business blocked for fraud based on information that your company has provided to us.", "title": "Blocked", "type": "boolean"}, "block_details": {"anyOf": [{"$ref": "#/components/schemas/CompanyMatchBlockedDomain"}, {"type": "null"}], "description": "Metadata about an active block on this domain (when the block was created, when it expires, and a human-readable explanation). Populated only when `is_blocked` is `true`.", "example": {"created_at": "2023-12-25T19:30:25.000+00:00", "expires_at": "2030-12-29T23:59:59.000+00:00", "explanation": "Reported by customer ops for repeated chargebacks."}, "title": "Block details"}, "network_intelligence": {"anyOf": [{"$ref": "#/components/schemas/NetworkIntelligence"}, {"type": "null"}], "description": "Cross-account intelligence derived from other TrueBiz customers' interactions with this domain. Null when no qualifying data exists.", "title": "Network intelligence"}, "tracking_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "description": "ID used to track this request in TrueBiz's application.", "example": "00000000-0000-0000-0000-000000000000", "title": "Tracking ID"}, "external_tracking_ref": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "ID used in your system to track this request.", "example": "abc_defg12345678", "title": "External tracking reference"}}, "title": "Company", "type": "object"}, "CompanyMatchBlockedDomain": {"properties": {"created_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "description": "When the block was created", "example": "2023-12-25T19:30:25.000+00:00", "title": "Blocked since"}, "expires_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "description": "When the block expires", "example": "2030-12-29T23:59:59.000+00:00", "title": "Blocked until"}, "explanation": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Human-readable explanation for why the domain was blocked", "title": "Block explanation"}}, "title": "CompanyMatchBlockedDomain", "type": "object"}, "CompanyRevenue": {"enum": ["0-1M", "1M-10M", "10M-50M", "50M-100M", "100M-1B", "1B+"], "title": "CompanyRevenue", "type": "string"}, "CompanySize": {"enum": ["1-10", "11-50", "51-200", "201-500", "500-1,000", "1,001-5,000", "5,000+"], "title": "CompanySize", "type": "string"}, "CompanyType": {"enum": ["Corporation", "General Partnership", "Limited", "Limited Liability Company", "Limited Partnership", "Limited Liability Partnership", "Limited Liability Limited Partnership", "No Liability", "Non-Profit", "Professional Corporation", "Professional Limited Liability Corporation", "Sole Proprietorship", "Unlimited"], "title": "CompanyType", "type": "string"}, "ConcernFlag": {"enum": ["customer_service_concerns", "product_quality_concerns", "product_authenticity_concerns", "delivery_concerns", "return_or_refund_concerns", "fraud_concerns"], "title": "ConcernFlag", "type": "string"}, "ConnectedEntity": {"properties": {"name": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Name of the connected entity.", "example": "Acme Consulting Inc.", "title": "Name"}, "domain": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "domain of the connected entity.", "example": "example.com", "title": "URL"}, "sources": {"default": [], "description": "The data source that establishes the connection.", "example": "Duplicate website text", "items": {"$ref": "#/components/schemas/ConnectionSource"}, "title": "Source", "type": "array"}, "content_flags": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "description": "A list of potentially concerning flags in the web content.", "example": ["Animal Cruelty"], "title": "Content flags"}, "multi_level_marketing_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The name of a known multi-level-marketing brand found in the web content.", "example": "Amway", "title": "Multi level marketing name"}, "primary_language": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Evaluation of the primary language used for web content.", "example": "English", "title": "Primary language"}, "is_webserver_responsive": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "Indicates whether the entity's webserver is responsive.", "example": true, "title": "Webserver responsive"}}, "title": "ConnectedEntity", "type": "object"}, "ConnectionSource": {"properties": {"type": {"anyOf": [{"$ref": "#/components/schemas/ConnectionSourceType"}, {"type": "null"}], "description": "Name of the connected entity.", "example": "Acme Consulting Inc.", "title": "Name"}, "context": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Data on the connection.", "example": "example.com is also located at 123 Main Street, Chicago, IL", "title": "Context"}, "url": {"anyOf": [{"format": "uri", "minLength": 1, "type": "string"}, {"type": "null"}], "description": "The URL of the source.", "example": "https://example.com", "title": "URL"}}, "title": "ConnectionSource", "type": "object"}, "ConnectionSourceType": {"enum": ["Referring site", "Duplicate website text", "External email domain", "Shared executive", "Shared phone number", "Shared credentials", "Cohosted domain", "Redirect domain", "Searched domain redirects", "Associated person", "Phone owner", "Shared address", "Shared email", "Associated web page"], "title": "ConnectionSourceType", "type": "string"}, "ContentFlagDetail": {"description": "Structured detail for a triggered content flag.", "properties": {"flag": {"$ref": "#/components/schemas/ContentFlagName", "description": "The content flag category name.", "title": "Flag"}, "reasoning": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Explanation for why this flag was triggered. Null when unavailable.", "example": "The page contains references to online casino games and sports betting.", "title": "Reasoning"}, "location": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "URL of the page that was analyzed.", "example": "https://www.example.com/", "title": "Location"}}, "required": ["flag"], "title": "ContentFlagDetail", "type": "object"}, "ContentFlagName": {"enum": ["Adoption", "Adult", "Alcohol", "Animal Entertainment", "Asset Management", "Auctions", "Cannabis", "Career Placement Services", "Commodities or Securities Trading", "Counterfeit Goods and IP Infringement", "Credit Monitoring and Identity Protection Services", "Crowdfunding", "Cruise lines", "Crypto", "Cryptocurrency", "Dating", "Debt", "Discount and Rebate Services", "Endangered Animals", "Firearms", "Fireworks", "Fundraising", "Gambling", "Hazardous Materials", "High Risk Legal Services", "High Value Assets", "Informercials", "Insurance", "International Customs Services", "Lead Generation", "Leather and Taxidermy", "Lending", "Medical Devices", "Nutraceuticals", "Oil and gas", "Pet Stores", "Pharmaceuticals", "Pornography", "Prepaid Telephony", "Psychics and Fortune Tellers", "Real Estate", "Religious and Political Groups", "Scams and Scamware", "Scrap Metal", "Sex work", "Shell Companies", "Social Media Manipulation", "Solar", "Telehealth", "Telemarketing", "Timeshares", "Tobacco", "Weapons", "Web Hosting", "Government"], "title": "ContentFlagName", "type": "string"}, "Coordinates": {"properties": {"lat": {"title": "Lat", "type": "number"}, "lon": {"title": "Lon", "type": "number"}}, "required": ["lat", "lon"], "title": "Coordinates", "type": "object"}, "CountryShare": {"description": "A single country's share of total website traffic.", "properties": {"value": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Value"}, "change": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Change"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "abbr": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Abbr"}}, "title": "CountryShare", "type": "object"}, "CredentialMatchDomain": {"properties": {"domain": {"description": "The year of the record.", "example": "example.com", "title": "Domain", "type": "string"}, "technologies": {"description": "Labels for the technologies that have shared credentials with this domain and searched website.", "example": ["google-analytics", "olark"], "items": {"type": "string"}, "title": "Technologies", "type": "array"}}, "required": ["domain", "technologies"], "title": "CredentialMatchDomain", "type": "object"}, "CustomerReviews": {"properties": {"analysis": {"anyOf": [{"$ref": "#/components/schemas/core__api__schemas__customer_review__Analysis"}, {"type": "null"}], "description": "An analysis of the review data gathered from providers", "title": "Analysis"}, "providers": {"default": [], "description": "A list of review data from different providers", "items": {"$ref": "#/components/schemas/CustomerReviewsData"}, "title": "Providers", "type": "array"}}, "title": "CustomerReviews", "type": "object"}, "CustomerReviewsData": {"properties": {"provider": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Unique ID of the review service providing the review data", "title": "Provider"}, "meta": {"anyOf": [{"$ref": "#/components/schemas/CustomerReviewsMeta"}, {"type": "null"}], "description": "Data describing the review data"}}, "title": "CustomerReviewsData", "type": "object"}, "CustomerReviewsMeta": {"properties": {"last_review_date": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "description": "The date the last review was made", "title": "Last review date"}, "url": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The URL of the company profile page", "title": "url"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The name of the company as it appears on the company profile page", "title": "Name"}, "review_count": {"default": 0, "description": "The number of reviews for the company", "title": "Review count", "type": "integer"}, "review_average": {"anyOf": [{"type": "number"}, {"type": "null"}], "default": 0.0, "description": "The average review rating", "title": "Review count"}}, "title": "CustomerReviewsMeta", "type": "object"}, "DataSource": {"enum": ["website", "social", "other", "submitted"], "title": "DataSource", "type": "string"}, "Decision": {"enum": ["Pass", "Fail"], "title": "Decision", "type": "string"}, "DetectedBrand": {"properties": {"name": {"description": "The name of the brand.", "example": "Nike", "title": "Brand Name", "type": "string"}, "count": {"description": "The number of times the brand name was detected in the company's principal page(s)", "example": 10, "title": "Frequency", "type": "integer"}, "action": {"description": "The action that should be taken for the brand.", "example": "warn", "title": "Action", "type": "string"}}, "required": ["name", "count", "action"], "title": "DetectedBrand", "type": "object"}, "Domain": {"description": "this has come to be a collection of technical data points, rather than anything intuitively related to the \"Domain\"\nerr on having things that could be in website_content being more intelligable to non-technical users\nand technical stuff directly in domain", "properties": {"name": {"anyOf": [{"maxLength": 2048, "minLength": 1, "type": "string"}, {"type": "null"}], "description": "The fully qualified domain name.", "example": "acme.com", "title": "Domain name"}, "registration_date": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "description": "The date the domain was initially registered on.", "example": "1992-07-14", "title": "Registration date"}, "last_update_date": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "description": "The date the domain's registration info was last updated on.", "example": "2021-12-15", "title": "Last update date"}, "expiration_date": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "description": "The date on which the domain's registration info is due to expire. If the expiration date has passed, this adds risk as the domain can be reassigned to a new company.", "example": "2028-07-12", "title": "Expiration date"}, "is_resolvable": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "A domain that responded with a valid A, AAAA, or CNAME record at the time of lookup. Unresolvable domains are frequently caused by typos on input.", "example": true, "title": "Is resolvable?"}, "is_registered": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "A domain that was present in the ICANN registry at the time of lookup. Unregistered domains can be purchased at any time, and thus are risky. This is frequently caused by typos on input.", "example": true, "title": "Is registered?"}, "is_parked": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "A domain that is registered, but not connected to a legitimate site. It is instead pointed at a parking page, typically owned by the registrar.", "example": false, "title": "Is parked?"}, "is_known_free_email_host": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "A domain known for providing free email signups.  Typically, a corporate representative of google (or another hosted domain provider) will use their corporate email address, not their public email service domain.", "example": false, "title": "Is known free email host?"}, "is_known_social_media_domain": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "A domain that is registered to a known social media entity.", "example": false, "title": "Is known social media domain?"}, "is_known_marketplace_domain": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "A domain that is registered to a known marketplace entity (e.g. alibaba, amazon, fiverr).", "example": false, "title": "Is known marketplace domain?"}, "is_known_top_domain": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "A domain that is known to be one of the most popular sites on the internet.", "example": false, "title": "Is known top domain?"}, "is_known_hosting_provider_domain": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "A domain that is known to be registered to a known hosting provider (e.g. company.hostingprovider.com and not company.com).", "example": false, "title": "Is known hosting provider domain?"}, "is_non_business": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "A domain with a top level domain that indicates it is unlikely to be a business (e.g. .edu, .gov).", "example": false, "title": "Is non business?"}, "is_ssl_valid": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "A domain for which SSL was properly configured at the time of the check.", "example": true, "title": "Is SSL valid?"}, "is_webserver_responsive": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "A domain for which the responding web server(s) responds to a simple HTTP or HTTPS request on port 80 or 443.", "example": true, "title": "Is webserver responsive?"}, "screenshot": {"anyOf": [{"$ref": "#/components/schemas/Screenshot"}, {"type": "null"}], "description": "Links to download a screenshot of the domain in multiple sizes.", "title": "Screenshot"}, "historical_archives": {"anyOf": [{"items": {"$ref": "#/components/schemas/HistoricalArchive"}, "type": "array"}, {"type": "null"}], "description": "Archives of the website from past dates.", "title": "Historical archives"}, "registrar": {"anyOf": [{"$ref": "#/components/schemas/Registrar"}, {"type": "null"}], "description": "Information about the domain's registrar", "title": "Registrar"}, "hosting_providers": {"anyOf": [{"items": {"$ref": "#/components/schemas/HostingProvider"}, "type": "array"}, {"type": "null"}], "description": "Information about the host(s) of the webserver(s) used by the company's website", "example": [{"country": "United States", "name": "Google"}], "title": "Hosting providers"}, "has_robots_txt": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": true, "description": "A website sophistication signal that indicates content scraping permissibility.", "example": true, "title": "Has a valid robots.txt?"}, "has_apex_and_www": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": true, "description": "Indicates both the apex domain (e.g. example.com) and www subdomain (e.g. www.example.com) work or correctly forward traffic.", "example": true, "title": "Has apex and www?"}, "estimated_tech_spend": {"anyOf": [{"type": "integer"}, {"type": "null"}], "description": "An estimage of the monthly spend on website technologies derived from the visible premium libraries and tools.", "example": 1000, "title": "Estimated tech spend"}, "estimated_tech_spend_history": {"anyOf": [{"items": {"$ref": "#/components/schemas/TechSpendRecord"}, "type": "array"}, {"type": "null"}], "description": "Estimates of the monthly spend based on the website technologies used as times in the past.", "example": [{"detected_date": "2022-06-01", "spend": 850}], "title": "Estimated tech spend history"}, "website_tech_activity": {"anyOf": [{"items": {"$ref": "#/components/schemas/TechActivityMonth"}, "type": "array"}, {"type": "null"}], "description": "The number of total, added, and removed website technologies by month.", "example": [{"added": 4, "month": 6, "removed": 1, "total": 25, "year": 2023}], "title": "Website tech activity"}, "domains_with_matching_credentials": {"anyOf": [{"items": {"$ref": "#/components/schemas/CredentialMatchDomain"}, "type": "array"}, {"type": "null"}], "description": "Domains that share technology credentials with the website.", "title": "Domains with matching credentials"}, "inbound_linking_domains_count": {"anyOf": [{"type": "integer"}, {"type": "null"}], "description": "The number of unique domains that have links to the website (aka backlinks).", "example": 5, "title": "Inbound linking domains count"}, "inbound_redirects": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "description": "A list of domains that redirect to the website.", "example": ["example.xyz"], "title": "Redirects"}, "cohosted_domains": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "description": "A list of domains that are hosted on the same IP address as the website, and likely are owned or managed by the same entity.", "example": ["example.xyz"], "title": "Co-hosted domains"}}, "title": "Domain", "type": "object"}, "DuplicateMatch": {"properties": {"url": {"anyOf": [{"format": "uri", "minLength": 1, "type": "string"}, {"type": "null"}], "description": "URL of a website with matching text.", "example": "https://www.duplicate.com", "title": "URL"}, "percent_matched": {"anyOf": [{"type": "integer"}, {"type": "null"}], "description": "The share of words matched out .", "example": 88, "title": "Percent Matched"}, "screenshot_image_link": {"anyOf": [{"format": "uri", "minLength": 1, "type": "string"}, {"type": "null"}], "description": "A link to a screenshot with the matched text highlighted.", "example": null, "title": "Screenshot Image Link"}}, "title": "DuplicateMatch", "type": "object"}, "Ecommerce": {"properties": {"platform": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The ecommerce platform used by the company.", "example": "shopify", "title": "Ecommerce Platform"}, "product_count": {"anyOf": [{"type": "integer"}, {"type": "null"}], "description": "The number of products sold by the company.", "example": 100, "title": "Product Count"}, "vendor_count": {"anyOf": [{"type": "integer"}, {"type": "null"}], "description": "The number of unique vendors sold by the company.", "example": 20, "title": "Vendor Count"}, "average_price": {"anyOf": [{"type": "number"}, {"type": "null"}], "description": "The average price of products for sale, in the currency of the 'currency_code' field.", "example": 15.55, "title": "Average Price"}, "minimum_price": {"anyOf": [{"type": "number"}, {"type": "null"}], "description": "The lowest price of any product for sale, in the currency of the 'currency_code' field.", "example": 9.99, "title": "Minumum Price"}, "maximum_price": {"anyOf": [{"type": "number"}, {"type": "null"}], "description": "The highest price of any product for sale, in the currency of the 'currency_code' field.", "example": 100.99, "title": "Maximum Price"}, "currency_code": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The ISO code for the currency used.", "example": "USD", "title": "Currency Code"}, "last_updated_date": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "description": "The date of the last update to the site.", "example": "2023-03-23", "title": "Last Updated Date"}}, "title": "Ecommerce", "type": "object"}, "Email": {"properties": {"address": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The email address.", "example": null, "title": "Email address"}, "is_valid": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "An email that is not disposable, on a free host, and whose domain has DNS properly configured to receive emails.", "example": true, "title": "Email is valid?"}, "internal_source_urls": {"default": [], "description": "A list of URLs where the email address was found within the searched website.", "example": ["https://example.com/contact"], "items": {"type": "string"}, "nullable": false, "title": "Internal Source URLs", "type": "array"}, "external_source_urls": {"default": [], "description": "A list of URLs where the email address was found, outside the searched website.", "example": ["https://zoominfo.com/123"], "items": {"type": "string"}, "nullable": false, "title": "External Source URLs", "type": "array"}, "source": {"anyOf": [{"$ref": "#/components/schemas/DataSource"}, {"type": "null"}], "description": "The data source for this email.", "example": "website", "title": "Source"}, "date_first_seen": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "description": "The date the email was first seen.", "example": "2000-06-06", "title": "Date first seen"}, "velocity": {"anyOf": [{"type": "integer"}, {"type": "null"}], "description": "A score representing activity over the last 6 months, out of 10.", "example": 7, "title": "Velocity"}, "popularity": {"anyOf": [{"type": "integer"}, {"type": "null"}], "description": "A score representing breadth of interaction over the last 12 months, out of 10.", "example": 9, "title": "Popularity"}}, "title": "Email", "type": "object"}, "EmploymentRecord": {"properties": {"company_name": {"description": "The company name.", "example": "ACME LLC.", "title": "Company name", "type": "string"}, "title": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The job title.", "example": "Co-founder & CEO", "title": "Job title"}, "start_date": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "description": "The date the person started at the job.", "example": "2018-09-01", "title": "Start date"}}, "required": ["company_name"], "title": "EmploymentRecord", "type": "object"}, "FollowRatio": {"enum": ["Low", "Medium", "High"], "title": "FollowRatio", "type": "string"}, "FootTraffic": {"properties": {"projections": {"anyOf": [{"items": {"$ref": "#/components/schemas/ProjectionDay"}, "type": "array"}, {"type": "null"}], "description": "List of daily projections zero-indexed starting on Monday", "title": "Projections"}, "traffic_score": {"allOf": [{"$ref": "#/components/schemas/TrafficScore"}], "default": "UNKNOWN", "description": "Score of the location's foot traffic"}, "hours_open": {"anyOf": [{"items": {"items": {"type": "integer"}, "type": "array"}, "type": "array"}, {"type": "null"}], "description": "Zero-indexed list of days starting with monday, each containg a list of hours the location is open", "title": "Hours Open"}}, "title": "FootTraffic", "type": "object"}, "FraudRisk": {"enum": ["LOW", "MEDIUM", "HIGH"], "title": "FraudRisk", "type": "string"}, "HistoricalArchive": {"properties": {"url": {"anyOf": [{"format": "uri", "minLength": 1, "type": "string"}, {"type": "null"}], "description": "The URL to access an archive.", "example": "2021-12-15", "title": "URL"}, "taken_date": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "description": "The date the archive was captured.", "example": "2021-12-15", "title": "Taken date"}}, "title": "HistoricalArchive", "type": "object"}, "HostingProvider": {"properties": {"name": {"default": "", "description": "The name of the servers' internet service provider.", "example": "Google", "maxLength": 2048, "minLength": 1, "nullable": false, "title": "Hosting provider name", "type": "string"}, "country": {"default": "", "description": "The country the hosting provider's server(s) are located in.", "example": "United States", "maxLength": 2048, "minLength": 1, "nullable": false, "title": "Hosting provider country", "type": "string"}}, "title": "HostingProvider", "type": "object"}, "Industry": {"properties": {"primary_industry": {"anyOf": [{"maxLength": 512, "minLength": 1, "type": "string"}, {"type": "null"}], "description": "The primary industry the company operates in.", "example": "Iron and Steel Forging", "title": "Primary industry"}, "tags": {"default": [], "description": "A list of short, descriptive phrases indicating what the company does.", "example": ["Steelworks", "Anvils", "Coyotes"], "items": {"type": "string"}, "title": "Tags", "type": "array"}, "primary_naics": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "A single code that is considered to be the primary business classification of the company according to the North American Industry Classification System (NAICS).", "example": "332111", "title": "Primary NAICS code"}, "additional_naics_codes": {"default": [], "description": "A list of codes indicating the industry classification of the company according to the North American Industry Classification System (NAICS).", "example": ["512110"], "items": {"type": "string"}, "title": "NAICS codes", "type": "array"}, "primary_sic": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "A single code that is considered to be the primary SIC of the company according to the Standard Industry Classification (SIC) system.", "example": "3462", "title": "Primary SIC code"}, "additional_sic_codes": {"default": [], "description": "A list of codes indicating the industry classification of the company according to the Standard Industry Classification (SIC) system.", "example": ["7819"], "items": {"type": "string"}, "title": "SIC codes", "type": "array"}, "primary_mcc": {"anyOf": [{"additionalProperties": true, "type": "object"}, {"type": "null"}], "description": "A single code most likely to represent the company's merchant classification according to the Merchant Category Code (MCC) system.", "example": {"code": "3499", "description": "Fabricated Metal Products, Not Elsewhere Classified"}, "title": "Primary MCC code"}, "additional_mcc_codes": {"default": [], "description": "A list of codes indicating other possible merchant classifications of the company according to the Merchant Category Code (MCC) system.", "example": [{"code": "7812", "description": "Motion Picture and Video Tape Production and Distribution"}], "items": {"additionalProperties": true, "type": "object"}, "title": "SIC codes", "type": "array"}}, "title": "Industry", "type": "object"}, "LevelOfConcern": {"enum": ["low", "medium", "high", "critical"], "title": "LevelOfConcern", "type": "string"}, "LineType": {"enum": ["Landline", "Mobile", "FixedVOIP", "NonFixedVOIP", "TollFree", "Other", "Voicemail", ""], "title": "LineType", "type": "string"}, "Metrics": {"properties": {"estimated_employee_count_range": {"anyOf": [{"$ref": "#/components/schemas/CompanySize"}, {"type": "null"}], "description": "An estimated range showing the number of people working at the company.", "example": "5,000+", "title": "Estimated employee count range"}, "estimated_annual_revenue_range": {"anyOf": [{"$ref": "#/components/schemas/CompanyRevenue"}, {"type": "null"}], "description": "An estimated range showing the revenue of the company.", "example": "1B+", "title": "Estimated annual revenue range"}}, "title": "Metrics", "type": "object"}, "MonthlyVisits": {"description": "Visit count for a single calendar month.", "properties": {"year": {"title": "Year", "type": "integer"}, "month": {"title": "Month", "type": "integer"}, "visits": {"title": "Visits", "type": "integer"}}, "required": ["year", "month", "visits"], "title": "MonthlyVisits", "type": "object"}, "NetworkIntelligence": {"description": "Cross-account intelligence about how other TrueBiz customers interact with a company.", "properties": {"recent_searches": {"$ref": "#/components/schemas/RecentSearches", "description": "Statistics from other TrueBiz customers who have previously searched this company.", "title": "Recent searches"}}, "required": ["recent_searches"], "title": "NetworkIntelligence", "type": "object"}, "NewsArticle": {"properties": {"title": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Title"}, "link": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Link"}, "date": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "title": "Date"}, "snippet": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Snippet"}, "source": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Source"}, "concerns": {"items": {"$ref": "#/components/schemas/NewsArticleTopicConcernType"}, "title": "Concerns", "type": "array"}}, "required": ["concerns"], "title": "NewsArticle", "type": "object"}, "NewsArticleTopicConcernType": {"enum": ["Fraud", "Legal", "Bankruptcy"], "title": "NewsArticleTopicConcernType", "type": "string"}, "Person": {"properties": {"name": {"anyOf": [{"maxLength": 1024, "minLength": 1, "type": "string"}, {"type": "null"}], "description": "The person's full name.", "example": "Dara Khosrowshahi", "title": "Name"}, "job_title": {"anyOf": [{"maxLength": 255, "minLength": 1, "type": "string"}, {"type": "null"}], "description": "A name that describes someone's job or position.", "example": "Chief Executive Officer", "title": "Job title"}, "linkedin_url": {"anyOf": [{"maxLength": 1024, "minLength": 29, "type": "string"}, {"type": "null"}], "description": "The person's LinkedIn profile URL.", "example": "https://www.linkedin.com/in/dara-khosrowshahi-9b1a8b/", "title": "LinkedIn URL"}, "profile_picture": {"anyOf": [{"maxLength": 1024, "minLength": 34, "type": "string"}, {"type": "null"}], "description": "The URL of the person's LinkedIn profile photo.", "example": "https://media.licdn.com/dms/image/D4D03AQGDnwFEps6idg/profile-displayphoto-shrink_200_200/0/1673360179524?e=1688601600&v=beta&t=bpXAkQdRR7liIMck3FQ7maRE-XeMwtChfWt73oB7YZ0", "title": "LinkedIn photo URL"}, "state_province": {"anyOf": [{"maxLength": 255, "minLength": 1, "type": "string"}, {"type": "null"}], "description": "The state or province where the person is located.", "example": "California", "title": "State"}, "city": {"anyOf": [{"maxLength": 255, "minLength": 1, "type": "string"}, {"type": "null"}], "description": "The city where the person is located.", "example": "San Francisco", "title": "City"}, "country": {"anyOf": [{"maxLength": 255, "minLength": 1, "type": "string"}, {"type": "null"}], "description": "The country where the person is located.", "example": "United States", "title": "Country"}, "start_date": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "description": "The date the person started at the company.", "example": "1995-07-14", "title": "Start date"}, "other_active_positions": {"anyOf": [{"items": {"$ref": "#/components/schemas/EmploymentRecord"}, "type": "array"}, {"type": "null"}], "description": "Other jobs listed as currently active.", "example": "[{\"title\": \"CEO\", \"company_name\": \"ACME LLC.\", \"start_date\": \"2018-09-01\"}]", "title": "Other active positions"}, "source": {"anyOf": [{"$ref": "#/components/schemas/DataSource"}, {"type": "null"}], "description": "The data source for this person.", "example": "website", "title": "Source"}}, "title": "Person", "type": "object"}, "Phone": {"properties": {"number": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The E.164 formatted phone number.", "example": "+13105555555", "title": "Phone number"}, "is_valid": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "A phone number that fits with known patterns such as area codes and carrier ranges.", "example": true, "title": "Phone is valid?"}, "line_type": {"anyOf": [{"$ref": "#/components/schemas/LineType"}, {"type": "null"}], "description": "The type of phone line associated with this number", "example": "Mobile", "title": "Phone line type"}, "country_code": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "ISO country code of country this phone number is from", "example": "US", "title": "Country Code"}, "country_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The name of the country this phone number is from", "example": "United States", "title": "Country Name"}, "links_to_company": {"description": "Any current associations found between this number and the company", "items": {"$ref": "#/components/schemas/PhoneLink"}, "nullable": false, "title": "Company linkages", "type": "array"}, "source": {"anyOf": [{"$ref": "#/components/schemas/DataSource"}, {"type": "null"}], "description": "The data source for this number.", "example": "website", "title": "Source"}}, "title": "Phone", "type": "object"}, "PhoneLink": {"properties": {"type": {"anyOf": [{"$ref": "#/components/schemas/PhoneLinkType"}, {"type": "null"}], "description": "The type of link between this number and the company", "example": "direct", "title": "Link type"}, "duration": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The approximate length of time the link has existed (formatted as an ISO 8601 duration)", "example": "P2Y5M", "title": "Link duration"}}, "title": "PhoneLink", "type": "object"}, "PhoneLinkType": {"enum": ["direct", "employee", "address"], "title": "PhoneLinkType", "type": "string"}, "PolicyAnalysis": {"properties": {"sources": {"anyOf": [{"items": {"$ref": "#/components/schemas/PolicySource"}, "type": "array"}, {"type": "null"}], "description": "A list of sources used in the analysis.", "title": "Evaluated sources"}, "analyses": {"anyOf": [{"items": {"$ref": "#/components/schemas/core__api__schemas__policy_analysis__Analysis"}, "type": "array"}, {"type": "null"}], "description": "A list of analytical findings from the source materials.", "title": "Analyses"}}, "title": "PolicyAnalysis", "type": "object"}, "PolicySource": {"properties": {"type": {"description": "The type of source.", "example": "Privacy Policy", "title": "Source type", "type": "string"}, "url": {"description": "The URL of the source.", "example": "https://www.example.com/privacy", "format": "uri", "maxLength": 2083, "minLength": 1, "title": "Source URL", "type": "string"}, "title": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The title of the source.", "example": "Acme Inc. Privacy Policy", "title": "Source title"}, "company_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The name of the company as it appears in the source.", "example": "Acme Inc.", "title": "Company name"}, "language": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The language of the source.", "example": "en", "title": "Source language"}, "last_updated": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The date the source was last updated.", "example": "2021-01-01", "title": "Last updated"}, "change_policy": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The policy for changes to the source.", "example": "Example Co reserves the right to make changes to this Privacy Policy. Any updates will be posted on our website.", "title": "Change policy"}, "policy_contact": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The contact information for the source.", "example": "support@example.com", "title": "Contact"}, "synopsis": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "A brief synopsis of the source.", "example": "This privacy policy outlines the types of personal information that is received and collected and how it is used. It also outlines the steps we take to protect your personal information.", "title": "Synopsis"}, "has_placeholder_text": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "Indicates whether the source contains placeholder text.", "example": false, "title": "Has placeholder text?"}}, "required": ["type", "url"], "title": "PolicySource", "type": "object"}, "PostalServiceFlag": {"description": "\"residential\" indicates that the address is a residential address.\n\"po_box\" indicates that the address is a Postoffice Box rather than a physical address.\n\"virtual_address\" indicates that the address is a private business receiving mail for clients.\n\"vacant\" indicates that the USPS has marked the address as being vacant.\n\"inactive\" indicates that the USPS does not deliver to this address.\n\"unreliable\" indicates that that there was not enough address information to validate a specific address.\n\"unconfirmed\" indicates that the USPS does not maintain Delivery Point Validation data for this address.", "enum": ["residential", "po_box", "virtual_address", "vacant", "inactive", "general_delivery", "unreliable", "unconfirmed"], "title": "PostalServiceFlag", "type": "string"}, "ProjectionDay": {"properties": {"name": {"description": "Day of the week", "title": "Name", "type": "string"}, "hours": {"description": "List of projection hours", "items": {}, "title": "Hours", "type": "array"}}, "required": ["name", "hours"], "title": "ProjectionDay", "type": "object"}, "RecentSearches": {"description": "Aggregated statistics from other TrueBiz customers who have previously searched this company.\n\nInternal and Mastercard accounts are excluded from all counts.\nThe requesting account's own searches are excluded.\nCounts are total searches; repeated searches by the same account each count.", "properties": {"first_seen_at": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "description": "The earliest date any other TrueBiz customer searched this company.", "title": "First seen date"}, "most_recent_seen_at": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "description": "The most recent date any other TrueBiz customer searched this company.", "title": "Most recent seen date"}, "searches_all_time": {"description": "Total number of times other TrueBiz customers have ever searched this company.", "title": "Searches \u2014 all time", "type": "integer"}, "searches_last_30_days": {"description": "Number of times other TrueBiz customers searched this company in the last 30 days.", "title": "Searches \u2014 last 30 days", "type": "integer"}, "searches_last_90_days": {"description": "Number of times other TrueBiz customers searched this company in the last 90 days.", "title": "Searches \u2014 last 90 days", "type": "integer"}, "searches_last_180_days": {"description": "Number of times other TrueBiz customers searched this company in the last 180 days.", "title": "Searches \u2014 last 180 days", "type": "integer"}}, "required": ["searches_all_time", "searches_last_30_days", "searches_last_90_days", "searches_last_180_days"], "title": "RecentSearches", "type": "object"}, "Recommendation": {"properties": {"decision": {"$ref": "#/components/schemas/Decision", "description": "TrueBiz's overall verdict on the business. `Pass` indicates the business cleared review; `Fail` indicates one or more risk indicators were severe enough to fail the business.", "example": "Pass"}}, "required": ["decision"], "title": "Recommendation", "type": "object"}, "ReferringSite": {"properties": {"url": {"anyOf": [{"format": "uri", "minLength": 1, "type": "string"}, {"type": "null"}], "description": "Link to the referring site.", "example": null, "title": "URL"}, "traffic_share": {"anyOf": [{"type": "number"}, {"type": "null"}], "description": "Share of total traffic coming from the referring traffic.", "example": null, "title": "Traffic Share"}, "screenshot_image_link": {"anyOf": [{"format": "uri", "minLength": 1, "type": "string"}, {"type": "null"}], "description": "A link to the full website screenshot image.", "example": null, "title": "Screenshot Image"}}, "title": "ReferringSite", "type": "object"}, "Registrar": {"properties": {"name": {"default": "", "description": "The name of the registrar.", "example": "MarkMonitor, Inc.", "maxLength": 2048, "minLength": 1, "nullable": false, "title": "Registrar name", "type": "string"}, "country": {"default": "", "description": "The country the registrar is primarily located in.", "example": "United States", "maxLength": 2048, "minLength": 1, "nullable": false, "title": "Registrar country", "type": "string"}, "website": {"anyOf": [{"format": "uri", "maxLength": 2083, "minLength": 1, "type": "string"}, {"type": "null"}], "description": "The primary website of the registrar.", "example": "https://markmonitor.com", "title": "Registrar website"}}, "title": "Registrar", "type": "object"}, "Risk": {"properties": {"category": {"default": "", "description": "The general area this risk classification belongs to.", "example": "website", "maxLength": 64, "minLength": 1, "title": "Category", "type": "string"}, "subcategory": {"default": "", "description": "The subdivision of the category.", "example": "security", "maxLength": 64, "minLength": 1, "title": "Subcategory", "type": "string"}, "name": {"default": "", "description": "The machine-readable name of the risk element being considered.", "example": "ssl_configuration", "maxLength": 255, "minLength": 1, "title": "Name", "type": "string"}, "display_name": {"default": "", "description": "The human-readable name of the risk element being considered.", "example": "Webserver SSL configuration", "maxLength": 255, "minLength": 1, "title": "Display name", "type": "string"}, "score": {"default": "", "description": "The percentage score of how risky we consider the data for this item to be, denoted as a flat integer that should be divided by 100 (e.g. 1000 -> 10%). Higher numbers are more risky.", "example": 0, "maximum": 10000, "minimum": 0, "title": "Score", "type": "integer"}, "description": {"default": "", "description": "A plaintext explanation of the risk.", "example": "The website's SSL configuration is not valid, indicating site security is not well maintained.", "maxLength": 512, "minLength": 1, "title": "Description", "type": "string"}, "classification_type": {"allOf": [{"$ref": "#/components/schemas/RiskType"}], "default": "Validity", "description": "The classification type indicating whether the data point(s) find that this is an indicatorof validity, risk, or something your team should take notice of.", "example": "Validity", "nullable": false, "title": "Classification type"}}, "title": "Risk", "type": "object"}, "RiskAnalysis": {"properties": {"fraud_risk": {"anyOf": [{"$ref": "#/components/schemas/FraudRisk"}, {"type": "null"}]}}, "title": "RiskAnalysis", "type": "object"}, "RiskIndicators": {"properties": {"validity": {"default": [], "description": "A list of data points that indicate the business's legitimacy.", "example": [], "items": {"$ref": "#/components/schemas/Risk"}, "title": "Validity indicators", "type": "array"}, "notice": {"default": [], "description": "A list of data points that indicate information you may want to take heed of before interacting with the business.", "example": [], "items": {"$ref": "#/components/schemas/Risk"}, "title": "Notice indicators", "type": "array"}, "risk": {"default": [], "description": "A list of data points that indicate the risk of interacting with the business.", "example": [], "items": {"$ref": "#/components/schemas/Risk"}, "title": "Risk indicators", "type": "array"}}, "title": "RiskIndicators", "type": "object"}, "RiskType": {"enum": ["Validity", "Notice", "Risk"], "title": "RiskType", "type": "string"}, "Screenshot": {"properties": {"fullpage_image_link": {"anyOf": [{"format": "uri", "minLength": 1, "type": "string"}, {"type": "null"}], "description": "A link to the full website screenshot image.", "example": null, "title": "Fullpage Screenshot Image"}, "cropped_image_link": {"anyOf": [{"format": "uri", "minLength": 1, "type": "string"}, {"type": "null"}], "description": "A link to a website screenshot image cropped to above-the-fold.", "example": null, "title": "Cropped Screenshot Image"}}, "title": "Screenshot", "type": "object"}, "SocialMediaProfile": {"properties": {"url": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The URL of the company's social media profile page.", "example": "https://www.facebook.com/uber", "title": "url"}, "like_count": {"anyOf": [{"type": "integer"}, {"type": "null"}], "description": "The number of likes or followers of this social media page.", "example": "https://www.facebook.com/uber", "title": "Number of likes"}, "last_posted_content_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "description": "The date and time of the last post made on this page.", "example": "2023-06-04T11:05:00Z", "title": "Last posted content at"}, "page_created_at": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "description": "The date this page was created on.", "example": "2010-01-04", "title": "Last posted content at"}, "is_verified": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "Indicates whether the page is verified by the social provider.", "example": true, "title": "verified"}, "is_business": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "Indicates whether the page is a business account.", "example": true, "title": "Business Profile"}, "is_private": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "Indicates whether the page is private.", "example": false, "title": "Private"}, "activity_level": {"anyOf": [{"$ref": "#/components/schemas/ActivityLevel"}, {"type": "null"}], "description": "The activity level of the profile.", "example": "High", "title": "Activity Level"}, "follower_count": {"anyOf": [{"type": "integer"}, {"type": "null"}], "description": "The number of followers of the profile.", "example": 1000, "title": "Follower Count"}, "follow_ratio": {"anyOf": [{"$ref": "#/components/schemas/FollowRatio"}, {"type": "null"}], "description": "The follow ratio of the profile.", "example": "High", "title": "Follow Ratio"}, "post_quantity": {"anyOf": [{"type": "integer"}, {"type": "null"}], "description": "The number of posts made by the profile.", "example": 100, "title": "Post Quantity"}, "average_engagement": {"anyOf": [{"$ref": "#/components/schemas/AverageEngagement"}, {"type": "null"}], "description": "The average engagement level of the profile.", "example": "Medium", "title": "Average Engagement"}, "is_age_restricted": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "Indicates whether the profile has age restrictions.", "example": false, "title": "Age Restricted"}, "most_recent_post_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The URL of the most recent post made by the profile.", "example": "https://www.facebook.com/uber/posts/123456789", "title": "Most Recent Post URL"}, "most_recent_post_text": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The text content of the most recent post made by the profile.", "example": "Excited to announce our new partnership!", "title": "Most Recent Post Text"}, "most_recent_post_image": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The URL of the image in the most recent post made by the profile.", "title": "Most Recent Post Image"}, "location": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The location associated with the profile.", "example": "San Francisco, CA", "title": "Location"}}, "title": "SocialMediaProfile", "type": "object"}, "SubmittedDescriptionAnalysis": {"properties": {"text": {"title": "Text", "type": "string"}, "match_type": {"$ref": "#/components/schemas/SubmittedDescriptionMatchType"}}, "required": ["text", "match_type"], "title": "SubmittedDescriptionAnalysis", "type": "object"}, "SubmittedDescriptionMatchType": {"enum": ["Full match", "Partial match", "No match"], "title": "SubmittedDescriptionMatchType", "type": "string"}, "TechActivityMonth": {"properties": {"year": {"anyOf": [{"type": "integer"}, {"type": "null"}], "description": "The year of the record.", "example": 2022, "title": "Year"}, "month": {"anyOf": [{"type": "integer"}, {"type": "null"}], "description": "The month of the record.", "example": 11, "title": "Month"}, "added": {"anyOf": [{"type": "integer"}, {"type": "null"}], "description": "The number of added website technologies during this month.", "example": 5, "title": "Added"}, "removed": {"anyOf": [{"type": "integer"}, {"type": "null"}], "description": "The number of removed website technologies during this month.", "example": 5, "title": "Removed"}, "total": {"anyOf": [{"type": "integer"}, {"type": "null"}], "description": "The number of active website technologies during this month.", "example": 5, "title": "total"}}, "title": "TechActivityMonth", "type": "object"}, "TechSpendRecord": {"properties": {"spend": {"anyOf": [{"type": "integer"}, {"type": "null"}], "description": "The estimated technology spend at a historical date.", "example": 1000, "title": "Spend"}, "detected_date": {"anyOf": [{"format": "date", "type": "string"}, {"type": "null"}], "description": "The date of the estimate.", "example": "2021-12-15", "title": "Date"}}, "title": "TechSpendRecord", "type": "object"}, "TopKeywords": {"properties": {"organic": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "description": "The top organic keywords driving traffic to the site.", "example": ["anvils", "cartoon anvils"], "title": "Organic keywords"}, "paid": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "description": "The top paid keywords driving traffic to the site.", "example": ["example", "example2"], "title": "Paid keywords"}}, "title": "TopKeywords", "type": "object"}, "TrafficScore": {"enum": ["UNKNOWN", "LOW", "MEDIUM", "HIGH"], "title": "TrafficScore", "type": "string"}, "TrafficSources": {"description": "Traffic source breakdown as shares summing to ~1.0.", "properties": {"search": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Search"}, "social": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Social"}, "display_ads": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Display Ads"}, "direct": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Direct"}, "referrals": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Referrals"}, "mail": {"anyOf": [{"type": "number"}, {"type": "null"}], "title": "Mail"}}, "title": "TrafficSources", "type": "object"}, "WebsiteContent": {"properties": {"evaluated_url": {"anyOf": [{"format": "uri", "maxLength": 2083, "minLength": 1, "type": "string"}, {"type": "null"}], "description": "The url that was evaluated for content related information.", "example": "https://www.acme.com/", "title": "Evaluated URL"}, "title": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The evaluated url's title as recorded in the site's markup.", "example": "Acme Inc. | World's Best Manufacturer of Anvils", "title": "Website title"}, "description": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The evaluated url's description as recorded in the site's markup.", "example": "Having trouble with a pesky road runner?  Buy an Acme Anvil and have no problems tomorrow!", "title": "Website title"}, "has_placeholder_text": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "default": false, "description": "Indicates whether we discovered what is likely to be placeholder text, like lorem ipsum strings.", "example": false, "title": "Has placeholder text?"}, "privacy_policy_link": {"anyOf": [{"format": "uri", "maxLength": 2083, "minLength": 1, "type": "string"}, {"type": "null"}], "description": "The discovered URL of a privacy policy linked from the main page.", "example": "https://acme.com/privacy", "title": "Privacy policy link"}, "is_privacy_policy_suspicious": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "Indicates whether our inspection of the privacy policy found indicators of risk.", "example": false, "title": "Is privacy policy suspicious?"}, "terms_of_service_link": {"anyOf": [{"format": "uri", "maxLength": 2083, "minLength": 1, "type": "string"}, {"type": "null"}], "description": "The discovered URL of a Terms of Service policy linked from the main page.", "example": "https://acme.com/terms", "title": "Terms of service policy link"}, "is_terms_of_service_suspicious": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "Indicates whether our inspection of the terms of service found indicators of risk.", "example": false, "title": "Is terms of service suspicious?"}, "return_policy_link": {"anyOf": [{"format": "uri", "maxLength": 2083, "minLength": 1, "type": "string"}, {"type": "null"}], "description": "The discovered URL of a return policy linked from the main page.", "example": "https://acme.com/return", "title": "Return policy link"}, "refund_policy_link": {"anyOf": [{"format": "uri", "maxLength": 2083, "minLength": 1, "type": "string"}, {"type": "null"}], "description": "The discovered URL of a refund policy linked from the main page.", "example": "https://acme.com/refund", "title": "Refund policy link"}, "cancellation_policy_link": {"anyOf": [{"format": "uri", "maxLength": 2083, "minLength": 1, "type": "string"}, {"type": "null"}], "description": "The discovered URL of a cancellation policy linked from the main page.", "example": "https://acme.com/cancellation", "title": "Cancellation policy link"}, "shipping_policy_link": {"anyOf": [{"format": "uri", "maxLength": 2083, "minLength": 1, "type": "string"}, {"type": "null"}], "description": "The discovered URL of a shipping / delivery policy linked from the main page.", "example": "https://acme.com/shipping", "title": "Shipping policy link"}, "opengraph_image_link": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The URL of the opengraph image.", "example": "https://acme.com/image.png", "title": "Opengraph Image Link"}, "primary_language": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Evaluation of the primary language used for web content.", "example": "English", "title": "Primary language"}, "has_subscriptions": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "Indicates whether we found evidence of subscription services on the website.", "example": true, "title": "Subscriptions"}, "is_under_construction": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "Indicates whether we found evidence that the content is a basic under construction shell website.", "example": null, "title": "Is under construction?"}, "pages_linked_from_homepage": {"anyOf": [{"type": "integer"}, {"type": "null"}], "description": "The number of links from the homepage to other pages at the domain.", "example": 15, "title": "Homepage Internal Link Count"}, "content_flags": {"default": [], "description": "Deprecated: use content_flag_details for structured data. A list of content flag name strings.", "example": ["Tobacco"], "items": {}, "title": "Content flags", "type": "array"}, "content_flag_details": {"anyOf": [{"items": {"$ref": "#/components/schemas/ContentFlagDetail"}, "type": "array"}, {"type": "null"}], "description": "Structured details for each content flag, including reasoning and the page analyzed.", "title": "Content flag details"}, "custom_content_flags": {"default": [], "description": "Deprecated: This field is no longer populated and will always return an empty list. Use content_flag_details instead. This field will be removed in a future release.", "example": [], "items": {}, "title": "Custom content flags", "type": "array"}, "detected_brands": {"anyOf": [{"items": {"$ref": "#/components/schemas/DetectedBrand"}, "type": "array"}, {"type": "null"}], "description": "The brands detected in the web content.", "title": "Detected brands"}, "policy_analysis": {"anyOf": [{"$ref": "#/components/schemas/PolicyAnalysis"}, {"type": "null"}], "description": "The analysis of the privacy policy, terms of service, and other policies.", "title": "Policy analysis"}, "duplicate_websites": {"anyOf": [{"items": {"$ref": "#/components/schemas/DuplicateMatch"}, "type": "array"}, {"type": "null"}], "description": "Urls that match more than half of the first 250 words of the company's website.", "example": [{"percent_matched": 96, "url": "https://acmeanvils.com"}], "title": "Duplicate websites"}, "payment_processors": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "description": "A list of payment processors currently used on the company's website.", "example": ["Stripe"], "title": "Payment processors"}, "multi_level_marketing_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The name of a known multi-level-marketing brand found in the web content.", "example": "Amway", "title": "Multi level marketing name"}}, "title": "WebsiteContent", "type": "object"}, "WebsiteTraffic": {"properties": {"visits_per_month": {"anyOf": [{"type": "integer"}, {"type": "null"}], "description": "The number of website visits in the last full month.", "example": 10000, "title": "Visit per month"}, "time_on_site": {"anyOf": [{"type": "number"}, {"type": "null"}], "description": "The average number of seconds a user spent on the site, during the last full month.", "example": 15.55, "title": "Time on site"}, "pages_per_visit": {"anyOf": [{"type": "number"}, {"type": "null"}], "description": "The average number of pages visited, during the last full month.", "example": 3.75, "title": "Pages per visit"}, "bounce_rate": {"anyOf": [{"type": "number"}, {"type": "null"}], "description": "The percentage of visitors that only visited a single page, during the last full month.", "example": 15.55, "title": "Bounce rate"}, "historical_visits_per_month": {"anyOf": [{"items": {"$ref": "#/components/schemas/MonthlyVisits"}, "type": "array"}, {"type": "null"}], "description": "The count of monthly visits over the prior few months.", "title": "Historical visits per month"}, "source_shares": {"anyOf": [{"$ref": "#/components/schemas/TrafficSources"}, {"type": "null"}], "description": "A mapping to the share of traffic by source: search, social, paid, direct, referrals, and mail.", "title": "Source traffic share"}, "top_country_shares": {"anyOf": [{"items": {"$ref": "#/components/schemas/CountryShare"}, "type": "array"}, {"type": "null"}], "description": "A list of the top countries and their share of visits during the last full month.", "title": "Country traffic share"}, "paid_search_share": {"anyOf": [{"type": "number"}, {"type": "null"}], "description": "The percentage of search traffic that is paid.", "example": 0.5, "title": "Paid search share"}, "google_results_count": {"anyOf": [{"type": "integer"}, {"type": "null"}], "description": "The number of google results when searching for \"example.com\"", "example": 10000, "title": "Google results count"}, "top_referring_sites": {"anyOf": [{"items": {"$ref": "#/components/schemas/ReferringSite"}, "type": "array"}, {"type": "null"}], "description": "A list of sites referring at least 2.5% of total traffic", "example": [{"traffic_share": 0.35, "url": "https://referrer.co"}], "title": "Top referring sites"}, "paid_search_visits": {"anyOf": [{"type": "integer"}, {"type": "null"}], "description": "The number of visits coming from paid search ads, during the last full month.", "example": 1000, "title": "Paid search visits"}, "top_keywords": {"anyOf": [{"$ref": "#/components/schemas/TopKeywords"}, {"type": "null"}], "description": "The top organic and paid keywords driving traffic to the site.", "title": "Top keywords"}, "anomalous_keywords": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "description": "A list of keywords that are not related to the business description.", "example": ["firearms", "gummy bears"], "title": "Anomalous keywords"}}, "title": "WebsiteTraffic", "type": "object"}, "core__api__schemas__customer_review__Analysis": {"properties": {"text": {"description": "The text of the analysis", "title": "Text", "type": "string"}, "level_of_concern": {"anyOf": [{"$ref": "#/components/schemas/LevelOfConcern"}, {"type": "null"}], "description": "The level of concern based on the analysis", "title": "Level of concern"}, "flags": {"anyOf": [{"items": {"$ref": "#/components/schemas/ConcernFlag"}, "type": "array"}, {"type": "null"}], "description": "A list of flags indicating which concerns were raised in the analysis", "title": "Flags"}}, "required": ["text"], "title": "Analysis", "type": "object"}, "core__api__schemas__policy_analysis__Analysis": {"properties": {"question": {"description": "The question that was asked.", "example": "Does the policy detail the website's privacy policy and how the data of customers is protected, used or disclosed?", "title": "Question", "type": "string"}, "answer": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The answer to the question.", "example": "Yes", "title": "Answer"}, "sources": {"description": "The sources of the answer.", "example": ["https://www.acme.com/privacy", "https://www.acme.com/privacy2"], "items": {"format": "uri", "maxLength": 2083, "minLength": 1, "type": "string"}, "title": "Sources", "type": "array"}}, "required": ["question", "sources"], "title": "Analysis", "type": "object"}, "BadRequest": {"example": {"message": "Bad request."}, "properties": {"message": {"title": "Message", "type": "string"}}, "required": ["message"], "title": "BadRequest", "type": "object"}, "Unauthorized": {"example": {"message": "Unauthorized."}, "properties": {"message": {"title": "Message", "type": "string"}}, "required": ["message"], "title": "Unauthorized", "type": "object"}, "NotFound": {"example": {"message": "Not found."}, "properties": {"message": {"title": "Message", "type": "string"}}, "required": ["message"], "title": "NotFound", "type": "object"}, "InvalidInputParameter": {"example": {"errors": ["This field is required."], "field_name": "field1"}, "properties": {"field_name": {"title": "Field Name", "type": "string"}, "errors": {"default": [], "items": {"type": "string"}, "title": "Errors", "type": "array"}}, "required": ["field_name"], "title": "InvalidInputParameter", "type": "object"}, "InvalidRequest": {"example": {"invalid_parameters": [{"errors": ["This field is required."], "field_name": "field1"}, {"errors": ["There's something strange in your input."], "field_name": "non_field_errors"}], "message": "Invalid input."}, "properties": {"message": {"title": "Message", "type": "string"}, "invalid_parameters": {"default": [], "items": {"$ref": "#/components/schemas/InvalidInputParameter"}, "title": "Invalid Parameters", "type": "array"}}, "required": ["message"], "title": "InvalidRequest", "type": "object"}, "TooManyRequests": {"example": {"message": "You have exceeded your current quota of 10 requests/second for this api endpoint.  Please slow down."}, "properties": {"message": {"title": "Message", "type": "string"}}, "required": ["message"], "title": "TooManyRequests", "type": "object"}, "InternalServerError": {"example": {"message": "An internal server error occurred.  Our support team has already been notified.  Please try again later.  If you continue to get this error, please reach out to your account manager."}, "properties": {"message": {"title": "Message", "type": "string"}}, "required": ["message"], "title": "InternalServerError", "type": "object"}, "GatewayTimeout": {"example": {"message": "Request timed out."}, "properties": {"message": {"title": "Message", "type": "string"}}, "required": ["message"], "title": "GatewayTimeout", "type": "object"}, "AsyncMessage": {"properties": {"message": {"default": "", "description": "The message response from the server.", "example": "Request for info@example.com is processing.", "title": "Message", "type": "string"}, "tracking_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "description": "ID used to track this request in TrueBiz's application.", "example": "00000000-0000-0000-0000-000000000000", "title": "Tracking ID"}}, "title": "AsyncMessage", "type": "object"}, "CompanyQuery": {"example": {"address_line_1": "123 Main St.", "address_line_2": "Suite 100", "city": "Memphis", "country": "USA", "domain": "example.net", "external_tracking_ref": "abc_defg12345678", "match_profile_id": "00000000-0000-0000-0000-000000000000", "postal_code": "37501", "state_province": "TN", "submitted_business_name": "Bob's Burritos", "submitted_description": "Bob's Burritos is a local institution proudly serving top quality Mexican street food to the Memphis area since 1967.", "submitted_email": "bob@yahoo.com", "submitted_full_name": "Bob Smith", "submitted_phone": "+19015555555"}, "properties": {"domain": {"anyOf": [{"maxLength": 255, "type": "string"}, {"type": "null"}], "description": "The business's domain. **Required unless you provide `submitted_business_name` together with an address.** Accepts a bare domain, full URL, or email \u2014 we reduce it to the registered domain per Mozilla's Public Suffix List. (RFC 1034/1035 for ASCII, IDNA2008 for internationalized.)", "example": "example.net", "title": "Domain"}, "submitted_business_name": {"anyOf": [{"maxLength": 1024, "type": "string"}, {"type": "null"}], "description": "The business's name. **Required (along with an address) if you do not provide `domain`.**", "example": "Bob's Burritos", "title": "Submitted Business Name"}, "submitted_description": {"anyOf": [{"maxLength": 2048, "type": "string"}, {"type": "null"}], "description": "A description of the business's industry/operations", "example": "Bob's Burritos is a local institution proudly serving top quality Mexican street food to the Memphis area since 1967.", "title": "Submitted Description"}, "address_line_1": {"anyOf": [{"maxLength": 2048, "type": "string"}, {"type": "null"}], "description": "Line 1 of the business address. **At least one address field is required when identifying the business by name instead of domain.**", "example": "123 Main St.", "title": "Address Line 1"}, "address_line_2": {"anyOf": [{"maxLength": 2048, "type": "string"}, {"type": "null"}], "description": "Line 2 of the business address.", "example": "Suite 100", "title": "Address Line 2"}, "city": {"anyOf": [{"maxLength": 255, "type": "string"}, {"type": "null"}], "description": "City of the business address.", "example": "Memphis", "title": "City"}, "state_province": {"anyOf": [{"maxLength": 255, "type": "string"}, {"type": "null"}], "description": "State/Province of the business address.", "example": "TN", "title": "State/Province"}, "postal_code": {"anyOf": [{"maxLength": 255, "type": "string"}, {"type": "null"}], "description": "Postal code of the business address.", "example": "37501", "title": "Postal Code"}, "country": {"anyOf": [{"maxLength": 255, "type": "string"}, {"type": "null"}], "description": "Country of the business address", "example": "USA", "title": "Country"}, "submitted_email": {"anyOf": [{"maxLength": 254, "type": "string"}, {"type": "null"}], "description": "The email of the business or applicant. (Emails should conform to the IETF RFC 5322 spec)", "example": "bob@yahoo.com", "title": "Submitted email"}, "submitted_phone": {"anyOf": [{"maxLength": 255, "type": "string"}, {"type": "null"}], "description": "The phone number of the business or applicant. (Phone numbers should conform to the ITU-T E.164 standard)", "example": "+19015555555", "title": "Submitted Phone"}, "submitted_full_name": {"anyOf": [{"maxLength": 1024, "type": "string"}, {"type": "null"}], "description": "The full name of the applicant. ", "example": "Bob Smith", "title": "Submitted Full Name"}, "match_profile_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "description": "ID of the TrueBiz match profile to use when processing the request.", "example": "00000000-0000-0000-0000-000000000000", "title": "Match Profile ID"}, "external_tracking_ref": {"anyOf": [{"maxLength": 255, "type": "string"}, {"type": "null"}], "description": "ID used in your system to track this request.", "example": "abc_defg12345678", "title": "External tracking reference"}}, "title": "CompanyQuery", "type": "object"}, "PreconditionFailed": {"example": {"message": "Not found."}, "properties": {"message": {"title": "Message", "type": "string"}}, "required": ["message"], "title": "PreconditionFailed", "type": "object"}, "AsyncCompanyQuery": {"example": {"address_line_1": "123 Main St.", "address_line_2": "Suite 100", "city": "Memphis", "country": "USA", "domain": "example.net", "external_tracking_ref": "abc_defg12345678", "match_profile_id": "00000000-0000-0000-0000-000000000000", "postal_code": "37501", "state_province": "TN", "submitted_business_name": "Bob's Burritos", "submitted_description": "Bob's Burritos is a local institution proudly serving top quality Mexican street food to the Memphis area since 1967.", "submitted_email": "bob@yahoo.com", "submitted_full_name": "Bob Smith", "submitted_phone": "+19015555555"}, "properties": {"domain": {"anyOf": [{"maxLength": 255, "type": "string"}, {"type": "null"}], "description": "The business's domain. **Required unless you provide `submitted_business_name` together with an address.** Accepts a bare domain, full URL, or email \u2014 we reduce it to the registered domain per Mozilla's Public Suffix List. (RFC 1034/1035 for ASCII, IDNA2008 for internationalized.)", "example": "example.net", "title": "Domain"}, "submitted_business_name": {"anyOf": [{"maxLength": 1024, "type": "string"}, {"type": "null"}], "description": "The business's name. **Required (along with an address) if you do not provide `domain`.**", "example": "Bob's Burritos", "title": "Submitted Business Name"}, "submitted_description": {"anyOf": [{"maxLength": 2048, "type": "string"}, {"type": "null"}], "description": "A description of the business's industry/operations", "example": "Bob's Burritos is a local institution proudly serving top quality Mexican street food to the Memphis area since 1967.", "title": "Submitted Description"}, "address_line_1": {"anyOf": [{"maxLength": 2048, "type": "string"}, {"type": "null"}], "description": "Line 1 of the business address. **At least one address field is required when identifying the business by name instead of domain.**", "example": "123 Main St.", "title": "Address Line 1"}, "address_line_2": {"anyOf": [{"maxLength": 2048, "type": "string"}, {"type": "null"}], "description": "Line 2 of the business address.", "example": "Suite 100", "title": "Address Line 2"}, "city": {"anyOf": [{"maxLength": 255, "type": "string"}, {"type": "null"}], "description": "City of the business address.", "example": "Memphis", "title": "City"}, "state_province": {"anyOf": [{"maxLength": 255, "type": "string"}, {"type": "null"}], "description": "State/Province of the business address.", "example": "TN", "title": "State/Province"}, "postal_code": {"anyOf": [{"maxLength": 255, "type": "string"}, {"type": "null"}], "description": "Postal code of the business address.", "example": "37501", "title": "Postal Code"}, "country": {"anyOf": [{"maxLength": 255, "type": "string"}, {"type": "null"}], "description": "Country of the business address", "example": "USA", "title": "Country"}, "submitted_email": {"anyOf": [{"maxLength": 254, "type": "string"}, {"type": "null"}], "description": "The email of the business or applicant. (Emails should conform to the IETF RFC 5322 spec)", "example": "bob@yahoo.com", "title": "Submitted email"}, "submitted_phone": {"anyOf": [{"maxLength": 255, "type": "string"}, {"type": "null"}], "description": "The phone number of the business or applicant. (Phone numbers should conform to the ITU-T E.164 standard)", "example": "+19015555555", "title": "Submitted Phone"}, "submitted_full_name": {"anyOf": [{"maxLength": 1024, "type": "string"}, {"type": "null"}], "description": "The full name of the applicant. ", "example": "Bob Smith", "title": "Submitted Full Name"}, "match_profile_id": {"anyOf": [{"format": "uuid", "type": "string"}, {"type": "null"}], "description": "ID of the TrueBiz match profile to use when processing the request.", "example": "00000000-0000-0000-0000-000000000000", "title": "Match Profile ID"}, "external_tracking_ref": {"anyOf": [{"maxLength": 255, "type": "string"}, {"type": "null"}], "description": "ID used in your system to track this request.", "example": "abc_defg12345678", "title": "External tracking reference"}}, "title": "AsyncCompanyQuery", "type": "object"}, "EvaluateBlockResponse": {"properties": {"domain": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The domain to be blocked.", "example": "example.net", "title": "Domain"}, "phone": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The phone number to be blocked.", "example": "3136739082", "title": "Phone"}, "email": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The email to be blocked.", "example": "test@truebiz.io", "title": "Email"}, "address": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The address to be blocked.", "example": "104 Truebiz Lane", "title": "Address"}, "phone_without_country_code": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Phone number without country code", "example": "US", "title": "Phone without country code"}}, "title": "EvaluateBlockResponse", "type": "object"}, "EvaluateBlockInput": {"properties": {"domain": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The domain to be blocked.", "example": "example.net", "title": "Domain"}, "phone": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The phone number to be blocked.", "example": "3136739082", "title": "Phone"}, "email": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The email to be blocked.", "example": "test@truebiz.io", "title": "Email"}, "address_line_1": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The address to be blocked.", "example": "104 Truebiz Lane", "title": "Address Line 1"}, "address_line_2": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The address to be blocked.", "example": "104 Truebiz Lane", "title": "Address Line 2"}, "city": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The city to be blocked.", "example": "Detroit", "title": "Address"}, "state": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The state which the address belongs too", "example": "MI", "title": "State"}, "zipcode": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The zip code to which the address belongs too.", "example": "48178", "title": "Zip Code"}, "country": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The country which the address belongs too.", "example": "US", "title": "Country Code"}, "phone_without_country_code": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Phone number without country code", "example": "US", "title": "Phone without country code"}}, "title": "EvaluateBlockInput", "type": "object"}, "BlockMessage": {"example": {"message": "Block created for example.net."}, "properties": {"message": {"title": "Message", "type": "string"}}, "required": ["message"], "title": "BlockMessage", "type": "object"}, "BlockInput": {"properties": {"domain": {"description": "The domain to be blocked.", "example": "example.net", "nullable": false, "title": "Domain", "type": "string"}, "phone": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The phone number to be blocked.", "example": "3136739082", "title": "Phone"}, "email": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The email to be blocked.", "example": "test@truebiz.io", "title": "Email"}, "address_line_1": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The address to be blocked.", "example": "104 Truebiz Lane", "title": "Address Line 1"}, "address_line_2": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The address to be blocked.", "example": "104 Truebiz Lane", "title": "Address Line 2"}, "city": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The city to be blocked.", "example": "Detroit", "title": "Address"}, "state": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The state which the address belongs too", "example": "MI", "title": "State"}, "zipcode": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The zip code to which the address belongs too.", "example": "48178", "title": "Zip Code"}, "country": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The country which the address belongs too.", "example": "US", "title": "Country Code"}, "reason": {"$ref": "#/components/schemas/BlockReason", "description": "The reason for blocking this domain:\n* Credit and Financial Risk: This business is not creditworthy or interacting with them represents a financial risk to your business.\n  * Insufficient or poor credit history.\n  * Adverse financial ratios.\n  * Insufficient or unacceptable collateral.\n  * High-risk collateral location.\n  * History of bankruptcy or default.\n* Compliance and Regulatory: Interacting with this business would cause regulatory or compliance issues.\n  * Incomplete application information.\n  * Non-compliance with KYC/AML regulations.\n  * Sanctions or watchlist issues.\n  * Lack of required licenses or permits.\n  * Industry or sector restrictions.\n* Business Profile Risk: This business's profile and behavior represents a risk to interact with.\n  * Insufficient business history or experience.\n  * Inadequate or unstable revenue.\n  * Lack of a viable business plan or strategy.\n  * High employee turnover.\n  * Negative industry outlook or trends.\n  * Negative or unverified customer feedback.\n  * Poor reputation or history of unethical practices.\n  * Prior negative experience with the client.\n* Internal Policy: Interacting with this business is forbidden due to internal policies.\n  * Conflicts of interest.\n  * Lending or investment limits reached.\n  * Risk appetite or portfolio concentration concerns.\n  * Limited resources or expertise in the specific industry or sector.\n  * Strategic shift or change in focus.\n* Fraudulent Application: The person applying on behalf does not have a legitimate reason to request services.\n  * Identity theft or impersonation.\n  * Misleading or false data.\n  * Collusion or insider fraud.\n* Fraudulent Business: The business in question appears to be fraudulent.\n  * Not a real business.\n  * Fabricated financial documents.\n  * Shell companies or nominee arrangements.\n* Other: Any other reason.\n", "example": "Fraudulent Application", "nullable": false, "title": "Reason"}, "other_explanation": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The reason for blocking this domain when other is selected.", "example": null, "title": "Other explanation"}, "notes": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "", "example": null, "title": "Notes"}, "expires_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "description": "The date and time this block should expire at.  If you do not set this value, it will default to five years from the creation date.", "example": "2028-12-31T23:59:59.999999", "title": "Expires at"}}, "required": ["domain", "reason"], "title": "BlockInput", "type": "object"}, "BlockReason": {"enum": ["Credit and Financial Risk", "Compliance and Regulatory", "Business Profile Risk", "Internal Policy", "Fraudulent Application", "Fraudulent Business", "Other"], "title": "BlockReason", "type": "string"}, "DeleteBlockInput": {"properties": {"domain": {"description": "The domain to be blocked.", "example": "example.net", "nullable": false, "title": "Domain", "type": "string"}}, "required": ["domain"], "title": "DeleteBlockInput", "type": "object"}, "Input": {"properties": {"limit": {"default": 50, "title": "Limit", "type": "integer"}, "offset": {"default": 0, "title": "Offset", "type": "integer"}}, "title": "Input", "type": "object"}, "BlockedDomain": {"properties": {"domain": {"description": "The domain to block.", "maxLength": 255, "title": "Domain", "type": "string"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "expires_at": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "description": "The time this blocked domain should expire at (default: 5 years from creation).", "title": "Expires At"}, "reason": {"description": "The reason for blocking this domain:\n* Credit and Financial Risk: This business is not creditworthy or interacting with them represents a financial risk to your business.\n  * Insufficient or poor credit history.\n  * Adverse financial ratios.\n  * Insufficient or unacceptable collateral.\n  * High-risk collateral location.\n  * History of bankruptcy or default.\n* Compliance and Regulatory: Interacting with this business would cause regulatory or compliance issues.\n  * Incomplete application information.\n  * Non-compliance with KYC/AML regulations.\n  * Sanctions or watchlist issues.\n  * Lack of required licenses or permits.\n  * Industry or sector restrictions.\n* Business Profile Risk: This business's profile and behavior represents a risk to interact with.\n  * Insufficient business history or experience.\n  * Inadequate or unstable revenue.\n  * Lack of a viable business plan or strategy.\n  * High employee turnover.\n  * Negative industry outlook or trends.\n  * Negative or unverified customer feedback.\n  * Poor reputation or history of unethical practices.\n  * Prior negative experience with the client.\n* Internal Policy: Interacting with this business is forbidden due to internal policies.\n  * Conflicts of interest.\n  * Lending or investment limits reached.\n  * Risk appetite or portfolio concentration concerns.\n  * Limited resources or expertise in the specific industry or sector.\n  * Strategic shift or change in focus.\n* Fraudulent Application: The person applying on behalf does not have a legitimate reason to request services.\n  * Identity theft or impersonation.\n  * Misleading or false data.\n  * Collusion or insider fraud.\n* Fraudulent Business: The business in question appears to be fraudulent.\n  * Not a real business.\n  * Fabricated financial documents.\n  * Shell companies or nominee arrangements.\n* Other: Any other reason.\n", "maxLength": 255, "title": "Reason", "type": "string"}, "other_explanation": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "For what other reason did your company want to block this domain?", "title": "Other Explanation"}, "notes": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Notes about this block.", "title": "Notes"}}, "required": ["domain", "created_at", "reason"], "title": "BlockedDomain", "type": "object"}, "PagedBlockedDomain": {"properties": {"items": {"items": {"$ref": "#/components/schemas/BlockedDomain"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}, "limit": {"title": "Limit", "type": "integer"}, "offset": {"title": "Offset", "type": "integer"}}, "required": ["items", "count", "limit", "offset"], "title": "PagedBlockedDomain", "type": "object"}, "PDFSummary": {"description": "The pdf data (mime-type: application/pdf).", "example": null, "format": "binary", "nullable": false, "title": "PDF", "type": "string"}, "ResourceNotReady": {"example": {"message": "This resource is not yet ready. Please try again in 10 seconds."}, "properties": {"message": {"title": "Message", "type": "string"}}, "required": ["message"], "title": "ResourceNotReady", "type": "object"}, "NoContent": {"example": {"message": "This resource does not contain any content."}, "properties": {"message": {"title": "Message", "type": "string"}}, "required": ["message"], "title": "NoContent", "type": "object"}, "CombinedMetaLookup": {"properties": {"id": {"format": "uuid", "title": "Id", "type": "string"}, "term": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Term"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "status": {"title": "Status", "type": "string"}, "external_tracking_ref": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "External Tracking Ref"}, "report_type": {"title": "Report Type", "type": "string"}, "query": {"anyOf": [{"additionalProperties": true, "type": "object"}, {"type": "null"}], "title": "Query"}, "response": {"anyOf": [{"additionalProperties": true, "type": "object"}, {"type": "null"}], "title": "Response"}}, "required": ["id", "created_at", "status", "report_type"], "title": "CombinedMetaLookup", "type": "object"}, "PagedCombinedMetaLookup": {"properties": {"items": {"items": {"$ref": "#/components/schemas/CombinedMetaLookup"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}, "limit": {"title": "Limit", "type": "integer"}, "offset": {"title": "Offset", "type": "integer"}}, "required": ["items", "count", "limit", "offset"], "title": "PagedCombinedMetaLookup", "type": "object"}, "BusinessSearchResultExtended": {"description": "Extends BusinessSearchResult to allow optional business_name and business_description for lookup.", "properties": {"business_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Business Name"}, "business_description": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Business Description"}, "business_address": {"anyOf": [{}, {"type": "null"}], "title": "Business Address"}, "website": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The website of the business.", "title": "Website"}, "primary_mcc": {"anyOf": [{"$ref": "#/components/schemas/MCC"}, {"type": "null"}]}, "additional_mccs": {"anyOf": [{"items": {"$ref": "#/components/schemas/MCC"}, "type": "array"}, {"type": "null"}], "title": "Additional Mccs"}}, "title": "BusinessSearchResultExtended", "type": "object"}, "CreateSearchInputExtended": {"description": "Extends CreateSearchInput to allow optional business name for lookup.", "properties": {"submitted_business_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Submitted Business Name"}, "submitted_website": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The website of the business to search for. **Required unless you provide `submitted_business_name` together with an address.**", "title": "Submitted Website"}, "city": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The city where the business is located.", "title": "City"}, "state_province": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The state or province where the business is located.", "title": "State Province"}, "postal_code": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The postal code of the business location.", "title": "Postal Code"}, "country": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The country where the business is located. **At least one address field is required when identifying the business by name instead of website.**", "title": "Country"}, "external_tracking_ref": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "External Tracking Ref"}}, "title": "CreateSearchInputExtended", "type": "object"}, "IndustryLookup": {"additionalProperties": false, "properties": {"id": {"format": "uuid", "title": "Id", "type": "string"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "status": {"anyOf": [{"enum": ["PROCESSING", "FINISHED", "ERROR", "QUEUED"], "type": "string"}, {"type": "null"}], "title": "Status"}, "search_term": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Search Term"}, "search_query": {"anyOf": [{"$ref": "#/components/schemas/CreateSearchInputExtended"}, {"type": "null"}]}, "response_code": {"title": "Response Code", "type": "integer"}, "response_data": {"anyOf": [{"$ref": "#/components/schemas/BusinessSearchResultExtended"}, {"type": "null"}]}}, "required": ["id", "created_at", "response_code"], "title": "IndustryLookup", "type": "object"}, "MCC": {"properties": {"code": {"description": "The Merchant Category Code.", "title": "Code", "type": "string"}, "description": {"description": "The description of the Merchant Category.", "title": "Description", "type": "string"}}, "required": ["code", "description"], "title": "MCC", "type": "object"}, "PagedIndustryLookup": {"properties": {"items": {"items": {"$ref": "#/components/schemas/IndustryLookup"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}, "limit": {"title": "Limit", "type": "integer"}, "offset": {"title": "Offset", "type": "integer"}}, "required": ["items", "count", "limit", "offset"], "title": "PagedIndustryLookup", "type": "object"}, "CompanyLookup": {"additionalProperties": false, "properties": {"id": {"format": "uuid", "title": "Id", "type": "string"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "status": {"anyOf": [{"$ref": "#/components/schemas/CompanyMatchRequestStatuses"}, {"type": "null"}]}, "search_term": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Search Term"}, "search_query": {"anyOf": [{"$ref": "#/components/schemas/CompanyQuery"}, {"type": "null"}]}, "search_model": {"anyOf": [{"$ref": "#/components/schemas/SearchModel"}, {"type": "null"}]}, "response_code": {"title": "Response Code", "type": "integer"}, "response_data": {"anyOf": [{"additionalProperties": true, "type": "object"}, {"$ref": "#/components/schemas/Company"}], "title": "Response Data"}}, "required": ["id", "created_at", "response_code", "response_data"], "title": "CompanyLookup", "type": "object"}, "CompanyMatchRequestStatuses": {"enum": ["QUEUED", "PROCESSING", "FINISHED", "ERROR"], "title": "CompanyMatchRequestStatuses", "type": "string"}, "PagedCompanyLookup": {"properties": {"items": {"items": {"$ref": "#/components/schemas/CompanyLookup"}, "title": "Items", "type": "array"}, "count": {"title": "Count", "type": "integer"}, "limit": {"title": "Limit", "type": "integer"}, "offset": {"title": "Offset", "type": "integer"}}, "required": ["items", "count", "limit", "offset"], "title": "PagedCompanyLookup", "type": "object"}, "SearchModel": {"enum": ["STANDARD", "DEEP"], "title": "SearchModel", "type": "string"}, "MarketplaceLink": {"properties": {"is_marketplace_link": {"default": false, "description": "Is this a known marketplace site for selling goods or services?", "example": false, "title": "Is social media link?", "type": "boolean"}, "platform": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The marketplace platform this link is from.", "example": null, "title": "Marketplace platform"}}, "title": "MarketplaceLink", "type": "object"}, "SocialMediaLink": {"properties": {"is_social_media_link": {"default": false, "description": "Is this a known social media site?", "example": false, "title": "Is social media link?", "type": "boolean"}, "platform": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The social media platform this link is from.", "example": null, "title": "Social media platform"}}, "title": "SocialMediaLink", "type": "object"}, "StatusResponse": {"properties": {"alive": {"description": "Indicates whether the domain's webserver responded with a valid HTTP code before the request timed out.", "example": true, "title": "Alive", "type": "boolean"}, "social_media": {"$ref": "#/components/schemas/SocialMediaLink"}, "marketplace": {"$ref": "#/components/schemas/MarketplaceLink"}, "is_top_domain": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "A domain that is known to be one of the most popular sites on the internet.", "example": false, "title": "Is known top domain?"}, "is_hosting_provider_domain": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "A domain that is known to be owned by a hosting provider.", "example": false, "title": "Is known hosting provider domain?"}, "is_link_shortener_domain": {"anyOf": [{"type": "boolean"}, {"type": "null"}], "description": "A domain that is known to be owned by a link shortening service.", "example": false, "title": "Is known link shortening domain?"}}, "required": ["alive", "social_media", "marketplace"], "title": "StatusResponse", "type": "object"}, "WebsiteInput": {"properties": {"website": {"description": "The website URL to evaluate.", "example": "https://example.net/test?param1=value1", "title": "Website", "type": "string"}, "request_timeout": {"anyOf": [{"maximum": 30.0, "minimum": 2.0, "type": "number"}, {"type": "null"}], "default": 7.5, "description": "The maximum amount of time to spend on checking if the webserver is responsive.Adjusting this parameter to be shorter may cause valid but slow responding websites to be marked as not alive.  Adjusting this parameter to be longer may allow for more websites to be recognized as alive.", "example": 7.5, "title": "Request timeout"}}, "required": ["website"], "title": "WebsiteInput", "type": "object"}, "FlaggedCategory": {"properties": {"name": {"title": "Name", "type": "string"}, "description": {"title": "Description", "type": "string"}}, "required": ["name", "description"], "title": "FlaggedCategory", "type": "object"}, "FlaggedContent": {"properties": {"link": {"$ref": "#/components/schemas/FlaggedPageLink"}, "content": {"title": "Content", "type": "string"}}, "required": ["link", "content"], "title": "FlaggedContent", "type": "object"}, "FlaggedPageLink": {"properties": {"type": {"const": "io.truebiz.monitoring.link.page", "title": "Type", "type": "string"}, "href": {"title": "Href", "type": "string"}}, "required": ["type", "href"], "title": "FlaggedPageLink", "type": "object"}, "MonitoringAlert": {"properties": {"id": {"format": "uuid", "title": "Id", "type": "string"}, "created_at": {"format": "date-time", "title": "Created At", "type": "string"}, "domain": {"title": "Domain", "type": "string"}, "external_ref_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "External Ref Id"}, "flagged_categories": {"items": {"$ref": "#/components/schemas/FlaggedCategory"}, "title": "Flagged Categories", "type": "array"}, "flagged_content": {"items": {"$ref": "#/components/schemas/FlaggedContent"}, "title": "Flagged Content", "type": "array"}, "flagged_page_links": {"items": {"$ref": "#/components/schemas/FlaggedPageLink"}, "title": "Flagged Page Links", "type": "array"}, "flagged_people": {"items": {"$ref": "#/components/schemas/Person"}, "title": "Flagged People", "type": "array"}, "ui_portal_link": {"$ref": "#/components/schemas/UIPortalLink"}}, "required": ["id", "created_at", "domain", "flagged_categories", "flagged_content", "flagged_page_links", "flagged_people", "ui_portal_link"], "title": "MonitoringAlert", "type": "object"}, "UIPortalLink": {"properties": {"type": {"const": "io.truebiz.link.ui-detail", "title": "Type", "type": "string"}, "href": {"title": "Href", "type": "string"}}, "required": ["type", "href"], "title": "UIPortalLink", "type": "object"}, "Forbidden": {"example": {"message": "Forbidden."}, "properties": {"message": {"title": "Message", "type": "string"}}, "required": ["message"], "title": "Forbidden", "type": "object"}, "Conflict": {"example": {"message": "This resource is in conflict with another resource."}, "properties": {"message": {"title": "Message", "type": "string"}}, "required": ["message"], "title": "Conflict", "type": "object"}, "AlertsFilterSchema": {"properties": {"created_before": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "q": "created_at__lt", "title": "Created Before"}, "created_after": {"anyOf": [{"format": "date-time", "type": "string"}, {"type": "null"}], "q": "created_at__gte", "title": "Created After"}, "domain": {"anyOf": [{"items": {"anyOf": [{"type": "string"}, {"const": "[]", "type": "string"}]}, "type": "array"}, {"type": "null"}], "title": "Domain"}, "external_ref_id": {"anyOf": [{"items": {"anyOf": [{"type": "string"}, {"const": "[]", "type": "string"}]}, "type": "array"}, {"type": "null"}], "title": "External Ref Id"}, "flagged_categories": {"anyOf": [{"items": {"anyOf": [{"type": "string"}, {"const": "[]", "type": "string"}]}, "type": "array"}, {"type": "null"}], "title": "Flagged Categories"}, "order_by": {"anyOf": [{"items": {"$ref": "#/components/schemas/AlertsOrderingField"}, "type": "array"}, {"type": "null"}], "title": "Order By"}}, "title": "AlertsFilterSchema", "type": "object"}, "AlertsOrderingField": {"enum": ["created_at", "-created_at", "domain", "-domain", "external_ref_id", "-external_ref_id", "flagged_categories", "-flagged_categories"], "title": "AlertsOrderingField", "type": "string"}, "NextLink": {"properties": {"id": {"format": "uuid", "title": "Id", "type": "string"}, "type": {"const": "io.truebiz.link.next-items", "title": "Type", "type": "string"}, "href": {"title": "Href", "type": "string"}}, "required": ["id", "type", "href"], "title": "NextLink", "type": "object"}, "PagedMonitoringAlert": {"properties": {"alerts": {"items": {"$ref": "#/components/schemas/MonitoringAlert"}, "title": "Alerts", "type": "array"}, "count": {"title": "Count", "type": "integer"}, "limit": {"title": "Limit", "type": "integer"}, "offset": {"title": "Offset", "type": "integer"}, "prev_alerts_link": {"anyOf": [{"$ref": "#/components/schemas/PrevLink"}, {"type": "null"}]}, "next_alerts_link": {"anyOf": [{"$ref": "#/components/schemas/NextLink"}, {"type": "null"}]}}, "required": ["alerts", "count", "limit", "offset"], "title": "PagedMonitoringAlert", "type": "object"}, "PrevLink": {"properties": {"id": {"format": "uuid", "title": "Id", "type": "string"}, "type": {"const": "io.truebiz.link.prev-items", "title": "Type", "type": "string"}, "href": {"title": "Href", "type": "string"}}, "required": ["id", "type", "href"], "title": "PrevLink", "type": "object"}, "MonitoredDomain": {"properties": {"domain": {"title": "Domain", "type": "string"}, "platform_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Platform Url"}, "external_ref_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "External Ref Id"}, "packages": {"items": {"$ref": "#/components/schemas/MonitoringPackage"}, "title": "Packages", "type": "array"}}, "required": ["domain"], "title": "MonitoredDomain", "type": "object"}, "MonitoringPackage": {"properties": {"type": {"$ref": "#/components/schemas/PackageType"}, "frequency": {"$ref": "#/components/schemas/PackageFrequency"}}, "required": ["type", "frequency"], "title": "MonitoringPackage", "type": "object"}, "PackageFrequency": {"properties": {"days": {"$ref": "#/components/schemas/PackageFrequencyDays"}}, "required": ["days"], "title": "PackageFrequency", "type": "object"}, "PackageFrequencyDays": {"enum": [7, 30, 90], "title": "PackageFrequencyDays", "type": "integer"}, "PackageType": {"enum": ["io.truebiz.monitoring.package.basic", "io.truebiz.monitoring.package.extended", "io.truebiz.monitoring.package.website-content", "io.truebiz.monitoring.package.business-closure", "io.truebiz.monitoring.package.sentiment-analysis", "io.truebiz.monitoring.package.connected-entities", "io.truebiz.monitoring.package.people", "io.truebiz.monitoring.package.business-profile"], "title": "PackageType", "type": "string"}, "DomainsFilterSchema": {"properties": {"domain": {"anyOf": [{"items": {"anyOf": [{"type": "string"}, {"const": "[]", "type": "string"}]}, "type": "array"}, {"type": "null"}], "title": "Domain"}, "package_type": {"anyOf": [{"items": {"anyOf": [{"$ref": "#/components/schemas/PackageType"}, {"const": "[]", "type": "string"}]}, "type": "array"}, {"type": "null"}], "title": "Package Type"}, "external_ref_id": {"anyOf": [{"items": {"anyOf": [{"type": "string"}, {"const": "", "type": "string"}]}, "type": "array"}, {"type": "null"}], "title": "External Ref Id"}, "order_by": {"anyOf": [{"items": {"$ref": "#/components/schemas/DomainsOrderingField"}, "type": "array"}, {"type": "null"}], "title": "Order By"}}, "title": "DomainsFilterSchema", "type": "object"}, "DomainsOrderingField": {"enum": ["domain", "-domain", "external_ref_id", "-external_ref_id", "package_type", "-package_type"], "title": "DomainsOrderingField", "type": "string"}, "PagedMonitoredDomain": {"properties": {"domains": {"items": {"$ref": "#/components/schemas/MonitoredDomain"}, "title": "Domains", "type": "array"}, "count": {"title": "Count", "type": "integer"}, "limit": {"title": "Limit", "type": "integer"}, "offset": {"title": "Offset", "type": "integer"}, "prev_domains_link": {"anyOf": [{"$ref": "#/components/schemas/PrevLink"}, {"type": "null"}]}, "next_domains_link": {"anyOf": [{"$ref": "#/components/schemas/NextLink"}, {"type": "null"}]}}, "required": ["domains", "count", "limit", "offset"], "title": "PagedMonitoredDomain", "type": "object"}, "PackageInput": {"properties": {"type": {"enum": ["io.truebiz.monitoring.package.basic", "io.truebiz.monitoring.package.extended"], "title": "Type", "type": "string"}, "frequency": {"anyOf": [{"$ref": "#/components/schemas/PackageFrequency"}, {"type": "null"}]}}, "required": ["type"], "title": "PackageInput", "type": "object"}, "StartInput": {"properties": {"domain": {"title": "Domain", "type": "string"}, "external_ref_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "External Ref Id"}, "packages": {"items": {"$ref": "#/components/schemas/PackageInput"}, "maxItems": 1, "title": "Packages", "type": "array"}}, "required": ["domain"], "title": "StartInput", "type": "object"}, "BusinessSearch": {"properties": {"id": {"description": "The unique identifier of the industry search.", "example": "123e4567-e89b-12d3-a456-426614174000", "format": "uuid", "title": "Id", "type": "string"}, "external_tracking_ref": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "External Tracking Ref"}, "created_at": {"description": "The date and time when the industry search was created.", "example": "2026-09-27T01:00:41.244344Z", "format": "date-time", "title": "Created At", "type": "string"}, "updated_at": {"description": "The date and time when the industry search was last updated.", "example": "2026-09-27T01:00:41.244382Z", "format": "date-time", "title": "Updated At", "type": "string"}, "status": {"description": "The current status of the industry search.", "enum": ["PROCESSING", "FINISHED", "ERROR", "QUEUED"], "title": "Status", "type": "string"}, "status_description": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "A more detailed description of the current status.", "title": "Status Description"}, "result": {"anyOf": [{"$ref": "#/components/schemas/BusinessSearchResult"}, {"type": "null"}]}, "query": {"$ref": "#/components/schemas/CreateSearchInput"}}, "required": ["status", "status_description", "query"], "title": "BusinessSearch", "type": "object"}, "BusinessSearchResult": {"properties": {"business_name": {"description": "The name of the business.", "title": "Business Name", "type": "string"}, "business_description": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "A description of the business.", "title": "Business Description"}, "business_address": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The long-form address of the business.", "title": "Business Address"}, "website": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The website of the business.", "title": "Website"}, "primary_mcc": {"anyOf": [{"$ref": "#/components/schemas/MCC"}, {"type": "null"}]}, "additional_mccs": {"anyOf": [{"items": {"$ref": "#/components/schemas/MCC"}, "type": "array"}, {"type": "null"}], "title": "Additional Mccs"}}, "required": ["business_name", "business_description"], "title": "BusinessSearchResult", "type": "object"}, "CreateSearchInput": {"properties": {"submitted_business_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The name of the business to search for. **Required (along with an address) if you do not provide `submitted_website`.**", "title": "Submitted Business Name"}, "submitted_website": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The website of the business to search for. **Required unless you provide `submitted_business_name` together with an address.**", "title": "Submitted Website"}, "city": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The city where the business is located.", "title": "City"}, "state_province": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The state or province where the business is located.", "title": "State Province"}, "postal_code": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The postal code of the business location.", "title": "Postal Code"}, "country": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "The country where the business is located. **At least one address field is required when identifying the business by name instead of website.**", "title": "Country"}, "external_tracking_ref": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "External Tracking Ref"}}, "title": "CreateSearchInput", "type": "object"}, "PagedBusinessSearch": {"properties": {"searches": {"items": {"$ref": "#/components/schemas/BusinessSearch"}, "title": "Searches", "type": "array"}, "count": {"title": "Count", "type": "integer"}, "limit": {"title": "Limit", "type": "integer"}, "offset": {"title": "Offset", "type": "integer"}, "prev_searches_link": {"anyOf": [{"$ref": "#/components/schemas/PrevLink"}, {"type": "null"}]}, "next_searches_link": {"anyOf": [{"$ref": "#/components/schemas/NextLink"}, {"type": "null"}]}}, "required": ["searches", "count", "limit", "offset"], "title": "PagedBusinessSearch", "type": "object"}}, "securitySchemes": {"AsyncApiKeyAuth": {"type": "apiKey", "in": "header", "name": "X-API-KEY"}, "AsyncPropelAuthBearer": {"type": "http", "scheme": "bearer"}, "ApiKeyAuth": {"type": "apiKey", "in": "header", "name": "X-API-KEY"}, "PropelAuthBearer": {"type": "http", "scheme": "bearer"}}}, "servers": [{"url": "https://ae.truebiz.io", "description": "Production"}], "tags": [{"name": "Web Presence Review", "description": "\nWeb Presence Review endpoints allow you to provide information about a business for TrueBiz to review.\n We look at the content on the website, find social media profiles, review sites, and other\nbroader web presence. For security reasons, any domain provided will be reduced to the registered domain known\nto Mozilla's Public Suffix List (e.g. https://www.bbc.co.uk/some/page -> bbc.co.uk). These endpoints will then\nreview the web presence starting with the index page for that domain (e.g. bbc.co.uk -> https://bbc.co.uk/).\n"}, {"name": "Web Presence Review Integration Guide", "description": "# Business Purpose\n\nUsers of TrueBiz's Web Presence Review API want to be able to submit a request and have it respond with a completed\nWeb Presence Review synchronously. Most reviews complete in well under a minute; the endpoint waits up to 90 seconds\nbefore returning a timeout. If your integration cannot hold a request open that long, use the Async Web Presence\nReview API instead.\n\n# Technical Overview\n\nOur synchronous web presence review API's allow you to submit information about a business website needing a review.\nThe minimum needed to identify a business is one of:\n- a website (as a URL, domain, or email address)\n- a business name and address\nAdditional information about the business and applicant (phone, email, or name) can be optionally submitted to improve results.\nThe API will respond to the HTTP request containing the expected responses as documented\nelsewhere. See our OpenAPI spec for the exact schema details.\n\nIf your integration cannot hold a connection open for the length of a review, the same endpoint can instead\nrespond immediately with a URL to poll. See \"Reviewing without holding the connection open\" below.\n\n# Implementation details\n\n## API Key\n\nTo submit a request to TrueBiz, you will also need an API Key. If you do not already have one, contact your account\nmanager.\n\n## Risk Profile\n\nIf you want to override TrueBiz's default risk settings, you can do so within our Web Portal.  Click the Settings\nbutton at the top, then \"Create Profile\". Go through the steps, and then your account manager will contact you with\nany additional follow up questions and when complete, your risk profile id.\n\n## Sending the request for a Web Presence Review\n\nSending a request to TrueBiz's synchronous Review Company endpoint is simple, it requires a one time HTTP request.\nNote that you'll need to provide a valid, non-example API Key. If you are using a risk profile, you'll need to provide\na valid ID for that. If you are not, simply remove the parameter or set it to a null value. Here's some example code\nin python, assuming your API key is \"446de5ee-198e-4a29-9cd3-190252866961\" and your match (risk) profile id\nis \"4a0e18d9-b2d7-4fac-9f31-854ff5da92b4\":\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"446de5ee-198e-4a29-9cd3-190252866961\"}\nresponse = httpx.post(\n    \"https://ae.truebiz.io/api/v1/company/search\",\n    json={\n      \"domain\": \"https://truebiz.io/\",\n      \"submitted_business_name\": \"Truebiz\",\n      \"address_line_1\": \"123 Main St.\",\n      \"address_line_2\": \"Suite 100\",\n      \"city\": \"Memphis\",\n      \"state_province\": \"TN\",\n      \"postal_code\": \"37501\",\n      \"country\": \"USA\",\n      \"submitted_email\": \"bob@yahoo.com\",\n      \"submitted_phone\": \"(901) 555-5555\",\n      \"submitted_full_name\": \"Bob Smith\",\n      \"match_profile_id\": \"4a0e18d9-b2d7-4fac-9f31-854ff5da92b4\"\n    },\n    headers=headers,\n)\n```\n\nThe HTTP status code should indicate if the request completed successfully or not. If it did, the full web\npresence review will be packaged into the json and if not, error details should be provided. See our OpenAPI\nspec for the exact schema details.\n\n## Reviewing without holding the connection open\n\nA web presence review usually completes in well under a minute, but it can take up to 90 seconds. Some\nintegrations cannot keep an HTTP connection open that long \u2014 a proxy, gateway, or serverless timeout closes it\nfirst \u2014 and often cannot tell the difference between a dropped connection and a review that never ran.\n\nIf that describes your environment, add `async=true` to the query string:\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"446de5ee-198e-4a29-9cd3-190252866961\"}\nresponse = httpx.post(\n    \"https://ae.truebiz.io/api/v1/company/search?async=true\",\n    json={\"domain\": \"https://truebiz.io/\", \"external_tracking_ref\": \"your-own-reference\"},\n    headers=headers,\n)\n\ntracking_id = response.json()[\"tracking_id\"]\npoll_url = response.headers[\"Location\"]\n```\n\nWe validate your request, start the review, and respond straight away with:\n  * HTTP Status Code: `201`, meaning the review was accepted and started. Anything else means it was not \u2014\n    your request is checked before we answer, so a malformed payload or an unknown match profile id comes back\n    as an error immediately rather than surfacing later.\n  * Message: A human readable confirmation.\n  * Tracking ID: The ID for this review as it is known to TrueBiz.\n  * `Location` header: The URL to poll for the result.\n\n`true` is the only value this parameter accepts. To wait for the result, leave the parameter off\naltogether rather than sending `async=false` \u2014 that, and any other value, comes back as a `422`. The\nparameter is a single opt-in switch, and it decides whether you receive a company or a tracking id, so we\nwould rather reject a spelling we are not certain about than guess and hand you the wrong response shape.\n\nNote that `async=true` changes when you get your answer, not how the review runs. The review still executes\nunder the same time limits as one you wait for: if it cannot be picked up and completed promptly it is\nabandoned rather than left running in the background.\n\nThat makes it a different thing from the `/company/async/*` endpoints, despite the similar name. Those run\nthe review to completion however long it takes and notify you with a webhook, and they are what you want if\nyour priority is that the review finishes. `async=true` on this endpoint is for the opposite priority: a\ntime-critical review you need answered promptly or not at all, from an integration that cannot hold the\nconnection open while it happens.\n\n## Polling for the result\n\nPoll the URL from the `Location` header \u2014 it is the Web Presence Review History endpoint for your tracking ID.\n\nUse `GET` to retrieve the review, or `HEAD` if you only want to know whether it is ready. `HEAD` returns the\nsame status codes with no body at all, which makes it the cheaper choice while you are waiting:\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"446de5ee-198e-4a29-9cd3-190252866961\"}\n\n# Cheap status check \u2014 no body is transferred.\nstatus = httpx.head(poll_url, headers=headers).status_code\n\n# Once ready, fetch the review itself.\nif status == 200:\n    review = httpx.get(poll_url, headers=headers).json()\n```\n\nThe status code tells you where the review is:\n  * `202`: still running. Poll again shortly.\n  * `200`: complete. A `GET` returns the review in `response_data`.\n  * `500`: the review failed. Note that this response does not include the reason; if your integration needs\n    the specific failure, submit the request without `async=true` and read the error from the response body.\n  * `404`: we have no such review for your account. A review that has been in flight for more than fifteen\n    minutes is also reported this way, since at that point it will not complete.\n\nPoll as often as suits you \u2014 every ten seconds or so is plenty for a review that typically finishes in far\nless than a minute. Polling counts against the rate limit for history requests, not against your search\nvolume, so a review that takes several polls still costs you one search.\n\n## Testing your integration\n\n`example.org` is a reserved test domain: it returns a realistic static response without touching real data\nsources or costing you anything, and it is excluded from your search statistics. It works with `async=true` too \u2014 the\nreview is already complete, so the URL you are handed returns the response on your first poll. That lets you\nexercise the whole flow, including polling, before you send a real request.\n"}, {"name": "Async Web Presence Review", "description": "\nWeb Presence Review endpoints allow you to provide information about a business for TrueBiz to review.\n We look at the content on the website, find social media profiles, review sites, and other\nbroader web presence. For security reasons, any domain provided will be reduced to the registered domain known\nto Mozilla's Public Suffix List (e.g. https://www.bbc.co.uk/some/page -> bbc.co.uk). These endpoints will then\nreview the web presence starting with the index page for that domain (e.g. bbc.co.uk -> https://bbc.co.uk/).\n\nThis asynchronous endpoint allows you to submit a request to TrueBiz without having to wait for the response to\ncomplete. Your submission will instead get a response containing a brief message and a tracking ID. You may either\npoll for status updates using the url provided in the response's `Location` header, or, if you have\na webhook configured, wait for us to notify you when the web presence review is completed. (You may then request\nthe details from the Web Presence Review History endpoint.)\n"}, {"name": "Async Web Presence Review Integration Guide", "description": "# Business Purpose\n\nUsers of TrueBiz's Web Presence Review API want to be able to submit a request and not have to leave a web request open\nuntil the task completes and instead be notified when the review is completed.\n\n# Technical Overview\n\nOur asynchronous web presence review API allows you to submit information about a business website needing a review. The minimum needed to identify a business is one of:\n- a website (as a URL, domain, or email address)\n- a business name and address\nIt responds in milliseconds confirming if a request has been enqueued, then will notify you\nvia webhook when the request is complete. Then, you can make a request to the review history endpoint to get the full details of the web presence review.  See our OpenAPI spec for the exact schema details.\n\n# Implementation details\n\n## Webhook Configuration\n\nPrior to submitting any requests via the API, it is important to configure your webhooks. You can do this by logging\ninto TrueBiz's Web Portal at https://app.truebiz.io and clicking the 'Webhook Dashboard' button on the top right. This\nwill take you to the Dashboard for managing webhooks and you'll need to configure an endpoint subscribed to the\n`one_time.web_presence_review.status` event, which covers ad-hoc web presence reviews.\n\nThere is a second event, `one_time.web_presence_review.pdf_summary.status`, which reports that a review's PDF summary\nhas finished rendering. Subscribing to it on its own does nothing: it is only ever emitted for a review whose PDF you\nhave already asked for, and asking for the PDF is a separate request you make after the review completes. If you want\nthe PDF, read \"Getting the PDF Summary\" below \u2014 subscribing and waiting will not produce this event.\n\n## API Key\n\nTo submit a request to TrueBiz, you will also need an API Key. If you do not already have one, contact your account\nmanager.\n\n## Risk Profile\n\nIf you want to override TrueBiz's default risk settings, you can do so within our Web Portal. Click the Settings\nbutton at the top, then \"Create Profile\". Go through the steps, and then your account manager will contact you with\nany additional follow up questions and when complete, your risk profile id.\n\n## Sending the request for a Web Presence Review\n\nSending a request to TrueBiz's asynchronous search endpoint is simple, it requires a one time HTTP request,\nand you'll need to capture the response information. Note that you'll need to provide a valid, non-example API Key.\nIf you are using a risk profile, you'll need to provide a valid ID for that. If you are not, simply remove the\nparameter or set it to a null value. Here's some example code in python, assuming your API key is\n\"446de5ee-198e-4a29-9cd3-190252866961\" and your match (risk) profile id is \"4a0e18d9-b2d7-4fac-9f31-854ff5da92b4\":\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"446de5ee-198e-4a29-9cd3-190252866961\"}\nresponse = httpx.post(\n    \"https://ae.truebiz.io/api/v1/company/async/search\",\n    json={\n      \"domain\": \"https://truebiz.io/\",\n      \"submitted_business_name\": \"Truebiz\",\n      \"address_line_1\": \"123 Main St.\",\n      \"address_line_2\": \"Suite 100\",\n      \"city\": \"Memphis\",\n      \"state_province\": \"TN\",\n      \"postal_code\": \"37501\",\n      \"country\": \"USA\",\n      \"submitted_email\": \"bob@yahoo.com\",\n      \"submitted_phone\": \"(901) 555-5555\",\n      \"submitted_full_name\": \"Bob Smith\",\n      \"match_profile_id\": \"4a0e18d9-b2d7-4fac-9f31-854ff5da92b4\"\n    },\n    headers=headers,\n)\n```\n\nThe response will contain important information:\n  * HTTP Status Code: A 200 status code indicates that everything processed well. Other status codes are used as appropriate for error conditions.\n  * Message: A human readable message indicating whether the message was successfully submitted for processing.\n  * Tracking ID: The ID for this review as it is known to TrueBiz.\n\nSee our OpenAPI spec for the exact schema details.\n\n## Waiting for the Webhook Notification and Getting the Response\n\nOnce the web presence review is complete, you should receive a webhook notification indicating processing has completed.\nThe event type is `one_time.web_presence_review.status`. For security purposes, this message contains limited\ninformation:\n  * Messages (\"messages\": list[str]): Human readable messages indicating whether the web presence review completed successfully or not.\n  * Resource ID (\"resource_id\": str): The ID for this review as it is known to TrueBiz. This is the same value returned as `tracking_id` in the HTTP response above.\n  * Resource type (\"resource_type\": str): The kind of object `resource_id` refers to - `\"companymatchrequest\"` for a web presence review.\n  * Subject (\"subject_urn\": str): A URN identifying the subject of the review.\n  * PDF report link (\"pdf_report_link\": str): A URL for the review's PDF summary. Only present on web presence review events, and omitted if the link cannot be built. The PDF does not exist yet when this webhook arrives - see \"Getting the PDF Summary\" below.\n\nNote that the webhook body uses different field names from the HTTP response: `messages` (a list) rather than\n`message`, and `resource_id` rather than `tracking_id`.\n\nFrom there, you can submit a request to TrueBiz's Web Presence Review History endpoint to get the results. Example\ncode in python, assuming that your API key is \"446de5ee-198e-4a29-9cd3-190252866961\" and the tracking ID is\n\"e968dac7-f829-4183-9e29-6da68868484a\":\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"446de5ee-198e-4a29-9cd3-190252866961\"}\ntracking_id = \"e968dac7-f829-4183-9e29-6da68868484a\"\nresponse = httpx.get(f\"https://ae.truebiz.io/api/v1/history/company/{tracking_id}\", headers=headers)\n```\n\nIf the review is still in progress this endpoint responds with a `202` and a partial body, so wait for the webhook\nbefore reading the results. See our OpenAPI spec for the exact schema details for the response.\n\n## Getting the PDF Summary\n\nEvery web presence review can be rendered as a PDF summary, but we do not render one unless you ask for it. **Asking\nfor it is what starts the render.** Nothing is generated by submitting a review, so a PDF summary only exists for a\nreview you have explicitly requested one for.\n\nThe URL to request is `pdf_report_link`, which arrives on the completion webhook and is also returned by the review\nhistory endpoint. You can equally construct it yourself from the tracking ID.\n\nThe first request starts the render and returns a `202` with no PDF body. The render takes roughly a minute, longer\nfor a large review. Repeat the request until it returns `200`, whose body is the PDF itself (`application/pdf`):\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"446de5ee-198e-4a29-9cd3-190252866961\"}\ntracking_id = \"e968dac7-f829-4183-9e29-6da68868484a\"\nresponse = httpx.get(f\"https://ae.truebiz.io/api/v1/pdf_summary/{tracking_id}\", headers=headers)\n\nif response.status_code == 202:\n    ...  # Generation has started. Try again shortly.\nelif response.status_code == 200:\n    with open(\"summary.pdf\", \"wb\") as f:\n        f.write(response.content)\n```\n\nRequesting a review that already has a PDF returns it immediately, so a repeat request is cheap and never starts a\nsecond render. This endpoint is rate limited to 5 requests per second.\n\nIf you would rather not poll, subscribe to `one_time.web_presence_review.pdf_summary.status`. Make the first request\nas above, stop at the `202`, and wait: that event is emitted once the render finishes, after which the same URL\nreturns `200`. Note that this event is *only* emitted for a review whose PDF was requested this way \u2014 it does not fire\non its own when a review completes.\n\nTwo things to know about that event before you rely on it:\n  * Success and permanent failure are both reported under this same event type, and the payload carries no status\n    field. Read `messages` to tell them apart.\n  * Its `subject_urn` has the form `urn:match_request:<review id>`, which differs from the completion event's\n    `urn:domain:<domain>`. To correlate the two events, match on `resource_id`, which is the review's tracking ID in\n    both.\n"}, {"name": "Web Presence Review Blocklist", "description": "\nWeb Presence Review endpoints allow you to provide an input like a domain, url, or email associated with a website\nfor TrueBiz to review.  For business or compliance reasons, you may want to directly block a domain from ever being\nreviewed by TrueBiz.  As such, we provide simple these operations for a list of domains to prevent these domains from\nbeing evaluated.\n"}, {"name": "Web Presence Review Screenshots", "description": "\nWeb Presence Review endpoints create screenshots that you can download.  These endpoints allow you to manage those\nscreenshots.  This endpoint only provides access to screenshots generated by Web Presence Reviews.\n"}, {"name": "Web Presence Review PDF Summary", "description": "\nA Web Presence Review can be rendered as a summary PDF. Rendering is on demand rather than automatic, so\nrequesting the PDF is what starts it: the first request returns a 202, and the PDF is available from the same\nURL shortly afterwards. See the Async Web Presence Review Integration Guide for the full flow.\n"}, {"name": "Web Presence Review History", "description": "\nWeb Presence Review results are stored with TrueBiz until you request their deletion.  These endpoints\nare designed to allow you to access these historical results.  They are also where you collect a review you\nasked us to run asynchronously: fetch a single review with `GET`, or check whether it has finished with `HEAD`,\nwhich answers the same status codes without a body.\n"}, {"name": "Auth Relay Guide", "description": "# Business Purpose\n\nUsers of TrueBiz that maintain customer relationship management (CRM) systems want to be able to expose our results in their CRM.  As TrueBiz exposes a large amount of data, this can be cumbersome and delay the integration process.  To speed up integration of TrueBiz's Web Presence Review, many customers want to be able to link directly from their CRM to TrueBiz's existing web portal.  To speed up that linkage, TrueBiz offers a read-only view of our Web Presence Review based on the IETF Digital Signatures Draft Standards.\n\n# Technical Overview\n\nThe IETF Digital Signatures Draft proposal allows TrueBiz to authenticate that a request came from our customer to view components in our UI through the use of a shared secret and a known URL composition structure.  Prior to implementation, TrueBiz will provide our customer with a known public identifier (a UUID4 string) and a secret value (a different UUID4 string).  When the customer requests a company search, we will respond with the appropriate results and include a tracking_id (UUID4 string). This is combined with a few query parameters (including a timestamp indicating how long the signature is valid for) to produce a unique URL.  With the known shared secret and full url, a signature is generated using SHA256-HMAC and this is added as a query parameter.  This link is sent to TrueBiz, who uses our knowledge of the shared secret to create a hash and compare that it matches the signature provided.  If the signature matches, we allow the request to proceed.  If it does not, we provide a generic authentication error.  Note that the relay auth link itself only checks that the required parameters are present before redirecting into the portal; the signature is verified when the portal then requests the underlying review data.\n\n# Implementation Details\n\nPrior to implementing any code, TrueBiz will provide our customer with a public ID (a UUID4 string) and a secret value (a different UUID4 string).  We will provide our relay auth endpoint as well - https://ae.truebiz.io/api/v1/relay/auth/{request_id}.  You will fill out the request_id parameter using the tracking_id field from a web presence review that has already been completed. To send a request to Truebiz, you must also include the following query parameters IN THIS SPECIFIC ORDER:\n* valid_until: The time this redirect link should be valid until. Note that this is expected to be in epoch-time format, and thus is expected to be an integer.  The value must still be in the future when TrueBiz evaluates it, and no more than 300 seconds ahead of the current time on TrueBiz's API servers.  There is no tolerance for a clock that runs behind TrueBiz's: a `valid_until` that has already passed is rejected, however narrowly, so generate the URL at click time rather than at page render time (see below).\n* version: The version of this implementation you are using.  Currently, the only value in use is 1.  It is expected this value will always be a positive integer greater or equal to 1.  Note that the value itself is not validated, but it is covered by the signature, so both sides must agree on it.\n* public_id: The public identifier for the shared secret - a UUID4 string.\n* signature: The HMAC-SHA256 value generated using the shared secret and the URL, signed over exactly the three parameters above and no others.  It is a URL-safe base64 encoding of the raw 32-byte digest (for example `IdLR0U5Il5fZKYfU5JpgXevOhjRko5OtG3Rhf0wAJOc=`), not a UUID.  Any additional query parameter you append is excluded from TrueBiz's side of the comparison, so signing over one will cause verification to fail.\n\nExample code (python):\n```python\nfrom base64 import urlsafe_b64encode\nimport datetime\nimport hashlib\nimport hmac\nimport pytz\nfrom typing import Optional\nimport uuid\nimport urllib.parse\n\nfrom dateutil.relativedelta import relativedelta\n\n\ndef generate_url_with_digital_signature(\n        *,\n        request_id: uuid.UUID,\n        valid_until: Optional[datetime.datetime],\n        public_id: uuid.UUID,\n        secret_value: uuid.UUID,\n        version: int = 1,\n) -> str:\n    base_url = f\"https://ae.truebiz.io/api/v1/relay/auth/{request_id}\"\n    query_parameters = {\n        \"valid_until\": str(int(\n            (valid_until or datetime.datetime.now(pytz.utc) + relativedelta(seconds=60)).timestamp()\n        )),\n        \"version\": f\"{version}\",\n        \"public_id\": str(public_id),\n    }\n    computed_url = f\"{base_url}?{urllib.parse.urlencode(query_parameters)}\"\n    signature = hmac.new(bytes(str(secret_value), \"utf-8\"), computed_url.encode(), hashlib.sha256).digest()\n    query_parameters[\"signature\"] = urlsafe_b64encode(signature).decode()\n    return f\"{base_url}?{urllib.parse.urlencode(query_parameters)}\"\n```\n\n# Implementation Notes/Warnings\n\n*Query Parameter Order*\n\nIt is extremely important that query parameters are applied in the specific order provided.  The signature is generated via a hash of the url, so it is imperative that both sides generate the string being fed into the hash exactly the same way.  Only `valid_until`, `version` and `public_id` take part in the signature - do not add any other query parameter to the signed URL.\n\n*Link Generation Time*\n\nIt is naturally convenient to apply the redirect to TrueBiz with the signature at the time when the CRM page is generated.  However, due to the presence of the valid_until parameter, signed URLs may expire if the individual reading the page spends more than the maximum interval (5 minutes) before clicking the link to see the results in TrueBiz.  As such, we strongly recommend using a button and a click handler event to obtain the signed URL.\n"}, {"name": "Website Status", "description": "\nOur website status endpoints help with checking to see if a provided URL is up and that it is not part of a\nwebsite grouping that TrueBiz does not support.\n"}, {"name": "Monitoring Integration Guide", "description": "# Business Purpose\n\nUsers of TrueBiz's Monitoring API want to monitor domains over time for issues, and be alerted when issues are found.\n\n# Technical Overview\n\nThe monitoring api has three parts\n- a management endpoint to start and stop monitoring domains\n- a webhook endpoint to deliver alerts notifications to you\n- an informational endpoint to retrieve machine-readable context about particular alerts\n\n# Implementation Details\n\n## Webhook Configuration\n\nPrior to submitting any requests via the API, it is important to configure your webhooks. You can do this by logging\ninto TrueBiz's Web Portal at https://app.truebiz.io and clicking the 'Webhook Dashboard' button on the top right. This\nwill take you to the Dashboard for managing webhooks and you'll need to configure an endpoint subscribed to the\n`io.truebiz.monitoring.alert` event.\n\n## API Key\n\nTo submit a request to TrueBiz, you will also need an API Key. If you do not already have one, contact your account\nmanager.\n\n\n## Start monitoring a domain\n\nTo start monitoring a domain you will need to make a `HTTP` `POST` request to the `/api/v1/monitoring/start`\nendpoint with the domain you wish to register and your API key.\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"<YOUR-API-KEY>\"}\n\nresponse = httpx.post(\n    \"https://ae.truebiz.io/api/v1/monitoring/start\",\n    json={\n      \"domain\": \"https://truebiz.io/\",\n    },\n    headers=headers,\n)\n```\n\n\n### Including an external identifier\nIf you wish to include an external identifier to tie back incoming alerts into your system, specify it alongside\nthe domain as `external_ref_id`.\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"<YOUR-API-KEY>\"}\n\nresponse = httpx.post(\n    \"https://ae.truebiz.io/api/v1/monitoring/start\",\n    json={\n      \"domain\": \"https://truebiz.io/\",\n      \"external_ref_id\": \"cus_NffrFeUfNV2Hib\",\n    },\n    headers=headers,\n)\n```\n\nThis value will be included in the alert as `external_ref_id` for all alerts related to this domain.\n\nIf you wish to change the external identifier later, you will first need to stop monitoring (see below)\nand then restart monitoring with the new `external_ref_id`.\n\n### Monitoring a platform URL\n\nSome businesses do not have their own domain and instead operate a page on a platform \u2014 a social\nmedia profile, a marketplace storefront, or a site builder. Pass the page URL as `domain` and TrueBiz\nwill monitor that page as its own enrollment.\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"<YOUR-API-KEY>\"}\n\nresponse = httpx.post(\n    \"https://ae.truebiz.io/api/v1/monitoring/start\",\n    json={\n      \"domain\": \"https://www.facebook.com/AcmeCorp\",\n      \"external_ref_id\": \"cus_NffrFeUfNV2Hib\",\n    },\n    headers=headers,\n)\n```\n\nThe URL is normalized to a canonical form (here, `facebook.com/acmecorp`). That canonical value is\nwhat appears as `domain` in responses and alerts, is repeated in the `platform_url` field, and is what\nyou pass to `/monitoring/stop` and `/monitoring/domains/{domain}` \u2014 though both also accept the\noriginal URL you enrolled with.\n\n`/monitoring/stop` takes the target in the request body, so it needs no special handling.\n`/monitoring/domains/{domain}` takes it in the path, where slashes are fine as written\n(`/monitoring/domains/facebook.com/acmecorp` works). A few platforms, though, identify a page by a\nquery parameter rather than a path, and for those the canonical target contains a `?` that must be\npercent-encoded \u2014 otherwise everything after it is read as a query string and you get a `404`:\n\n```text\nGET /monitoring/domains/play.google.com/store/apps/details?id=com.example.app     -> 404\nGET /monitoring/domains/play.google.com/store/apps/details%3Fid=com.example.app   -> 200\n```\n\nPercent-encoding the entire target works too, so encode it if in doubt.\n\nEach page is a separate enrollment, so several businesses on the same platform can be monitored\nindependently. Note that a platform's own homepage (`facebook.com`) is not a business and is rejected;\nso are bare hosting-provider and marketplace domains.\n\n### Specifying a particular monitoring package\nTrueBiz currently has two available monitoring packages: basic, and extended. Contact your account manager\nto discuss the differences in the kinds of checks included and which is appropriate for your use case.\n\nBy default, TrueBiz will enable the basic monitoring package if you don't specify a package, but this can be\nchanged by including a `packages` entry in your request. Note that `packages` is a list, but a domain can only\nbe enrolled in **one** package at a time - supplying more than one entry returns a `422`.\n\n**Basic package**\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"<YOUR-API-KEY>\"}\n\nresponse = httpx.post(\n    \"https://ae.truebiz.io/api/v1/monitoring/start\",\n    json={\n      \"domain\": \"https://truebiz.io/\",\n      \"packages\": [\n        { \"type\": \"io.truebiz.monitoring.package.basic\" }\n      ]\n    },\n    headers=headers,\n)\n```\n\n**Extended package**\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"<YOUR-API-KEY>\"}\n\nresponse = httpx.post(\n    \"https://ae.truebiz.io/api/v1/monitoring/start\",\n    json={\n      \"domain\": \"https://truebiz.io/\",\n      \"packages\": [\n        { \"type\": \"io.truebiz.monitoring.package.extended\" }\n      ]\n    },\n    headers=headers,\n)\n```\n\nIf you wish to change the package for this domain later, you will first need to stop monitoring (see below)\nand then restart monitoring with the new `packages` selection.\n\n#### Package identifiers you may receive\n\n`/monitoring/start` accepts only the two identifiers above. Responses can additionally contain identifiers\nfor individual checks, on enrollments that predate the packaged model:\n\n- `io.truebiz.monitoring.package.website-content`\n- `io.truebiz.monitoring.package.business-closure`\n- `io.truebiz.monitoring.package.sentiment-analysis`\n- `io.truebiz.monitoring.package.connected-entities`\n- `io.truebiz.monitoring.package.people`\n- `io.truebiz.monitoring.package.business-profile`\n\nTreat these as read-only: they are valid in a response but are rejected if you send them to\n`/monitoring/start`. If you match on package identifiers, allow for values beyond the two you can submit.\n\n### Specifying a particular frequency\nTrueBiz can perform monitoring checks more or less frequently depending on your needs. The `days` field\naccepts three values: `7` (weekly), `30` (monthly), and `90` (quarterly). Any other value is rejected with a\n`422`.\n\nBy default, TrueBiz will perform monitoring checks monthly if you don't specify a frequency, but this can be\nchanged by including a `packages` entry with a frequency in your request. Note that you will need to specify\nboth the package type as well as the frequency (see above for a discussion about available package types).\n\n**Weekly frequency**\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"<YOUR-API-KEY>\"}\n\nresponse = httpx.post(\n    \"https://ae.truebiz.io/api/v1/monitoring/start\",\n    json={\n      \"domain\": \"https://truebiz.io/\",\n      \"packages\": [\n        {\n            \"type\": \"io.truebiz.monitoring.package.basic\",\n            \"frequency\": {\n                \"days\": 7,\n            }\n        }\n      ]\n    },\n    headers=headers,\n)\n```\n\n**Monthly frequency**\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"<YOUR-API-KEY>\"}\n\nresponse = httpx.post(\n    \"https://ae.truebiz.io/api/v1/monitoring/start\",\n    json={\n      \"domain\": \"https://truebiz.io/\",\n      \"packages\": [\n        {\n            \"type\": \"io.truebiz.monitoring.package.basic\",\n            \"frequency\": {\n                \"days\": 30,\n            }\n        }\n      ]\n    },\n    headers=headers,\n)\n```\n\n**Quarterly frequency**\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"<YOUR-API-KEY>\"}\n\nresponse = httpx.post(\n    \"https://ae.truebiz.io/api/v1/monitoring/start\",\n    json={\n      \"domain\": \"https://truebiz.io/\",\n      \"packages\": [\n        {\n            \"type\": \"io.truebiz.monitoring.package.basic\",\n            \"frequency\": {\n                \"days\": 90,\n            }\n        }\n      ]\n    },\n    headers=headers,\n)\n```\n\nIf you wish to change the check frequency for this domain later, you will first need to stop monitoring (see below)\nand then restart monitoring with the new `packages` and frequency selection.\n\n## Stop monitoring a domain\n\nTo stop monitoring a domain you will need to make a `HTTP` `POST` request to the `/api/v1/monitoring/stop`\nendpoint with the domain you wish to stop and your API key.\n\nIf you wish to make changes to the way TrueBiz monitors a domain, you will first need to stop monitoring it,\nand then start monitoring it (see above) with the new configuration. Calling `/start` for a domain that is already\nbeing monitored returns a `409` rather than changing its configuration.\n\nNote that this will not delete any historical data or alerts, merely prevent future checks from running.\nAny checks that are already running will continue to run to completion.\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"<YOUR-API-KEY>\"}\n\nresponse = httpx.post(\n    \"https://ae.truebiz.io/api/v1/monitoring/stop\",\n    json={\n      \"domain\": \"https://truebiz.io/\",\n    },\n    headers=headers,\n)\n```\n\nIf successful, the response returned will be the configuration last used for monitoring the domain.\n(This response can be useful when making configuration changes).\n\nIf a domain is not currently being monitored, this endpoint will return an error.\n\n## List all monitored domains\n\nTo see what domains TrueBiz is currently monitoring, make a `HTTP` `GET` request to the\n`/api/v1/monitoring/domains` endpoint with your API key.\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"<YOUR-API-KEY>\"}\n\nresponse = httpx.get(\n    \"https://ae.truebiz.io/api/v1/monitoring/domains\",\n    headers=headers,\n)\n```\n\nThe response is paginated and will list all domains that TrueBiz is monitoring for your account.\n\nThe response body has the following shape:\n\n```json\n{\n    \"domains\": [],\n    \"count\": 0,\n    \"limit\": 50,\n    \"offset\": 0,\n    \"prev_domains_link\": null,\n    \"next_domains_link\": null\n}\n```\n\n### Pagination\nBoth `limit` and `offset` are accepted as query parameters. `limit` defaults to `50` and is also capped at `50`\n- larger values are silently reduced. `offset` defaults to `0`.\n\nRather than computing offsets yourself, prefer following `next_domains_link.href` and `prev_domains_link.href`,\nwhich are `null` when there is no further page in that direction.\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"<YOUR-API-KEY>\"}\n\nresponse = httpx.get(\n    \"https://ae.truebiz.io/api/v1/monitoring/domains?limit=25&offset=50\",\n    headers=headers,\n)\n```\n\n### Filtering and sorting\nThe endpoint supports filtering on\n\n- `domain`\n- `external_ref_id`\n- `package_type`\n\nSorting is controlled by the separate `order_by` parameter, which accepts exactly these values (prefix with `-`\nfor descending):\n\n- `domain` / `-domain`\n- `external_ref_id` / `-external_ref_id`\n- `package_type` / `-package_type`\n\nAny other value returns a `422`. Filters may be repeated to match several values, and may be combined with\n`order_by`.\n\n#### Filtering by `domain`\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"<YOUR-API-KEY>\"}\n\nresponse = httpx.get(\n    \"https://ae.truebiz.io/api/v1/monitoring/domains?domain=truebiz.io\",\n    headers=headers,\n)\n```\n\n#### Sorting by `domain`\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"<YOUR-API-KEY>\"}\n\n# ascending\nresponse = httpx.get(\n    \"https://ae.truebiz.io/api/v1/monitoring/domains?order_by=domain\",\n    headers=headers,\n)\n\n# descending\nresponse = httpx.get(\n    \"https://ae.truebiz.io/api/v1/monitoring/domains?order_by=-domain\",\n    headers=headers,\n)\n```\n\n#### Filtering by `external_ref_id`\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"<YOUR-API-KEY>\"}\n\nresponse = httpx.get(\n    \"https://ae.truebiz.io/api/v1/monitoring/domains?external_ref_id=cus_NffrFeUfNV2Hib\",\n    headers=headers,\n)\n```\n\n#### Sorting by `external_ref_id`\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"<YOUR-API-KEY>\"}\n\n# ascending\nresponse = httpx.get(\n    \"https://ae.truebiz.io/api/v1/monitoring/domains?order_by=external_ref_id\",\n    headers=headers,\n)\n\n# descending\nresponse = httpx.get(\n    \"https://ae.truebiz.io/api/v1/monitoring/domains?order_by=-external_ref_id\",\n    headers=headers,\n)\n```\n\n#### Filtering by `package_type`\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"<YOUR-API-KEY>\"}\n\nresponse = httpx.get(\n    \"https://ae.truebiz.io/api/v1/monitoring/domains?package_type=io.truebiz.monitoring.package.extended\",\n    headers=headers,\n)\n```\n\n#### Sorting by `package_type`\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"<YOUR-API-KEY>\"}\n\n# ascending\nresponse = httpx.get(\n    \"https://ae.truebiz.io/api/v1/monitoring/domains?order_by=package_type\",\n    headers=headers,\n)\n\n# descending\nresponse = httpx.get(\n    \"https://ae.truebiz.io/api/v1/monitoring/domains?order_by=-package_type\",\n    headers=headers,\n)\n```\n\n## Retrieving a single monitored domain\n\nTo retrieve the current monitoring configuration for one domain, make a `HTTP` `GET` request to the\n`/api/v1/monitoring/domains/<DOMAIN>` endpoint with your API key.\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"<YOUR-API-KEY>\"}\n\nresponse = httpx.get(\n    \"https://ae.truebiz.io/api/v1/monitoring/domains/truebiz.io\",\n    headers=headers,\n)\n```\n\nThe response is a single domain object of the same shape as the entries in the list endpoint above. If the domain\nis not currently being monitored, this endpoint returns a `404`.\n\n## Receiving and processing webhook events\nAfter configuring your webhook endpoint to receive TrueBiz monitoring alerts (see above), TrueBiz\nwill begin sending webhook events to your endpoint for every new monitoring alert.\n\nMonitoring alert webhook messages have the following basic shape:\n\n```json\n{\n    \"type\": \"io.truebiz.monitoring.alert\",\n    \"created_at\": \"2025-01-12T08:15:42.555073+00:00\",\n    \"alert_details_link\": {\n        \"href\": \"https://ae.truebiz.io/api/v1/monitoring/alerts/94347f66-0601-4b94-adca-adea9d4daa82\"\n    },\n    \"ui_portal_link\": {\n        \"href\": \"https://app.truebiz.io/monitoring/alerts/94347f66-0601-4b94-adca-adea9d4daa82/\"\n    }\n}\n```\n\nThese four fields are the entire body - there are no others.\n\n**It is important to always verify the signature and hashes of any webhook messages you receive.**\nFor more information see https://docs.svix.com/receiving/verifying-payloads/how.\n\nThe `alert_details_link` is a way to access machine-readable information (including any associated\nexternal ids) about the alert via the TrueBiz API (see below for detailed usage about the alert information API).\n\nThe `ui_portal_link` is a deep link to the TrueBiz portal, that provides the richest possible context\nand human readable information about the alert.\n\n## Retrieving machine-readable information about individual monitoring alerts\nInformation about individual alerts can be retrieved by making a `HTTP` `GET` request to the\n`/api/v1/monitoring/alerts/<ALERT-ID>` endpoint with the alert id, and your API key. In the example below\n`94347f66-0601-4b94-adca-adea9d4daa82` is the alert id.\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"<YOUR-API-KEY>\"}\n\nresponse = httpx.get(\n    \"https://ae.truebiz.io/api/v1/monitoring/alerts/94347f66-0601-4b94-adca-adea9d4daa82\",\n    headers=headers,\n)\n```\n\n\n## Retrieving machine-readable information about multiple monitoring alerts\nThe monitoring api also provides a list endpoint for all alerts in the system. It can be\naccessed by making a `HTTP` `GET` request to `/api/v1/monitoring/alerts` with your API key.\n\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"<YOUR-API-KEY>\"}\n\nresponse = httpx.get(\n    \"https://ae.truebiz.io/api/v1/monitoring/alerts\",\n    headers=headers,\n)\n```\n\nThe response is paginated and will list all monitoring alerts that TrueBiz has issued to your account.\n\nThe response body has the following shape:\n\n```json\n{\n    \"alerts\": [],\n    \"count\": 0,\n    \"limit\": 50,\n    \"offset\": 0,\n    \"prev_alerts_link\": null,\n    \"next_alerts_link\": null\n}\n```\n\n### Pagination\nAs with the domains endpoint, `limit` defaults to `50` and is capped at `50`, and `offset` defaults to `0`.\nPrefer following `next_alerts_link.href` and `prev_alerts_link.href` over computing offsets yourself.\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"<YOUR-API-KEY>\"}\n\nresponse = httpx.get(\n    \"https://ae.truebiz.io/api/v1/monitoring/alerts?limit=25&offset=50\",\n    headers=headers,\n)\n```\n\n### Filtering and sorting\nThe endpoint supports filtering on\n\n- `created_before` (exclusive)\n- `created_after` (inclusive)\n- `domain`\n- `external_ref_id`\n- `flagged_categories`\n\nSorting is controlled by the separate `order_by` parameter, which accepts exactly these values (prefix with `-`\nfor descending):\n\n- `created_at` / `-created_at`\n- `domain` / `-domain`\n- `external_ref_id` / `-external_ref_id`\n- `flagged_categories` / `-flagged_categories`\n\nAny other value returns a `422`. Filters and `order_by` can all be combined.\n\n#### Filtering by creation date\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"<YOUR-API-KEY>\"}\n\n# before a certain date\nresponse = httpx.get(\n    \"https://ae.truebiz.io/api/v1/monitoring/alerts?created_before=2025-01-12T08:15:42.555073+00:00\",\n    headers=headers,\n)\n\n# after a certain date\nresponse = httpx.get(\n    \"https://ae.truebiz.io/api/v1/monitoring/alerts?created_after=2025-01-12T08:15:42.555073+00:00\",\n    headers=headers,\n)\n```\n\n#### Sorting by creation date\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"<YOUR-API-KEY>\"}\n\n# ascending\nresponse = httpx.get(\n    \"https://ae.truebiz.io/api/v1/monitoring/alerts?order_by=created_at\",\n    headers=headers,\n)\n\n# descending\nresponse = httpx.get(\n    \"https://ae.truebiz.io/api/v1/monitoring/alerts?order_by=-created_at\",\n    headers=headers,\n)\n```\n\n#### Filtering by domain\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"<YOUR-API-KEY>\"}\n\nresponse = httpx.get(\n    \"https://ae.truebiz.io/api/v1/monitoring/alerts?domain=truebiz.io\",\n    headers=headers,\n)\n```\n\n#### Sorting by domain\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"<YOUR-API-KEY>\"}\n\n# ascending\nresponse = httpx.get(\n    \"https://ae.truebiz.io/api/v1/monitoring/alerts?order_by=domain\",\n    headers=headers,\n)\n\n# descending\nresponse = httpx.get(\n    \"https://ae.truebiz.io/api/v1/monitoring/alerts?order_by=-domain\",\n    headers=headers,\n)\n```\n\n#### Filtering by `external_ref_id`\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"<YOUR-API-KEY>\"}\n\nresponse = httpx.get(\n    \"https://ae.truebiz.io/api/v1/monitoring/alerts?external_ref_id=cus_NffrFeUfNV2Hib\",\n    headers=headers,\n)\n```\n\n#### Sorting by `external_ref_id`\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"<YOUR-API-KEY>\"}\n\n# ascending\nresponse = httpx.get(\n    \"https://ae.truebiz.io/api/v1/monitoring/alerts?order_by=external_ref_id\",\n    headers=headers,\n)\n\n# descending\nresponse = httpx.get(\n    \"https://ae.truebiz.io/api/v1/monitoring/alerts?order_by=-external_ref_id\",\n    headers=headers,\n)\n```\n\n#### Filtering by `flagged_categories`\n\nThe values accepted here are the `name`s that appear in an alert's own `flagged_categories` array, such as\n`website-parked`, `website-unreachable`, `invalid-ssl`, `business-closed-google` or `related-person-found`.\nThis is not a fixed enumeration - new categories are added over time, so read the values off the alerts you\nreceive rather than hard-coding a list. Repeating the parameter matches alerts in **any** of the given\ncategories.\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"<YOUR-API-KEY>\"}\n\nresponse = httpx.get(\n    \"https://ae.truebiz.io/api/v1/monitoring/alerts?flagged_categories=website-parked&flagged_categories=business-closed-google\",\n    headers=headers,\n)\n```\n\n### Sorting by `flagged_categories`\n\n```python\nimport httpx\n\nheaders = {\"X-API-KEY\": \"<YOUR-API-KEY>\"}\n\n# ascending\nresponse = httpx.get(\n    \"https://ae.truebiz.io/api/v1/monitoring/alerts?order_by=flagged_categories\",\n    headers=headers,\n)\n\n# descending\nresponse = httpx.get(\n    \"https://ae.truebiz.io/api/v1/monitoring/alerts?order_by=-flagged_categories\",\n    headers=headers,\n)\n```"}, {"name": "Monitoring Alerts", "description": "\nMonitoring alerts endpoints allow you to see what alerts TrueBiz has found during monitoring.\n"}, {"name": "Monitoring Domains", "description": "\nMonitored domain endpoints allow you to see what domains TrueBiz is currently monitoring.\n"}, {"name": "Business Discovery", "description": "\nBusiness Discovery endpoints allow you to provide a business name (or website) and a location for TrueBiz to review.\nWe use multiple sources to identify the most likely business match. These endpoints return the business name as\ndiscovered, its address, a description, and relevant MCC Classifications.\n"}], "x-tagGroups": [{"name": "Web Presence Review", "tags": ["Web Presence Review", "Web Presence Review Integration Guide"]}, {"name": "Industry Discovery", "tags": ["Industry Discovery"]}, {"name": "Monitoring", "tags": ["Monitoring Integration Guide", "Monitoring Alerts", "Monitoring Domains", "Monitoring Enrollments", "Monitoring Anomalies"]}, {"name": "Website Status", "tags": ["Website Status"]}, {"name": "Other", "tags": ["Auth Relay Guide", "UI Authentication Relay", "Web Presence Review Blocklist", "Web Presence Review Static Content", "Web Presence Review History", "Web Presence Review Risk Indicator Definitions", "Async Web Presence Review Integration Guide", "Async Web Presence Review"]}]}