Přeskočit na hlavní obsah
Unlisted page
This page is unlisted. Search engines will not index it, and only users having a direct link can access it.

DataService API (v1 + v2)

OpenAPI sources

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)

MethodBadge
GETGET
POSTPOST
PUTPUT
PATCHPATCH
DELETEDELETE

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/json
  • Content-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-urlencoded
    • grant_type=password
    • client_id=<client_id>
    • client_secret=<client_secret>
    • username=<username>
    • password=<password>
    • scope=apiim
  • Send → copy access_token into your collection Authorization (Bearer Token)

Errors

Most errors return ProblemDetails (RFC 7807-like) as JSON.

Typical fields:

  • status (HTTP status code)
  • title, detail
  • instance

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 return
  • Limit (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

ParameterTypeDescriptionExample
Offsetinteger (int32)Zero-based pagination offset0
Limitinteger (int32)Maximum number of results50
ReleasedbooleanInclude released itemstrue
UnreleasedbooleanInclude unreleased itemsfalse
DeletedbooleanInclude deleted itemsfalse
UndeletedbooleanInclude non-deleted itemstrue
MandantCodestringTenant/mandant identifier"TENANT-001"
CreatedFromstring (date-time)Filter by creation date (greater than or equal)"2024-01-01T00:00:00Z"
CreatedTostring (date-time)Filter by creation date (less than or equal)"2024-12-31T23:59:59Z"
ModifiedFromstring (date-time)Filter by modification date (greater than or equal)"2024-01-01T00:00:00Z"
ModifiedTostring (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 text
  • MultilineText — Multi-line text
  • TwoOptions — Boolean/Yes-No
  • WholeNumber — Integer
  • DecimalNumber — Decimal number
  • CurrencyNumber — Currency value
  • UniqueIdentifier — UUID/GUID
  • UtcDateTime — Date and time (UTC)
  • Date — Date only
  • LookupEntity — Reference to another entity
  • NestedEntity — Embedded entity
  • FileReference — File attachment
  • SingleSelectOptionSet — Single-choice dropdown
  • MultiSelectOptionSet — Multi-choice dropdown

Field Validations

  • Required — Field must have a value
  • StringMaxLength — Maximum text length
  • StringMinLength — Minimum text length
  • StringLength — Exact text length
  • StringRangeLength — Text length range
  • Regex — Regular expression pattern
  • MinValue — Minimum numeric/date value
  • MaxValue — Maximum numeric/date value
  • Range — Numeric/date range
  • DecimalPrecision — 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

  • GET /api/v2/DataModels — List data models (paged)
  • GET /api/v2/DataModels/{id} — Get a model by UUID
  • GET /api/v2/DataModels/ByCode/{code} — Get a model by code

Custom properties:

  • GET /api/v2/DataModels/CustomProperties — List custom properties (filters + paging)
  • GET /api/v2/DataModels/CustomProperties/{id} — Get custom property by id
  • GET /api/v2/DataModels/CustomProperties/ByCode/{code} — Get custom property by code
  • POST /api/v2/DataModels/{modelId}/CustomProperties — Create custom property
  • PUT /api/v2/DataModels/CustomProperties/{id} — Update custom property (allowBreakingChanges optional)
  • DELETE /api/v2/DataModels/CustomProperties/{id} — Delete custom property

Query Parameters: /api/v2/DataModels/CustomProperties (GET)

ParameterTypeRequiredDescription
ModelIdstring (uuid)NoFilter by data model identifier
ModelCodestringNoFilter by data model code
ModelNamestringNoFilter by data model name
ModelWideSearchstringNoWide search across model's Name and Code fields
NamestringNoFilter by custom property name
CodestringNoFilter by custom property code
WideSearchstringNoWide search across custom property Name and Code fields
OrganizationIdstringNoFilter by organization identifier
OrganizationCodestringNoFilter by organization code
OffsetintegerNoPagination offset
LimitintegerNoMaximum 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

PropertyTypeRequiredDescription
organizationstringNoIdentifier or code of the organization the custom property belongs to
codestringYesCode of the custom property (unique within the model)
nameStringLocalizedValueYesLocalized display name of the custom property
descriptionStringLocalizedValueNoLocalized description of the custom property
isCollectionbooleanYesIndicates if the property is a collection (list) of values
isLocalizedbooleanYesIndicates if the property supports localization
fieldTypeDataModelFieldTypeYesData type of the field (see Common Data Types)
referencedEntityTypeIdsarray[uuid]NoList of referenced entity type IDs (for LookupEntity/NestedEntity types)
fieldValidationsarray[object]NoCollection 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

  • GET /api/v2/IntegrationAgents/Settings — Get settings (SourceId, clientId optional)
  • PATCH /api/v2/IntegrationAgents/Settings — Patch settings

Query Parameters: /api/v2/IntegrationAgents/Settings (GET, PATCH)

ParameterTypeRequiredDescription
SourceIdstring (uuid)NoThe identifier of the data-source (optional)
clientIdstringNoThe client identifier (optional)

Request Body: /api/v2/IntegrationAgents/Settings (PATCH)

Schema: IntegrationAgentPatchModel

PropertyTypeRequiredDescription
agentDefinitionIntegrationAgentPatchSettingsNoData agent registration settings
sourceDefinitionIntegrationSourcePatchSettingsNoData source integration settings

IntegrationAgentPatchSettings:

PropertyTypeDescription
descriptionstringThe description of data agent
customPropertiesarray[key-value]Custom properties

IntegrationSourcePatchSettings:

PropertyTypeDescription
descriptionstringData-source description
customPropertiesarray[key-value]Custom properties
consumerTypestringConsumer type: None, Grpc, Webhook
consumerWebhookUrlstringWeb-hook URL assigned to data-source
  • GET /api/v2/IntegrationAgents/Transformations — Get transformation settings

  • PATCH /api/v2/IntegrationAgents/Transformations — Patch transformations (returns 204)

  • GET /api/v2/IntegrationAgents/SupportedFeatures — Get supported features

  • PATCH /api/v2/IntegrationAgents/SupportedFeatures — Patch supported features (returns 204)

  • PATCH /api/v2/IntegrationAgents/ConfigureConsumer — Configure consumer (returns 204)

  • GET /api/v2/IntegrationAgents/Statuses — Status history

  • POST /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

  • GET /api/v2/IntegrationProfiles — List profiles (filters + paging)

  • GET /api/v2/IntegrationProfiles/{profileId} — Get profile

  • GET /api/v2/IntegrationProfiles/{profileId}/AvailableFeatures — Requires sourceId

  • GET /api/v2/IntegrationProfiles/{profileId}/AvailableModels — Requires sourceId

  • GET /api/v2/IntegrationProfiles/Current — Current profile

  • GET /api/v2/IntegrationProfiles/Current/AvailableFeatures — Requires sourceId

  • GET /api/v2/IntegrationProfiles/Current/AvailableModels — Requires sourceId


v2 — IntegrationMaps

Integration maps describe available apps/scenarios per “area” and activation keys.

Endpoints

  • GET /api/v2/IntegrationMaps — List maps (filters + paging)
  • GET /api/v2/IntegrationMaps/{itemId} — Get a map item
  • GET /api/v2/IntegrationMaps/{itemId}/Applications — List applications for a map item

Import/export by area:

  • POST /api/v2/IntegrationMaps/Import/ByArea — Import map by area (release optional)
  • GET /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:

  • GET /api/v2/QueryingData/ProcessedDataResults — List processing results
  • GET /api/v2/QueryingData/ProcessedDataResults/{resultId} — Result summary
  • GET /api/v2/QueryingData/ProcessedDataResults/{resultId}/Items — Result items (paged)

Data access:

  • GET /api/v2/QueryingData/GetData — Filtered data query
  • GET /api/v2/QueryingData/GetData/ReferencedByFK — Filter by FK
  • GET /api/v2/QueryingData/GetData/FilteredByAK — Filter by alternate key
  • GET /api/v2/QueryingData/GetData/{resultId} — Retrieve data by processing result id
  • GET /api/v2/QueryingData/GetData/{resultId}/{itemId} — Retrieve data by result id + item id

Query Parameters: /api/v2/QueryingData/GetData (GET)

ParameterTypeRequiredDescription
ModelIdstringNoThe data model identifier (code or UUID)
SourceIdstring (uuid)NoThe identifier of the data-source (optional)
clientIdstringNoThe client identifier (optional)
operationIdstringNoThe operation ID in operating log (optional)
OffsetintegerNoPagination offset (default: 0)
LimitintegerNoMaximum number of results (default varies by endpoint)
IncludeDeletedbooleanNoFlag to include deleted records (default: false)
MandantCodestringNoTenant/mandant identifier
RecordIdstring (uuid)NoInternal record identifier
ExternalIdstringNoExternal identifier (fully-qualified from source)
ReferenceIdstring (uuid)NoGlobal reference identifier
ModifiedFromstring (date-time)NoFilter by modification date >= this value
ModifiedTostring (date-time)NoFilter by modification date <= this value
IncludeLookupPropertiesstringNoComma-separated list of navigation properties to include
ScenarioIdstringNoIntegration-scenario identifier (for integration profiles)
FeatureIdstringNoIntegration-feature identifier (for integration profiles)
SelfSourceOnlybooleanNoApply self-source filter (for testing, default: false)
PublisherSourceIdstringNoPublisher source identifier
optionsstringNoFormat 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

  • GET /api/v2/SourcingData/EnqueueData — List queue items
  • POST /api/v2/SourcingData/EnqueueData/start — Start new enqueue (201/202)
  • POST /api/v2/SourcingData/EnqueueData/append/{queueItemId} — Append to existing queue-item (201/202)
  • GET /api/v2/SourcingData/EnqueueData/status/{queueItemId} — Get queue item status
  • DELETE /api/v2/SourcingData/EnqueueData/cancel/{queueItemId} — Cancel queue item

Query Parameters: /api/v2/SourcingData/EnqueueData/start (POST)

ParameterTypeRequiredDescription
SourceIdstring (uuid)NoThe identifier of the data-source (optional)
clientIdstringNoThe client identifier (optional)
operationIdstringNoThe operation identifier (optional)

Request Body: /api/v2/SourcingData/EnqueueData/start (POST)

Schema: EdgeDataRecordEdgeDataCollection

PropertyTypeRequiredDescription
mappingDirectivesarray[EdgeDataMappingDirective]NoMapping directives applied to all items (unless overridden at item level)
itemsarray[EdgeDataRecord]NoCollection of edge data records
incompleteDatabooleanNoFlag indicating this collection is incomplete and will continue (default: false)
scenarioIdstringNoIntegration-scenario identifier (for integration profiles)
featureIdstringNoIntegration-feature identifier (for integration profiles)

EdgeDataMappingDirective:

PropertyTypeDescription
modelIdstring (uuid)Data model identifier
preserveEntityMappingbooleanPreserve/extend entity mapping instead of replace (default: false)
priorityintegerMapping directive priority (default: 0)
transformationTypestringTransformation type: Default, Custom
replaceCommonFieldsbooleanReplace existing common fields (default: false = update)
replaceCustomFieldsbooleanReplace existing custom fields (default: false = update)
mandantCodeIsRequiredbooleanWhether MandantCode is required (default: false)
optionsarray[key-value]Additional options as key-value pairs

EdgeDataRecord:

PropertyTypeRequiredDescription
entityIdstringYesEdge data-source entity identifier (unique in SourceId scope)
recordIdstringNoEdge record identifier (unique in EntityId scope, can be null with CustomRecordIdLookup)
mandantCodestringNoTenant/mandant identifier
isDeletedbooleanNoFlag if record is deleted (default: false)
utcTimestampstring (date-time)NoRecord timestamp (UTC) to track changes
fieldsarray[key-value]NoKey-value pairs for common properties (can be null if deleted)
customFieldsarray[key-value]NoKey-value pairs for custom properties (can be null if deleted)
dataobjectNoData object for common properties (alternative to fields)
customDataobjectNoData object for custom properties (alternative to customFields)
referenceIdstring (uuid)NoGlobal reference identifier (for multi-sided updates)
entityMappingIdstringNoEntity-mapping identifier (overrides entityId for transformation selection)
versionstringNoRecord version for data-contract compatibility
mappingDirectivesarray[EdgeDataMappingDirective]NoItem-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

  • GET /api/v1/DataAgents — List agents (filters: accessLevel, providerCode, paging)
  • POST /api/v1/DataAgents — Create agent
  • GET /api/v1/DataAgents/{id} — Get agent by id
  • GET /api/v1/DataAgents/{code} — Get agent by code
  • PUT /api/v1/DataAgents/{id} — Update agent
  • DELETE /api/v1/DataAgents/{id} — Delete agent
  • POST /api/v1/DataAgents/{id}/SwitchEnabled?enabled=true|false — Enable/disable
  • GET /api/v1/DataAgents/{id}/Status — Status history (paged)

v1 — DataSources

  • GET /api/v1/DataSources — List sources (filters: accessLevel, agentId, paging)
  • POST /api/v1/DataSources — Create source
  • PATCH /api/v1/DataSources/{id}/IntegrationSettings — Patch integration settings
  • PATCH /api/v1/DataSources/{id}/ConfigureConsumer — Configure consumer

v1 — DataTransformations

  • GET /api/v1/DataTransformations — List transformations
  • POST /api/v1/DataTransformations — Create transformation
  • GET /api/v1/DataTransformations/{id} — Get transformation

v1 — DataModels

  • GET /api/v1/DataModels — List models
  • GET /api/v1/DataModels/{id} — Get model by id
  • GET /api/v1/DataModels/Code/{code} — Get model by code
  • POST /api/v1/DataModels/{id}/Verify/DataObject — Validate a data object against a model

v1 — IntegrationRequests (async-ish operations)

  • GET /api/v1/IntegrationRequests — List requests
  • POST /api/v1/IntegrationRequests — Create request (may return 200/202/412)
  • GET /api/v1/IntegrationRequests/{id} — Get request
  • PUT /api/v1/IntegrationRequests/{id}/Cancel — Cancel request

v1 — QueryingData (legacy)

  • GET /api/v1/QueryingData/ProcessedDataResults — List processing results
  • GET /api/v1/QueryingData/FindDataByModelId/{modelId} — Query data (dynamic JSON)

Note: Several v1 querying parameters are marked OBSOLETE in the OpenAPI spec. Prefer v2 QueryingData.

v1 — SourcingData (deprecated enqueue variants)

  • POST /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:

  • GET /api/v1/Process/GetCurrentStatus — Current service status
  • POST /api/v1/Maintenance/CleanupOperatingLogHistory — Cleanup (keepDays)
  • GET /api/v1/Diagnostics/PerformanceStatistics — Performance statistics

Practical workflow (typical)

  1. Authenticate → obtain token
  2. (v2) Discover data model(s) → GET /api/v2/DataModels
  3. (v2) Enqueue input data → POST /api/v2/SourcingData/EnqueueData/start
  4. (v2) Track processing output → GET /api/v2/QueryingData/ProcessedDataResults and items
  5. (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 accessLevel in many places.
  • If you are starting new integrations, prefer v2 endpoints.