DataService API (v1 + v2)
OpenAPI sources
- v1: https://demo.avaplace.com/api/asol/ds/swagger/v1/swagger.json
- v2: https://demo.avaplace.com/api/asol/ds/swagger/v2/swagger.json
Base URL
https://demo.avaplace.com/api/asol/ds
This document provides a Swagger-UI-like, human-friendly overview of the DataService REST API.
Contents
Postman tip
- Create an environment variable
baseUrl = https://demo.avaplace.com/api/asol/ds
Legend (HTTP method badges)
| Method | Badge |
|---|---|
| GET | |
| POST | |
| PUT | |
| PATCH | |
| DELETE |
Authentication
The API uses OAuth2 Password flow (scope: apiim).
Token endpoint
POST https://demo.avaplace.com/api/asol/idp/connect/token
Use the access token
- Header:
Authorization: Bearer <access_token>
Common headers
Authorization: Bearer <token>Accept: application/jsonContent-Type: application/json(for JSON bodies)
Get an access token
The exact
client_id/client_secret(and allowed grant types) depend on your IdP registration.
curl
curl -X POST "https://demo.avaplace.com/api/asol/idp/connect/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=password" \
-d "client_id=<client_id>" \
-d "client_secret=<client_secret>" \
-d "username=<username>" \
-d "password=<password>" \
-d "scope=apiim"
PowerShell
$body = @{
grant_type = 'password'
client_id = '<client_id>'
client_secret = '<client_secret>'
username = '<username>'
password = '<password>'
scope = 'apiim'
}
$token = Invoke-RestMethod -Method Post `
-Uri 'https://demo.avaplace.com/api/asol/idp/connect/token' `
-ContentType 'application/x-www-form-urlencoded' `
-Body $body
$accessToken = $token.access_token
Postman (manual)
- Method:
POST - URL:
https://demo.avaplace.com/api/asol/idp/connect/token - Body →
x-www-form-urlencodedgrant_type=passwordclient_id=<client_id>client_secret=<client_secret>username=<username>password=<password>scope=apiim
- Send → copy
access_tokeninto your collection Authorization (Bearer Token)
Errors
Most errors return ProblemDetails (RFC 7807-like) as JSON.
Typical fields:
status(HTTP status code)title,detailinstance
Example:
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "Bad Request",
"status": 400,
"detail": "Validation failed for one or more fields.",
"instance": "/api/v2/DataModels/CustomProperties"
}
Cross-cutting concepts
Pagination
Many list endpoints accept:
Offset(int32) — Zero-based index of the first result to returnLimit(int32) — Maximum number of results to return in a single response
Common filters
Depending on endpoint/tag, you will frequently see:
Released,Unreleased,Deleted,Undeleted(boolean) — Lifecycle state filters- Tenant/mandant context:
MandantCode(string) — Multi-tenant identifier - Time range:
CreatedFrom,CreatedTo,ModifiedFrom,ModifiedTo(ISO 8601 UTC datetime)
Common Parameters & Schemas
Standard Query Parameters
| Parameter | Type | Description | Example |
|---|---|---|---|
Offset | integer (int32) | Zero-based pagination offset | 0 |
Limit | integer (int32) | Maximum number of results | 50 |
Released | boolean | Include released items | true |
Unreleased | boolean | Include unreleased items | false |
Deleted | boolean | Include deleted items | false |
Undeleted | boolean | Include non-deleted items | true |
MandantCode | string | Tenant/mandant identifier | "TENANT-001" |
CreatedFrom | string (date-time) | Filter by creation date (greater than or equal) | "2024-01-01T00:00:00Z" |
CreatedTo | string (date-time) | Filter by creation date (less than or equal) | "2024-12-31T23:59:59Z" |
ModifiedFrom | string (date-time) | Filter by modification date (greater than or equal) | "2024-01-01T00:00:00Z" |
ModifiedTo | string (date-time) | Filter by modification date (less than or equal) | "2024-12-31T23:59:59Z" |
Common Data Types
StringLocalizedValue
{
"values": [
{ "locale": "en-US", "value": "English text" },
{ "locale": "cs-CZ", "value": "Český text" }
]
}
DataModelFieldType (enum)
Text— Single-line textMultilineText— Multi-line textTwoOptions— Boolean/Yes-NoWholeNumber— IntegerDecimalNumber— Decimal numberCurrencyNumber— Currency valueUniqueIdentifier— UUID/GUIDUtcDateTime— Date and time (UTC)Date— Date onlyLookupEntity— Reference to another entityNestedEntity— Embedded entityFileReference— File attachmentSingleSelectOptionSet— Single-choice dropdownMultiSelectOptionSet— Multi-choice dropdown
Field Validations
Required— Field must have a valueStringMaxLength— Maximum text lengthStringMinLength— Minimum text lengthStringLength— Exact text lengthStringRangeLength— Text length rangeRegex— Regular expression patternMinValue— Minimum numeric/date valueMaxValue— Maximum numeric/date valueRange— Numeric/date rangeDecimalPrecision— Maximum decimal places
v2 API (recommended)
v2 modernizes the surface area (notably around Integration Agents, Integration Profiles, Integration Maps, and richer Data Model capabilities).
v2 — DataModels
What it covers
- Browse model definitions
- Resolve models by code
- Manage custom properties (CRUD)
Endpoints
/api/v2/DataModels— List data models (paged)/api/v2/DataModels/{id}— Get a model by UUID/api/v2/DataModels/ByCode/{code}— Get a model by code
Custom properties:
/api/v2/DataModels/CustomProperties— List custom properties (filters + paging)/api/v2/DataModels/CustomProperties/{id}— Get custom property by id/api/v2/DataModels/CustomProperties/ByCode/{code}— Get custom property by code/api/v2/DataModels/{modelId}/CustomProperties— Create custom property/api/v2/DataModels/CustomProperties/{id}— Update custom property (allowBreakingChangesoptional)/api/v2/DataModels/CustomProperties/{id}— Delete custom property
Query Parameters: /api/v2/DataModels/CustomProperties (GET)
| Parameter | Type | Required | Description |
|---|---|---|---|
ModelId | string (uuid) | No | Filter by data model identifier |
ModelCode | string | No | Filter by data model code |
ModelName | string | No | Filter by data model name |
ModelWideSearch | string | No | Wide search across model's Name and Code fields |
Name | string | No | Filter by custom property name |
Code | string | No | Filter by custom property code |
WideSearch | string | No | Wide search across custom property Name and Code fields |
OrganizationId | string | No | Filter by organization identifier |
OrganizationCode | string | No | Filter by organization code |
Offset | integer | No | Pagination offset |
Limit | integer | No | Maximum number of results |
Example: list data models
curl
curl -X GET "https://demo.avaplace.com/api/asol/ds/api/v2/DataModels?Offset=0&Limit=50" \
-H "Authorization: Bearer $TOKEN" \
-H "Accept: application/json"
PowerShell
Invoke-RestMethod -Method Get `
-Uri 'https://demo.avaplace.com/api/asol/ds/api/v2/DataModels?Offset=0&Limit=50' `
-Headers @{ Authorization = "Bearer $accessToken"; Accept = 'application/json' }
Request Body: /api/v2/DataModels/{modelId}/CustomProperties (POST)
Schema: DataModelCustomPropertyCreateRequest
| Property | Type | Required | Description |
|---|---|---|---|
organization | string | No | Identifier or code of the organization the custom property belongs to |
code | string | Yes | Code of the custom property (unique within the model) |
name | StringLocalizedValue | Yes | Localized display name of the custom property |
description | StringLocalizedValue | No | Localized description of the custom property |
isCollection | boolean | Yes | Indicates if the property is a collection (list) of values |
isLocalized | boolean | Yes | Indicates if the property supports localization |
fieldType | DataModelFieldType | Yes | Data type of the field (see Common Data Types) |
referencedEntityTypeIds | array[uuid] | No | List of referenced entity type IDs (for LookupEntity/NestedEntity types) |
fieldValidations | array[object] | No | Collection of field validations (see Common Parameters & Schemas) |
Example validation objects:
// Required validation
{ "validation": "Required", "allowEmptyStrings": false }
// String max length
{ "validation": "StringMaxLength", "maxLength": 100 }
// Range validation
{ "validation": "Range", "minimum": 0, "maximum": 999, "minimumIsExclusive": false, "maximumIsExclusive": false }
// Regex validation
{ "validation": "Regex", "pattern": "^[A-Z]{2}\\d{4}$" }
Example: create a custom property
This adds a custom field to an existing data model.
curl
curl -X POST "https://demo.avaplace.com/api/asol/ds/api/v2/DataModels/<modelId>/CustomProperties" \
-H "Authorization: Bearer $TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"organization": "<orgIdOrCode>",
"code": "ExternalSystemId",
"name": { "values": [ { "locale": "en-US", "value": "External System Id" } ] },
"description": { "values": [ { "locale": "en-US", "value": "Identifier from a 3rd-party system" } ] },
"isCollection": false,
"isLocalized": false,
"fieldType": "Text",
"referencedEntityTypeIds": [],
"fieldValidations": [ { "validation": "StringMaxLength", "maxLength": 64 } ]
}'
Postman (quick)
- Method:
POST - URL:
{{baseUrl}}/api/v2/DataModels/<modelId>/CustomProperties - Authorization: Bearer Token
- Body → raw → JSON: same payload as above
v2 — IntegrationAgents
What it covers
- Centralized metadata settings for the integration agent (agent/source/consumer)
- Patch settings / transformations / supported features
- Configure MessageGateway consumer
- Status history + set status
Endpoints
/api/v2/IntegrationAgents/Settings— Get settings (SourceId,clientIdoptional)/api/v2/IntegrationAgents/Settings— Patch settings
Query Parameters: /api/v2/IntegrationAgents/Settings (GET, PATCH)
| Parameter | Type | Required | Description |
|---|---|---|---|
SourceId | string (uuid) | No | The identifier of the data-source (optional) |
clientId | string | No | The client identifier (optional) |
Request Body: /api/v2/IntegrationAgents/Settings (PATCH)
Schema: IntegrationAgentPatchModel
| Property | Type | Required | Description |
|---|---|---|---|
agentDefinition | IntegrationAgentPatchSettings | No | Data agent registration settings |
sourceDefinition | IntegrationSourcePatchSettings | No | Data source integration settings |
IntegrationAgentPatchSettings:
| Property | Type | Description |
|---|---|---|
description | string | The description of data agent |
customProperties | array[key-value] | Custom properties |
IntegrationSourcePatchSettings:
| Property | Type | Description |
|---|---|---|
description | string | Data-source description |
customProperties | array[key-value] | Custom properties |
consumerType | string | Consumer type: None, Grpc, Webhook |
consumerWebhookUrl | string | Web-hook URL assigned to data-source |
-
/api/v2/IntegrationAgents/Transformations— Get transformation settings -
/api/v2/IntegrationAgents/Transformations— Patch transformations (returns 204) -
/api/v2/IntegrationAgents/SupportedFeatures— Get supported features -
/api/v2/IntegrationAgents/SupportedFeatures— Patch supported features (returns 204) -
/api/v2/IntegrationAgents/ConfigureConsumer— Configure consumer (returns 204) -
/api/v2/IntegrationAgents/Statuses— Status history -
/api/v2/IntegrationAgents/Statuses— Set status (returns 204)
v2 — IntegrationProfiles
Integration profiles represent selected application/scenario/feature configuration, typically used for filtering and processing.
Endpoints
-
/api/v2/IntegrationProfiles— List profiles (filters + paging) -
/api/v2/IntegrationProfiles/{profileId}— Get profile -
/api/v2/IntegrationProfiles/{profileId}/AvailableFeatures— RequiressourceId -
/api/v2/IntegrationProfiles/{profileId}/AvailableModels— RequiressourceId -
/api/v2/IntegrationProfiles/Current— Current profile -
/api/v2/IntegrationProfiles/Current/AvailableFeatures— RequiressourceId -
/api/v2/IntegrationProfiles/Current/AvailableModels— RequiressourceId
v2 — IntegrationMaps
Integration maps describe available apps/scenarios per “area” and activation keys.
Endpoints
/api/v2/IntegrationMaps— List maps (filters + paging)/api/v2/IntegrationMaps/{itemId}— Get a map item/api/v2/IntegrationMaps/{itemId}/Applications— List applications for a map item
Import/export by area:
/api/v2/IntegrationMaps/Import/ByArea— Import map by area (releaseoptional)/api/v2/IntegrationMaps/Export/ByArea/{areaCode}— Export map by area
v2 — QueryingData
Querying endpoints return dynamic JSON (schema is not fixed) via JObjectCollectionResult.
Endpoints
Processed data results:
/api/v2/QueryingData/ProcessedDataResults— List processing results/api/v2/QueryingData/ProcessedDataResults/{resultId}— Result summary/api/v2/QueryingData/ProcessedDataResults/{resultId}/Items— Result items (paged)
Data access:
/api/v2/QueryingData/GetData— Filtered data query/api/v2/QueryingData/GetData/ReferencedByFK— Filter by FK/api/v2/QueryingData/GetData/FilteredByAK— Filter by alternate key/api/v2/QueryingData/GetData/{resultId}— Retrieve data by processing result id/api/v2/QueryingData/GetData/{resultId}/{itemId}— Retrieve data by result id + item id
Query Parameters: /api/v2/QueryingData/GetData (GET)
| Parameter | Type | Required | Description |
|---|---|---|---|
ModelId | string | No | The data model identifier (code or UUID) |
SourceId | string (uuid) | No | The identifier of the data-source (optional) |
clientId | string | No | The client identifier (optional) |
operationId | string | No | The operation ID in operating log (optional) |
Offset | integer | No | Pagination offset (default: 0) |
Limit | integer | No | Maximum number of results (default varies by endpoint) |
IncludeDeleted | boolean | No | Flag to include deleted records (default: false) |
MandantCode | string | No | Tenant/mandant identifier |
RecordId | string (uuid) | No | Internal record identifier |
ExternalId | string | No | External identifier (fully-qualified from source) |
ReferenceId | string (uuid) | No | Global reference identifier |
ModifiedFrom | string (date-time) | No | Filter by modification date >= this value |
ModifiedTo | string (date-time) | No | Filter by modification date <= this value |
IncludeLookupProperties | string | No | Comma-separated list of navigation properties to include |
ScenarioId | string | No | Integration-scenario identifier (for integration profiles) |
FeatureId | string | No | Integration-feature identifier (for integration profiles) |
SelfSourceOnly | boolean | No | Apply self-source filter (for testing, default: false) |
PublisherSourceId | string | No | Publisher source identifier |
options | string | No | Format options |
Note: Returns dynamic JSON (JObjectCollectionResult) — schema depends on the data model.
Example: query data by model id (v2)
curl
curl -X GET "https://demo.avaplace.com/api/asol/ds/api/v2/QueryingData/GetData?ModelId=<modelId>&Offset=0&Limit=25&IncludeDeleted=false" \
-H "Authorization: Bearer $TOKEN" \
-H "Accept: application/json"
PowerShell
$uri = 'https://demo.avaplace.com/api/asol/ds/api/v2/QueryingData/GetData?ModelId=<modelId>&Offset=0&Limit=25&IncludeDeleted=false'
Invoke-RestMethod -Method Get `
-Uri $uri `
-Headers @{ Authorization = "Bearer $accessToken"; Accept = 'application/json' }
Postman (quick)
- Method:
GET - URL:
{{baseUrl}}/api/v2/QueryingData/GetData - Params:
ModelId=<modelId>,Offset=0,Limit=25,IncludeDeleted=false - Authorization: Bearer Token
v2 — SourcingData (enqueue from an integration agent)
These endpoints accept a JSON payload (EdgeDataRecordEdgeDataCollection) with one or more records.
Endpoints
/api/v2/SourcingData/EnqueueData— List queue items/api/v2/SourcingData/EnqueueData/start— Start new enqueue (201/202)/api/v2/SourcingData/EnqueueData/append/{queueItemId}— Append to existing queue-item (201/202)/api/v2/SourcingData/EnqueueData/status/{queueItemId}— Get queue item status/api/v2/SourcingData/EnqueueData/cancel/{queueItemId}— Cancel queue item
Query Parameters: /api/v2/SourcingData/EnqueueData/start (POST)
| Parameter | Type | Required | Description |
|---|---|---|---|
SourceId | string (uuid) | No | The identifier of the data-source (optional) |
clientId | string | No | The client identifier (optional) |
operationId | string | No | The operation identifier (optional) |
Request Body: /api/v2/SourcingData/EnqueueData/start (POST)
Schema: EdgeDataRecordEdgeDataCollection
| Property | Type | Required | Description |
|---|---|---|---|
mappingDirectives | array[EdgeDataMappingDirective] | No | Mapping directives applied to all items (unless overridden at item level) |
items | array[EdgeDataRecord] | No | Collection of edge data records |
incompleteData | boolean | No | Flag indicating this collection is incomplete and will continue (default: false) |
scenarioId | string | No | Integration-scenario identifier (for integration profiles) |
featureId | string | No | Integration-feature identifier (for integration profiles) |
EdgeDataMappingDirective:
| Property | Type | Description |
|---|---|---|
modelId | string (uuid) | Data model identifier |
preserveEntityMapping | boolean | Preserve/extend entity mapping instead of replace (default: false) |
priority | integer | Mapping directive priority (default: 0) |
transformationType | string | Transformation type: Default, Custom |
replaceCommonFields | boolean | Replace existing common fields (default: false = update) |
replaceCustomFields | boolean | Replace existing custom fields (default: false = update) |
mandantCodeIsRequired | boolean | Whether MandantCode is required (default: false) |
options | array[key-value] | Additional options as key-value pairs |
EdgeDataRecord:
| Property | Type | Required | Description |
|---|---|---|---|
entityId | string | Yes | Edge data-source entity identifier (unique in SourceId scope) |
recordId | string | No | Edge record identifier (unique in EntityId scope, can be null with CustomRecordIdLookup) |
mandantCode | string | No | Tenant/mandant identifier |
isDeleted | boolean | No | Flag if record is deleted (default: false) |
utcTimestamp | string (date-time) | No | Record timestamp (UTC) to track changes |
fields | array[key-value] | No | Key-value pairs for common properties (can be null if deleted) |
customFields | array[key-value] | No | Key-value pairs for custom properties (can be null if deleted) |
data | object | No | Data object for common properties (alternative to fields) |
customData | object | No | Data object for custom properties (alternative to customFields) |
referenceId | string (uuid) | No | Global reference identifier (for multi-sided updates) |
entityMappingId | string | No | Entity-mapping identifier (overrides entityId for transformation selection) |
version | string | No | Record version for data-contract compatibility |
mappingDirectives | array[EdgeDataMappingDirective] | No | Item-specific mapping directives (override collection-level) |
Note: Use either fields/customFields (key-value arrays) or data/customData (objects), not both.
Example: start an enqueue operation (v2)
curl
curl -X POST "https://demo.avaplace.com/api/asol/ds/api/v2/SourcingData/EnqueueData/start?SourceId=<sourceId>&operationId=<operationId>" \
-H "Authorization: Bearer $TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"mappingDirectives": [
{ "modelId": "<modelId>", "preserveEntityMapping": false }
],
"items": [
{
"entityId": "Customers",
"recordId": "CUST-001",
"mandantCode": "DEFAULT",
"isDeleted": false,
"utcTimestamp": "2026-01-06T10:00:00Z",
"fields": [ { "key": "Name", "value": "Acme Ltd" } ],
"customFields": []
}
],
"incompleteData": false
}'
PowerShell
$uri = 'https://demo.avaplace.com/api/asol/ds/api/v2/SourcingData/EnqueueData/start?SourceId=<sourceId>&operationId=<operationId>'
$body = @{
mappingDirectives = @(
@{ modelId = '<modelId>'; preserveEntityMapping = $false }
)
items = @(
@{
entityId = 'Customers'
recordId = 'CUST-001'
mandantCode = 'DEFAULT'
isDeleted = $false
utcTimestamp = '2026-01-06T10:00:00Z'
fields = @(@{ key = 'Name'; value = 'Acme Ltd' })
customFields = @()
}
)
incompleteData = $false
} | ConvertTo-Json -Depth 10
Invoke-RestMethod -Method Post `
-Uri $uri `
-Headers @{ Authorization = "Bearer $accessToken"; Accept = 'application/json' } `
-ContentType 'application/json' `
-Body $body
Postman (quick)
- Method:
POST - URL:
{{baseUrl}}/api/v2/SourcingData/EnqueueData/start - Params:
SourceId=<sourceId>,operationId=<operationId> - Authorization: Bearer Token
- Body → raw → JSON: same payload as above
v1 API (legacy / broader surface)
v1 contains many endpoints (including several marked deprecated in the OpenAPI spec). It also includes legacy concepts like accessLevel and richer “Process” admin operations.
v1 — DataAgents
/api/v1/DataAgents— List agents (filters:accessLevel,providerCode, paging)/api/v1/DataAgents— Create agent/api/v1/DataAgents/{id}— Get agent by id/api/v1/DataAgents/{code}— Get agent by code/api/v1/DataAgents/{id}— Update agent/api/v1/DataAgents/{id}— Delete agent/api/v1/DataAgents/{id}/SwitchEnabled?enabled=true|false— Enable/disable/api/v1/DataAgents/{id}/Status— Status history (paged)
v1 — DataSources
/api/v1/DataSources— List sources (filters:accessLevel,agentId, paging)/api/v1/DataSources— Create source/api/v1/DataSources/{id}/IntegrationSettings— Patch integration settings/api/v1/DataSources/{id}/ConfigureConsumer— Configure consumer
v1 — DataTransformations
/api/v1/DataTransformations— List transformations/api/v1/DataTransformations— Create transformation/api/v1/DataTransformations/{id}— Get transformation
v1 — DataModels
/api/v1/DataModels— List models/api/v1/DataModels/{id}— Get model by id/api/v1/DataModels/Code/{code}— Get model by code/api/v1/DataModels/{id}/Verify/DataObject— Validate a data object against a model
v1 — IntegrationRequests (async-ish operations)
/api/v1/IntegrationRequests— List requests/api/v1/IntegrationRequests— Create request (may return 200/202/412)/api/v1/IntegrationRequests/{id}— Get request/api/v1/IntegrationRequests/{id}/Cancel— Cancel request
v1 — QueryingData (legacy)
/api/v1/QueryingData/ProcessedDataResults— List processing results/api/v1/QueryingData/FindDataByModelId/{modelId}— Query data (dynamic JSON)
Note: Several v1 querying parameters are marked
OBSOLETEin the OpenAPI spec. Prefer v2 QueryingData.
v1 — SourcingData (deprecated enqueue variants)
/api/v1/SourcingData/EnqueueDataBySourceId/{sourceId}— Enqueue data (deprecated)
Prefer v2: /api/v2/SourcingData/EnqueueData/*.
v1 — Diagnostics / Maintenance / Process
These tags include operational and admin endpoints (some include “Warning: Use with caution!” in their descriptions).
Examples:
/api/v1/Process/GetCurrentStatus— Current service status/api/v1/Maintenance/CleanupOperatingLogHistory— Cleanup (keepDays)/api/v1/Diagnostics/PerformanceStatistics— Performance statistics
Practical workflow (typical)
- Authenticate → obtain token
- (v2) Discover data model(s) →
GET /api/v2/DataModels - (v2) Enqueue input data →
POST /api/v2/SourcingData/EnqueueData/start - (v2) Track processing output →
GET /api/v2/QueryingData/ProcessedDataResultsand items - (v2) Query data →
GET /api/v2/QueryingData/GetData
Notes on v1 vs v2
- v2 introduces Custom Properties management for data models and organizes integration around IntegrationAgents / IntegrationProfiles / IntegrationMaps.
- v1 includes a broader legacy surface (DataAgents/DataSources/DataTransformations + many Process endpoints) and uses
accessLevelin many places. - If you are starting new integrations, prefer v2 endpoints.