Xentral Collection API
Create and manage collections for your reports.
Create and manage collections for your reports.
openapi: 3.0.0
info:
title: Xentral Account Collection API
version: v0.1
description: Xentral is an ERP platform.
contact:
name: Xentral
url: https://xentral.com
email: api@xentral.com
servers:
- url: https://{xentralId}.xentral.biz
description: Your Xentral Instance
variables:
xentralId:
default: xentral
- url: https://{domain}
description: Xentral at a custom domain
variables:
domain:
default: xentral.com
security:
- BearerAuth: []
tags:
- name: Collection
description: Create and manage collections for your reports.
paths:
/api/v1/analytics/collection:
get:
tags:
- Collection
operationId: analytics.collection.get
summary: List collections
description: Returns a list of report collections (official Xentral collections and custom collections).
responses:
'200':
description: Collection response
content:
application/json:
schema:
type: object
additionalProperties: false
required:
- data
properties:
data:
type: array
nullable: true
items:
type: object
additionalProperties: false
properties:
id:
example: 1
type: number
description: Collection ID
name:
example: My collection
type: string
description: Collection name
description:
example: This is a collection
type: string
description: Collection description
reports:
type: array
items:
type: object
additionalProperties: false
required:
- title
- sqlString
- collectionId
properties:
id:
type: number
description: Report ID
example: 1
title:
type: string
description: Report title
example: My report
description:
type: string
description: Report description
example: This is my report
userId:
type: number
description: User ID of the report creator
example: 1
sqlString:
type: string
description: SQL query string
example: SELECT * FROM users
isFavorite:
type: boolean
description: Is report marked as favorite
example: true
isReadOnly:
example: false
type: boolean
description: Is report read-only
collectionId:
example: 1
type: number
description: ID of the collection the report belongs to
lastEditedBy:
example: John Doe
type: string
description: User who last edited the report
tags:
type: array
example:
- id: 1
name: Official
description: This is my tag
palette: default
isOfficial: true
createdAt: '2023-01-01T00:00:00+00:00'
updatedAt: '2023-01-01T00:00:00+00:00'
items:
type: object
additionalProperties: false
required:
- id
- name
properties:
id:
type: number
description: Tag ID
example: 1
name:
type: string
description: Tag name
example: Official
description:
type: string
description: Tag description
example: This is my tag
palette:
type: string
enum:
- default
- warning
- success
- danger
- primary
description: The palette value of the tag
example: default
isOfficial:
type: boolean
description: Whether the tag is used for official Xentral reports
example: true
createdAt:
example: '2023-01-01T00:00:00+00:00'
type: string
format: date-time
description: Creation time
updatedAt:
example: '2023-01-01T00:00:00+00:00'
type: string
format: date-time
description: Last update time
parameters:
type: array
nullable: true
items:
type: object
additionalProperties: false
required:
- name
- type
- defaultValue
example:
name: date
type: string
defaultValue: '2021-01-01'
properties:
name:
type: string
description: Parameter name
example: date
type:
type: string
description: Parameter type
example: string
defaultValue:
type: string
description: Default value for parameter you want to store
example: '2021-01-01'
valueMap:
type: array
description: Array of dropdown options with label and value properties. Values will be rendered in the query, labels are displayed in the dropdown.
items:
type: object
required:
- label
- value
properties:
label:
type: string
description: Display label shown in the dropdown
value:
type: string
description: Value used in the query
example:
- label: Option 1
value: option1
- label: Option 2
value: option2
createdAt:
example: '2023-01-01T00:00:00+00:00'
type: string
format: date-time
description: Creation time
updatedAt:
example: '2023-01-01T00:00:00+00:00'
type: string
format: date-time
description: Last update time
createdAt:
example: '2023-01-01T00:00:00+00:00'
type: string
format: date-time
description: Creation time
updatedAt:
example: '2023-01-01T00:00:00+00:00'
type: string
format: date-time
description: Last update time
'400':
description: IETF RFC 9457 Problem API compliant response
content:
application/problem+json:
schema:
oneOf:
- type: object
additionalProperties: false
required:
- type
- title
- violations
properties:
type:
type: string
enum:
- https://api.xentral.biz/problems/request-validation
title:
type: string
minLength: 1
example: Request payload validation failed.
violations:
oneOf:
- type: array
items:
type: object
example:
username:
- This value should not be blank.
email:
- This value is not a valid email address.
description: This field will be a mirrored request payload with only invalid fields and values replaced by error messages.
- type: object
example:
_:
- This value should contain at most `9` elements.
description: This field will be a mirrored request payload with only invalid fields and values replaced by error messages.
- type: object
additionalProperties: false
required:
- type
- title
- messages
properties:
type:
type: string
enum:
- https://api.xentral.biz/problems/generic-validation
title:
type: string
minLength: 1
messages:
type: array
items:
type: string
- type: object
additionalProperties: false
required:
- type
- title
- messages
properties:
type:
type: string
enum:
- https://api.xentral.biz/problems/conflict
title:
type: string
minLength: 1
messages:
type: array
items:
type: string
- type: object
additionalProperties: false
required:
- type
- title
- items
properties:
type:
type: string
enum:
- https://api.xentral.biz/problems/conflictItems
title:
type: string
minLength: 1
items:
type: array
items:
type: object
additionalProperties: false
required:
- id
- title
- messages
properties:
id:
type: integer
title:
type: string
minLength: 1
messages:
type: array
items:
type: string
- type: object
additionalProperties: false
required:
- type
- title
- scopes
properties:
type:
type: string
enum:
- https://developer.xentral.com/reference/problems#token-scopes
title:
type: string
minLength: 1
scopes:
type: array
items:
type: string
- type: object
additionalProperties: false
required:
- type
- title
- messages
properties:
type:
type: string
enum:
- https://api.xentral.biz/problems/generic-validation
title:
type: string
minLength: 1
messages:
type: object
additionalProperties:
type: array
items:
type: string
'401':
description: Unable to authenticate the client
content:
application/json:
schema:
type: object
properties:
message:
type: string
description: Error message explaining why the request failed.
example: 'Missing required scopes: customer:create.'
example:
message: 'Missing required scopes: customer:create.'
text/html:
schema:
type: string
example: Unauthorized
'403':
description: Unable to authorize the client
'404':
description: Resource was not found or not enough access privileges
'415':
description: Resource representation send in the request is not supported.
post:
tags:
- Collection
operationId: analytics.collection.create
summary: Create collection
description: Creates a new collection and returns the new record
requestBody:
description: Create collection request payload
content:
application/json:
schema:
type: object
additionalProperties: false
required:
- collection
example:
collection:
name: My collection
description: This is a collection
properties:
collection:
type: object
additionalProperties: false
required:
- name
example:
name: My collection
description: This is a collection
properties:
name:
example: My collection
type: string
description: Collection name
description:
example: This is a collection
type: string
description: Collection description
examples:
example:
summary: Example of creating a collection
value:
collection:
name: My collection
description: This is a collection
responses:
'200':
description: Collection response
content:
application/json:
schema:
type: object
additionalProperties: false
required:
- data
properties:
data:
type: array
nullable: true
items:
type: object
additionalProperties: false
properties:
id:
example: 1
type: number
description: Collection ID
name:
example: My collection
type: string
description: Collection name
description:
example: This is a collection
type: string
description: Collection description
reports:
type: array
items:
type: object
additionalProperties: false
required:
- title
- sqlString
- collectionId
properties:
id:
type: number
description: Report ID
example: 1
title:
type: string
description: Report title
example: My report
description:
type: string
description: Report description
example: This is my report
userId:
type: number
description: User ID of the report creator
example: 1
sqlString:
type: string
description: SQL query string
example: SELECT * FROM users
isFavorite:
type: boolean
description: Is report marked as favorite
example: true
isReadOnly:
example: false
type: boolean
description: Is report read-only
collectionId:
example: 1
type: number
description: ID of the collection the report belongs to
lastEditedBy:
example: John Doe
type: string
description: User who last edited the report
tags:
type: array
example:
- id: 1
name: Official
description: This is my tag
palette: default
isOfficial: true
createdAt: '2023-01-01T00:00:00+00:00'
updatedAt: '2023-01-01T00:00:00+00:00'
items:
type: object
additionalProperties: false
required:
- id
- name
properties:
id:
type: number
description: Tag ID
example: 1
name:
type: string
description: Tag name
example: Official
description:
type: string
description: Tag description
example: This is my tag
palette:
type: string
enum:
- default
- warning
- success
- danger
- primary
description: The palette value of the tag
example: default
isOfficial:
type: boolean
description: Whether the tag is used for official Xentral reports
example: true
createdAt:
example: '2023-01-01T00:00:00+00:00'
type: string
format: date-time
description: Creation time
updatedAt:
example: '2023-01-01T00:00:00+00:00'
type: string
format: date-time
description: Last update time
parameters:
type: array
nullable: true
items:
type: object
additionalProperties: false
required:
- name
- type
- defaultValue
example:
name: date
type: string
defaultValue: '2021-01-01'
properties:
name:
type: string
description: Parameter name
example: date
type:
type: string
description: Parameter type
example: string
defaultValue:
type: string
description: Default value for parameter you want to store
example: '2021-01-01'
valueMap:
type: array
description: Array of dropdown options with label and value properties. Values will be rendered in the query, labels are displayed in the dropdown.
items:
type: object
required:
- label
- value
properties:
label:
type: string
description: Display label shown in the dropdown
value:
type: string
description: Value used in the query
example:
- label: Option 1
value: option1
- label: Option 2
value: option2
createdAt:
example: '2023-01-01T00:00:00+00:00'
type: string
format: date-time
description: Creation time
updatedAt:
example: '2023-01-01T00:00:00+00:00'
type: string
format: date-time
description: Last update time
createdAt:
example: '2023-01-01T00:00:00+00:00'
type: string
format: date-time
description: Creation time
updatedAt:
example: '2023-01-01T00:00:00+00:00'
type: string
format: date-time
description: Last update time
'400':
description: Error response with message
content:
application/json:
schema:
type: object
additionalProperties: false
required:
- message
properties:
message:
description: Error message
type: string
example: SQL statement is invalid
'401':
description: Unable to authenticate the client
content:
application/json:
schema:
type: object
properties:
message:
type: string
description: Error message explaining why the request failed.
example: 'Missing required scopes: customer:create.'
example:
message: 'Missing required scopes: customer:create.'
text/html:
schema:
type: string
example: Unauthorized
'403':
description: Unable to authorize the client
'404':
description: Resource was not found or not enough access privileges
'415':
description: Resource representation send in the request is not supported.
/api/v1/analytics/collection/{id}:
get:
tags:
- Collection
operationId: analytics.collection.list
summary: View collection
description: Returns a single collections by ID.
parameters:
- in: path
name: id
required: true
description: The resource's identifier.
schema:
type: string
pattern: \d+
example: '17'
description: Resource identifier.
responses:
'200':
description: Collection response
content:
application/json:
schema:
type: object
additionalProperties: false
required:
- data
properties:
data:
type: array
nullable: true
items:
type: object
additionalProperties: false
properties:
id:
example: 1
type: number
description: Collection ID
name:
example: My collection
type: string
description: Collection name
description:
example: This is a collection
type: string
description: Collection description
reports:
type: array
items:
type: object
additionalProperties: false
required:
- title
- sqlString
- collectionId
properties:
id:
type: number
description: Report ID
example: 1
title:
type: string
description: Report title
example: My report
description:
type: string
description: Report description
example: This is my report
userId:
type: number
description: User ID of the report creator
example: 1
sqlString:
type: string
description: SQL query string
example: SELECT * FROM users
isFavorite:
type: boolean
description: Is report marked as favorite
example: true
isReadOnly:
example: false
type: boolean
description: Is report read-only
collectionId:
example: 1
type: number
# --- truncated at 32 KB (63 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/xentral/refs/heads/main/openapi/xentral-collection-api-openapi.yml