File Exchange
Introduction
The File Exchange container allows Trust1Connector to upload or download files from the filesystem to the requesting party. In order to be able to access the file system, a separate file_exchange consent is required, only when the consent has been configured to true upon installation of the T1C-GCL.
The File Exchange container provides the following functionalities:
selecting a folder based on application type
listing files in selected application type
downloading one or more files into selected application type
uploading one or more files from the selected application type
An application type resolves locally to an absolute file system path.
An application can create additional folders for a given application type, those folders are relative to the absolute path which has been locally mapped on the application type.
The File Exchange container provides additionally:
optional progress bar for file transfers
optional user notification for file transfer completion
user notification when browser is closed during file transfer
implicit user consent based on pre-defined algorithm using the operating system clipboard
copy and move files between application types
Notifications
The File Exchange container allows the application to choose whether to notify the users in the application context, or to delegate notification to the T1C. The T1C uses the underlying operating system to notify users. Two types of notifications are provided:
Modal information
Progress bar information
Context and scope
The context of a type mapping is defined by the following concepts:
applid (property of Type class): a string value denoting the application identifier. This is the root context for entity mapping
entity: a string value denoting the root entity for types mapping
type: a string value denoting a file typing, related to the absolute path mapped by an user, this value abstracts absolute paths from an application perspective

The following image depicts the file exchange object model:
Type Mapping
A 'Type' in the context of the File Exchange container, is a label, used by an application, to abstract the absolute path reference of the local file system. A 'Type' allows the application to perform file transfers, without the notion of the local file system organization. The File Exchange container maps the absolute path, chose by a user, on the application scoped label. We call this action a 'type mapping', this is, an absolute path, in the context of an application, is references by a label.
A user can chose to 'persist' the Type mapping, or can decide to assign an absolute path for each individual transaction.
Bulk File Transfer
The File Exchange container allows for bulk file transfer. The individual methods are stateless requests to the T1C-GCL service, and allows to up- or download one or more files from a user perspective. The progress information can be retrieved by the application for each file separately or for all the actions running on the T1C-GCL service.
Type subfolders
Subfolders can be managed by the application. All subfolder are relative paths and when requested can be created, optionally recursively, by the File Exchange API. It's important to understand:
Type mapping : correlates to absolute paths on a local file system
Type subfolders: correlates to relative paths on a local file system
The File Exchange container maintains the mapping for absolute paths. Relative paths will be created when used in the specified use case. Neither absolute paths or relative paths will result in deletion on the local file system! When deleting a 'type' (aka absolute path), the type will be removed from the File Exchange container, but the references directory will still exist on the user's file system.
In the File Exchange API, the parameter relpath refers to an array of strings denoting a directory path.
Responses
The File Exchange API can be integrated using Promises or callbacks. Both are returning the same result.
Language
The language, used for OS modals, is determined by the language parameter passed on initialization of the library, as one of the GCLConfig parameters. The languages parameter can take the value: en (English), nl (Dutch), fr (French), de (German) and defaults to en (English).
Interface
Objects
Enums
The following enumerators have been exported by the File Exchange container:
Enum
Values
Description
FileSort
ASC, DESC
Used for sorting files. ASC = ascending, DESC = descending
AccessMode
READ, WRITE, EXECUTE
Used to inform about the access permissions on the local file system. READ = read access to file or folder, WRITE = write access to file or folder, EXECUTE = execute access to file or folder
TypeStatus
MAPPED, UNMAPPED
Use to inform the application if a Type has been mapped to an absolute path by the user.
FileAction
UPLOAD, DOWNLOAD, COPY, MOVE
Enum used to track the progress of a file during a file action. UPLOAD = file upload from the local file system to the application, DOWNLOAD = file download from the application to the local file system, COPY = copy on local filesystem, MOVE = move on local filesystem
ModalType
INFO, CHOICE
Enum used to show an operating system modal. INFO = for information purpose, CHOICE = yes/no for user choice
Classes
Function Descriptions
The following functions are available in the T1C-JS library:
JavaScript API
Function
Input
Output
Description
download
entity, type, file, filename, relpath, implicitCreationType, notifyOnCompletion, showProgressBar
success value
Creates a file named filename at the type location, optionally in relative folder denoted by relpath, with file contents file. Optionally notifies user upon completion and/or shows progress bar.
upload
entity, type, filename, relpath, notifyOnCompletion, showProgressBar
array buffer
Uploads a file named filename, from the type location, optionally in relative folder denoted with relpath. Optionally notifies user upon completion and/or shows progress bar.
showModal
title, text, modal, timeoutInSeconds, type
boolean
Triggers a system modal to inform a user, or to ask for a boolean response.
getProgress
entity, type, filename, action
fileBuffer
Returns the progress information for one or more file transfers. When no filename is provided, the progress of all running transfers will be returned. See comment in function description.
listTypes
entity, page
list of type objects
Returns a list of existing types. The type object contains information about the mapping of absolute paths. Paging can be used optionally by using the page parameter.
listType
entity, type
type object
Returns the targeted type object.
listTypeContent
entity, type, relpath, page
list of file objects
Returns a list of file objects for the targeted type. A file can be a directory or a binary file. The relpath refers to the directory path where files should be searched for.
listContent
entity, page
list of file objects
Returns a list of file objects for all known types. The list will contain all files that are present in defined types.
existsType
entity, type
boolean
Verifies if type exists. Be aware that a type can exist, but no mapping has been persisted by the user.
existsFile
entity, type, relpath
boolean
Verifies if a file or directory exists on the local file system.
getAccessMode
entity, type, relpath, filename
access mode
Returns the access mode for a file or directory. The param relpath can be used to target a nested file or directory.
createDir
entity, type, relpath, recursive
file object
Returns the created file object (which in this use case is always a directory). When recursive is set to true, the all subfolders will be created.
copyFile
entity, fromType, toType, filename, newfilename, fromrelpath, torelpath
file object
Copy a file or directory on the local file system.
moveFile
entity, fromType, toType, filename, fromrelpath, torelpath
file object
Move a file or directory on the local file system.
renameFile
entity, type, filename, newfilename, relpath
file object
Rename a file or directory
getFileInfo
entity, type, filename, relpath
file object
Returns the targeted file information
createType
entity, type, timeoutInSeconds, initabspath
type object
Creates a new type mapping, with optional initial path (migration support). When the path is not found on the local system, the user will be prompted with a file chooser.
createTypeDirs
entity, type, relpath, showModal, timeoutInSeconds
type object
Creates new subfolders for a type mapping. If the type mapping is not existing, the user will be prompted with a file chooser.
updateType
entity, type, timeoutInSeconds
type object
Prompt the user to force renewal of type mapping. The user will be presented with file chooser, even when the mapping exists already.
deleteType
entity, type
boolean
Removes the type mapping, but does not delete directories or files from the local system.
getEnabledContainers
N/A
list of enabled containers
Returns the list of enabled containers for the user. The user can activate containers upon installation, if the container has not been activated, it will not appear in the response list.
Implicit Consent using Clipboard
The following component diagram explains the process of interaction between the application, the browser, T1C service and Agent for the purpose of user session identification and authentication. The process is using the clipboard from a browser and from the T1C service.

