Run extraction of data from an iModel. This operation has two optional request body parameters: changesetId
and ecInstanceIds
. If ecInstanceIds
are provided, only the ECInstances specified will be extracted. You can provide changesetId
to run the extraction on a specific changeset.
If you do not provide the optional request body parameters:
- latest changeset will be used for extraction
- all ECInstances will be extracted that are selected by the group queries
Extraction Triggers & Configuration
Mappings can be configured with extractionEnabled
set to true
or false
. true
means that extractions will be automatically executed for the given mapping when a ChangesetGroup is completed (see ChangesetGroupCompletedEvent
). Note: Multiple ChangesetGroups can be completed for a single Synchronization job which will result in multiple automatic extractions.
If extractionEnabled
is set to false
, the automatic extractions are disabled. However, extractions can still be executed for a specific mapping manually using the Run Extraction operation and the mappings
request body parameter. To have a better control over extractions, it is recommended to set extractionEnabled
to false
and manually trigger an extraction when a mapping's extracted data is stale and needs to be refreshed.
Notes
Data will not be extracted for a mapping if that mapping was already extracted from a newer changeset. If you wish to "go back in time" with a mapping and extract data from an older changeset, you will need to copy the mapping and run extraction on the copy.
Authentication
Requires Authorization
header with valid Bearer token for scope itwin-platform
.
For more documentation on authorization and how to get access token visit OAUTH2 Authorization page.
Authorization
User must have imodels_write
permission(s) assigned at the iTwin level. iModel specific permissions may also be applied at the iModel level if iModel level permissions are enabled.
Alternatively the user should be an Organization Administrator for the Organization that owns a given iTwin or iModel.
An Organization Administrator must have at least one of the following roles assigned in User Management: Account Administrator, Co-Administrator, or CONNECT Services Administrator. For more information about User Management please visit our Bentley Communities Licensing, Cloud, and Web Services wiki page.
Rate limits
All iTwin Platform API operations have a rate limit. For more documentation on that visit Rate limits and quotas page.
"Try it out" Limitations
When you run an Extraction with the "Try it out" function on a mapping that was created or modified by using the "Try it out" function, you are limited to 100 extracted rows for each group. Mapping modification is any POST/DELETE/PATCH/PUT request to any endpoint with the tag "Mappings" or if the URL contains {mappingId}.
Request headers
OAuth access token with itwin-platform
scope
Setting to application/vnd.bentley.itwin-platform.v1+json
is recommended.
Request body
Extraction Request Details
Id of the iModel for which to run the extraction.
Id of the iModel Changeset to run the extraction against. Defaults to latest changeset.
List of ECInstanceIds to extract during the new extraction. If provided, extraction will only extract rows with ECInstanceId value that is in the provided list. If not provided, extraction will extract all rows without any filtering.
Example
{ "iModelId": "70a3d6d3-5385-4bc3-87c4-b6bf106e1c0a", "changesetId": "f525c4c77f22f44b694dcce8c86462b10bd9725f", "mappings": [{ "id": "ebbdb3eb-1c0c-4f9f-abd1-5dac8df4ec02" }], "ecInstanceIds": [ "0x1", "0x2", "0x3" ] }
Response 201 Created
OK
{ "extraction": { "id": "40f71ed2-31a3-45d3-bce0-5c9f3f112c03", "state": "Queued", "startedOn": "2022-09-10T13:44:56+00:00", "_links": { "status": { "href": "https://api.bentley.com/grouping-and-mapping/datasources/imodel-mappings/extractions/40f71ed2-31a3-45d3-bce0-5c9f3f112c03" }, "logs": { "href": "https://api.bentley.com/grouping-and-mapping/datasources/imodel-mappings/extractions/40f71ed2-31a3-45d3-bce0-5c9f3f112c03/logs" } } } }
Response 401 Unauthorized
This response indicates that request lacks valid authentication credentials. Access token might not been provided, issued by the wrong issuer, does not have required scopes or request headers were malformed.
{ "error": { "code": "HeaderNotFound", "message": "Header Authorization was not found in the request. Access denied." } }
Response 403 Forbidden
User is not authorized to run extraction on the iModel.
{ "error": { "code": "InsufficientPermissions", "message": "The user has insufficient permissions for the requested operation." } }
Response 422 Unprocessable Entity
The 422 (Unprocessable Entity) status code indicates that the request cannot be processed by the server due to a client error (e.g. malformed request syntax)
{ "error": { "code": "InvalidGroupingAndMappingRequest", "message": "Cannot run Extraction.", "details": [{ "code": "InvalidValue", "message": "Provided 'iModelId' value is not valid. Requested iModel is not available.", "target": "iModelId" }] } }
Response 429 Too many requests
This response indicates that the client sent more requests than allowed by this API for the current tier of the client.
{ "error": { "code": "RateLimitExceeded", "message": "The client sent more requests than allowed by this API for the current tier of the client." } }
Response headers
Number of seconds to wait until client is allowed to make more requests.
Extraction Request Details
Details of a new Extraction request.
Id of the iModel for which to run the extraction.
Id of the iModel Changeset to run the extraction against. Defaults to latest changeset.
List of ECInstanceIds to extract during the new extraction. If provided, extraction will only extract rows with ECInstanceId value that is in the provided list. If not provided, extraction will extract all rows without any filtering.
{ "title": "Extraction Request Details", "type": "object", "description": "Details of a new Extraction request.", "properties": { "iModelId": { "type": "string", "description": "Id of the iModel for which to run the extraction." }, "changesetId": { "type": "string", "description": "Id of the iModel Changeset to run the extraction against. Defaults to latest changeset.", "nullable": true }, "mappings": { "type": "array", "description": "List of mappings to extract.", "items": { "$ref": "#/components/schemas/ExtractionMapping" } }, "ecInstanceIds": { "type": "array", "description": "List of ECInstanceIds to extract during the new extraction. If provided, extraction will only extract rows with ECInstanceId value that is in the provided list. If not provided, extraction will extract all rows without any filtering.", "items": { "type": "string" }, "nullable": true } }, "required": [ "iModelId", "mappings" ], "additionalProperties": false }
Mapping Reference
A mapping reference for extraction.
The mapping Id.
{ "title": "Mapping Reference", "type": "object", "description": "A mapping reference for extraction.", "properties": { "id": { "type": "string", "description": "The mapping Id." } }, "required": [ "id" ], "additionalProperties": false }
Extraction Status
Current status of an extraction.
The extraction Id.
Current state of the extraction. One of 'Queued', 'Running', 'Succeeded', 'PartiallySucceeded', 'Failed'.
Start time of the extraction.
{ "title": "Extraction Status", "type": "object", "description": "Current status of an extraction.", "properties": { "id": { "type": "string", "description": "The extraction Id." }, "state": { "type": "string", "description": "Current state of the extraction. One of 'Queued', 'Running', 'Succeeded', 'PartiallySucceeded', 'Failed'." }, "startedOn": { "type": "string", "description": "Start time of the extraction.", "format": "date-time", "example": "0000-00-00T00:00:00.0000000Z" }, "_links": { "$ref": "#/components/schemas/ExtractionLinks", "description": "Contains contextual hyperlinks to related data." } }, "required": [ "id", "state", "startedOn", "_links" ], "additionalProperties": false }
Extraction Links
Hyperlinks to related data which complements this entity.
{ "title": "Extraction Links", "type": "object", "description": "Hyperlinks to related data which complements this entity.", "properties": { "status": { "$ref": "#/components/schemas/Link", "description": "Link to retrieve the extraction status." }, "logs": { "$ref": "#/components/schemas/Link", "description": "Link to retrieve the extraction logs." } }, "required": [ "status", "logs" ], "additionalProperties": false }
Extraction response
Container for an extraction status object.
{ "title": "Extraction response", "type": "object", "description": "Container for an extraction status object.", "properties": { "extraction": { "$ref": "#/components/schemas/ExtractionStatus", "description": "Extraction status." } }, "required": [ "extraction" ], "additionalProperties": false }
Link
Hyperlink container.
Hyperlink to the specific entity.
{ "title": "Link", "type": "object", "description": "Hyperlink container.", "properties": { "href": { "type": "string", "description": "Hyperlink to the specific entity." } }, "required": [ "href" ], "additionalProperties": false }
DetailedError
Contains error information and an array of more specific errors.
One of a server-defined set of error codes.
A human-readable representation of the error.
The target of the error.
{ "type": "object", "description": "Contains error information and an array of more specific errors.", "properties": { "code": { "type": "string", "description": "One of a server-defined set of error codes." }, "message": { "type": "string", "description": "A human-readable representation of the error." }, "target": { "type": "string", "description": "The target of the error.", "nullable": true }, "details": { "type": "array", "description": "Optional array of more specific errors.", "items": { "$ref": "#/components/schemas/Error" } } }, "required": [ "code", "message", "details" ], "additionalProperties": true }
Detailed Error Response
Gives details for an error that occurred while handling the request. Note that clients MUST NOT assume that every failed request will produce an object of this schema, or that all of the properties in the response will be non-null, as the error may have prevented this response from being constructed.
{ "type": "object", "title": "Detailed Error Response", "description": "Gives details for an error that occurred while handling the request. Note that clients MUST NOT assume that every failed request will produce an object of this schema, or that all of the properties in the response will be non-null, as the error may have prevented this response from being constructed.", "properties": { "error": { "description": "Error Detailed information.", "$ref": "#/components/schemas/DetailedError" } }, "required": [ "error" ], "additionalProperties": false }
Error
Contains error information.
One of a server-defined set of error codes.
A human-readable representation of the error.
The target of the error.
{ "type": "object", "description": "Contains error information.", "properties": { "code": { "type": "string", "description": "One of a server-defined set of error codes." }, "message": { "type": "string", "description": "A human-readable representation of the error." }, "target": { "type": "string", "description": "The target of the error.", "nullable": true } }, "required": [ "code", "message" ], "additionalProperties": true }
Error Response
Gives details for an error that occurred while handling the request. Note that clients MUST NOT assume that every failed request will produce an object of this schema, or that all of the properties in the response will be non-null, as the error may have prevented this response from being constructed.
{ "type": "object", "title": "Error Response", "description": "Gives details for an error that occurred while handling the request. Note that clients MUST NOT assume that every failed request will produce an object of this schema, or that all of the properties in the response will be non-null, as the error may have prevented this response from being constructed.", "properties": { "error": { "description": "Error information.", "$ref": "#/components/schemas/Error" } }, "required": [ "error" ], "additionalProperties": false }
Was this page helpful?