Logik.io Configuration (V2) API
Creating new configurations, reconfiguring existing configurations, making updates to a configuration and saving changes.
Creating new configurations, reconfiguring existing configurations, making updates to a configuration and saving changes.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/logikio-configuration-v2-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Logik Configurator Runtime APIs V2 Configuration (V2) API
version: 2.1.0
description: "Logik.io End User API Definition. Shows payload structure and schema, authroization approach and endpoint format. Can be used for custom UI or headless implementations.\n\n## Important Versioning Information\n\nBlueprints that use Product Picker Fields ***must*** use the `application/vnd.logik.cfg-v2+json` Content-Type when making requests.\n\n The Runtime APIs are versioned using different Content-Types. There are 2 Content-Type formats, `application/json` for v1 and `application/vnd.logik.cfg-v2+json` for v2.\n - `application/json`: can be used with regular Logik field types (number, boolean, text and picklist) and sets.\n - `application/vnd.logik.cfg-v2+json`: can be used with all regular field types as well as Product Picker Fields.\n \nThe Accept Header should match the Content-Type being used, either:\n - `application/json`: for v1.\n - `application/vnd.logik.cfg-v2+json, application/json`: for v2.\n"
contact:
email: support@logik.io
servers:
- url: https://{tenant}.{sector}.logik.io
variables:
tenant:
default: example
description: Logik.io tenant
sector:
default: test
description: Logik.io sector
security:
- RuntimeTokenBearerAuth: []
tags:
- name: Configuration (V2)
description: Creating new configurations, reconfiguring existing configurations, making updates to a configuration and saving changes.
paths:
/api:
post:
tags:
- Configuration (V2)
summary: Start Configuration
description: Initialize a new Configuration or reconfigure an existing Configuration if passing an existing Logik Configuration UUID in the Request Body.
operationId: startConfigV2
parameters:
- $ref: '#/components/parameters/headerOrigin'
requestBody:
$ref: '#/components/requestBodies/InitializeConfigurationV2'
responses:
200:
description: Return the state of configuration at initalization or reconfiguration. Includes fields, messages and products.
content:
application/vnd.logik.cfg-v2+json:
schema:
$ref: '#/components/schemas/ConfigResponseV2'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/NotAuthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
5XX:
$ref: '#/components/responses/ServerError'
/api/{uuid}:
get:
tags:
- Configuration (V2)
summary: Get Configuration
description: 'Returns the Configuration state from the given Configuration UUID. This *does not* allow changes to made to the Configuration. To make changes, reconfigure using the POST call.
'
operationId: getConfigByUuidV2
parameters:
- $ref: '#/components/parameters/headerOrigin'
- $ref: '#/components/parameters/ConfigurationUUID'
responses:
200:
description: Return initial state of fields, messages and products
content:
application/vnd.logik.cfg-v2+json:
schema:
$ref: '#/components/schemas/ConfigResponseV2'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/NotAuthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
5XX:
$ref: '#/components/responses/ServerError'
patch:
tags:
- Configuration (V2)
summary: Update or Save Configuration
description: 'Update or Save Configuration with the provided Configuration UUID.
'
operationId: updateConfigByUuidV2
parameters:
- $ref: '#/components/parameters/headerOrigin'
- $ref: '#/components/parameters/ConfigurationUUID'
- $ref: '#/components/parameters/queryDelta'
- $ref: '#/components/parameters/querySave'
requestBody:
description: Update or Save Payload for a Configuration.
content:
application/vnd.logik.cfg-v2+json:
schema:
$ref: '#/components/schemas/UpdateConfigV2'
required: true
responses:
200:
description: Returns state of fields, messages and products
content:
application/vnd.logik.cfg-v2+json:
schema:
$ref: '#/components/schemas/ConfigResponseV2'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/NotAuthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
5XX:
$ref: '#/components/responses/ServerError'
/api/{uuid}/sets/{setVariableName}:
get:
tags:
- Configuration (V2)
summary: Access fields in a given Set. Use if Set flagged in relatedChanges param
operationId: getSet
parameters:
- $ref: '#/components/parameters/headerOrigin'
- $ref: '#/components/parameters/ConfigurationUUID'
- name: setVariableName
in: path
description: Variable name of the Set defined in admin for which data is requested
required: true
schema:
type: string
- $ref: '#/components/parameters/queryPage'
- $ref: '#/components/parameters/queryLimit'
- $ref: '#/components/parameters/querySort'
responses:
200:
description: Paginated details for a given Set variable name
content:
application/json:
schema:
$ref: '#/components/schemas/SetsResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/NotAuthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
5XX:
$ref: '#/components/responses/ServerError'
components:
schemas:
ErrorResponse:
type: object
properties:
errorMessage:
type: string
timestamp:
type: string
format: date-time
InitConfigV2:
type: object
properties:
sessionContext:
required:
- stateful
properties:
stateful:
type: boolean
type: object
partnerData:
properties:
quote:
properties:
SBQQ__PricebookId__c:
type: string
LGK__QueriedEditAccess__c:
type: string
type: object
product:
properties:
configuredProductId:
type: string
configurationAttributes:
properties:
LGK__Logik_Id__c:
type: string
type: object
type: object
type: object
configurableProduct:
properties:
responseState:
required:
- defaultPagination
properties:
defaultPagination:
required:
- pageSize
- pageNumber
properties:
pageSize:
type: number
pageNumber:
type: number
type: object
type: object
type: object
productId:
type: string
example:
sessionContext:
stateful: true
productId: 01t6e000009bOeLAAU
Field:
type: object
properties:
value:
type: string
dataType:
type: string
visibilityState:
type: string
editable:
type: string
variableName:
type: string
optionSet:
required:
- options
type: object
properties:
options:
type: array
items:
required:
- label
- orderNumber
- state
- value
type: object
properties:
label:
type: string
state:
type: string
value:
type: string
imageUrl:
type: string
orderNumber:
type: integer
SetsContent:
type: object
properties:
index:
type: integer
fields:
type: array
items:
$ref: '#/components/schemas/Field'
Message:
required:
- error
- field
- message
- type
type: object
properties:
message:
type: string
type:
type: string
error:
type: boolean
field:
type: string
SetsResponse:
type: object
properties:
content:
type: array
items:
$ref: '#/components/schemas/SetsContent'
pageable:
type: object
properties:
sort:
type: object
properties:
empty:
type: boolean
sorted:
type: boolean
unsorted:
type: boolean
offset:
type: integer
pageNumber:
type: integer
pageSize:
type: integer
paged:
type: boolean
unpaged:
type: boolean
totalPages:
type: integer
totalElements:
type: integer
last:
type: boolean
size:
type: integer
number:
type: integer
numberOfElements:
type: integer
first:
type: boolean
empty:
type: boolean
total:
type: integer
UpdateConfigV2:
type: object
properties:
fields:
type: array
items:
type: object
properties:
variableName:
type: string
value:
type: boolean
index:
type: number
set:
type: string
uniqueName:
type: string
responseState:
properties:
setPagination:
properties:
additionalProperties:
required:
- pageSize
- pageNumber
properties:
pageSize:
type: number
pageNumber:
type: number
type: object
type: object
defaultPagination:
required:
- pageSize
- pageNumber
properties:
pageSize:
type: number
default: 10
pageNumber:
type: number
default: 0
type: object
type: object
example:
fields:
- variableName: cpuPicker.select
uniqueName: cpuPicker-1003-cpuPicker.select
value: true
set: cpuPicker
index: 3
ConfigResponseV2:
type: object
properties:
fields:
type: array
items:
type: object
properties:
userEdited:
type: boolean
dataType:
type: string
visibilityState:
type: string
editable:
type: string
variableName:
type: string
uniqueName:
type: string
value:
anyOf:
- type: string
- type: number
- type: boolean
- type: array
items:
type: string
optionSet:
required:
- options
properties:
options:
type: array
items:
type: object
properties:
label:
type: string
state:
type: string
value:
type: string
imageUrl:
type: string
orderNumber:
type: number
type: object
selectAll:
type: string
rows:
required:
- content
- pageable
- last
- totalPages
- totalElements
- size
- number
- sort
- numberOfElements
- first
- empty
properties:
content:
type: array
items:
type: object
properties:
index:
type: number
fields:
type: array
items:
type: object
properties:
userEdited:
type: boolean
dataType:
type: string
visibilityState:
type: string
editable:
type: string
variableName:
type: string
uniqueName:
type: string
value:
type: string
set:
type: string
index:
type: number
label:
type: string
state:
type: string
value:
type: string
imageUrl:
type: string
orderNumber:
type: number
productDetails:
required:
- price
- name
properties:
price:
type: number
name:
type: string
type: object
pageable:
type: string
last:
type: boolean
totalPages:
type: number
totalElements:
type: number
size:
type: number
number:
type: number
sort:
required:
- empty
- sorted
- unsorted
properties:
empty:
type: boolean
sorted:
type: boolean
unsorted:
type: boolean
type: object
numberOfElements:
type: number
first:
type: boolean
empty:
type: boolean
type: object
uuid:
type: string
revision:
type: number
relatedChanges:
type: array
items:
type: object
properties:
key:
type: string
type:
type: string
valid:
type: boolean
messages:
type: array
items:
$ref: '#/components/schemas/Message'
productChange:
type: boolean
products:
type: array
items:
$ref: '#/components/schemas/Product'
showValidationButton:
type: boolean
layouts:
type: array
items:
type: object
properties:
url:
type: string
label:
type: string
variableName:
type: string
example:
fields:
- userEdited: false
dataType: array
visibilityState: visible
editable: 'true'
variableName: ramPicker
uniqueName: ramPicker
value: []
optionSet:
options:
- label: 8GB RAM Module
state: visible
value: RAM8GB
imageUrl: https://i.imgur.com/WkXo98I.png
orderNumber: 10
- label: 16GB RAM Module
state: visible
value: RAM16GB
imageUrl: https://i.imgur.com/WkXo98I.png
orderNumber: 20
- label: 32GB RAM Module
state: visible
value: RAM32GB
imageUrl: https://i.imgur.com/WkXo98I.png
orderNumber: 30
selectAll: NONE
rows:
content:
- index: 0
fields:
- userEdited: false
dataType: text
visibilityState: visible
editable: 'false'
variableName: ramPicker.value
uniqueName: ramPicker-1000-ramPicker.value
value: RAM8GB
set: ramPicker
index: 0
- userEdited: false
dataType: text
visibilityState: visible
editable: 'true'
variableName: ramPicker.interface
uniqueName: ramPicker-1000-ramPicker.interface
value: DDR4
optionSet:
selectedOptions:
- label: DDR4
state: visible
value: DDR4
imageUrl: null
orderNumber: 10
options:
- label: DDR4
state: visible
value: DDR4
imageUrl: null
orderNumber: 10
- label: DDR5
state: visible
value: DDR5
imageUrl: null
orderNumber: 20
set: ramPicker
index: 0
- userEdited: false
dataType: boolean
visibilityState: visible
editable: 'true'
variableName: ramPicker.select
uniqueName: ramPicker-1000-ramPicker.select
value: false
optionSet:
options:
- label: 'true'
state: visible
value: 'true'
imageUrl: null
orderNumber: null
- label: 'false'
state: visible
value: 'false'
imageUrl: null
orderNumber: null
set: ramPicker
index: 0
- userEdited: false
dataType: number
visibilityState: visible
editable: 'true'
variableName: ramPicker.quantity
uniqueName: ramPicker-1000-ramPicker.quantity
value: 0
step: 1
set: ramPicker
index: 0
- userEdited: false
dataType: text
visibilityState: visible
editable: 'true'
variableName: ramPicker.imageUrl
uniqueName: ramPicker-1000-ramPicker.imageUrl
value: ''
set: ramPicker
index: 0
- userEdited: false
dataType: number
visibilityState: visible
editable: 'false'
variableName: ramPicker.storage
uniqueName: ramPicker-1000-ramPicker.storage
value: 0
set: ramPicker
index: 0
label: 8GB RAM Module
state: visible
value: RAM8GB
imageUrl: https://i.imgur.com/WkXo98I.png
orderNumber: 10
productDetails:
price: 50
name: RAM 8GB
- index: 1
fields:
- userEdited: false
dataType: text
visibilityState: visible
editable: 'false'
variableName: ramPicker.value
uniqueName: ramPicker-1001-ramPicker.value
value: RAM16GB
set: ramPicker
index: 1
- userEdited: false
dataType: text
visibilityState: visible
editable: 'true'
variableName: ramPicker.interface
uniqueName: ramPicker-1001-ramPicker.interface
value: DDR4
optionSet:
selectedOptions:
- label: DDR4
state: visible
value: DDR4
imageUrl: null
orderNumber: 10
options:
- label: DDR4
state: visible
value: DDR4
imageUrl: null
orderNumber: 10
- label: DDR5
state: visible
value: DDR5
imageUrl: null
orderNumber: 20
set: ramPicker
index: 1
- userEdited: false
dataType: boolean
visibilityState: visible
editable: 'true'
variableName: ramPicker.select
uniqueName: ramPicker-1001-ramPicker.select
value: false
optionSet:
options:
- label: 'true'
state: visible
value: 'true'
imageUrl: null
orderNumber: null
- label: 'false'
state: visible
value: 'false'
imageUrl: null
orderNumber: null
set: ramPicker
index: 1
- userEdited: false
dataType: number
visibilityState: visible
editable: 'true'
variableName: ramPicker.quantity
uniqueName: ramPicker-1001-ramPicker.quantity
value: 0
step: 1
set: ramPicker
index: 1
- userEdited: false
dataType: text
visibilityState: visible
editable: 'true'
variableName: ramPicker.imageUrl
uniqueName: ramPicker-1001-ramPicker.imageUrl
value: ''
set: ramPicker
index: 1
- userEdited: false
dataType: number
visibilityState: visible
editable: 'false'
variableName: ramPicker.storage
uniqueName: ramPicker-1001-ramPicker.storage
value: 0
set: ramPicker
index: 1
label: 16GB RAM Module
state: visible
value: RAM16GB
imageUrl: https://i.imgur.com/WkXo98I.png
orderNumber: 20
productDetails:
price: 125
name: RAM 16GB
- index: 2
fields:
- userEdited: false
dataType: text
visibilityState: visible
editable: 'false'
variableName: ramPicker.value
uniqueName: ramPicker-1002-ramPicker.value
value: RAM32GB
set: ramPicker
index: 2
- userEdited: false
dataType: text
visibilityState: visible
editable: 'true'
variableName: ramPicker.interface
uniqueName: ramPicker-1002-ramPicker.interface
value: DDR5
optionSet:
selectedOptions:
- label: DDR5
state: visible
value: DDR5
imageUrl: null
orderNumber: 20
options:
- label: DDR4
state: visible
value: DDR4
imageUrl: null
orderNumber: 10
- label: DDR5
state: visible
value: DDR5
imageUrl: null
orderNumber: 20
set: ramPicker
index: 2
- userEdited: false
dataType: boolean
visibilityState: visible
editable: 'true'
variableName: ramPicker.select
uniqueName: ramPicker-1002-ramPicker.select
value: false
optionSet:
options:
- label: 'true'
state: visible
value: 'true'
imageUrl: null
orderNumber: null
- label: 'false'
state: visible
value: 'false'
imageUrl: null
orderNumber: null
set: ramPicker
index: 2
- userEdited: false
dataType: number
visibilityState: visible
editable: 'true'
variableName: ramPicker.quantity
uniqueName: ramPicker-1002-ramPicker.quantity
value: 0
step: 1
set: ramPicker
index: 2
- userEdited: false
dataType: text
visibilityState: visible
editable: 'true'
variableName: ramPicker.imageUrl
uniqueName: ramPicker-1002-ramPicker.imageUrl
value: ''
set: ramPicker
index: 2
- userEdited: false
dataType: number
visibilityState: visible
editable: 'false'
variableName: ramPicker.storage
uniqueName: ramPicker-1002-ramPicker.storage
value: 0
set: ramPicker
index: 2
label: 32GB RAM Module
state: visible
value: RAM32GB
imageUrl: https://i.imgur.com/WkXo98I.png
orderNumber: 30
productDetails:
price: 175
name: RAM 32GB
pageable: INSTANCE
totalPages: 1
totalElements: 3
last: true
size: 3
number: 0
sort:
empty: true
sorted: false
unsorted: true
numberOfElements: 3
first: true
empty: false
- userEdited: false
dataType: array
visibilityState: visible
editable: 'true'
variableName: drivePicker
uniqueName: drivePicker
value: []
optionSet:
options:
- label: SSD128
state: visible
value: SSD128
imageUrl: null
orderNumber: 10
- label: SSD256
state: visible
value: SSD256
imageUrl: null
orderNumber: 20
- label: SSD512
state: visible
value: SSD512
imageUrl: null
orderNumber: 30
selectAll: NONE
rows:
content:
- index: 0
fields:
- userEdited: false
dataType: text
visibilityState: visible
editable: 'false'
variableName: drivePicker.value
uniqueName: drivePicker-1000-drivePicker.value
value: SSD128
set: drivePicker
index: 0
- userEdited: false
dataType: boolean
visibilityState: visible
editable: 'true'
variableName: drivePicker.select
uniqueName: drivePicker-1000-drivePicker.select
value: false
optionSet:
options:
- label: 'true'
state: visible
value: 'true'
imageUrl: null
orderNumber: null
- label: 'false'
state: visible
value: 'false'
imageUrl: null
orderNumber: null
set: drivePicker
index: 0
- userEdited: false
dataType: number
visibilityState: visible
editable: 'true'
variableName: drivePicker.quantity
uniqueName: drivePicker-1000-drivePicker.quantity
value: 0
set: drivePicker
index: 0
- userEdited: false
dataType: text
visibilityState: visible
editable: 'true'
variableName: drivePicker.interface
uniqueName: drivePicker-1000-drivePicker.interface
value: NVMe
optionSet:
selectedOptions:
- label: NVMe
state: visible
value: NVMe
imageUrl: null
orderNumber: 10
options:
- label: NVMe
state: visible
value: NVMe
imageUrl: null
orderNumber: 10
- label: SSD
state: visible
value: SSD
imageUrl: null
orderNumber: 20
set: drivePicker
index: 0
label: SSD128
state: visible
value: SSD128
imageUrl: null
orderNumber: 10
productDetails:
price: 89
name: NVMe Drive 128GB
description: Lightning fast Storage for all your computing needs
- index: 1
fields:
- userEdited: false
dataType: text
visibilityState: visible
editable: 'false'
variableName: drivePicker.value
uniqueName: drivePicker-1001-drivePicker.value
value: SSD256
set: drivePicker
index: 1
- userEdited: false
dataType: boolean
visibilityState: visible
editable: 'true'
variableName: drivePicker.select
uniqueName: drivePicker-1001-drivePicker.select
value: false
optionS
# --- truncated at 32 KB (64 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/logikio/refs/heads/main/openapi/logikio-configuration-v2-api-openapi.yml