The user's clipboard is accessible write-only for the browser javascript, and read-write for the T1C agent. The user's browser is running with a user session, and an accompanied T1C agent.
The following steps are implemented:
Store(challenge) from the browser by the T1C-lib-js
Login(challenge) form the browser by the T1C-lib-js
Login(agent, challenge) from the T1C-GCL service to the T1C-GCL agent
Fetch challenge and erase clipboard form the T1C-GCL agent to the user's clipboard
Access Token(agent) from the T1C-GCL agent to the T1C-GCL service
Access Token(agent) from the T1C-GCL service to the T1C-JS running in the context of an application
For more information upon the consent mechanisms supported, you can read:
ConsentDetailed Function Overview
Paging (Page interface)
The File Exchange container uses paging for the endpoints:
listTypes
listContent
The page-parameter can be optionally provided and contains the following properties:
start: start index
size: number of items on a page
order: ordering of file and directory names ascending or descending
When used, the resulting response returns an 'total' property with the total item count for the requested resource.
download
Creates a file named filename at the type location in the context of entity, optionally in relative folder denoted by relpath, with file content file. Optionally notifies user upon completion and/or shows progress bar. When notifications are disabled, the application is assumed to handle user notifications.
The optional relpath provided, will be created when not existing, this in a recursive manner.
Interface
Parameters
entity: the entity context where the type mapping is persisted
type: location for the newly created file
file: ArrayBuffer containing binary data to be put in the file
filename: name to be given to the file
relpath: optional relative path (array of strings), when provided will implicitly create the missing directories.
implicitCreationType: In case the type mapping doesn’t exist, a prompt will be shown to the user for creating the Type before performing the download.
notifyOnCompletion: show modal info form operating system to user upon completion
showProgressBar: show progress bar from operating system to user during transfer
Output
Use Cases
The use cases are the followings with the concerned parameters :
Use Case 1
download with existing Type (whatever the value true or false of the flag ‘implicitCreationType’)
The user launches the download process with a relpath.
The application uses the T1C function download with as parameter a relpath.
The file is downloaded to the directory of the path + relpath (recursive creation).
Use Case 2 – download with non existing Type and parameter ‘implicitCreationType’ = false
The user launches the download process.
The application uses the T1C function download with as parameter a relpath.
The exception 356 is raised due the fact the Type doesn’t exist.
End
Use Case 3 – download with non existing Type and parameter ‘implicitCreationType’ = true
The user launches the download process.
The application uses the T1C function download with as parameter a relpath.
The user will see the prompt for the Type creation with a default path.
The user selects the directory and cancels or validates the creation:
Cancellation of the creation.
The exception 356 is raised due the fact the Type doesn’t exist.
Validation of the creation.
The Type is created.
The file is downloaded to the directory of the path + relpath (recursive creation).5. End
upload
Uploads a file named filename, from the type location, optionally in relative folder denoted with relpath. Optionally notifies the user upon completion and/or shows progress information. When the notifications are disabled, the application is assumed to handle user notifications.
The optional relpath provided, will be created when not existing, this in a recursive manner.
Interface
Parameters
entity: the entity context where the type mapping is persisted
type: location for the file to upload
filename: name of the file to be uploaded
relpath: optional relative path (array of strings)
notifyOnCompletion: show modal info form operating system to user upon completion
showProgressBar: show progress bar from operating system to user during transfer
Output
getProgress
It has been decided that this use case will not be included in the delivery.
showModal
In development
listTypes
In development
listType
In development
Exceptions
TypeException when non existing type provided as parameter.
listTypeFiles
In development
listFiles
In development
existsType
In development
Exceptions
Doesn't result in an exception. The response is either true/false.
existsFile
In development
getAccessMode
In development
createDir
In development
copyFile
In development
moveFile
In development
renameFile
In development
getFileInfo
In development
createType
The initabspath parameter denotes an initial path proposal from the application.
The optional parameter showModal is by default set to true.
When createType is called upon an existing type mapping, the file-chooser shown to the user is defaults to the existing absolute path provided for the type.
The showModal flag is used to propose (or not) the prompt to the end user even if the initabspath exists or not. This parameter forces the prompt of the file chooser:
when the
initabspathis provided andshowModalis set to true: theinitabspathis pre-selected in the file-chooser shown to the user if existing, or the file-chooser is shown with a default path.when the
initabspathis provided andshowModalis set to false: theinitabspathis used when mapping exists, otherwise the file-chooser is shown to the user in order to select a valid absolute path.when the
initabspathis not provided andshowModalis set to true: the file-chooser is shown when the mapping doesn't exist.when the
initabspathis not provided andshowModalis set to false: a type exception is thrown when the type mapping doesn't exist
Use Cases
The use cases are the followings with the concerned parameters:
Use Case 1
createType with an existing
initabspathand parametershowModal= trueThe user will create a type mapping.
The application uses the T1C function createType with as parameter an existing
initabspathand theshowModalset to true.A prompt must appear with the value set to
initabspath.The user selects (or not) a directory and cancels or validates the creation:
Cancellation of the creation.
The exception is raised due the fact it has been aborted.
Validation of the creation.
The Type is created.
End
Use Case 2
createType with an existing
initabspathand parametershowModal= falseThe user will create a Type
The application uses the T1C function createType using as parameter an existing
initabspathand theshowModalset to false.No prompt will be proposed to the end user but the Type is created.
End
Use Case 3
createType with a non existing
initabspath(whatever the value true or false of the flagshowModal)The user will create a Type.
The application uses the T1C function createType with as parameter a non existing
initabspath.A prompt must appear with default value.
The user selects (or not) a directory and cancels or validates the creation:
Cancellation of the creation.
The exception is raised due the fact it has been aborted.
Validation of the creation.
The Type is created.
End
Exceptions
TypeException when type already exists.
createTypeDirs
In development
updateType
In development
Exceptions
TypeException when non existing type provided as parameter
deleteType
In development
Exceptions
Returns always 'true', the T1C guarantees the deletion of the type mapping.
getEnabledContainers
In development
Error Responses
The error codes mentioned are added to the File Exchange container. The exception handling follows the framework exception handling and are extensions of status codes mentioned on:
Status codesCode
Description
Info
351
Access read Exception
User has no read access
352
Access write Exception
User has no write access
353
Access execution Exception
User has no execution access
354
File Transfer Exception
File cannot be transferred
355
Notification Exception
Progress info or notification exception
357
Type not found
Non existing type for use cases referring to a type
358
Type already exists
Type already exists
358
Content Exception
Non existing file or directory for use case
359
Container info exception
Container activation info not available
360
Entity not found
Non existing entity for use cases referring to an entity
361
Entity already exists
Entity already exists
Last updated