openapi: 3.2.0 info: title: Bulk Enhance API description: Enhance is an API to find a person or organization in the Knowledge Graph using partial data termsOfService: https://www.diffbot.com/terms/ contact: email: support@diffbot.com version: 3.0.0 servers: - url: https://kg.diffbot.com description: Diffbot KG endpoint tags: - name: Bulk Enhance description: Enhance multiple records asynchronously paths: /kg/v3/enhance/bulk: post: tags: - Bulk Enhance summary: Create a Bulkjob description: Enhance multiple records in bulk asynchronously operationId: submitBulkjob parameters: - name: name in: query description: Enhance Bulkjob name schema: type: string - name: size in: query description: Maximum number of results to return schema: type: integer format: int32 default: 1 - name: threshold in: query description: Enhance similarity threshold schema: type: number format: double - name: refresh in: query description: '`refresh=true` indicates that Diffbot will attempt to recrawl all the origins of the identified entity and reconstruct the returned entity from this refreshed data.' schema: type: boolean default: false - name: search in: query description: '`search=true` indicates that Diffbot will attempt to search the web for origins for the search query and merge relevant results with whats found in the KG.' schema: type: boolean default: false - name: nonCanonicalFacts in: query description: '`nonCanonicalFacts=true` returns non-canonical facts.' schema: type: boolean default: false - name: jsonmode in: query description: '`jsonmode=extended` returns origin information for facts.' schema: type: string enum: - extended - name: webhookurl in: query description: Webhook URL schema: type: string requestBody: description: Bulk query payload content: application/json: schema: type: array items: oneOf: - $ref: '#/components/schemas/OrganizationRequest' - $ref: '#/components/schemas/PersonRequest' - $ref: '#/components/schemas/IdRequestEntity' responses: '202': description: Acknowledgement with bulkjobId content: application/json: schema: $ref: '#/components/schemas/BulkjobAccepted' '400': description: Error parsing request content: application/json: schema: $ref: '#/components/schemas/StatusResponseError' '401': description: Token not specified or other client errors content: application/json: schema: $ref: '#/components/schemas/AuthError' '429': description: Insufficient credits content: application/json: schema: $ref: '#/components/schemas/StatusResponseError' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/StatusResponseError' security: - tokenscheme: [] x-api-order: '0' /kg/v3/enhance/bulk/status: get: tags: - Bulk Enhance summary: List Bulkjobs for Token description: Poll the status of all Enhance Bulkjobs for a token operationId: bulkjobStatusForToken responses: '200': description: Success status content: application/json: schema: type: array items: $ref: '#/components/schemas/BulkjobStatus' '401': description: Token not specified or other client errors content: application/json: schema: $ref: '#/components/schemas/AuthError' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/StatusResponseError' security: - tokenscheme: [] x-api-order: '1' /kg/v3/enhance/bulk/{bulkjobId}/status: get: tags: - Bulk Enhance summary: Poll bulkjob status description: Poll the status of an Enhance Bulkjob operationId: bulkjobStatus parameters: - name: bulkjobId in: path description: Enhance Bulkjob ID required: true schema: type: string responses: '200': description: Bulkjob complete content: application/json: schema: $ref: '#/components/schemas/BulkjobStatusResponse' '201': description: Bulkjob is still executing or is stopped content: application/json: schema: $ref: '#/components/schemas/BulkjobStatusResponse' '401': description: Token not specified or other client errors content: application/json: schema: $ref: '#/components/schemas/AuthError' '404': description: Bulkjob not found content: application/json: schema: $ref: '#/components/schemas/StatusResponseError' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/StatusResponseError' security: - tokenscheme: [] x-api-order: '2' /kg/v3/enhance/bulk/{bulkjobId}: get: tags: - Bulk Enhance summary: Download Results of Bulkjob description: Download the result of a completed Enhance Bulkjob operationId: bulkjobResultGet parameters: - name: bulkjobId in: path description: Enhance Bulkjob ID required: true schema: type: string - name: head in: query description: Return first n results schema: type: integer format: int32 default: 0 - name: from in: query description: 1-based index of the first result to return (1 = first result). schema: type: integer format: int32 default: 0 - name: size in: query description: Maximum number of results to return starting from the 'from' position. schema: type: integer format: int32 default: -1 - name: onlyMatches in: query description: Return only records that have a match schema: type: string default: 'false' enum: - 'true' - 'false' - name: format in: query description: Export format schema: type: string enum: - json - jsonl - csv - xls - xlsx - name: exportspec in: query description: 'The spec defines the columns to export. This is applicable for csv, xls and xslx formats. Export spec specifies how to export the entity JSON to a csv. A simple export spec looks like `name;summary`. To specify more complex export spec, including specifying how many of a list of `industries` to return, or the ideal `employment` record, see [Exporting Columnar Format](https://docs.diffbot.com/reference/exporting-csv) and [JsonPath Filtering](https://docs.diffbot.com/reference/filtering-fields).' schema: type: string - name: exportfile in: query description: File name of the export file schema: type: string - name: exportseparator in: query description: Separator for multi-value fields when exporting columnar results schema: type: string - name: exportquery in: query description: Prefixes the enhance query parameters to the CSV export result schema: type: string default: 'false' enum: - 'true' - 'false' - name: filter in: query description: Semi-colon separated path filter to filter response json. You can use a simple dot notation `skills.name` or a JsonPath expression such as `$.name;$.locations.country.name`. For more advanced options, see [JsonPath Filtering](https://docs.diffbot.com/reference/filtering-fields) for syntax. schema: type: string - name: filterExclude in: query description: Semi-colon separated path filter to filter and exclude data from response json. You can use a simple dot notation `skills.name` or a JsonPath expression such as `$.name;$.locations.country.name`. For more advanced options, see [JsonPath Filtering](https://docs.diffbot.com/reference/filtering-fields) for syntax. schema: type: string - name: wait in: query description: Seconds to wait for bulkjob results to export. Results will continue to export in the background. To only trigger an export, use 0. schema: type: integer format: int32 default: 120 responses: '200': description: Result data. Depends on format (default is json lines). content: application/json: schema: $ref: '#/components/schemas/JsonNode' application/json-lines: schema: type: object text/csv: schema: type: object application/ms-excel: schema: type: object application/vnd.openxmlformats-officedocument.spreadsheetml.sheet: schema: type: object '201': description: Bulkjob or result export is still executing or is stopped content: application/json: schema: $ref: '#/components/schemas/StatusResponseError' '400': description: Invalid bulkjobId content: application/json: schema: $ref: '#/components/schemas/StatusResponseError' '401': description: Token not specified or other client errors content: application/json: schema: $ref: '#/components/schemas/AuthError' '404': description: Bulkjob not found content: application/json: schema: $ref: '#/components/schemas/StatusResponseError' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/StatusResponseError' security: - tokenscheme: [] x-api-order: '4' post: tags: - Bulk Enhance summary: Download Results of Bulkjob description: Download the result of a completed Enhance Bulkjob operationId: bulkjobResultPost parameters: - name: bulkjobId in: path description: Enhance Bulkjob ID required: true schema: type: string requestBody: description: Bulk results request content: application/json: schema: $ref: '#/components/schemas/BulkjobResultPostRequest' responses: '200': description: Result data. Depends on format (default is json lines). content: application/json: schema: $ref: '#/components/schemas/JsonNode' application/json-lines: schema: type: object text/csv: schema: type: object application/ms-excel: schema: type: object application/vnd.openxmlformats-officedocument.spreadsheetml.sheet: schema: type: object '201': description: Bulkjob is still executing or is stopped content: application/json: schema: $ref: '#/components/schemas/StatusResponseError' '400': description: Invalid bulkjobId content: application/json: schema: $ref: '#/components/schemas/StatusResponseError' '401': description: Token not specified or other client errors content: application/json: schema: $ref: '#/components/schemas/AuthError' '404': description: Bulkjob not found content: application/json: schema: $ref: '#/components/schemas/StatusResponseError' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/StatusResponseError' security: - tokenscheme: [] /kg/v3/enhance/bulk/report/{bulkjobId}/{reportId}: get: tags: - Bulk Enhance summary: Download Bulkjob Coverage Report description: Download the coverage report of a completed Bulk Enhance job operationId: coverageReportGet parameters: - name: bulkjobId in: path description: Enhance Bulkjob ID required: true schema: type: string - name: reportId in: path description: Enhance Report ID required: true schema: type: string responses: '200': description: Coverage report (csv) content: text/csv: schema: type: object application/json: schema: $ref: '#/components/schemas/JsonNode' '400': description: Report generation still in progress content: application/json: schema: $ref: '#/components/schemas/StatusResponseError' '401': description: Token not specified or other client errors content: application/json: schema: $ref: '#/components/schemas/AuthError' '404': description: Report not found content: application/json: schema: $ref: '#/components/schemas/StatusResponseError' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/StatusResponseError' security: - tokenscheme: [] x-api-order: '4' /kg/v3/enhance/bulk/{bulkjobId}/delete: get: tags: - Bulk Enhance summary: Delete Bulkjob description: Delete bulkjob operationId: deleteBulkjob parameters: - name: bulkjobId in: path description: Enhance Bulkjob ID required: true schema: type: string responses: '200': description: Bulkjob was successfully deleted '400': description: Invalid bulkjobId content: application/json: schema: $ref: '#/components/schemas/StatusResponseError' '401': description: Token not specified or other client errors content: application/json: schema: $ref: '#/components/schemas/AuthError' '404': description: Bulkjob not found content: application/json: schema: $ref: '#/components/schemas/StatusResponseError' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/StatusResponseError' security: - tokenscheme: [] /kg/v3/enhance/bulk/{bulkjobId}/{jobIdx}: get: tags: - Bulk Enhance summary: Download Single Result of Bulkjob description: Use this API to download the result of a single job within a bulkjob by specifying the index of the job. operationId: singleResult parameters: - name: bulkjobId in: path description: Enhance Bulkjob ID required: true schema: type: string - name: jobIdx in: path description: Job index within the bulkjob required: true schema: type: integer format: int32 responses: '200': description: Enhance result content: application/json: schema: $ref: '#/components/schemas/EnhanceResponse' '201': description: Bulkjob is still executing or is stopped content: application/json: schema: $ref: '#/components/schemas/StatusResponseError' '400': description: Invalid bulkjobId content: application/json: schema: $ref: '#/components/schemas/StatusResponseError' '401': description: Token not specified or other client errors content: application/json: schema: $ref: '#/components/schemas/AuthError' '404': description: Bulkjob not found content: application/json: schema: $ref: '#/components/schemas/StatusResponseError' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/StatusResponseError' security: - tokenscheme: [] /kg/v3/enhance/bulk/{bulkjobId}/stop: get: tags: - Bulk Enhance summary: Stop Bulkjob description: Stop an active Enhance Bulkjob operationId: stopBulkjob parameters: - name: bulkjobId in: path description: Enhance Bulkjob ID required: true schema: type: string responses: '200': description: Bulkjob status after the stop request content: application/json: schema: $ref: '#/components/schemas/BulkjobRecoveryStatusResponse' '400': description: Invalid bulkjobId content: application/json: schema: $ref: '#/components/schemas/StatusResponseError' '401': description: Token not specified or other client errors content: application/json: schema: $ref: '#/components/schemas/AuthError' '404': description: Bulkjob not found content: application/json: schema: $ref: '#/components/schemas/StatusResponseError' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/StatusResponseError' security: - tokenscheme: [] components: schemas: Delta: type: object Report: type: object properties: reportId: type: string description: Coverage Report ID status: type: string description: Status of report generation. One of {NOT_STARTED, IN_PROCESS, COMPLETE, UNKNOWN} enum: - NOT_STARTED - IN_PROCESS - COMPLETE - COMPLETE_WITH_FAILURES - STOPPED - ERROR_FINALIZING - ERROR_SCHEDULING - UNKNOWN format: type: string description: Export format spec: type: string description: 'The spec defines the columns to export. This is applicable for csv, xls and xslx formats. Export spec specifies how to export the entity JSON to a csv. A simple export spec looks like `name;summary`. To specify more complex export spec, including specifying how many of a list of `industries` to return, or the ideal `employment` record, see [Exporting Columnar Format](https://docs.diffbot.com/reference/exporting-csv) and [JsonPath Filtering](https://docs.diffbot.com/reference/filtering-fields).' exportfile: type: string exportSeparator: type: string description: Separator for multi-value fields when exporting columnar results filter: type: string description: Semi-colon separated path filter to filter response json. You can use a simple dot notation `skills.name` or a JsonPath expression such as `$.name;$.locations.country.name`. For more advanced options, see [JsonPath Filtering](https://docs.diffbot.com/reference/filtering-fields) for syntax. onlyMatches: type: boolean description: Return only records that have a match description: Coverage reports generated for this bulkjob EnhanceResponse: type: object properties: version: type: integer description: Response version format: int32 hits: type: integer description: Number of matches returned format: int32 kgversion: type: string description: Version of KG that was queried request_ctx: $ref: '#/components/schemas/RequestContext' data: type: array items: $ref: '#/components/schemas/Data' errors: type: array items: type: string description: Error/warning messages. searchInfo: type: object additionalProperties: $ref: '#/components/schemas/SearchCandidate' description: Search info for debug BulkjobStatusResponse: type: object properties: code: type: integer description: Bulkjob status code (same as the HTTP status code) format: int32 content: $ref: '#/components/schemas/BulkjobStatus' StatusResponseError: type: object properties: code: type: integer description: Status code (same as the HTTP status code) format: int32 message: type: string description: Status message request_ctx: $ref: '#/components/schemas/RequestContext' bulkjobStatus: $ref: '#/components/schemas/BulkjobStatus' error: type: boolean description: '`true` if error' IdRequestEntity: type: object properties: id: type: string description: DiffbotId of entity to enhance. Parameter can be used with types `Person` and `Organization` BulkjobStatus: type: object properties: job_id: type: string description: Bulkjob Id name: type: string description: Bulkjob name refresh: type: boolean description: Is Refresh enabled for this job? search: type: string description: Is Search enabled for this job? enum: - 'ON' - 'OFF' - SEARCHONLY - FALLBACK message: type: string description: Bulkjob status message jobs_total: type: integer description: Number of jobs in bulkjob format: int32 jobs_completed: type: integer description: Number of jobs completed in bulkjob. format: int32 status: type: string description: Status of Bulkjob. One of {NOT_STARTED, IN_PROCESS, COMPLETE, COMPLETE_WITH_FAILURES, STOPPED, ERROR_FINALIZING, UNKNOWN} enum: - NOT_STARTED - IN_PROCESS - COMPLETE - COMPLETE_WITH_FAILURES - STOPPED - ERROR_FINALIZING - ERROR_SCHEDULING - UNKNOWN estimate_remaining_time: type: integer description: Estimated remaining time for bulkjob to complete (in seconds). `null` if job is completed or not started. format: int64 submit_time_ms: type: integer description: Bulkjob submit time format: int64 start_time_ms: type: integer description: Bulkjob start time format: int64 completed_time_ms: type: integer description: Bulkjob completed time format: int64 total_results: type: integer description: Total results format: int32 bulkjobId: type: string totalJobs: type: integer format: int32 finishedJobs: type: integer format: int32 estimateRemainingTimeSec: type: integer format: int64 submitTimeMs: type: integer format: int64 startTimeMs: type: integer format: int64 completedTimeMs: type: integer format: int64 totalResults: type: integer format: int32 fileSizeBytes: type: integer description: Size of download file in bytes format: int64 reports: type: array description: Coverage reports generated for this bulkjob items: $ref: '#/components/schemas/Report' description: Bulkjob status RequestContext: type: object properties: query: description: Submitted query oneOf: - $ref: '#/components/schemas/OrganizationRequest' - $ref: '#/components/schemas/PersonRequest' - type: string query_ctx: type: object additionalProperties: type: object description: 'Query context. Example: submitted query parameters etc.' description: 'Query context. Example: submitted query parameters etc.' description: Request context RefreshDebugInformation: type: object properties: url: type: string hasResult: type: boolean lastCrawlTime: type: integer format: int64 message: type: string OrganizationRequest: type: object properties: type: type: string description: Diffbot entity type name: type: array description: Name of the entity to enhance. Parameter can be used with types `Person` and `Organization` items: type: string url: type: array description: Origin or homepage URI of entity to enhance. Parameter can be used with types `Person` and `Organization` items: type: string location: type: string description: Location of the entity to enhance. Parameter can be used with types `Person` and `Organization` ip: type: string description: IP address of the entity to enhance. Parameter can be used with types `Person` and `Organization` phone: type: string description: Phone of the entity to enhance. Parameter can be used with types `Person` and `Organization` description: type: string description: Description of the entity to enhance. Parameter can be used with types `Person` and `Organization` JsonNode: type: object SearchCandidate: type: object properties: mlScore: type: number format: double baseMlScore: type: number format: double debugInfo: $ref: '#/components/schemas/RefreshDebugInformation' description: Search info for debug PersonRequest: type: object properties: type: type: string description: Diffbot entity type name: type: array description: Name of the entity to enhance. Parameter can be used with types `Person` and `Organization` items: type: string url: type: array description: Origin or homepage URI of entity to enhance. Parameter can be used with types `Person` and `Organization` items: type: string location: type: string description: Location of the entity to enhance. Parameter can be used with types `Person` and `Organization` ip: type: string description: IP address of the entity to enhance. Parameter can be used with types `Person` and `Organization` phone: type: string description: Phone of the entity to enhance. Parameter can be used with types `Person` and `Organization` description: type: string description: Description of the entity to enhance. Parameter can be used with types `Person` and `Organization` email: type: array description: Email of the entity to enhance. Parameter can be used only with type `Person` items: type: string employer: type: string description: Employer of the entity to enhance. Parameter can be used only with type `Person` title: type: string description: Title of the entity to enhance. Parameter can be used only with type `Person` school: type: string description: School of the entity to enhance. Parameter can be used only with type `Person` BulkjobRecoveryStatusResponse: type: object properties: status: type: string description: Bulkjob recovery status enum: - NOT_STARTED - IN_PROCESS - COMPLETE - COMPLETE_WITH_FAILURES - STOPPED - ERROR_FINALIZING - ERROR_SCHEDULING - UNKNOWN message: type: string description: Bulkjob recovery status message AuthError: type: object properties: requestId: type: string description: Identifier of the rejected request, also returned in the `X-Diffbot-RequestId` header code: type: integer description: Status code (same as the HTTP status code) format: int32 message: type: string description: Status message BulkjobAccepted: type: object properties: job_id: type: string description: Bulkjob Id for checking status and downloading results Data: type: object properties: score: type: number description: Enhance score format: double esscore: type: number format: double entity: $ref: '#/components/schemas/ObjectNode' errors: type: array items: type: string description: Error/warning messages. refreshInfo: type: object additionalProperties: $ref: '#/components/schemas/RefreshDebugInformation' description: Refresh info for debug refreshDelta: $ref: '#/components/schemas/Delta' entity_ctx: type: object additionalProperties: type: object description: Entity-level context description: Entity-level context description: Enhanced entity data ObjectNode: type: object description: Enhanced entity. Can be null if no entity was found. example: id: EYX1i02YVPsuT7fPLUYgRhQ images: - naturalHeight: 0 width: 0 url: https://kg.diffbot.com/image/api/get?fetch=yes&url=g%3Cj7P0St%7D9u.LnOv%7BI%7C%40g7.pBYINs%3Ff%7CGZ7jr-tGZhWf%3DK%2FOvy%5Bp%3CSKbs8i%7CEyNzCa%3EYr%3Ef%3CRc%3CLr5gx_hOgiFuER5%3Cb%7C%3E.I%5Do isCached: true naturalWidth: 0 primary: true height: 0 diffbotUri: http://diffbot.com/entity/EYX1i02YVPsuT7fPLUYgRhQ name: Diffbot origins: - angel.co/diffbot - bloomberg.com/profiles/companies/0506286D:US-diffbot-corp - crunchbase.com/organization/diffbot - linkedin.com/company/diffbot - en.wikipedia.org/wiki/Diffbot BulkjobResultPostRequest: type: object properties: head: type: integer description: Return first n results format: int32 from: type: integer description: 1-based index of the first result to return (1 = first result). format: int32 size: type: integer description: Maximum number of results to return starting from the 'from' position. format: int32 onlyMatches: type: boolean description: Return only records that have a match format: type: string description: Export format enum: - json - jsonl - csv - xls - xlsx exportspec: type: string description: 'The spec defines the columns to export. This is applicable for csv, xls and xslx formats. Export spec specifies how to export the entity JSON to a csv. A simple export spec looks like `name;summary`. To specify more complex export spec, including specifying how many of a list of `industries` to return, or the ideal `employment` record, see [Exporting Columnar Format](https://docs.diffbot.com/reference/exporting-csv) and [JsonPath Filtering](https://docs.diffbot.com/reference/filtering-fields).' exportfile: type: string description: File name of the export file exportseparator: type: string description: Separator for multi-value fields when exporting columnar results exportquery: type: boolean description: Prefixes the enhance query parameters to the CSV export result filter: type: string description: Semi-colon separated path filter to filter response json. You can use a simple dot notation `skills.name` or a JsonPath expression such as `$.name;$.locations.country.name`. For more advanced options, see [JsonPath Filtering](https://docs.diffbot.com/reference/filtering-fields) for syntax. filterExclude: type: string description: Semi-colon separated path filter to filter and exclude data from response json. You can use a simple dot notation `skills.name` or a JsonPath expression such as `$.name;$.locations.country.name`. For more advanced options, see [JsonPath Filtering](https://docs.diffbot.com/reference/filtering-fields) for syntax. wait: type: integer description: Seconds to wait for bulkjob results to export. Results will continue to export in the background. To only trigger an export, use 0. format: int32 securitySchemes: tokenscheme: type: apiKey description: Diffbot API token, supplied as the `token` query parameter on every request. name: token in: query