Archive Service API
openapi: 3.0.1
info:
title: xSuite Helix API - Archive Service
version: '1.0'
description: "xSuite Helix API archive service documentation"
servers:
- url: https://{customer}.{tenant}.cp.xsuite.com:{port}
description: xSuite Helix production API server
variables:
customer:
default: xsuite
description: Customer key issued by xSuite Group during onboarding process.
tenant:
default: demo
description: Tenant key issued by xSuite Group during onboarding process.
port:
enum:
- '443'
default: '443'
paths:
'/api/v1/Archives/{archive}/documents/{id}':
get:
tags:
- Archives
summary: "Returns an archived document containing meta data, field contents, attachments, notes, relations etc.\r\nThe returned document does not contain binary content of attachments stored with this document."
description: This operation does not require any roles. Probably resource-based authorization.
operationId: GetDocument
parameters:
- name: archive
in: path
description: Archive where the document is stored
required: true
schema:
type: string
- name: id
in: path
description: Identifier of the document version.
required: true
schema:
type: string
responses:
'200':
description: DocumentDto containing all data except binary contents of the document attachments is returned.
content:
application/json:
schema:
$ref: '#/components/schemas/DocumentDto'
'404':
description: A document with the given identifier does not exist in the archive or the archive does not exist.
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'403':
description: Operation is not permitted for the for the user or process executing this operation.
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'400':
description: "An error has occured during the execution of this operation and an XSuiteIncident\r\ndescribing the reason is logged and returned."
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'500':
description: Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'401':
description: 'Unauthorized: Authentication not valid'
security:
- Cookie: [ ]
JWTInternal: [ ]
JWT: [ ]
delete:
tags:
- Archives
summary: Deletes a single archived document from an archive.
description: This operation does not require any roles. Probably resource-based authorization.
operationId: DeleteDocument
parameters:
- name: archive
in: path
description: Archive where the document is stored
required: true
schema:
type: string
- name: id
in: path
description: Identifier of the document version.
required: true
schema:
type: string
responses:
'204':
description: Document was successfully deleted
'404':
description: A document with the given identifier does not exist in the archive or archive does not exist.
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'403':
description: Operation is not permitted for the user or process executing this operation.
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'400':
description: "An error has occured during the execution of this operation and an\r\nXSuiteIncident describing the reason is logged and returned."
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'500':
description: Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'401':
description: 'Unauthorized: Authentication not valid'
security:
- Cookie: [ ]
JWTInternal: [ ]
JWT: [ ]
'/api/v1/Archives/{archive}/documents/{documentId}/attachments/{attachmentId}/stream':
get:
tags:
- Archives
summary: Returns the file content or binary content of an attachment of a document as a stream.
description: This operation does not require any roles. Probably resource-based authorization.
operationId: GetDocumentAttachmentStream
parameters:
- name: archive
in: path
description: Archive where the document is stored
required: true
schema:
type: string
- name: documentId
in: path
description: Identifier of the document version
required: true
schema:
type: string
- name: attachmentId
in: path
description: Identifier of the attachment
required: true
schema:
type: string
responses:
'200':
description: File content or binary content of the attatchment as a stream.
content:
application/octet-stream:
schema:
type: string
format: binary
'404':
description: 'Archive, document or attachment does not exist.'
content:
application/octet-stream:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'403':
description: Operation is not permitted for the user or process executing this operation.
content:
application/octet-stream:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'400':
description: "An error has occured during the execution of this operation and an XSuiteIncident\r\ndescribing the reason is logged and returned."
content:
application/octet-stream:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'500':
description: Server Error
content:
application/octet-stream:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'401':
description: 'Unauthorized: Authentication not valid'
security:
- Cookie: [ ]
JWTInternal: [ ]
JWT: [ ]
'/api/v1/Archives/{archive}/documents':
get:
tags:
- Archives
summary: "Returns a new document for a specific archive that is not yet saved.\r\nThis document can be completed with field contents, attachments and further contents and then be stored in the archive via the Conveyor service.\r\nAll content that is stored or updated externally in xSuite Helix must be processed via the Conveyor service. \r\nThis ensures an even load distribution across all tenants and limits the maximum number of requests that can be made per client and application in a given time unit.\r\nFor storage in the archive, it is necessary to first obtain a reservation from the Conveyor service. \r\nThen the file contents of the attachments are stored in the storage service with the reservation and the link to it is stored in the document. \r\nFinally, the document is stored in the Conveyor service with the reservation.\r\nThe Conveyor service then sends an event to the Archive service. As soon as the Archive service processes the event, \r\nthe document is loaded from the Conveyor service and the file contents from the Storage service, and the document is saved. \r\nThe result is then reported back to the Conveyor service and can be queried via it."
description: This operation does not require any roles. Probably resource-based authorization.
operationId: GetInitializedDocument
parameters:
- name: archive
in: path
description: Archive where the document will be stored in
required: true
schema:
type: string
- name: documentType
in: query
description: Optional document type to be aplied to the new document
schema:
type: string
responses:
'200':
description: DocumentDto with initialized properties and meta data is returned.
content:
application/json:
schema:
$ref: '#/components/schemas/DocumentDto'
'404':
description: The given archive does not exist.
'403':
description: Operation is not permitted for the user or process executing this operation.
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'400':
description: "An error has occured during the execution of this operation and an\r\nWmd.xSuite.Core.Base.Exceptions.XSuiteIncident\r\ndescribing the reason is logged and returned."
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'500':
description: Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'401':
description: 'Unauthorized: Authentication not valid'
security:
- Cookie: [ ]
JWTInternal: [ ]
JWT: [ ]
delete:
tags:
- Archives
summary: Deletes a list of documents from an archive.
description: This operation does not require any roles. Probably resource-based authorization.
operationId: DeleteDocuments
parameters:
- name: archive
in: path
description: Archive where the documents are stored
required: true
schema:
type: string
- name: synchronous
in: query
description: "If the value is True, the deletion of the documents from the index is completed \r\n before the method call is finished. Otherwise, the deletion from the index is done asynchronously via an event.\r\n The value should only be set to True if an index query is made immediately afterwards via the query service\r\n (e.g. for UI). Default value is False."
schema:
type: boolean
default: false
requestBody:
description: List containing document version identifiers of documents to be deleted
content:
application/json-patch+json:
schema:
type: array
items:
type: string
application/json:
schema:
type: array
items:
type: string
text/json:
schema:
type: array
items:
type: string
application/*+json:
schema:
type: array
items:
type: string
responses:
'204':
description: Document was successfully deleted
'404':
description: Document with the given identifier does not exist in the archive or archive does not exist.
'413':
description: Client Error
'403':
description: Operation is not permitted for the user or process executing this operation.
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'400':
description: "An error has occured during the execution of this operation and an\r\nXSuiteIncident describing the reason is logged and returned."
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'500':
description: Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'401':
description: 'Unauthorized: Authentication not valid'
security:
- Cookie: [ ]
JWTInternal: [ ]
JWT: [ ]
'/api/v1/Archives/{archive}/list':
post:
tags:
- Archives
summary: Performs a meta data search in the given archive and returns a list of documents matching the search expression.
description: This operation does not require any roles. Probably resource-based authorization.
operationId: ListDocuments
parameters:
- name: archive
in: path
description: Archive where the documents are stored in
required: true
schema:
type: string
- name: skip
in: query
description: Number of documents to be skipped
schema:
type: integer
format: int32
default: 0
- name: max
in: query
description: Maximum number of documents to be returned
schema:
type: integer
format: int32
default: 200
requestBody:
description: Meta data search expression e.g. ExternalKey = "12345"
content:
application/json-patch+json:
schema:
type: string
application/json:
schema:
type: string
text/json:
schema:
type: string
application/*+json:
schema:
type: string
responses:
'200':
description: List of DocumentDto instances matching the search expression is returned.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DocumentDto'
'404':
description: The given archive does not exist.
'403':
description: Operation is not permitted for the user executing this operation.
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'400':
description: "An error has occured during the execution of this operation and an\r\nXSuiteIncident describing the reason is logged and returned."
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'500':
description: Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'401':
description: 'Unauthorized: Authentication not valid'
security:
- Cookie: [ ]
JWTInternal: [ ]
JWT: [ ]
components:
schemas:
AnyValue:
anyOf:
- type: string
- type: number
- type: integer
- type: boolean
- type: array
items: {}
- type: object
nullable: true
description: Can be any value, including `null`.
AttachmentDto:
type: object
properties:
Id:
type: string
description: Attachment identifier
nullable: true
Reference:
type: string
description: Attachment reference
nullable: true
RootId:
type: string
description: Attachment root version identifier
nullable: true
ParentId:
type: string
description: Identifier of the attachment version this version was created from
nullable: true
Tenant:
type: string
description: Tenant unique identifier
nullable: true
ContentType:
type: string
description: Content type of the attachment. Defaults to application/octet-stream
nullable: true
Properties:
type: object
additionalProperties: { }
description: Extra properties for this attachment that are not indexed. Constructed of a dictionary with the property name as key. Intended for processing instructions.
nullable: true
FileName:
type: string
description: File name of the attachment
nullable: true
Size:
type: integer
description: Size of the uncompressed or encrypted content of the attachment in bytes
format: int64
StorageReference:
type: string
description: 'Reference to the binary content location of this attachment (e.g. storage service, archive service)'
nullable: true
Indexed:
type: boolean
description: Indicates whether this content will be indexed when persisted
SingleInstance:
type: boolean
description: Indicates whether that the binary content of this attachment is only stored once.
Metadata:
type: object
additionalProperties: { }
description: Attachment meta data
nullable: true
Notes:
type: array
items:
$ref: '#/components/schemas/NoteDto'
description: Attachment notes
nullable: true
Tags:
type: array
items:
type: string
description: Tags categorizing this attachment
nullable: true
additionalProperties: false
description: Attachment represents binary content that can be stored with documents such as files etc.
DocumentDto:
required:
- Id
type: object
properties:
Id:
type: string
description: Document identifier
Reference:
type: string
description: Document version reference
nullable: true
RootId:
type: string
description: Document root version identifier
nullable: true
RootReference:
type: string
description: Document version reference
nullable: true
ParentId:
type: string
description: Identifier of the document version this document version was created from
nullable: true
Tenant:
type: string
description: Tenant unique identifier e.g. xsuite.demo
nullable: true
DocumentType:
type: string
description: Document type name
nullable: true
DocumentTypeVersion:
type: string
description: Document type version
nullable: true
ExternalKey:
type: string
description: External key or identifier (e.g. SAP DOCID)
nullable: true
TrackingKey:
type: string
description: Tracking key
nullable: true
TrackingId:
type: string
description: Tracking identifier (GUID)
nullable: true
Archive:
type: string
description: Archive where this document is persisted
nullable: true
ThumbnailSize:
type: integer
description: "Size of generated thumbnail for the attachments of the document. \r\nA value lower or equal to 0 indicates no thumbnail should be generated. Valid values are between 0 and 1000."
format: int32
Indexed:
type: boolean
description: 'If true, this document will be indexed.'
Versioned:
type: boolean
description: "Indicates whether this document is versioned.\r\nOnly versioned documents are stored in an audit-proof manner for long-term archiving."
Metadata:
type: object
additionalProperties: { }
description: Document meta data
nullable: true
Fields:
type: object
additionalProperties: { }
description: Document fields is a dictionary or map of FieldDto instances representing field contents of this document.
nullable: true
Attachments:
type: array
items:
$ref: '#/components/schemas/AttachmentDto'
description: Document attachments
nullable: true
Notes:
type: array
items:
$ref: '#/components/schemas/NoteDto'
description: Document notes
nullable: true
Links:
type: array
items:
type: string
description: Content links to other documents or internal/external content
nullable: true
Tags:
type: array
items:
type: string
description: Tags categorizing this document. A tag can be localized if it has a value that is equal to the name of a localization key.
nullable: true
Tables:
type: object
additionalProperties:
$ref: '#/components/schemas/TableDto'
description: Table contents of this document. Multiple tables are allowed.
nullable: true
Relations:
type: array
items:
$ref: '#/components/schemas/RelationDto'
description: Relations to other documents in the same archive or other archives
nullable: true
Permissions:
type: array
items:
type: string
description: List of permissions allowed for this document
nullable: true
Messages:
type: array
items:
type: string
description: List of messages for this document
nullable: true
AccessDefinitions:
type: object
additionalProperties:
type: object
additionalProperties:
type: boolean
description: Access definitions define extra permissions set on this document for specific roles. Also known as access control list (ACL).
nullable: true
additionalProperties: false
description: 'DocumentDto represents an archived document in xSuite Archive helix which is constructed of structured content such as fields, attachments, notes etc.'
Error:
type: object
properties:
Reasons:
type: array
items:
$ref: '#/components/schemas/Error'
nullable: true
readOnly: true
Message:
type: string
nullable: true
readOnly: true
Metadata:
type: object
additionalProperties: { }
nullable: true
readOnly: true
additionalProperties: false
FieldDto:
required:
- Name
type: object
properties:
Name:
type: string
description: Field name
Label:
type: string
description: Localization key or label text for the field name
Type:
type: string
description: Type of the field value, can be one of String, Date, Decimal, Boolean, Integer
Value:
anyOf:
- type: string
- type: number
- type: integer
- type: boolean
- type: array
items: {}
- type: object
nullable: true
description: Field value, can be any value, including `null` depending on the base type.
Indexed:
type: boolean
description: Indicates whether this content will be indexed when persisted
Properties:
type: object
additionalProperties: { }
description: Extra properties for this field that are not indexed. Constructed of a dictionary with the property name as key. Intended for processing instructions.
nullable: true
MetaDataKeys:
enum:
- None
- StorageId
- Reference
- ExternalKey
- CreateTimeStamp
- StorageState
- DestinationStorageState
- Creator
- Hash
- Version
- ModifyTimeStamp
- RetentionTimeStamp
- DocumentType
- IndexedBy
- FileName
- MimeType
- FileSize
- DocumentTypeVersion
- Modifier
- NotIndexable
- GenericMetadata
- SessionId
- Shard
- DocumentSize
- RecoverTimeStamp
- RecoveredBy
- DoNotDeleteBefore
- Tags
- CheckedOutFor
- CheckedOutSince
- LegalHoldMarker
- SiHash
- SiOwner
- ChangeToken
- VersionComment
- SapArchiveLinkLevel
- FolderId
- FolderCreateTimeStamp
- FolderReadTimeStamp
- FolderTitle
- FolderLink
- FolderReferencedBy
- FolderReviewTimeStamp
- TrackingReference
- TrackingReferenceType
- PhysicalDocumentSize
- SapArchiveLinkIndexingPostponedUntil
- SapArchiveLinkIndexingRetries
- TrackingId
- TrackingKey
- RetentionPeriod
type: string
NoteDto:
required:
- CreatedBy
- CreatedOn
- ReadOnly
type: object
properties:
CreatedBy:
type: string
description: Created by
CreatedOn:
type: string
description: Created on
format: date-time
ReadOnly:
type: boolean
description: Created on
ContentType:
type: string
description: Content type of the note
nullable: true
Content:
type: string
description: Note content
nullable: true
additionalProperties: false
description: NoteDto is adata transfer object representing text content attached to a Wmd.xSuite.Archive.ArchiveService.Dtos.DocumentDto
QueryConditionDto:
type: object
properties:
Field:
type: string
description: 'Name of the Field. May be the whole field Name like "Fields.s_Country" or "Country". If it doesn''t start with "Fields.", a "?Fieldname" will be rendered.'
nullable: true
DataType:
type: string
description: Field data type
nullable: true
BoolOperation:
type: string
description: 'The boolean operation. May be one of AND, OR, AND NOT, OR NOT, NOT.'
nullable: true
Operation:
type: string
description: 'The comparison operator. May be one of EQ=equals, LT=less than, LE=less or equal, GT=greater than, GE=greater or equal, BT=between'
nullable: true
Operand:
type: string
description: The value to compare with
nullable: true
RangeOperand:
type: string
description: 'When ranges are used, this will be the second operand of the range. If null the range will be between Operand and *'
nullable: true
SubQueries:
allOf:
- $ref: '#/components/schemas/QueryDto'
description: Sub queries. May not be combined with an Operation. Only a boolean operation can be defined!
nullable: true
additionalProperties: false
description: Data transfer object representing a query condition definition
QueryDto:
type: object
properties:
Culture:
type: string
description: 2 letter ISO culture language name
nullable: true
IANATimeZone:
type: string
description: IANA Time zone
nullable: true
Conditions:
type: array
items:
$ref: '#/components/schemas/QueryConditionDto'
description: Query conditions
nullable: true
additionalProperties: false
description: Data transfer object representing a query definition.
Reason:
type: object
properties:
Message:
type: string
nullable: true
readOnly: true
Metadata:
type: object
additionalProperties: { }
nullable: true
readOnly: true
additionalProperties: false
RelationDto:
type: object
properties:
SourceField:
type: string
description: Source field name
nullable: true
DestinationField:
type: string
description: Destination field
nullable: true
Archive:
type: string
description: Archive to look up
nullable: true
ArchiveLabel:
type: string
description: Archive label
nullable: true
Type:
type: string
description: Data type of source and target field
nullable: true
Count:
type: integer
description: Document count for this join
format: int64
QueryCondition:
allOf:
- $ref: '#/components/schemas/QueryConditionDto'
description: Querycondition to use for the lookup
nullable: true
additionalProperties: false
description: Data transfer object representing a relation between a source field in a document and a target field in the same or another archive.
Result:
type: object
properties:
IsFailed:
type: boolean
readOnly: true
IsSuccess:
type: boolean
readOnly: true
Reasons:
type: array
items:
$ref: '#/components/schemas/Reason'
nullable: true
readOnly: true
Errors:
type: array
items:
$ref: '#/components/schemas/Error'
nullable: true
readOnly: true
Successes:
type: array
items:
$ref: '#/components/schemas/Success'
nullable: true
readOnly: true
additionalProperties: false
Success:
type: object
properties:
Message:
type: string
nullable: true
readOnly: true
Metadata:
type: object
additionalProperties: { }
nullable: true
readOnly: true
additionalProperties: false
TableDto:
required:
- Name
type: object
properties:
Name:
type: string
description: Table name
Label:
type: string
description: Table label or label identifier
nullable: true
TableType:
type: string
description: Table type name
nullable: true
Indexed:
type: boolean
description: Indicates whether this content will be indexed when persisted
Columns:
type: object
additionalProperties: { }
description: Table columns. Constructed of a dictionary with column name as key and TableColumnDto as value.
nullable: true
Rows:
type: array
items:
$ref: '#/components/schemas/TableRowDto'
description: Table columns
nullable: true
additionalProperties: false
description: Data transfer object representing a table that can be stored with a DocumentDto.
TableColumnDto:
required:
- Name
type: object
properties:
Name:
type: string
description: Column name
Label:
type: string
description: Column label or label identifier
nullable: true
Type:
type: string
description: Table column value type name, can be one of String, Date, Decimal, Boolean, Integer.
DefaultValue:
anyOf:
- type: string
- type: number
- type: integer
- type: boolean
- type: array
items: {}
- type: object
nullable: true
description: Table column default value, can be any value, including `null` depending on the base type.
additionalProperties: false
description: Data transfer object representing a table column definition that is part of a TableDto.
TableRowDto:
type: object
properties:
Cells:
type: object
additionalProperties: { }
description: Table row cells. Constructed of a dictionary with column name as key and TableCellDto as value.
nullable: true
additionalProperties: false
description: Data transfer object representing a table row in a TableRowDto
TableCellDto:
required:
- Name
type: object
properties:
Name:
type: string
description: Table cell name
Type:
type: string
description: Table cell value type name, can be one of String, Date, Decimal, Boolean, Integer.
Value:
anyOf:
- type: string
- type: number
- type: integer
- type: boolean
- type: array
items: {}
- type: object
nullable: true
description: Field value, can be any value, including `null` depending on the base type.
additionalProperties: false
description: Data transfer object representing a table cell that is part of a TableRowDto.
TraceLevel:
enum:
- Off
- Error
- Warning
- Info
- Verbose
type: string
XSuiteIncident:
type: object
properties:
EventId:
type: integer
format: int32
ExceptionType:
type: string
nullable: true
InnerException:
allOf:
- $ref: '#/components/schemas/XSuiteIncident'
nullable: true
Message:
type: string
nullable: true
SeverityLevel:
allOf:
- $ref: '#/components/schemas/TraceLevel'
StackTrace:
type: string
nullable: true
StatusCode:
type: integer
format: int32
SubIncidents:
type: array
items:
$ref: '#/components/schemas/XSuiteIncident'
nullable: true
LocParams:
type: object
additionalProperties: { }
nullable: true
LocKey:
type: string
nullable: true
ReferenceKey:
type: string
nullable: true
TrackingId:
type: string
format: uuid
nullable: true
TrackingKey:
type: string
nullable: true
additionalProperties: false
securitySchemes:
Cookie:
type: apiKey
description: A set cookie is required. You can obtain one from the ChallengeService.
name: xSuite365
in: cookie
JWTInternal:
type: http
description: 'Internal JWT Authorization header. Example: Authorization: X-JWT-Authorization <base64JWT>. Additionally X-Tenant is required. Example: X-Tenant: test.0001'
scheme: JWTInternal
JWT:
type: http
description: Simple JWT token auth. Get one from keycloak.
scheme: bearer
bearerFormat: JWTStorage Service API
openapi: 3.0.1
info:
title: xSuite Helix API - Storage Service
version: '1.0'
description: "xSuite Helix API storage service documentation"
servers:
- url: https://{customer}.{tenant}.cp.xsuite.com:{port}
description: xSuite Helix production API server
variables:
customer:
default: xsuite
description: Customer key issued by xSuite Group during onboarding process.
tenant:
default: demo
description: Tenant key issued by xSuite Group during onboarding process.
port:
enum:
- '443'
default: '443'
paths:
/api/v1/Storage/api:
post:
tags:
- StorageController_api
summary: Creates a new storage document
operationId: Create
parameters:
- name: x-conveyor-auth-token
in: header
description: Authorization token granting the right to create a new storage document
schema:
type: string
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
encoding:
file:
style: form
responses:
'200':
description: Success
content:
application/json:
schema:
type: string
text/json:
schema:
type: string
'403':
description: Forbidden
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
text/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'500':
description: 'Internal Server Error: A major internal server problem occurred'
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'/api/v1/Storage/api/{id}':
delete:
tags:
- StorageController_api
summary: Deletes the storage document identified by id
description: "Either conveyorToken or remoteAuthToken must be\r\nprovided if the requesting user is not xSuite.Core.Base.Identity.XSuiteClaimsPrincipal.IsSystemUser"
operationId: Delete
parameters:
- name: id
in: path
description: Id of the document to delete
required: true
schema:
type: string
- name: If-Match
in: header
description: "ETag which causes (if provided) the delete only to happen if the provided etag matched\r\nthe one on the db entity to prevent concurrency issues"
schema:
type: string
- name: x-conveyor-auth-token
in: header
description: Conveyor token
schema:
type: string
- name: x-xsuite-storageservice-remoteauth
in: header
description: Auth token
schema:
type: string
responses:
'204':
description: Success
'403':
description: Forbidden
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
text/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
text/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'500':
description: 'Internal Server Error: A major internal server problem occurred'
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
get:
tags:
- StorageController_api
summary: Gets the metadata for the storage document identified by its id
description: This operation does not require any roles. Probably resource-based authorization.
operationId: GetMeta
parameters:
- name: id
in: path
description: Id of the storeage document whose metadata are requested
required: true
schema:
type: string
- name: x-conveyor-auth-token
in: header
description: Conveyor token
schema:
type: string
- name: x-xsuite-storageservice-remoteauth
in: header
description: Auth token
schema:
type: string
responses:
'200':
description: Success
headers:
ETag:
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/StorageDocMetaDto'
text/json:
schema:
$ref: '#/components/schemas/StorageDocMetaDto'
'404':
description: Not Found
'401':
description: 'Unauthorized: Authentication not valid'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'500':
description: 'Internal Server Error: A major internal server problem occurred'
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
security:
- Cookie: [ ]
JWTInternal: [ ]
JWT: [ ]
/api/v1/Storage/api/ListByMeta:
post:
tags:
- StorageController_api
summary: "Gets the metadata of all documents matching the provided searchMeta.\r\nE.g. if the searchMeta only has the Wmd.xSuite.Core.StorageService.Models.StorageDocMeta.TrackingId filled the metadata of all documents associated with\r\nthe provided trakingId are returned."
description: This operation does not require any roles. Probably resource-based authorization.
operationId: GetMetas
parameters:
- name: x-conveyor-auth-token
in: header
description: Conveyor token
schema:
type: string
- name: x-xsuite-storageservice-remoteauth
in: header
description: Auth token
schema:
type: string
requestBody:
description: Search definition
content:
application/json-patch+json:
schema:
allOf:
- $ref: '#/components/schemas/StorageDocMetaDto'
description: Metadata of a storage document
application/json:
schema:
allOf:
- $ref: '#/components/schemas/StorageDocMetaDto'
description: Metadata of a storage document
text/json:
schema:
allOf:
- $ref: '#/components/schemas/StorageDocMetaDto'
description: Metadata of a storage document
application/*+json:
schema:
allOf:
- $ref: '#/components/schemas/StorageDocMetaDto'
description: Metadata of a storage document
responses:
'200':
description: Success
headers:
ETag:
schema:
type: string
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/StorageDocMetaDto'
text/json:
schema:
type: array
items:
$ref: '#/components/schemas/StorageDocMetaDto'
'404':
description: Not Found
'401':
description: 'Unauthorized: Authentication not valid'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'500':
description: 'Internal Server Error: A major internal server problem occurred'
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
security:
- Cookie: [ ]
JWTInternal: [ ]
JWT: [ ]
'/api/v1/Storage/api/{id}/Stream':
get:
tags:
- StorageController_api
summary: Gets the binary stream of the storage document identified by the id
description: This operation does not require any roles. Probably resource-based authorization.
operationId: GetStream
parameters:
- name: id
in: path
description: Id of the storage document whose stream is requested
required: true
schema:
type: string
- name: If-None-Match
in: header
description: Only gets the stream if the provided value does not match the database hash
schema:
type: array
items:
type: string
- name: x-conveyor-auth-token
in: header
description: Conveyor token
schema:
type: string
- name: x-xsuite-storageservice-remoteauth
in: header
description: Auth token
schema:
type: string
responses:
'200':
description: Success
headers:
ETag:
schema:
type: string
content:
application/octet-stream:
schema:
type: string
format: binary
'304':
description: Not Modified
'404':
description: Not Found
content:
application/octet-stream:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'400':
description: Bad Request
content:
application/octet-stream:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'401':
description: 'Unauthorized: Authentication not valid'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'500':
description: 'Internal Server Error: A major internal server problem occurred'
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
security:
- Cookie: [ ]
JWTInternal: [ ]
JWT: [ ]
components:
schemas:
StorageDocMetaDto:
type: object
properties:
Created:
type: string
description: Timestamp when the document was created
format: date-time
ExpiryDate:
type: string
description: Date and time when the document expires and is deleted automatically
format: date-time
nullable: true
FileName:
type: string
description: Name of the stored file
nullable: true
IsImmutable:
type: boolean
description: Indicates whether the document can be altered or not
Key:
type: string
description: Key of the storage document
nullable: true
MimeType:
type: string
description: Mimetype of the stored document
nullable: true
Modified:
type: string
description: Timestamp when the document was modified.
format: date-time
ModifiedBy:
type: string
description: Name of the user who modified the document
nullable: true
TrackingId:
type: string
description: TrackingId the document is associated with
format: uuid
nullable: true
TrackingKey:
type: string
description: Trackingkey the document is associated with
nullable: true
additionalProperties: false
description: Metadata of a storage document
TraceLevel:
enum:
- Off
- Error
- Warning
- Info
- Verbose
type: string
XSuiteIncident:
type: object
properties:
EventId:
type: integer
format: int32
ExceptionType:
type: string
nullable: true
InnerException:
allOf:
- $ref: '#/components/schemas/XSuiteIncident'
nullable: true
Message:
type: string
nullable: true
SeverityLevel:
allOf:
- $ref: '#/components/schemas/TraceLevel'
StackTrace:
type: string
nullable: true
StatusCode:
type: integer
format: int32
SubIncidents:
type: array
items:
$ref: '#/components/schemas/XSuiteIncident'
nullable: true
LocParams:
type: object
additionalProperties: { }
nullable: true
LocKey:
type: string
nullable: true
ReferenceKey:
type: string
nullable: true
TrackingId:
type: string
format: uuid
nullable: true
TrackingKey:
type: string
nullable: true
additionalProperties: false
securitySchemes:
Cookie:
type: apiKey
description: A set cookie is required. You can obtain one from the ChallengeService.
name: xSuite365
in: cookie
JWTInternal:
type: http
description: 'Internal JWT Authorization header. Example: Authorization: X-JWT-Authorization <base64JWT>. Additionally X-Tenant is required. Example: X-Tenant: test.0001'
scheme: JWTInternal
JWT:
type: http
description: Simple JWT token auth. Get one from keycloak.
scheme: bearer
bearerFormat: JWTConveyor Service API
openapi: 3.0.1
info:
title: xSuite Helix API - Conveyor Service
version: '1.0'
description: "xSuite Helix API storage service documentation"
servers:
- url: https://{customer}.{tenant}.cp.xsuite.com:{port}
description: xSuite Helix production API server
variables:
customer:
default: xsuite
description: Customer key issued by xSuite Group during onboarding process.
tenant:
default: demo
description: Tenant key issued by xSuite Group during onboarding process.
port:
enum:
- '443'
default: '443'
paths:
'/api/v1/ConveyorApp/{applicationName}/GetReservation':
post:
tags:
- ConveyorApp
description: This operation does not require any roles. Probably resource-based authorization.
operationId: GetReservation
parameters:
- name: applicationName
in: path
required: true
schema:
type: string
- name: trackingId
in: query
schema:
type: string
format: uuid
- name: pollingStateUpdate
in: query
schema:
type: boolean
default: false
- name: isResumable
in: query
schema:
type: boolean
default: false
responses:
'200':
description: Success
headers:
x-conveyor-auth-token:
schema:
type: string
x-xsuite-renew-every-seconds:
schema:
type: string
content:
application/json:
schema:
type: string
'429':
description: Client Error
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'401':
description: 'Unauthorized: Authentication not valid'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'500':
description: 'Internal Server Error: A major internal server problem occurred'
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
security:
- Cookie: [ ]
JWTInternal: [ ]
JWT: [ ]
'/api/v1/ConveyorItem/{reservationKey}':
post:
tags:
- ConveyorItem
description: This operation does not require any roles. Probably resource-based authorization.
operationId: Set
parameters:
- name: reservationKey
in: path
required: true
schema:
type: string
- name: trackingKey
in: query
schema:
type: string
- name: completed
in: query
schema:
type: boolean
default: true
requestBody:
content:
application/json-patch+json:
schema: { }
application/json:
schema: { }
text/json:
schema: { }
application/*+json:
schema: { }
responses:
'204':
description: Success
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'404':
description: Not Found
'401':
description: 'Unauthorized: Authentication not valid'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'500':
description: 'Internal Server Error: A major internal server problem occurred'
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
security:
- Cookie: [ ]
JWTInternal: [ ]
JWT: [ ]
/api/v1/ConveyorItem/stateMetas:
post:
tags:
- ConveyorItem
description: This operation does not require any roles. Probably resource-based authorization.
operationId: GetMetaForKeys
requestBody:
content:
application/json-patch+json:
schema:
type: array
items:
type: string
application/json:
schema:
type: array
items:
type: string
text/json:
schema:
type: array
items:
type: string
application/*+json:
schema:
type: array
items:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/BufferItemElementStateDto'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'401':
description: 'Unauthorized: Authentication not valid'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
'500':
description: 'Internal Server Error: A major internal server problem occurred'
content:
application/json:
schema:
$ref: '#/components/schemas/XSuiteIncident'
security:
- Cookie: [ ]
JWTInternal: [ ]
JWT: [ ]
components:
schemas:
ApplicationDto:
type: object
properties:
BufferCount:
type: integer
format: int64
BufferSize:
type: integer
format: int64
GroupLocKey:
type: string
nullable: true
ItemCountByState:
type: object
additionalProperties:
type: integer
format: int64
nullable: true
LocKey:
type: string
nullable: true
Name:
type: string
nullable: true
additionalProperties: false
ApplicationDtoGetListResult:
required:
- Items
type: object
properties:
Items:
type: array
items:
$ref: '#/components/schemas/ApplicationDto'
MaxMatches:
type: integer
format: int64
Skip:
type: integer
format: int32
Take:
type: integer
format: int32
additionalProperties: false
BufferItemDto:
type: object
properties:
Application:
type: string
nullable: true
ConveyorVerb:
allOf:
- $ref: '#/components/schemas/ConveyorVerbs'
Created:
type: string
format: date-time
CreatedBy:
type: string
nullable: true
Error:
allOf:
- $ref: '#/components/schemas/XSuiteIncident'
nullable: true
ImportItemKey:
type: string
nullable: true
ImportState:
allOf:
- $ref: '#/components/schemas/BufferItemStateDto'
IsResumable:
type: boolean
readOnly: true
Key:
type: string
nullable: true
Modified:
type: string
format: date-time
ModifiedBy:
type: string
nullable: true
Payload:
type: string
nullable: true
ReservedExpires:
type: string
format: date-time
nullable: true
TrackingId:
type: string
format: uuid
nullable: true
TrackingKey:
type: string
nullable: true
additionalProperties: false
BufferItemDtoGetListResult:
required:
- Items
type: object
properties:
Items:
type: array
items:
$ref: '#/components/schemas/BufferItemDto'
MaxMatches:
type: integer
format: int64
Skip:
type: integer
format: int32
Take:
type: integer
format: int32
additionalProperties: false
BufferItemElementStateDto:
type: object
properties:
Application:
type: string
description: Application for which the reservation is valid
nullable: true
Error:
allOf:
- $ref: '#/components/schemas/XSuiteIncident'
description: Error which happended while processing the reservation
nullable: true
ImportItemKey:
type: string
description: Key of an imported element (if applicable)
nullable: true
ImportState:
allOf:
- $ref: '#/components/schemas/BufferItemStateDto'
description: Import state of this reservation
IsResumable:
type: boolean
description: Indicates whether this element can be resumed when the reservation has expired
Key:
type: string
nullable: true
TrackingId:
type: string
description: Tracking id of the element
nullable: true
TrackingKey:
type: string
description: Tracking key of the element
nullable: true
additionalProperties: false
description: Element representing a reservation to perform actions in the helix
BufferItemStateDto:
enum:
- Reserved
- Pending
- Error
- Error_waiting
- Success
- Success_waiting
- Waiting
- Aborted
type: string
ConveyorVerbs:
enum:
- Create
- Update
type: string
ListEntriesParameterDto:
type: object
properties:
Filters:
type: array
items:
$ref: '#/components/schemas/ListFilterDto'
nullable: true
Sorter:
allOf:
- $ref: '#/components/schemas/ListSorterDto'
nullable: true
additionalProperties: false
description: Compound object for filtering and sorting.
ListFilterDto:
type: object
properties:
ColumnName:
type: string
nullable: true
FilterValue:
type: string
nullable: true
Operator:
type: string
description: 'Supported operators: NE,EQ,LE,LT,GT,GE,Contains'
nullable: true
additionalProperties: false
ListSorterDto:
type: object
properties:
ColumnName:
type: string
nullable: true
IsDescending:
type: boolean
additionalProperties: false
TraceLevel:
enum:
- Off
- Error
- Warning
- Info
- Verbose
type: string
XSuiteIncident:
type: object
properties:
EventId:
type: integer
format: int32
ExceptionType:
type: string
nullable: true
InnerException:
allOf:
- $ref: '#/components/schemas/XSuiteIncident'
nullable: true
Message:
type: string
nullable: true
SeverityLevel:
allOf:
- $ref: '#/components/schemas/TraceLevel'
StackTrace:
type: string
nullable: true
StatusCode:
type: integer
format: int32
SubIncidents:
type: array
items:
$ref: '#/components/schemas/XSuiteIncident'
nullable: true
LocParams:
type: object
additionalProperties: { }
nullable: true
LocKey:
type: string
nullable: true
ReferenceKey:
type: string
nullable: true
TrackingId:
type: string
format: uuid
nullable: true
TrackingKey:
type: string
nullable: true
additionalProperties: false
securitySchemes:
Cookie:
type: apiKey
description: A set cookie is required. You can obtain one from the ChallengeService.
name: xSuite365
in: cookie
JWTInternal:
type: http
description: 'Internal JWT Authorization header. Example: Authorization: X-JWT-Authorization <base64JWT>. Additionally X-Tenant is required. Example: X-Tenant: test.0001'
scheme: JWTInternal
JWT:
type: http
description: Simple JWT token auth. Get one from keycloak.
scheme: bearer
bearerFormat: JWT