{ "schemes": [ "https" ], "swagger": "2.0", "info": { "description": "CustomerOS API for multiple services (Verify, Enrich, Orgs)", "title": "CustomerOS API", "contact": {}, "version": "1.0" }, "host": "api.customeros.ai", "basePath": "/", "paths": { "/customerbase/v1/organization": { "post": { "security": [ { "ApiKeyAuth": [] } ], "description": "Creates an organization in the system if it doesn't already exist based on website, custom ID, or LinkedIn URL", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "CustomerBASE API" ], "summary": "Create a new organization", "parameters": [ { "description": "Organization creation payload", "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/rest.CreateOrganizationRequest" } } ], "responses": { "201": { "description": "Organization created successfully", "schema": { "$ref": "#/definitions/rest.CreateOrganizationResponse" } }, "206": { "description": "Partial success - failed to add linkedin url", "schema": { "$ref": "#/definitions/rest.CreateOrganizationResponse" } }, "400": { "description": "Invalid request body or missing input fields" }, "401": { "description": "Unauthorized access" }, "409": { "description": "Conflict - organization already exists" }, "500": { "description": "Failed to create organization" } } } }, "/enrich/v1/organization": { "get": { "security": [ { "ApiKeyAuth": [] } ], "description": "Enriches an organization's information using the domain or other details.", "produces": [ "application/json" ], "tags": [ "Enrichment API" ], "summary": "Enrich Organization Information", "parameters": [ { "type": "string", "description": "LinkedIn profile URL of the organization", "name": "linkedinUrl", "in": "query" }, { "type": "string", "description": "Domain of the organization", "name": "domain", "in": "query" } ], "responses": { "200": { "description": "Enrichment results including organizational data", "schema": { "$ref": "#/definitions/restenrich.EnrichOrganizationResponse" } }, "400": { "description": "Bad Request" }, "401": { "description": "Unauthorized" }, "500": { "description": "Internal Server Error" } } } }, "/enrich/v1/person": { "get": { "security": [ { "ApiKeyAuth": [] } ], "description": "Enriches a person's information using LinkedIn URL, email, and other optional details.", "produces": [ "application/json" ], "tags": [ "Enrichment API" ], "summary": "Enrich Person Information", "parameters": [ { "type": "string", "description": "LinkedIn profile URL of the person", "name": "linkedinUrl", "in": "query" }, { "type": "string", "description": "Email address of the person", "name": "email", "in": "query" }, { "type": "string", "description": "First name of the person", "name": "firstName", "in": "query" }, { "type": "string", "description": "Last name of the person", "name": "lastName", "in": "query" }, { "type": "string", "default": "false", "description": "Include mobile phone number in the enrichment result", "name": "includeMobileNumber", "in": "query" } ], "responses": { "200": { "description": "Enrichment results including personal, job, and social data", "schema": { "$ref": "#/definitions/restenrich.EnrichPersonResponse" } }, "400": { "description": "Bad Request" }, "401": { "description": "Unauthorized" }, "500": { "description": "Internal Server Error" } } } }, "/enrich/v1/person/results/{id}": { "get": { "security": [ { "ApiKeyAuth": [] } ], "description": "Retrieves enriched person data from a temporary result based on the given ID.", "produces": [ "application/json" ], "tags": [ "Enrichment API" ], "summary": "Enrich Person Callback", "parameters": [ { "type": "string", "description": "Temporary result ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "Enrichment results including personal, job, and social data", "schema": { "$ref": "#/definitions/restenrich.EnrichPersonResponse" } }, "400": { "description": "Bad Request" }, "401": { "description": "Unauthorized" }, "404": { "description": "Not Found" }, "500": { "description": "Internal Server Error" } } } }, "/mailstack/v1/domains": { "get": { "security": [ { "ApiKeyAuth": [] } ], "description": "Retrieves a list of all active domains associated with the tenant", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "MailStack API" ], "summary": "Get active domains", "responses": { "200": { "description": "Successfully retrieved domains", "schema": { "$ref": "#/definitions/restmailstack.DomainsResponse" } }, "401": { "description": "Unauthorized access - API key invalid or expired", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } } }, "post": { "security": [ { "ApiKeyAuth": [] } ], "description": "Registers a new domain for the mail service", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "MailStack API" ], "summary": "Register a new domain", "parameters": [ { "description": "Domain registration payload", "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/restmailstack.RegisterNewDomainRequest" } } ], "responses": { "201": { "description": "Domain registered successfully", "schema": { "$ref": "#/definitions/restmailstack.DomainResponse" } }, "400": { "description": "Invalid request body or missing input fields", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "Unauthorized access - API key invalid or expired", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "406": { "description": "Restrictions on domain purchase", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "Domain is already registered", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } } } }, "/mailstack/v1/domains/configure": { "post": { "security": [ { "ApiKeyAuth": [] } ], "description": "Configures the DNS records for the given domain", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "MailStack API" ], "summary": "Configure domain", "parameters": [ { "description": "Domain payload", "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/restmailstack.ConfigureDomainRequest" } } ], "responses": { "201": { "description": "Domain configured successfully", "schema": { "$ref": "#/definitions/restmailstack.DomainResponse" } }, "400": { "description": "Invalid request body or missing input fields", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "Unauthorized access - API key invalid or expired", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Domain not found", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } } } }, "/mailstack/v1/domains/{domain}/mailboxes": { "get": { "security": [ { "ApiKeyAuth": [] } ], "description": "Retrieves a list of all mailboxes associated with a specified domain", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "MailStack API" ], "summary": "Get all mailboxes", "parameters": [ { "type": "string", "description": "Domain for which to retrieve mailboxes", "name": "domain", "in": "path", "required": true } ], "responses": { "200": { "description": "Successfully retrieved mailboxes", "schema": { "$ref": "#/definitions/restmailstack.MailboxesResponse" } }, "400": { "description": "Missing domain", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "Unauthorized access - API key invalid or expired", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "Error retrieving mailboxes", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } } }, "post": { "security": [ { "ApiKeyAuth": [] } ], "description": "Registers a new mailbox for the specified domain", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "MailStack API" ], "summary": "Register a new mailbox", "parameters": [ { "type": "string", "description": "Domain for which to register the mailbox", "name": "domain", "in": "path", "required": true }, { "description": "Mailbox registration payload", "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/restmailstack.MailboxRequest" } } ], "responses": { "200": { "description": "Mailbox setup successful", "schema": { "$ref": "#/definitions/restmailstack.MailboxResponse" } }, "400": { "description": "Invalid request body, missing input fields, or invalid username format", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "401": { "description": "Unauthorized access - API key invalid or expired", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "404": { "description": "Domain not found", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "409": { "description": "Mailbox already exists", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } }, "500": { "description": "Internal server error", "schema": { "$ref": "#/definitions/rest.ErrorResponse" } } } } }, "/verify/v1/email": { "get": { "security": [ { "ApiKeyAuth": [] } ], "description": "Checks the validity and various characteristics of the given email address", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "Verify API" ], "summary": "Verify Single Email Address", "parameters": [ { "type": "string", "description": "Email address to verify", "name": "address", "in": "query", "required": true }, { "type": "string", "default": "true", "description": "Verify catch-all domain", "name": "verifyCatchAll", "in": "query" } ], "responses": { "200": { "description": "Successful response", "schema": { "$ref": "#/definitions/restverify.EmailVerificationResponse" } }, "400": { "description": "Bad Request" }, "401": { "description": "Unauthorized" }, "500": { "description": "Internal Server Error" } } } }, "/verify/v1/email/bulk": { "post": { "security": [ { "ApiKeyAuth": [] } ], "description": "Uploads a CSV file with email addresses for bulk verification.", "consumes": [ "multipart/form-data" ], "produces": [ "application/json" ], "tags": [ "Verify API" ], "summary": "Bulk Upload Emails for Verification", "parameters": [ { "type": "file", "description": "CSV file containing email addresses to verify", "name": "file", "in": "formData", "required": true }, { "type": "string", "description": "The column name in the CSV that contains the email addresses (optional if only one column exists)", "name": "emailColumn", "in": "formData" }, { "type": "string", "default": "true", "description": "Verify catch-all domain", "name": "verifyCatchAll", "in": "formData" } ], "responses": { "200": { "description": "File uploaded successfully, with job ID and result URL", "schema": { "$ref": "#/definitions/restverify.BulkUploadResponse" } }, "400": { "description": "Bad Request" }, "401": { "description": "Unauthorized" }, "500": { "description": "Internal Server Error" } } } }, "/verify/v1/email/bulk/results/{requestId}": { "get": { "security": [ { "ApiKeyAuth": [] } ], "description": "Retrieves the results of bulk email verification if the processing is completed.", "produces": [ "application/json" ], "tags": [ "Verify API" ], "summary": "Get Bulk Email Verification Results", "parameters": [ { "type": "string", "description": "Job ID of the bulk email verification", "name": "requestId", "in": "path", "required": true } ], "responses": { "200": { "description": "Bulk email verification results if processing is completed", "schema": { "$ref": "#/definitions/restverify.BulkResultsResponse" } }, "400": { "description": "Bad Request" }, "401": { "description": "Unauthorized" }, "500": { "description": "Internal Server Error" } } } }, "/verify/v1/email/bulk/results/{requestId}/download": { "get": { "security": [ { "ApiKeyAuth": [] } ], "description": "Downloads the CSV file containing the results of bulk email verification if the processing is completed.", "produces": [ "text/csv" ], "tags": [ "Verify API" ], "summary": "Download Bulk Email Verification Results", "parameters": [ { "type": "string", "description": "Job ID of the bulk email verification", "name": "requestId", "in": "path", "required": true } ], "responses": { "200": { "description": "CSV file containing the results of the bulk email verification" }, "400": { "description": "Bad Request" }, "401": { "description": "Unauthorized" }, "404": { "description": "Not Found" }, "500": { "description": "Internal Server Error" } } } }, "/verify/v1/ip": { "get": { "security": [ { "ApiKeyAuth": [] } ], "description": "Retrieves threat intelligence and geolocation data for the given IP address.", "produces": [ "application/json" ], "tags": [ "Verify API" ], "summary": "Get IP Intelligence", "parameters": [ { "type": "string", "description": "IP address to check", "name": "address", "in": "query", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/restverify.IpIntelligenceResponse" } }, "400": { "description": "Bad Request" }, "401": { "description": "Unauthorized" }, "500": { "description": "Internal Server Error" } } } } }, "definitions": { "rest.CreateOrganizationRequest": { "description": "Request to create an organization", "type": "object", "properties": { "customId": { "description": "Custom ID provided by the user\nExample: 12345", "type": "string" }, "icpFit": { "description": "Indicates if the organization is an ICP (Ideal Customer Profile) fit\nExample: true", "type": "boolean" }, "leadSource": { "description": "Lead source of the organization\nExample: Web Search", "type": "string" }, "linkedinUrl": { "description": "Organization's LinkedIn profile URL\nExample: https://linkedin.com/company/openline", "type": "string" }, "name": { "description": "Organization's name\nExample: Openline", "type": "string" }, "relationship": { "description": "Relationship status of the organization\nExample: customer", "type": "string" }, "website": { "description": "Organization's website URL\nExample: https://openline.com", "type": "string" } } }, "rest.CreateOrganizationResponse": { "description": "The response structure after an organization is successfully created.", "type": "object", "properties": { "id": { "description": "ID is the unique identifier of the created organization\nExample: 1234567890", "type": "string", "example": "1234567890" }, "message": { "description": "Message provides additional information regarding the creation process\nExample: Organization created successfully", "type": "string", "example": "Organization created successfully" }, "partialSuccess": { "description": "PartialSuccess indicates whether the creation process encountered partial success (e.g., when some fields failed to process)\nExample: false", "type": "boolean", "example": false }, "status": { "description": "Status indicates the status of the creation process (e.g., \"success\" or \"partial_success\")\nExample: success", "type": "string", "example": "success" } } }, "rest.ErrorResponse": { "type": "object", "properties": { "message": { "type": "string" }, "status": { "type": "string" } } }, "restenrich.EnrichOrganizationData": { "description": "Detailed data about an organization from enrichment.", "type": "object", "properties": { "description": { "description": "Short description of the organization.\nExample: A global leader in innovative solutions.", "type": "string", "example": "A global leader in innovative solutions" }, "domain": { "description": "Domain of the organization's website.\nExample: acme.com", "type": "string", "example": "acme.com" }, "employees": { "description": "Number of employees in the organization.\nExample: 5000", "type": "integer", "example": 5000 }, "foundedYear": { "description": "Year the organization was founded.\nExample: 1995", "type": "integer", "example": 1995 }, "icons": { "description": "List of icon URLs for the organization.\nExample: [\"https://acme.com/icon.png\"]", "type": "array", "items": { "type": "string" }, "example": [ "https://acme.com/icon.png" ] }, "industry": { "description": "Industry in which the organization operates.", "allOf": [ { "$ref": "#/definitions/restenrich.EnrichOrganizationIndustry" } ] }, "location": { "description": "Location information about the organization.", "allOf": [ { "$ref": "#/definitions/restenrich.EnrichOrganizationLocation" } ] }, "logos": { "description": "List of logo URLs for the organization.\nExample: [\"https://acme.com/logo.png\"]", "type": "array", "items": { "type": "string" }, "example": [ "https://acme.com/logo.png" ] }, "longDescription": { "description": "Long description of the organization.\nExample: Acme Corporation provides cutting-edge technology solutions across the globe.", "type": "string", "example": "Acme Corporation provides cutting-edge technology solutions across the globe." }, "name": { "description": "Name of the organization.\nExample: Acme Corporation", "type": "string", "example": "Acme Corporation" }, "public": { "description": "Indicates whether the organization is publicly traded.\nExample: true", "type": "boolean", "example": true }, "socials": { "description": "List of social media URLs for the organization.\nExample: [\"https://linkedin.com/company/acme\"]", "type": "array", "items": { "type": "string" }, "example": [ "https://linkedin.com/company/acme" ] }, "website": { "description": "Website URL of the organization.\nExample: https://acme.com", "type": "string", "example": "https://acme.com" } } }, "restenrich.EnrichOrganizationIndustry": { "type": "object", "properties": { "industry": { "description": "Industry in which the organization operates.\nExample: Technology", "type": "string", "example": "Technology" } } }, "restenrich.EnrichOrganizationLocation": { "description": "Location details of an organization.", "type": "object", "properties": { "addressLine1": { "description": "Address line 1 of the organization.\nExample: 123 Main St", "type": "string", "example": "123 Main St" }, "addressLine2": { "description": "Address line 2 of the organization (optional).\nExample: Suite 100", "type": "string", "example": "Suite 100" }, "city": { "description": "City or locality of the organization.\nExample: San Francisco", "type": "string", "example": "San Francisco" }, "country": { "description": "Country of the organization.\nExample: United States", "type": "string", "example": "United States" }, "countryCodeA2": { "description": "ISO Alpha-2 code of the country.\nExample: US", "type": "string", "example": "US" }, "isHeadquarter": { "description": "Indicates if the location is the headquarters.\nExample: true", "type": "boolean", "example": true }, "postalCode": { "description": "Postal code of the organization's location.\nExample: 94105", "type": "string", "example": "94105" }, "region": { "description": "Region or state of the organization.\nExample: California", "type": "string", "example": "California" } } }, "restenrich.EnrichOrganizationResponse": { "description": "Response structure for the organization enrichment API.", "type": "object", "properties": { "data": { "$ref": "#/definitions/restenrich.EnrichOrganizationData" }, "message": { "description": "Message for the response.\nExample: Enrichment completed", "type": "string", "example": "Enrichment completed" }, "status": { "description": "Status of the response.\nExample: success", "type": "string", "example": "success" } } }, "restenrich.EnrichPersonData": { "description": "Detailed data about a person from enrichment.", "type": "object", "properties": { "emails": { "type": "array", "items": { "$ref": "#/definitions/restenrich.EnrichPersonEmail" } }, "jobs": { "type": "array", "items": { "$ref": "#/definitions/restenrich.EnrichPersonJob" } }, "location": { "$ref": "#/definitions/restenrich.EnrichPersonLocation" }, "name": { "$ref": "#/definitions/restenrich.EnrichPersonName" }, "phoneNumbers": { "type": "array", "items": { "$ref": "#/definitions/restenrich.EnrichPersonPhoneNumber" } }, "profilePic": { "type": "string", "example": "https://example.com/profile.jpg" }, "social": { "$ref": "#/definitions/restenrich.EnrichPersonSocial" } } }, "restenrich.EnrichPersonDiscord": { "description": "Discord profile details of a person.", "type": "object", "properties": { "username": { "type": "string", "example": "johndoe#1234" } } }, "restenrich.EnrichPersonEmail": { "description": "Email details of a person.", "type": "object", "properties": { "address": { "type": "string", "example": "john.doe@example.com" }, "deliverable": { "type": "string", "example": "true" }, "isRisky": { "type": "boolean", "example": false }, "type": { "type": "string", "example": "professional" } } }, "restenrich.EnrichPersonGithub": { "description": "Github profile details of a person.", "type": "object", "properties": { "url": { "type": "string", "example": "https://github.com/johndoe" }, "username": { "type": "string", "example": "johndoe" } } }, "restenrich.EnrichPersonJob": { "description": "Job details of a person.", "type": "object", "properties": { "company": { "type": "string", "example": "Tech Corp" }, "companyLinkedin": { "type": "string", "example": "https://linkedin.com/company/techcorp" }, "companyWebsite": { "type": "string", "example": "https://techcorp.com" }, "duration": { "$ref": "#/definitions/restenrich.EnrichPersonJobDuration" }, "isCurrent": { "type": "boolean", "example": true }, "seniority": { "type": "string", "example": "Senior" }, "title": { "type": "string", "example": "Software Engineer" } } }, "restenrich.EnrichPersonJobDuration": { "description": "Job duration of a person.", "type": "object", "properties": { "endMonth": { "type": "integer", "example": 12 }, "endYear": { "type": "integer", "example": 2023 }, "startMonth": { "type": "integer", "example": 1 }, "startYear": { "type": "integer", "example": 2020 } } }, "restenrich.EnrichPersonLinkedIn": { "description": "LinkedIn profile details of a person.", "type": "object", "properties": { "followerCount": { "type": "integer", "example": 500 }, "id": { "type": "string", "example": "123456789" }, "publicId": { "type": "string", "example": "john-doe" }, "url": { "type": "string", "example": "https://linkedin.com/in/john-doe" } } }, "restenrich.EnrichPersonLocation": { "description": "Location details of a person.", "type": "object", "properties": { "city": { "type": "string", "example": "San Francisco" }, "country": { "type": "string", "example": "USA" }, "region": { "type": "string", "example": "California" }, "timezone": { "type": "string", "example": "PST" } } }, "restenrich.EnrichPersonName": { "description": "Name details of a person.", "type": "object", "properties": { "firstName": { "type": "string", "example": "John" }, "fullName": { "type": "string", "example": "John Doe" }, "lastName": { "type": "string", "example": "Doe" } } }, "restenrich.EnrichPersonPhoneNumber": { "description": "Phone number details of a person.", "type": "object", "properties": { "number": { "type": "string", "example": "+1234567890" }, "type": { "type": "string", "example": "mobile" } } }, "restenrich.EnrichPersonResponse": { "description": "Response structure for the person enrichment API.", "type": "object", "properties": { "data": { "$ref": "#/definitions/restenrich.EnrichPersonData" }, "isComplete": { "type": "boolean", "example": true }, "message": { "type": "string", "example": "Enrichment completed" }, "pendingFields": { "type": "array", "items": { "type": "string" }, "example": [ "[\"email\"", " \"phone number\"]" ] }, "resultUrl": { "type": "string", "example": "https://api.customeros.ai/enrich/v1/person/results/550e8400-e29b-41d4-a716-446655440000" }, "status": { "type": "string", "example": "success" } } }, "restenrich.EnrichPersonSocial": { "description": "Social media details of a person.", "type": "object", "properties": { "discord": { "$ref": "#/definitions/restenrich.EnrichPersonDiscord" }, "github": { "$ref": "#/definitions/restenrich.EnrichPersonGithub" }, "linkedin": { "$ref": "#/definitions/restenrich.EnrichPersonLinkedIn" }, "x": { "$ref": "#/definitions/restenrich.EnrichPersonX" } } }, "restenrich.EnrichPersonX": { "description": "X (formerly Twitter) profile details of a person.", "type": "object", "properties": { "handle": { "type": "string", "example": "@johndoe" }, "url": { "type": "string", "example": "https://x.com/johndoe" } } }, "restmailstack.ConfigureDomainRequest": { "description": "Request body for domain configuration", "type": "object", "properties": { "domain": { "description": "Domain is the domain name to be configured\nRequired: true\nExample: example.com", "type": "string", "example": "example.com" }, "website": { "description": "Destination website for permanent redirect\nRequired: true\nExample: www.example.com", "type": "string", "example": "www.example.com" } } }, "restmailstack.DomainResponse": { "description": "Domain object in the response", "type": "object", "properties": { "createdDate": { "description": "CreatedDate is the date the domain was registered\nExample: 09/14/2024", "type": "string", "example": "09/14/2024" }, "domain": { "description": "Domain is the domain name that was registered\nExample: example.com", "type": "string", "example": "example.com" }, "expiredDate": { "description": "ExpiredDate is the date when the domain registration will expire\nExample: 09/14/2025", "type": "string", "example": "09/14/2025" }, "message": { "description": "Message provides additional information about the action\nExample: Domain registered successfully", "type": "string", "example": "Domain retrieved successfully" }, "nameservers": { "description": "Nameservers lists the nameservers associated with the domain\nExample: [ns1.example.com, ns2.example.com]", "type": "array", "items": { "type": "string" }, "example": [ "['ns1.example.com'", " 'ns2.example.com']" ] }, "status": { "description": "Status indicates the result of the action\nExample: success", "type": "string", "example": "success" } } }, "restmailstack.DomainsResponse": { "description": "Response body for all domain details", "type": "object", "properties": { "domains": { "type": "array", "items": { "$ref": "#/definitions/restmailstack.DomainResponse" } }, "message": { "description": "Message provides additional information about the action\nExample: Domain retrieved successfully", "type": "string", "example": "Domains retrieved successfully" }, "status": { "description": "Status indicates the result of the action\nExample: success", "type": "string", "example": "success" } } }, "restmailstack.MailboxRequest": { "description": "Request body for adding and configuring a new mailbox", "type": "object", "required": [ "password", "username" ], "properties": { "forwardingEnabled": { "description": "Specifies if email forwarding is enabled\nExample: true", "type": "boolean", "example": true }, "forwardingTo": { "description": "Email address to forward to (if forwarding is enabled)\nExample: johndoe.forward@example.com", "type": "array", "items": { "type": "string" }, "example": [ "['user1@example.com'", " 'user2@example.com']" ] }, "password": { "description": "Password for the mailbox (e.g., \"SecurePassword123!\")\nRequired: true\nExample: SecurePassword123!", "type": "string", "example": "SecurePassword123!" }, "username": { "description": "Username for the mailbox (e.g., \"john.doe\")\nRequired: true\nExample: john.doe", "type": "string", "example": "john.doe" }, "webmailEnabled": { "description": "Specifies if webmail access is enabled\nExample: true", "type": "boolean", "example": true } } }, "restmailstack.MailboxResponse": { "description": "Mailbox object in the response", "type": "object", "properties": { "email": { "description": "Email is the email address for the mailbox\nRequired: true\nExample: user@example.com", "type": "string", "example": "user@example.com" }, "forwardingEnabled": { "description": "ForwardingEnabled indicates if email forwarding is enabled\nExample: true", "type": "boolean", "example": true }, "forwardingTo": { "description": "ForwardingTo is the email address the mailbox forwards to\nExample: user@forward.com", "type": "array", "items": { "type": "string" }, "example": [ "['user1@example.com'", " 'user2@example.com']" ] }, "message": { "description": "Message provides additional information about the action\nExample: Mailbox setup successful", "type": "string", "example": "Mailbox setup successful" }, "status": { "description": "Status indicates the result of the action\nExample: success", "type": "string", "example": "success" }, "webmailEnabled": { "description": "WebmailEnabled indicates if webmail access is enabled\nExample: true", "type": "boolean", "example": true } } }, "restmailstack.MailboxesResponse": { "description": "Response body for all mailbox details", "type": "object", "properties": { "mailboxes": { "type": "array", "items": { "$ref": "#/definitions/restmailstack.MailboxResponse" } }, "message": { "description": "Message provides additional information about the action\nExample: Mailboxes retrieved successfully", "type": "string", "example": "Mailboxes retrieved successfully" }, "status": { "description": "Status indicates the result of the action\nExample: success", "type": "string", "example": "success" } } }, "restmailstack.RegisterNewDomainRequest": { "description": "Request body for domain registration", "type": "object", "properties": { "domain": { "description": "Domain is the domain name to be registered\nRequired: true\nExample: example.com", "type": "string", "example": "example.com" }, "website": { "description": "Destination website for permanent redirect\nRequired: true\nExample: www.example.com", "type": "string", "example": "www.example.com" } } }, "restverify.BulkResultsDetails": { "description": "Detailed results of the bulk email verification.", "type": "object", "properties": { "deliverable": { "type": "integer", "example": 950 }, "downloadUrl": { "type": "string", "example": "https://api.customeros.ai/verify/v1/email/bulk/results/550e8400-e29b-41d4-a716-446655440000/download" }, "totalEmails": { "type": "integer", "example": 1000 }, "undeliverable": { "type": "integer", "example": 45 } } }, "restverify.BulkResultsResponse": { "description": "Response structure for returning bulk email verification results after processing.", "type": "object", "properties": { "estimatedCompletionTs": { "description": "Epoch timestamp", "type": "integer", "example": 1694030400 }, "fileName": { "type": "string", "example": "emails.csv" }, "jobId": { "type": "string", "example": "550e8400-e29b-41d4-a716-446655440000" }, "message": { "type": "string", "example": "Completed 1000 of 1000 emails" }, "results": { "$ref": "#/definitions/restverify.BulkResultsDetails" }, "status": { "type": "string", "example": "completed" } } }, "restverify.BulkUploadResponse": { "description": "Response structure for bulk email upload, containing job ID, result URL, and estimated completion time.", "type": "object", "properties": { "estimatedCompletionTs": { "description": "Epoch timestamp", "type": "number", "example": 1694030400 }, "jobId": { "type": "string", "example": "550e8400-e29b-41d4-a716-446655440000" }, "message": { "type": "string", "example": "File uploaded successfully" }, "resultUrl": { "type": "string", "example": "https://api.customeros.ai/verify/v1/email/bulk/results/550e8400-e29b-41d4-a716-446655440000" } } }, "restverify.EmailVerificationResponse": { "description": "The response structure for email verification, providing detailed validation results.", "type": "object", "properties": { "alternateEmail": { "description": "AlternateEmail provides an alternate email if available", "type": "string", "example": "alternate@example.com" }, "deliverable": { "description": "Deliverable indicates whether the email is deliverable (e.g., \"true\", \"false\", \"unknown\")", "type": "string", "example": "true" }, "email": { "description": "Email is the email address that was verified", "type": "string", "example": "example@example.com" }, "isCatchAll": { "description": "IsCatchAll indicates if the email address is a catch-all address", "type": "boolean", "example": false }, "isRisky": { "description": "IsRisky indicates whether the email address is risky (e.g., used in spam or phishing)", "type": "boolean", "example": false }, "message": { "description": "Message contains any additional information or errors related to the verification", "type": "string", "example": "Email verified successfully" }, "provider": { "description": "Provider is the email service provider (e.g., Gmail, Outlook)", "type": "string", "example": "gmail" }, "risk": { "description": "Risk provides detailed risk factors associated with the email address", "allOf": [ { "$ref": "#/definitions/restverify.EmailVerificationRisk" } ] }, "secureGatewayProvider": { "description": "SecureGatewayProvider is the secure gateway provider (e.g., Proofpoint, Mimecast)", "type": "string", "example": "Proofpoint" }, "status": { "description": "Status indicates the status of the verification (e.g., \"success\" or \"failure\")", "type": "string", "example": "success" }, "syntax": { "description": "Syntax provides details on the syntax validation of the email", "allOf": [ { "$ref": "#/definitions/restverify.EmailVerificationSyntax" } ] } } }, "restverify.EmailVerificationRisk": { "type": "object", "properties": { "isFirewalled": { "description": "IsFirewalled indicates whether the email is protected by a firewall", "type": "boolean", "example": false }, "isFreeProvider": { "description": "IsFreeProvider indicates if the email uses a free provider like Gmail or Yahoo", "type": "boolean", "example": true }, "isMailboxFull": { "description": "IsMailboxFull indicates if the mailbox is full", "type": "boolean", "example": false }, "isPrimaryDomain": { "description": "IsPrimaryDomain indicates if the email belongs to a primary domain (not an alias)", "type": "boolean", "example": true }, "isRoleMailbox": { "description": "IsRoleMailbox indicates if the email belongs to a role (e.g., info@, support@)", "type": "boolean", "example": false } } }, "restverify.EmailVerificationSyntax": { "type": "object", "properties": { "domain": { "description": "Domain represents the domain part of the email address", "type": "string", "example": "example.com" }, "isValid": { "description": "IsValid indicates if the syntax of the email is valid", "type": "boolean", "example": true }, "user": { "description": "User represents the local part (before the @) of the email address", "type": "string", "example": "example" } } }, "restverify.IpIntelligenceGeolocation": { "description": "Geolocation data related to the IP address.", "type": "object", "properties": { "city": { "type": "string", "example": "Berlin" }, "country": { "type": "string", "example": "Germany" }, "countryIso": { "type": "string", "example": "DE" }, "isEuropeanUnion": { "type": "boolean", "example": true } } }, "restverify.IpIntelligenceNetwork": { "description": "Network-related data for the IP address.", "type": "object", "properties": { "asn": { "type": "string", "example": "AS12345" }, "domain": { "type": "string", "example": "isp.com" }, "name": { "type": "string", "example": "ISP Name" }, "route": { "type": "string", "example": "192.168.0.0/16" }, "type": { "type": "string", "example": "business" } } }, "restverify.IpIntelligenceOrganization": { "description": "Organizational data for the IP address.", "type": "object", "properties": { "domain": { "type": "string", "example": "company.com" }, "linkedin": { "type": "string", "example": "https://linkedin.com/company/company" }, "name": { "type": "string", "example": "Company Name" } } }, "restverify.IpIntelligenceResponse": { "description": "Response structure for IP intelligence lookup.", "type": "object", "properties": { "geolocation": { "$ref": "#/definitions/restverify.IpIntelligenceGeolocation" }, "ip": { "type": "string", "example": "192.168.1.1" }, "message": { "type": "string", "example": "No threats detected" }, "network": { "$ref": "#/definitions/restverify.IpIntelligenceNetwork" }, "organization": { "$ref": "#/definitions/restverify.IpIntelligenceOrganization" }, "status": { "type": "string", "example": "success" }, "threats": { "$ref": "#/definitions/restverify.IpIntelligenceThreats" }, "time_zone": { "$ref": "#/definitions/restverify.IpIntelligenceTimeZone" } } }, "restverify.IpIntelligenceThreats": { "description": "Threat intelligence data related to the IP address.", "type": "object", "properties": { "isCloudRelay": { "type": "boolean", "example": false }, "isDatacenter": { "type": "boolean", "example": false }, "isMobile": { "type": "boolean", "example": true }, "isProxy": { "type": "boolean", "example": false }, "isTor": { "type": "boolean", "example": false }, "isUnallocated": { "type": "boolean", "example": true }, "isVpn": { "type": "boolean", "example": false } } }, "restverify.IpIntelligenceTimeZone": { "description": "Timezone data for the IP address.", "type": "object", "properties": { "abbr": { "type": "string", "example": "CET" }, "current_time": { "type": "string", "example": "2024-09-10T14:00:00+01:00" }, "is_dst": { "type": "boolean", "example": true }, "name": { "type": "string", "example": "Europe/Berlin" }, "offset": { "type": "string", "example": "+0100" } } } }, "securityDefinitions": { "ApiKeyAuth": { "type": "apiKey", "name": "X-CUSTOMER-OS-API-KEY", "in": "header" } } }