Skip to main content

xSuite Helix - Help

YAML content

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: JWT
Storage 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: JWT
Conveyor 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