create or replace package object_vault_restapi as

/*

Copyright 2014 - 2021 by AsterionDB Inc, All rights reserved.

Database front-end package for the REST API.

Introduction:
-----------------------------------------------------------------------------------------------------------------------------------
Most of the functions and procedures that are contained within this package accept the following parameter values embedded within 
the p_json_parameters parameter:

  sessionId                   The sessionID of the restAPI client
  clientAddress               The IP address of the restAPI client
  userAgent                   The restAPI client's user-agent

Here is an example of a basic JSON parameter string:

  {"sessionId":"9YAZOHVGXQ0MFKCXYJWJZT5X61Z5O8LL", "clientAddress":"127.0.0.1", "userAgent":"..."}
  
Any exceptions to this general rule are noted within a specific function or procedure.

Each embedded parameter value is required unless noted otherwise.

JSON value keys are case sensitive.

Exception Handling:
-----------------------------------------------------------------------------------------------------------------------------------
Functions and procedures may return an exception upon detecting an error.  It is the caller's responsibility to handle the
exception in accordance to the expectations of the client.  While some clients may be able to process the exception directly, others
will expect an HTTP conformant error.  

The error code value associated with the exception may be Oracle specific or AsterionDB specific.  Valid AsterionDB error code 
values are between -20000 and -20999.

AsterionDB specific errors are raised and logged directly by the data-layer logic.  Oracle specific errors are not caught by 
data layer logic.  For Oracle specific errors it is the caller's responsibility to call object_vault_restapi.restapi_error in 
order to log the error  information to the AsterionDB error log. The data returned by restapi_error will contain a properly 
formatted error message.

There is a setting in the AsterionDB profile that enables extended error information. Enabling this option is very useful in 
development and debugging situations.

*/

  SECONDS_PER_DAY                     constant pls_integer := 86400;
  
  WRITE_ACCESS                        constant varchar2(1) := 'W';
  READ_ACCESS                         constant varchar2(1) := 'R';
  READ_WRITE_ACCESS                   constant varchar2(1) := 'U';

  UNLIMITED                           constant pls_integer := -1;

  OPTION_ENABLED                      constant varchar2(1) := 'Y';
  OPTION_DISABLED                     constant varchar2(1) := 'N';
  
  BLOB_OBJECT_TYPE                    constant varchar2(4) := 'BLOB';
  CLOB_OBJECT_TYPE                    constant varchar2(4) := 'CLOB';

  STREAM_CONTENT                      constant varchar2(6) := 'STREAM';
  DOWNLOAD_CONTENT                    constant varchar2(8) := 'DOWNLOAD';
  
  WEBAPP_CLIENT                       constant varchar2(12) := 'webAppClient';
  API_CLIENT                          constant varchar2(9) := 'apiClient';
  FILE_UPLOAD_CLIENT                  constant varchar2(16) := 'fileUploadClient';

  VALID_FOR_AN_HOUR                   constant varchar2(6) := '1 Hour';
  VALID_FOR_A_DAY                     constant varchar2(5) := '1 Day';
  NO_EXPIRATION                       constant varchar2(14) := 'No Expiration';

  ALL_SHARED_OBJECTS                  constant varchar2(18) := 'All Shared Objects';
  SHARED_WITH_PUBLIC                  constant varchar2(18) := 'Shared With Public';
  SHARED_WITH_USER                    constant varchar2(14) := 'Shared With Me';
  
-- Keyword Value Types...

  KVT_CHARACTER                       constant varchar2(9) := 'character';
  KVT_DATE                            constant varchar2(4) := 'date';
  KVT_TIMESTAMP                       constant varchar2(9) := 'timestamp';
  KVT_FLOAT                           constant varchar2(14) := 'floating point';
  KVT_INTEGER                         constant varchar2(7) := 'integer';
  KVT_JSON                            constant varchar2(4) := 'json';
  KVT_TEXT_AREA                       constant varchar2(9) := 'text area';
  KVT_TIME                            constant varchar2(4) := 'time';
  KVT_TRUE_FALSE                      constant varchar2(13) := 'true or false';
  KVT_YES_NO                          constant varchar2(9) := 'yes or no';

-- Session Status

  SS_ACTIVE                           constant varchar2(6) := 'active';
  SS_SESSION_LIMIT                    constant varchar2(13) := 'session limit';
  SS_CHANGE_PASSWORD                  constant varchar2(15) := 'change password';
  SS_TERMINATED                       constant varchar2(10) := 'terminated';

-- Session Disposition

  SD_TIMEOUT                          constant varchar2(7) := 'timeout';
  SD_LOGOUT                           constant varchar2(6) := 'logout';
  SD_CANCELED                         constant varchar2(8) := 'canceled';
  SD_ERROR                            constant varchar2(5) := 'error';
  
-- Account Types

  AT_USER                             constant varchar2(4) := 'user';
  AT_EVALUATOR                        constant varchar2(9) := 'evaluator';
  AT_OWNER                            constant varchar2(5) := 'owner';
  
-- User Input Handling

  UIH_NO_SUGGESTIONS                  constant varchar2(14) := 'no suggestions';
  UIH_STATIC_LIST                     constant varchar2(11) := 'static list';
  UIH_DYNAMIC_LIST                    constant varchar2(12) := 'dynamic list';

-- Object View Types

  OVT_CATALOGED                       constant varchar2(9) := 'cataloged';
  OVT_DELETED                         constant varchar2(7) := 'deleted';
  OVT_UNCATALOGED                     constant varchar2(11) := 'uncataloged';
  OVT_SHARED                          constant varchar2(6) := 'shared';
  
-- Account Status Values

  AS_ACTIVE                           constant varchar2(6) := 'active';
  AS_LOCKED                           constant varchar2(6) := 'locked';
  AS_UNCONFIRMED                      constant varchar2(11) := 'unconfirmed';
  AS_CHANGE_PASSWORD                  constant varchar2(15) := 'change password';

-- Share Status

  SHS_SHARE_WITH_ALL                  constant varchar2(20) := 'Share With All Users';
  SHS_SHARE_WITH_USERS                constant varchar2(16) := 'Share With Users';
  SHS_NOT_SHARED                      constant varchar2(10) := 'Not Shared';

  SHS_VIEW_SHARED_OBJECTS             constant varchar2(19) := 'View Shared Objects';

/*

  procedure abandon_for_current_session

  The abandon_session_for_another procedure allows a user application to abandon an active session for the current session which is
  blocked due to a session limit exception.
  
  This procedure can only be called by a session that is currently blocked due to a session limit exception.
  
  The user application will have to call object_vault_restapi.get_active_sessions in order to present a list to the user of sessions
  that can be terminated.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    sessionToTerminate        The session_id of the session to terminate in favor of the current session.  

  Possible exceptions thrown:
  
    error_logging_pkg.UNABLE_TO_TERMINATE
    error_logging_pkg.UNBLOCK_SESSION_FAILED
    
*/

  procedure abandon_for_current_session
  (
    p_json_parameters                 clob
  );

/*
  function activate_blocked_session
  
  The activate_blocked_session function is called by a blocked session that is requesting activation after the user has terminated
  an active session (i.e. on another browser/computer).  
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

  Embedded values in the returned JSON string value:
  
    sessionStatus             Returned value, Active or Blocked, indicates the session status.
*/

  function activate_blocked_session
  (
    p_json_parameters                 clob
  )
  return clob;

/*
  procedure assign_keyword
  
  The assign_keyword procedure will assign a keyword/value pair to a set of objects.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
    keywordInGroupId          The keyword_in_group_id value for the keyword to be associated with the object(s)
    keywordValue              The corresponding keyword value
    objectIds                 An array of object_id values indicating the objects to be associated with the keyword/value pair

*/

  procedure assign_keyword
  (
    p_json_parameters                 clob
  );

/*
  procedure associate_keyword_and_group
  
  The associate_keyword_and_group procedure will associate a keyword with a keyword group.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
    keywordId                 The keyword_id value of the keyword to be associated with the keyword group
    keywordGroupId            The keyword_group_id value of the corresponding keyword group
    
*/

  procedure associate_keyword_and_group
  (
    p_json_parameters                 clob
  );

/*
  function change_password
  
  The change_password function allows a user to change their password.  The calling application can also indicate that the user
  has accepted the terms of use.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
    currentPassword           The user's current password
    newPassword               The user's new password
    termsAccepted             An optional value indicating that the user has accepted the terms of use.  Valid values are 'Y' 
                              or 'N'.
                              
  Embedded values in the returned JSON string value:
  
    sessionStatus             The resulting session status - 'Active' or 'Blocked'

  Possible exceptions returned:
  
    error_logging_pkg.CHANGE_PASSWORD_FAILED
    error_logging_pkg.NEW_OLD_PASSWORDS_MATCH
    
*/

  function change_password
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function check_gmail_authorization_status
  
  The check_gmail_authorization_status allows a restAPI client to determine the whether AsterionDB has been authorized as a GMail
  SMTP client.
  
  This function can only be called by a user session that has been created by a system administrator.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
    
  Embedded values in the returned JSON string value:
  
    authorized                'Y' or 'N'
    
*/
  
  function check_gmail_authorization_status
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function check_shared_user_equivalence
  
  The check_shared_user_equivalence function call allows a restAPI client to determine if the set of objects have been shared with
  the same group of users.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    objectIds                 An array of object_id values that identify the set of objects to be check for shared user equivalence
  
  Embedded values in the returned JSON string value:
  
    sharedUserEquivalence     'true' or 'false'
    
*/

  function check_shared_user_equivalence
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function confirm_user_registration
  
  The confirm_user_registration function is the last step in the process of user registration.  Users can self-register for access
  to AsterionDB (if enabled) or be invited to register an account by the system administrator.  Upon registration, the user is sent
  a weblink to their primary email address.  This weblink will take them to a confirmation webpage that will require the user to
  log into the system in order to finalize their registration.
  
  New user registration is initiated by calling the register_new_user procedure.

  The confirmationToken can be checked for validity by calling the validate_confirmation_token procedure.
  
  This procedure is to be called after successfully establishing a session by calling create_user_session.  The user session will
  be blocked and can be unblocked by calling this procedure.
  
  Embedded parameter values:
  
    clientAddress             See introduction
    userAgent                 See introduction

    username                  The username of the AsterionDB user whose enrollment is to be confirmed

    confirmationToken         The system generated confirmation_token value associated with the new user.

  Embedded values in the returned JSON string value:
  
    accountStatus             The user account status.  Possible values are:
    
                                object_vault_restapi.AS_ACTIVE
                                object_vault_restapi.AS_LOCKED
    
  Possible exceptions returned:
  
    error_logging_pkg.INVALID_CONFIRMATION_DATA
    
*/

  function confirm_user_registration
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function create_an_object
  
  The create_an_object function allows a client to create an object in AsterionDB.  This is akin to pre-creating an output file
  so that you can write data to it.  The create_an_object function will return a output file name.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
    
    source                    The original source path for the file.  This value is required and at a minimum must be a valid 
                              filename with an extension - path information is optional.

    creationDate              If specified, the original creation date of the source file.  This is useful when you want to record 
                              the creation date of the original file.  This value maps to object_versions.ingested_file_cdate.
                              This value is specified as a unix timestamp value.

    modificationDate          If specified, the original modification date of the source file.  This is useful when you want to 
                              record the modification date of the original file.  This value maps to 
                              object_versions.ingested_file_mdate.  This value is specified as a unix timestamp value.

    accessDate                If specified, the date that the original file was last accessed.  This is useful when you want to
                              record when the original file, in the context of it's origin, was last accessed.  This value maps
                              to object_versions.ingested_file_adate.  This value is specified as a unix timestamp value.

    programName               If specified, the name of the program that will be used to write the object to AsterionDB.

    versionedObject           The create_an_object function will, by default, create an object that is unversioned.  To create a
                              versioned object, set the versionedObject parameter to object_vault_restapi.OPTION_ENABLED.

    gatewayName               The DbObscura gateway that will be used to convey the file data into AsterionDB.                  

    accessMode                This value must be specified.  Use the constant values object_vault_restapi.WRITE_ACCESS or 
                              object_vault_restapi.READ_WRITE_ACCESS as appropriate for your needs.

    validUntil                This value, if specified, allows you to set the date at which the filename returned by this function
                              will expire.  This value is specified using the constants object_vault_restapi.VALID_FOR_AN_HOUR,
                              object_vault_restapi.VALID_FOR_A_DAY or as a unix timestamp value.

    accessLimit               The create_an_object function will, by default, return a filename that will allow the object to be
                              opened once.  To increase the number of times the filename can be used to open the 'file', set the
                              accessLimit value accordingly.  Use object_vault_restapi.UNLIMITED to disable the
                              access limit.

    enforcePidSecurity        Setting enforcePidSecurity to object_vault_restapi.OPTION_ENABLED instructs the DbObscura 
                              gateway to require that the process id of the program accessing the gateway to match, or be a 
                              descendent of the process that called create_an_object.

    enforceSidSecurity        Setting enforceSidSecurity to object_vault_restapi.OPTION_ENABLED instructs the DbObscura 
                              gateway to require that the database session that called create_an_object to still be active.

    enforceIpSecurity         Setting enforceIpSecurity to object_vault_restapi.OPTION_ENABLED instructs the DbObscura 
                              gateway to require that the IP address of the DbObscura gateway match the IP address of the
                              host machine used to call create_an_object.

  Embedded values in the returned JSON string value:

    filename                  The filename to be used to access the object.

    objectId                  The object_id of the newly created object.
    
*/

  function create_an_object
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function create_api_client_token
  
  The create_api_client_token function will create a token that a client application can use to access the Object Vault RESTAPI.
  The client token is to be used by PL/SQL based logic that will be accessing a user account within an instance of AsterionDB 
  that has been installed upon a common database.
  
  Refer to the DbTwig React Example Application for an example of using an API client token.
  
  Client tokens do not expire but can be replaced by calling create_api_client_token.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

  Embedded values in the returned JSON string value:

    apiClientToken            The user's API client token value.
    
*/

  function create_api_client_token
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  procedure create_group_and_keyword_and_set_value
  
  The create_group_and_keyword_and_set_value allows a client application to create a keyword group, a keyword and set the keyword's
  value using a single API call.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    objectId                  The objectId parameter value allows you to specify the object_id when uploading a new version of an
                              object.
                              
    keywordGroup              The keyword group to be created.
    
    keywordValueType          The type of value the keyword accepts.  Use the following constants to set the keyword value type:

                                object_vault_restapi.KVT_CHARACTER
                                object_vault_restapi.KVT_DATE
                                object_vault_restapi.KVT_TIMESTAMP
                                object_vault_restapi.KVT_FLOAT
                                object_vault_restapi.KVT_INTEGER
                                object_vault_restapi.KVT_JSON                                
                                object_vault_restapi.KVT_TEXT_AREA
                                object_vault_restapi.KVT_TIME
                                object_vault_restapi.KVT_TRUE_FALSE
                                object_vault_restapi.KVT_YES_NO
    
*/

  procedure create_group_and_keyword_and_set_value
  (
    p_json_parameters                 clob
  );

/*

  function create_object_type
  
  The create_object_type function creates a new object type in AsterionDB.  This function can only be called by a system 
  administrator.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    objectType                The object type to be created (e.g. 'Video Files', 'DICOM Images').

    tablespace                The tablespace within which to create the SecureFiles object storage.

    tableName                 The name of the table that will store the objects (e.g. video_files, dicom_images).  

    columnName                The name of the column that will be used to store the object data (e.g. video_data, dicom_image).

    dataType                  The data type (i.e. blob, clob) that will be used to store the object data.  Use the constants
                              object_vault_restapi.BLOB_OBJECT_TYPE or object_vault_restapi.CLOB_OBJECT_TYPE to specify the data 
                              type.

    description               An optional value that describes the object type.

    gatewayIngestionEnabled   The gatewayIngestionEnabled parameter allows you to determine whether the object can be ingested by a
                              DbObscura gateway drop directory.  Use the constant object_vault_restapi.OPTION_ENABLED
                              or object_vault_restapi.OPTION_DISABLED to specify this value.

    adminAccessOnly           The adminAccessOnly parameter allows you to specify that the object type is for internal use only.
                              The object type will not appear as a operational type at the user level but can be accessed by
                              the system administrator.
                              
    htmlAcceptValue           The htmlAcceptValue parameter allows you to specify the <input> accept attribute value for a specific 
                              object. This value is used to limit the types of files that can be uploaded.  Search the web for 
                              HTML attribute:accept for further information.
                              
    fileExensions             The fileExensions parameter is a JSON array of JSON objects containing file extension information.
                              Each array element has the following attributes:
                              
      extensionId             The extension_id of the file extension.  Set this value to null to insert a new  file extension row.
                    
      fileExtension           The file extension (e.g. txt, pdf).  This value is required.
      
      mimeType                The associated mime-type, if any.  This value can be set to null.
      
      htmlElement             The HTML element (e.g. <object>) used to display the object, if any.  This value can be set to null.

  Embedded values in the returned JSON string value:

    objectTypeId              The object_type_id of the newly created object type.

*/

  function create_object_type
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  procedure create_keyword
  
  The create_keyword procedure creates a new keyword and associates it with a keyword group.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    keyword                   The keyword to be created.

    keywordValueType          The type of value the keyword accepts.  Use the following constants to set the keyword value type:

                                object_vault_restapi.KVT_CHARACTER
                                object_vault_restapi.KVT_DATE
                                object_vault_restapi.KVT_TIMESTAMP
                                object_vault_restapi.KVT_FLOAT
                                object_vault_restapi.KVT_INTEGER
                                object_vault_restapi.KVT_JSON                                
                                object_vault_restapi.KVT_TEXT_AREA
                                object_vault_restapi.KVT_TIME
                                object_vault_restapi.KVT_TRUE_FALSE
                                object_vault_restapi.KVT_YES_NO

  Possible exceptions returned:
  
    error_logging_pkg.DUPLICATE_KEYWORD

*/
  procedure create_keyword
  (
    p_json_parameters                 clob
  );

/*

  procedure create_keyword_group
  
  The create_keyword_group procedure creates a new keyword group.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
    
    keywordGroup              The keyword group to be created.  This value maps to keyword_groups.keyword_group.

    description               The keyword group's description.  This value can be set to null.

    objectTypeIds             The objectTypeIds parameter is an embedded JSON array of object_type_id values.  This parameter is 
                              used to specify the object types that this keyword group will be restricted to.
                              
*/

  procedure create_keyword_group
  (
    p_json_parameters                 clob
  );

/*

  function create_suggested_keyword_value
  
  The create_suggested_keyword_value function creates a new suggested keyword value.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
    
    keywordInGroupId          The keyword_in_group_id value that corresponds to the keyword that a new suggested value will be 
                              created for.
    
    keywordValue              The suggested keyword value.

  Embedded values in the returned JSON string value:

    valueId                   The suggested_keywords.value_id value of the newly created suggested keyword value.
    
  Possible exceptions returned:
  
    error_logging_pkg.DUPLICATE_SUGGESTED_VALUE
    error_logging_pkg.NO_SUGGESTED_VALUE

*/

  function create_suggested_keyword_value
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function create_uploaded_object
  
  The create_uploaded_object function is to be called by a middle-tier component that will be uploading a file to AsterionDB.  The
  caller typically responds to a web-application's initiation of an upload request.  This function will return a filename that 
  can be used to write/stream the uploaded data.
  
  This function will upload a new file or a new version of an object as determined by the newVersion parameter.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
    
    sourcePath                The source path of the original file.  This parameter must be specified and the filename must end
                              with a valid file extension.
    
    creationDate              If specified, the original creation date of the source file.  This is useful when you want to record 
                              the creation date of the original file.  This value maps to object_versions.ingested_file_cdate.
                              This value is specified as a unix timestamp value.

    modificationDate          If specified, the original modification date of the source file.  This is useful when you want to 
                              record the modification date of the original file.  This value maps to 
                              object_versions.ingested_file_mdate.  This value is specified as a unix timestamp value.

    accessDate                If specified, the date that the original file was last accessed.  This is useful when you want to
                              record when the original file, in the context of it's origin, was last accessed.  This value maps
                              to object_versions.ingested_file_adate.  This value is specified as a unix timestamp value.

    gatewayName               If specified, the name of the DbObscura gateway that will be used to convey the file data into 
                              AsterionDB.                  

    programName               If specified, the name of the program that will be used to write the object to AsterionDB.

    filesize                  The size of the file that is being uploaded.  Specify a value of zero for streamed content.
    
    newVersion                The newVersion parameter causes the create_uploaded_file function to either create a new object or to
                              create a new version of an object.  Use the constant object_vault_restapi.OPTION_ENABLED to signify
                              that the uploaded file will be a new version of an object.
    
    objectId                  The objectId parameter value allows you to specify the object_id when uploading a new version of an
                              object.
                              
    
  Embedded values in the returned JSON string value:

    filename                  The filename to be used to access the object.
    objectId                  If you are uploading a new, unversioned object, the objectId item will contain the object_id of the 
                              new object.
    
  Possible exceptions returned:
  
    error_logging_pkg.INVALID_FILE_TYPE
    error_logging_pkg.GATEWAY_OFFLINE
    error_logging_pkg.OBJECT_NOT_FOUND
    error_logging_pkg.IMMUTABLE_OBJECT
    error_logging_pkg.DELETED_OBJECT

*/

  function create_uploaded_object
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function create_user_session
  
  The create_user_session function creates a user session which is synonymous to logging in.  This function must be called before
  making any calls that require a sessionId.  This is for interactive applications only (e.g. web client, file upload client).
  This function is not to be called by integrated applications that utilize an Client API Token.
  
  Embedded parameter values:
  
    clientAddress             See introduction
    userAgent                 See introduction

    username                  The username.
    
    password                  The user's password.
    
    clientType                The application client type.  Use the constants object_vault_restapi.WEBAPP_CLIENT or
                              object_vault_restapi.FILE_UPLOAD_CLIENT to set this parameter value.
                              
  Embedded values in the returned JSON string value:

    The embedded values returned in the JSON string are dependent upon the client type.
    
    For a WEBAPP_CLIENT the values returned are:
    
      sessionId               The user's session_id value.

      sessionStatus           The user session's status.  Possible values are:
      
                                object_vault_restapi.SS_ACTIVE - all API features available

                                object_vault_restapi.SS_SESSION_LIMIT - logon successful but restricted due to session limit

                                object_vault_restapi.SS_CHANGE_PASSWORD - logon successful but user is required to change their 
                                password
                                
                              For a session that is restricted due to a session limit, the client application should issue calls to 
                              object_vault_restapi.get_active_sessions to get a list of active sessions and then call 
                              object_vault_restapi.activate_blocked_session or object_vault_restapi.terminate_session depending
                              upon the action to be taken.
                              
                              For a session that is restricted due to a password reset requirement, the client application must 
                              present a screen, collect the appropriate input values and call object_vault_restapi.change_password.
                              
      apiUserId               An externally accessible ID value that identifies the user.

      username                The logged in user's name.

      firstName               The user's first name.

      middleName              The user's middle name/initial.

      lastName                The user's last name.

      emailAddress            The user's primary email address.

      accountType             The account type.  Valid values are:
      
                                object_vault_restapi.AT_USER
                                object_vault_restapi.AT_EVALUATOR
                                object_vault_restapi.AT_OWNER

      autoQueryEnabled        The value of the autoQueryEnabled, which maps to object_vault_users.auto_query_enabled.

      defaultTimezone         The user's default timezone (e.g. America/Los_Angeles).

      grantedPermissions      The grantedPermissions value is a JSON array containing the following elements:
            
                                permission        The permission granted to the user.
                                permissionClass   The class/group of permissions that the permission is a part of.

      termsAccepted           A flag indicating whether the user has affirmatively checked the 'terms accepted' checkbox.

    For a FILE_UPLOAD_CLIENT the returned values are:
    
      sessionId               The user's session_id value.

      sessionStatus           The user session's status.  Possible values are:
      
                                object_vault_restapi.SS_ACTIVE - all API features available

                                object_vault_restapi.SS_CHANGE_PASSWORD - logon successful but user is required to change their 
                                password
      
      firstName               The user's first name.

      middleName              The user's middle name/initial.

      lastName                The user's last name.

  Possible exceptions returned:
  
    error_logging_pkg.USER_OR_PASSWORD
    error_logging_pkg.ACCOUNT_LOCKED                              
    
*/

  function create_user_session
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  procedure delete_keyword_group
  
  The delete_keyword_group procedure deletes a keyword group, including references.  The references in the following tables will be
  deleted:
  
    object_type_keyword_groups
    suggested_keyword_values
    keyword_object_map
    keyword_values
    keywords_in_a_group
    keywords (note: if a keyword that was in the group is no longer referenced by any other keyword group, it will be deleted)
    
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    keywordGroupId            The keyword_groups.keyword_group_id of the keyword group to be deleted.  

*/

  procedure delete_keyword_group
  (
    p_json_parameters                 clob
  );

/*

  procedure delete_objects

  Thus delete_objects procedure will delete one or more specified objects.  Deleting an object merely moves it to the 'recycle
  bin'.  For an object to be truly deleted, one must call object_vault_restapi.purge_deleted_objects.
  
  Any object specified for deletion must be marked as a mutable object.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    objectIds                 The objectIds value is a JSON array containing the objectIds of the objects you want to mark as 
                              deleted.
                              
  Possible exceptions returned:
  
    error_logging_pkg.IMMUTABLE_OBJECT
  
*/

  procedure delete_objects
  (
    p_json_parameters                 clob
  );

/*

  procedure delete_suggested_keyword_value
  
  The delete_suggested_keyword_value procedure deletes a suggested keyword value from the suggested_keyword_values table.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    valueId                   The value_id of the row in suggested_keyword_values to be deleted.
    
*/

  procedure delete_suggested_keyword_value
  (
    p_json_parameters                 clob
  );

/*

  procedure disable_drop_directory
  
  The disable_drop_directory procedure call disables the AsterionDB drop directory within the DbObscura Gateway's mount point.

  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    gatewayName               The name of the DbObscura Gateway host machine.
    
  Possible exceptions returned:
  
    error_logging_pkg.GATEWAY_OFFLINE    
    
*/

  procedure disable_drop_directory
  (
    p_json_parameters                 clob
  );

/*

  procedure disable_smtp
  
  The disable_smtp procedure disables the sending of email from AsterionDB.
  
  This function can only be called by a user session that has been created by a system administrator.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
  
*/

  procedure disable_smtp
  (
    p_json_parameters                 clob
  );

/*

  procedure enable_drop_directory
  
  The enable_drop_directory procedure call enables the AsterionDB drop directory within the DbObscura Gateway's mount point.

  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    gatewayName               The name of the DbObscura Gateway host machine.
    
  Possible exceptions returned:
  
    error_logging_pkg.GATEWAY_OFFLINE    
    
*/

  function enable_drop_directory
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  procedure enable_object_type
  
  The enable_object_type procedure will create the supporting data structures to store and manage the specified object type.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    objectTypeId              The object_types.object_type_id value of the object type to be enabled.
    tablespaceName            The name of the tablespace to store the object data (using Oracle SecureFiles).
    
  Possible exceptions returned:
  
    error_logging_pkg.INVALID_PARAMETERS
    error_logging_pkg.INVALID_FILE_TYPE
    error_logging_pkg.INVALID_FILE_TYPE_ID
    error_logging_pkg.SUCCESS_WITH_INFO
    
*/

  procedure enable_object_type
  (
    p_json_parameters                 clob
  );

/*

  function enroll_new_user
  
  The enroll_new_user function allows a system administrator to enroll a user into AsterionDB.  This function returns a temporary
  password that must be communicated to the user.  Upon initially logging in the new user will have to change their password.
  
  This function can only be called by a user session that has been created by a system administrator.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    username                  The new user's username.
    
    firstName                 The new user's first name.
    
    middleName                The new user's middle name.
    
    lastName                  The new user's last name.
    
    emailAddress              The new user's email address.
    
    defaultTimezone           The new user's default timezone (e.g. America/Los_Angeles).

  Embedded values in the returned JSON string value:

    temporaryPassword         The new user's temporary password.
    
  Possible exceptions returned:
  
    error_logging_pkg.PASSWORD_REQUIRED    
    error_logging_pkg.NEW_USERS_NOT_ALLOWED
    error_logging_pkg.RESTRICTED_TO_DOMAIN
    error_logging_pkg.OWNER_ALREADY_EXISTS
    error_logging_pkg.USERNAME_TAKEN
    error_logging_pkg.EMAIL_ADDRESS_EXISTS
    
*/

  function enroll_new_user
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function find_dbobscura_gateway
  
  The find_dbobscura_gateway function allows a client to locate it's associated DbObscura Gateway. This function operates in three
  modes:
  
    Searching for a specified gateway by name.
    
    Searching for a gateway based on the HTTP server's name.  If you do not specify a gateway name and the client's IP address 
    evaluates to the loopback address (i.e. 127.0.0.1) this function will attempt to find a gateway that matches the HTTP host 
    server name.
    
    Searching for a gateway based on the client's IP address.  If you do not specify a gateway name and the client's IP address
    does not evaluate to the loopback address (i.e. 127.0.0.1) this function will attempt to find a gateway that matches the
    client's IP address.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    gatewayName               The name of the gateway to search for.  This parameter can be set to null.
    httpHost                  The name of the HTTP server.  This should be filled in directly by the middle-tier listener - do not
                              depend upon the client to truthfully tell you their HTTP server name.
                              
  Embedded values in the returned JSON string value:

    gatewayName               The name of the DbObscura Gateway that was found by this function.
    
  Possible exceptions returned:

    error_logging_pkg.GATEWAY_OFFLINE
        
*/

  function find_dbobscura_gateway
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  Proof of Concept code.  Move to an isolated package.
  
*/

  function generate_app_specific_filename
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function generate_object_filename
  
  The generate_object_filename will generate a filename for an object thus allowing you to access the object as if it were a file.

  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    objectId                  The object_id of the object that you want to generate a filename for.

    gatewayName               The DbObscura gateway that will be used to convey the file data into AsterionDB.                  

    accessMode                This value must be specified.  Use the constant values object_vault_restapi.WRITE_ACCESS or 
                              object_vault_restapi.READ_WRITE_ACCESS as appropriate for your needs.

    validUntil                This value, if specified, allows you to set the date at which the filename returned by this function
                              will expire.  This value is specified using the constants object_vault_restapi.VALID_FOR_AN_HOUR,
                              object_vault_restapi.VALID_FOR_A_DAY or as a unix timestamp value.

    accessLimit               The create_an_object function will, by default, return a filename that will allow the object to be
                              opened once.  To increase the number of times the filename can be used to open the 'file', set the
                              accessLimit value accordingly.  Use object_vault_restapi.UNLIMITED to disable the
                              access limit.

    enforcePidSecurity        Setting enforcePidSecurity to object_vault_restapi.OPTION_ENABLED instructs the DbObscura 
                              gateway to require that the process id of the program accessing the gateway to match, or be a 
                              descendent of the process that called create_an_object.

    enforceSidSecurity        Setting enforceSidSecurity to object_vault_restapi.OPTION_ENABLED instructs the DbObscura 
                              gateway to require that the database session that called create_an_object to still be active.

    enforceIpSecurity         Setting enforceIpSecurity to object_vault_restapi.OPTION_ENABLED instructs the DbObscura 
                              gateway to require that the IP address of the DbObscura gateway match the IP address of the
                              host machine used to call create_an_object.

  Embedded values in the returned JSON string value:

    filename                  A filename that can be used to access the object.
    
  Possible exceptions returned:

    error_logging_pkg.OBJECT_NOT_FOUND    
    error_logging_pkg.DELETED_OBJECT
    error_logging_pkg.IMMUTABLE_OBJECT
    error_logging_pkg.VERSIONED_OBJECT
    error_logging_pkg.GATEWAY_OFFLINE
    error_logging_pkg.SHARING_VIOLATION
    
*/

  function generate_object_filename
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function generate_object_weblink

  The generate_object_weblink function generates a weblink that can be used to access an object.  Unlike the 
  generate_secure_weblink function, the weblink generated by this function will not expire and will always be valid
  provided that the object has not been deleted.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    objectId                  The object_id of the object that you want to generate a weblink for.
  
    contentDisposition        Use object_vault_restapi.STREAM_CONTENT or object_vault_restapi.DOWNLOAD_CONTENT to specify the
                              whether the weblink can be used to stream or download the object.  The default value is
                              object_vault_restapi.STREAM_CONTENT.
                              
  Embedded values in the returned JSON string value:

    objectWeblink             A weblink that can be used to access the object.
    
  Possible exceptions returned:

    error_logging_pkg.INVALID_CONTENT_DISPOSITION    
    error_logging_pkg.DELETED_OBJECT
    
*/

  function generate_object_weblink
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  procedure generate_password_reset_token
  
  The generate_password_reset_token procedure allows a client application to generate a unique weblink that will allow an
  unauthenticated user (i.e. not logged in) to recover their password.  This function requires outbound SMTP email support to
  be enabled.  The AsterionDB system will send an email to the user with a weblink that can be used to access a password reset 
  page.
  
  This procedure is callable by unauthenticated users.  It supports password recovery when the user has forgotten their password.
  The application calling this procedure should communicate to the user that a password reset email will be sent to the specified email
  address.  
  
  Note that if the email address is not registered in the system, a reset email will not be sent.  This procedure will not
  inform the caller if the email address is valid or not.
  
  The calling application should indicate to the user that an email will be sent to the specified address if it is valid.
  
  Embedded parameter values:
  
    emailAddress              The user's email address.
    
    clientAddress             The IP address of the client machine used to generate a password reset token.
    
*/

  procedure generate_password_reset_token
  (
    p_json_parameters                 clob
  );

/*

  function generate_secure_weblink
  
  The generate_secure_weblink function will return a weblink that will expire based upon specified conditions and parameters.  
  Unlike the generate_object_weblink function, the weblink returned by this function may expire and become invalid.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    objectId                  The object_id of the object that you want to generate a weblink for.
  
    contentDisposition        Use object_vault_restapi.STREAM_CONTENT or object_vault_restapi.DOWNLOAD_CONTENT to specify the
                              whether the weblink can be used to stream or download the object.  The default value is
                              object_vault_restapi.STREAM_CONTENT.

    validUntil                This value, if specified, allows you to set the date at which the filename returned by this function
                              will expire.  This value is specified using the constants object_vault_restapi.VALID_FOR_AN_HOUR,
                              object_vault_restapi.VALID_FOR_A_DAY, object_vault_restapi.NO_EXPIRATION or as a unix timestamp value.

    accessLimit               The create_an_object function will, by default, return a filename that will allow the object to be
                              opened once.  To increase the number of times the filename can be used to open the 'file', set the
                              accessLimit value accordingly.  Use object_vault_restapi.UNLIMITED to disable the
                              access limit.

    enforceIpSecurity         Setting enforceIpSecurity to object_vault_restapi.OPTION_ENABLED instructs the DbObscura 
                              gateway to require that the IP address of the DbObscura gateway match the IP address of the
                              host machine used to call create_an_object.

    weblinkPassword           If a value is specified for weblinkPassword, the user will be required to enter a password in order
                              to access the weblnk and corresponding object.  This can be a user specified value or one that is
                              generated by calling the object_vault_restapi.generate_weblink_password function.
                              
  Embedded values in the returned JSON string value:

    secureWeblink             A weblink that can be used to securely access the object.
                              
  Possible exceptions returned:

    error_logging_pkg.INVALID_CONTENT_DISPOSITION    
    error_logging_pkg.DELETED_OBJECT
    error_logging_pkg.SHARING_VIOLATION

*/

  function generate_secure_weblink
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function generate_temporary_password
  
  The generate_temporary_password function allows a system administrator to reset and generate a temporary password for a user.
  
  This function can only be called by a user session that has been created by a system administrator.
  
  It is the client application's responsiblity to communicate the new, temporary password to the end user.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    username                  The username of the user whose password will be reset and set to a temporary value.
    
  Embedded values in the returned JSON string value:

    temporaryPassword         The user's new, temporary password.    
    
*/

  function generate_temporary_password
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function generate_weblink_password
  
  The generate_weblink_password function allows a client application to generate a password that a user will have to enter in order
  to access the content referenced by a secure weblink.
  
  It is the client application's and the end user's responsibility to communicate the weblink password to those that receive the 
  weblink.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

  Embedded values in the returned JSON string value:

    weblinkPassword           A password that can be used when calling the object_vault_restapi.generate_secure_weblink function.
    
*/

  function generate_weblink_password
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_acceptable_object_types
  
  The get_acceptable_object_types function allows a client application to determine the acceptable object types when uploading 
  files to AsterionDB.  The returned information contains JSON arrays that provides the file extensions and HTML accept values
  that will be allowed when a web application employs the <input type="file" ...>  HTML tag in order to upload a file.  
  See the following link for more information:
  
    https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/accept

  Note that only the file extensions and HTML accept values for the object types that are actually enabled for use in an 
  installation of AsterionDB will be returned by this function.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

  Embedded values in the returned JSON string value:

    htmlAcceptValues          This is a JSON array of file-type group specifiers (i.e. audio/*, image/*, video/*) which allow a web
                              application to specify a group of file types (e.g. all audio files) as acceptable files for upload.
    
    fileExtensions            This is a JSON array of specific file extensions that will be accepted when a file is uploaded.
    
*/

  function get_acceptable_object_types
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_active_sessions
  
  The get_active_sessions function allows a blocked Web Application session to obtain information about other active sessions for
  the blocked user.  This information can be used by the end user to make a determination of how to activate a blocked session
  (i.e. terminate another session).
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
  
  Embedded values in the returned JSON string value:
  
    The JSON string returned by this function contains an array of objects with information pertaining to active sessions that are
    blocking the calling session.  The embedded values in each array element contsins the following attributes:

      lastActivity              A UNIX timestamp value indicating the date and time of last activity for a session.
    
      sessionId                 The session_id value of a user's active session.
      
      clientAddress             The IP address of the client machine.
      
      sessionCreated            A UNIX timestamp value indicating the date and time that the active session was created.
      
      userAgent                 The active session's user-agent.
      
*/

  function get_active_sessions
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_addable_keywords_for_group
  
  The get_addable_keyword_for_group will return the keywords that can be added to a keyword group.  The returned set of data will
  not include any keywords that have already been assigned to the group.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    keywordGroupId            The keyword_groups.keyword_group_id value of the keyword group that the set of keywords can be added
                              to.
                              
  Embedded values in the returned JSON string value:
  
    The JSON string returned by this function contains a array of objects describing the keywords that can be added to the 
    specified group.  Each array object has the following properties:
    
      keyword                 The keywords.keyword value of the keyword that can be added to the keyword group.
      
      keywordId               The keywords.keyword_id value of the keyword that can be added to the keyword group.
      
*/

  function get_addable_keywords_for_group
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_all_active_sessions
  
  The get_all_active_sessions function will return information pertaining to all of the active sessions in AsterionDB.
  
  This function can only be called by a user session that has been created by a system administrator.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

  Embedded values in the returned JSON string value:
  
    The JSON string returned by this function contains an array of objects with information pertaining to active sessions in 
    AsterionDB.  The embedded values in each array element contsins the following attributes:

      username                  The AsterionDB user's username.
      
      lastActivity              A UNIX timestamp value indicating the date and time of last activity for a session.
    
      sessionId                 The session_id value of a user's active session.
      
      clientAddress             The IP address of the client machine.
      
      sessionCreated            A UNIX timestamp value indicating the date and time that the active session was created.
      
      userAgent                 The active session's user-agent.
      

  function get_all_active_sessions
  (
    p_json_parameters                 clob
  )
  return clob;
*/

/*

  function get_api_error_log
  
  The get_api_error_log function allows a system administrator to retrieve all of the errors logged in AsterionDB.
  
  This function can only be called by a user session that has been created by a system administrator.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

  Embedded values in the returned JSON string value:
  
    The JSON string returned by this function contains an array of entries from the api_errors table.
    
      errorTimestamp          A Unix timestamp value indicating the date and time that the error was logged.
      
      errorId                 A system generated error identifier.
      
      username                The username associated with the error.
      
      errorCode               An Oracle generated error code.  Note, values between 20,000 and 20,999 are AsterionDB specific error
                              codes.
      
      errorMessage            The error message.
      
      scriptFilename          The filename of the program/script that issued the middle-tier call.
      
      requestUri              The URI, if available, of the call that generated the error.

*/
  function get_api_error_log
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_assignable_keywords

  The get_assignable_keywords function returns a list of keywords that can be applied to the selected object(s).  Note that the set
  of keywords returned depends upon the types of objects selected.  When the objects are all of one type, the keywords selected are
  those that apply to all object types and those that are specific to the object type.  When more than one object type is selected,
  the set of returned keywords is restricted to those that apply to all object types and those that apply to the group of selected
  object types.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    objectTypeIds             This is a JSON array of selected object_type_id values.
    
  Embedded values in the returned JSON string value:
  
    The JSON string returned by this function contains an array of assignable keywords with the following properties:

      keywordGroup            The keyword_groups.keyword_group value.
      
      description             The keyword_groups.description value.
      
      keyword                 The assignable keyword.  Value derives from the keywords.keyword table.
      
      userInputHandling       The userInputHandling value governs how the client interface is to handle user input for this keyword
                              value.  Possible values are:
                              
                                object_vault_restapi.UIH_NO_SUGGESTIONS
                                object_vault_restapi.UIH_STATIC_LIST                                
                                object_vault_restapi.UIH_DYNAMIC_LIST                                
      
      keywordGroupId          The keyword_groups.keyword_group_id value.
      
      keywordId               The keyword.keyword_id value.
      
      keywordInGroupId        The keywords_in_a_group.keyword_in_group_id value.
      
      keywordValueType        The type of value the keyword accepts.  Possible values are:

                                object_vault_restapi.KVT_CHARACTER
                                object_vault_restapi.KVT_DATE
                                object_vault_restapi.KVT_FLOAT
                                object_vault_restapi.KVT_INTEGER
                                object_vault_restapi.KVT_JSON                                
                                object_vault_restapi.KVT_TEXT_AREA
                                object_vault_restapi.KVT_TIME
                                object_vault_restapi.KVT_TIMESTAMP
                                object_vault_restapi.KVT_TRUE_FALSE
                                object_vault_restapi.KVT_YES_NO
      
*/

  function get_assignable_keywords
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_assigned_keywords
  
  The get_assigned_keywords function returns the keywords that are assigned to an object or a group of objects.  Note that when
  more than one object is specified, the set of returned keywords is the intersection of all keywords assigned to the group of 
  objects (i.e. the keywords in common).
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    objectTypeIds             This is a JSON array of selected object_type_id values.
    
  Embedded values in the returned JSON string value:
  
    The JSON string returned by this function contains an array of assigned keywords with the following properties:

      keyword                 The keywords.keyword value of the assigned keyword.
      
      keywordInGroupId        The keywords_in_a_group.keyword_in_group_id value of the assigned keyword.
      
      keywordValueType        The type of value the keyword accepts.  Possible values are:

                                object_vault_restapi.KVT_CHARACTER
                                object_vault_restapi.KVT_DATE
                                object_vault_restapi.KVT_TIMESTAMP
                                object_vault_restapi.KVT_FLOAT
                                object_vault_restapi.KVT_INTEGER
                                object_vault_restapi.KVT_JSON                                
                                object_vault_restapi.KVT_TEXT_AREA
                                object_vault_restapi.KVT_TIME
                                object_vault_restapi.KVT_TRUE_FALSE
                                object_vault_restapi.KVT_YES_NO
      
      characterValue          The corresponding character value for assigned keyword where the keywordValueType value is
      
                                object_vault_restapi.KVT_CHARACTER
                                object_vault_restapi.KVT_TRUE_FALSE
                                object_vault_restapi.KVT_YES_NO
                                  
      integerValue            The corresponding integer value for the assigned keyword.
      
      floatingPointValue      The corresponding floating point value for the assigned keyword.
      
      dateValue               The corresponding date value for the assigned keyword as a Unix timestamp.
      
      timestampValue          The corresponding timestamp value for the assigned keyword as a Unix timestamp.
      
      userInputHandling       The userInputHandling value governs how the client interface is to handle user input for this keyword
                              value.  Possible values are:
                                
                                object_vault_restapi.UIH_NO_SUGGESTIONS
                                object_vault_restapi.UIH_STATIC_LIST                                
                                object_vault_restapi.UIH_DYNAMIC_LIST                               
      
      valueId                 The keyword_values.value_id value of the assigned keyword.
      
      keywordGroupId          The keyword_groups.keyword_group_id value of the assigned keyword.
      
      keywordGroup            The keyword_groups.keyword_group value of the assigned keyword.
      
*/

  function get_assigned_keywords
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_email_config
  
  The get_email_config function returns the outbound SMTP email configuration.

  This function can only be called by a user session that has been created by a system administrator.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

  Embedded values in the returned JSON string value:
  
    smtpEmailSender           The outbound SMTP email sender's address.
    
    gmailClientId             The Gmail Client ID of the Google Gmail user that has authorized access to AsterionDB for outbound
                              SMTP email access.
    
    gmailClientSecret         The Gmail Client Secret of the Google Gmail user that has authorized access to AsterionDB for 
                              outbound SMTP email access.
    
*/

  function get_email_config
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_enabled_object_types
  
  The get_enabled_object_types function allows a client application to determine the types of objects that have been enabled for 
  storage in AsterionDB.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

  Embedded values in the returned JSON string value:

    The JSON string returned by this function contains an array of enabled object types with the following properties:
  
      objectType              The object_types.object_type value of the object type that has been enabled in AsterionDB.
      
      objectTypeId            The object_types.object_id value of the object type that has been enabled in AsterionDB.
      
*/

  function get_enabled_object_types
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_file_extensions

  The get_file_extensions function allows a client application to determine the file extensions associated with an object type.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    objectTypeId              The object_types.object_type_id of the object associated with the returned file extensions.
    
  Embedded values in the returned JSON string value:

    The JSON string returned by this function contains an array of file extensions with the following properties:
  
      fileExtension           The file_extensions.file_extension value.
      
      mimeType                The file_extensions.mime_type value.
      
      htmlElement             The file_extensions.html_element value.
      
      extensionId             The file_extensions.extension_id value.
    
*/

  function get_file_extensions
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_filename_generator
  
  POC code.  Move to a dedicated package.
  
*/

  function get_filename_generator
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_framework_status
  
  The get_framework_status function allows a client application to determine the status of the underlying AsterionDB services - 
  DbObscura, DbPluginServer and DbStreamer.
  
  This function can only be called by a user session that has been created by a system administrator.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

  Embedded values in the returned JSON string value:

    The returned JSON string contains three properties:
    
      gatewayStatus
      
      pluginServerStatus
      
      streamingServerStatus
      
    Each of these properties contains a JSON array of entries describing the status of each component.
    
    The entries for gatewayStatus contain the following properties:
    
      gatewayName             The name of the DbObscura gateway.
      
      gatewayStatus           The DbObscura gateway's status.
      
      version                 The DbOBscura gateway's version number.
      
    The entries for pluginServerStatus contain the following properties:
    
      pluginName              The name of the DbPluginServer.
      
      version                 The DbPluginServer's version number.
      
    The entries for streamingServerStatus contain the following properties:
    
      serverName              The name of the DbStreamer server.
      
      serverStatus            The DbStreamer server's status.
      
      version                 The DbStreamer server's version number.
      
*/

  function get_framework_status
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_gmail_access_token_params

  The get_gmail_access_token_params function allows a middle-tier client to retrieve the parameters required to obtain a GMail 
  access token.  The middle-tier client must implement the required handshake in order to obtain the GMail access token.  See the
  Google documentation on OAuth for further information:
  
    https://developers.google.com/identity/protocols/oauth2/web-server
    
  This function can only be called by a user session that has been created by a system administrator.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

  Embedded values in the returned JSON string value:

    getAccessTokenUrl         The URL to POST the OAuth request to.
    
    getAccessTokenData        The data to include in the OAuth request.
    
*/

  function get_gmail_access_token_params
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_gmail_signin_url
  
  The get_gmail_signin_url function allows a client application to determine the URL the user will be redirected to in order to
  complete the GMail OAuth signin process.  See the following link for further information:
  
    https://developers.google.com/identity/protocols/oauth2/web-server
    
  This function can only be called by a user session that has been created by a system administrator.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

  Embedded values in the returned JSON string value:

    gmailSigninUrl            The URL that the user will be redirected to.
    
*/

  function get_gmail_signin_url
  (
    p_json_parameters                 clob
  )
  return clob;
  
/*

  function get_keyword_groups
  
  The get_keyword_groups function allows a client application to retrieve a user's keyword groups.

  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

  Embedded values in the returned JSON string value:

    The JSON string returned by this function contains an array of keyword groups with the following properties:
    
      keywordGroup            The keyword group's name.
      
      keywordGroupId          The keyword group's ID value.
      
      description             A description of the keyword group.
    
*/

  function get_keyword_groups
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_keyword_value_types
  
  The get_keyword_value_types function allows a client application to determine the types of values a keyword can accept.  This
  function is utilized to allow the user to pick from a list of value types when creating a new keyword.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

  Embedded values in the returned JSON string value:

    The JSON string returned by this function contains an array of keyword value types with the following property:
    
      keywordValueType        The keyword value type.  Possible values are:
      
                                object_vault_restapi.KVT_CHARACTER
                                object_vault_restapi.KVT_DATE
                                object_vault_restapi.KVT_TIMESTAMP
                                object_vault_restapi.KVT_FLOAT
                                object_vault_restapi.KVT_INTEGER
                                object_vault_restapi.KVT_JSON
                                object_vault_restapi.KVT_TEXT_AREA
                                object_vault_restapi.KVT_TIME
                                object_vault_restapi.KVT_TRUE_FALSE
                                object_vault_restapi.KVT_YES_NO

*/

  function get_keyword_value_types
  (
    p_json_parameters                 clob
  ) 
  return clob;

/*

  function get_keyword_values

  The get_keyword_values function allows a client application to determine, based upon previous keyword value selections, the set
  of keywords values available for a given keyword.  Consider the following situation of three objects with keywords and values.
  
    1.  color/green ; finish/glossy
    2.  color/blue ; finish/satin
    3.  color/green ; finish/matte
    
  If the client application has selected for objects with a keyword combination of color/green the resulting keyword value set for
  the keyword finish will include matte and glossy and exclude satin.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    viewType                  The type of object view to query.  Possible values are:
    
                                object_vault_restapi.OVT_CATALOGED
                                object_vault_restapi.OVT_DELETED
                                object_vault_restapi.OVT_SHARED
    
    keywordInGroupId          The keyword_groups.keyword_in_group_id value of the keyword that the resulting set of keyword values
                              will be for.
    
    selectedKeywordValues     The selectedKeywordValues parameter is a JSON array of keyword_values.value_id values that specify
                              the keyword values that have been previously selected.
                              
  Embedded values in the returned JSON string value:

    The JSON string returned by this function contains an array of keyword values with the following properties:
    
      keywordValue            The keyword value.
      
      valueId                 The keyword value's ID.

*/

  function get_keyword_values
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_keywords_in_a_group
  
  The get_keywords_in_a_group function allows a client application to retrieve the keywords that have been assigned to a keyword
  group.

  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    keywordGroupId            The keyword_groups.keyword_group_id value which specifies the keyword group of interest.
    
    
  Embedded values in the returned JSON string value:

    The JSON string returned by this function contains an array of keywords with the following properties:
    
      keyword                 The keywords.keyword value.
      
      keywordInGroupId        The keywords_in_a_group.keyword_in_group_id value.
      
      keywordGroupId          The keyword_groups.keyword_group_id value.
      
      keywordId               The keywords.keyword_id value.
      
      userInputHandling       The keywords.user_input_handling value.
      
      keywordValueType        The type of value the keyword accepts.  Possible values are:

                                object_vault_restapi.KVT_CHARACTER
                                object_vault_restapi.KVT_DATE
                                object_vault_restapi.KVT_TIMESTAMP
                                object_vault_restapi.KVT_FLOAT
                                object_vault_restapi.KVT_INTEGER
                                object_vault_restapi.KVT_JSON
                                object_vault_restapi.KVT_TEXT_AREA
                                object_vault_restapi.KVT_TIME
                                object_vault_restapi.KVT_TRUE_FALSE
                                object_vault_restapi.KVT_YES_NO
      
*/

  function get_keywords_in_a_group
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_login_history

  The get_login_history function allows a user to retrieve their login history.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

  Embedded values in the returned JSON string value:

    The JSON string returned by this function contains an array of login history entries with the following properties:

      sessionCreated          A Unix timestamp value indicating the date and time that the session was created.
      
      clientAddress           The client's IP address.
      
      sessionStatus           The present status of the session.  Possible values are:
      
        object_vault_restapi.SS_ACTIVE
        object_vault_restapi.SS_SESSION_LIMIT
        object_vault_restapi.SS_CHANGE_PASSWORD
        object_vault_restapi.SS_TERMINATED
      
      sessionDisposition      The session's disposition upon termination.  Possible values are:
      
                                object_vault_restapi.SD_TIMEOUT
                                object_vault_restapi.SD_LOGOUT
                                object_vault_restapi.SD_CANCELED
                                object_vault_restapi.SD_ERROR
      
      userAgent               The user agent (browser) associated with the session.
      
      sessionEnded            A Unix timestamp value indicating the date and time that the session was terminated.
      
      lastActivity            A Unix timestamp value indicating the date and time of the last session activity.  This value is used
                              to determine if a session has timed-out.
      
      terminatedBy            The terminatedBy value conveys the user that terminated a session - if termination was by user 
                              intervention.
  
*/

  function get_login_history
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_login_history_for_user

  The get_login_history_for_user function allows a system administrator to retrieve a user's login history.
  
  This function can only be called by a user session that has been created by a system administrator.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    username                  The user whose login history will be retrieved.

  Embedded values in the returned JSON string value:

    The JSON string returned by this function contains an array of login history entries with the following properties:

      sessionCreated          A Unix timestamp value indicating the date and time that the session was created.
      
      clientAddress           The client's IP address.
      
      sessionStatus           The present status of the session.  Possible values are:
      
        object_vault_restapi.SS_ACTIVE
        object_vault_restapi.SS_SESSION_LIMIT
        object_vault_restapi.SS_CHANGE_PASSWORD
        object_vault_restapi.SS_TERMINATED
      
      sessionDisposition      The session's disposition upon termination.  Possible values are:
      
                                object_vault_restapi.SD_TIMEOUT
                                object_vault_restapi.SD_LOGOUT
                                object_vault_restapi.SD_CANCELED
                                object_vault_restapi.SD_ERROR
      
      userAgent               The user agent (browser) associated with the session.
      
      sessionEnded            A Unix timestamp value indicating the date and time that the session was terminated.
      
      lastActivity            A Unix timestamp value indicating the date and time of the last session activity.  This value is used
                              to determine if a session has timed-out.
      
      terminatedBy            The terminatedBy value conveys the user that terminated a session - if termination was by user 
                              intervention.
  
*/

  function get_login_history_for_user
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_login_page_info
  
  The get_login_page_info allows a web client to retrieve the information required to construct a valid login page.
  
  The get_login_page_info does not require any parameters.
  
  Embedded values in the returned JSON string value:

    signupPageEnabled         The object_vault_profile.signup_page_enabled value.  Possible values are:
    
                                object_vault_profile.OPTION_ENABLED
                                object_vault_profile.OPTION_DISAABLED
                              
*/

  function get_login_page_info
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_metadata_classifications
  
  The get_metadata_classfications function allows a client application to determine the types of metadata classifications
  supported by the system.  This function allows the client application to determine the values that can be used when
  setting the value of metadataClassification in the create_object_type and update_object_type procedures.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

  Embedded values in the returned JSON string value:

    The JSON string returned by this function contains an array of metadata classifications with the following property:
    
      metadataClassification  The metadata classification.

*/

  function get_metadata_classifications
  (
    p_json_parameters                 clob
  ) 
  return clob;

/*

  function get_object_data
  
  The get_object_data function allows a client application to directly access an object's data without having to utlize a weblink
  or generate a dynamic filename.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    objectId                  The object ID of the object to retrieve.

  Embedded values in the returned JSON string value:

    dataType                  The object's data type.  Possible values are:
    
                                object_vault_restapi.CLOB_OBJECT_TYPE
                                object_vault_restapi.BLOB_OBJECT_TYPE
                                
    mimeType                  The object's mime-type.
    
    data                      The object's data.
    
  Possible exceptions returned:

    error_logging_pkg.OBJECT_NOT_FOUND    
    
*/

  function get_object_data
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_object_streaming_history

  The get_object_streaming_history function allows a client application to retrieve an object's streaming history.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    objectId                  The object's ID.
    
  The JSON string returned by this function contains an array of log entries with the following properties:
  
    startTime                 The date and time the streaming operation started, in Unix timestamp format.
    
    endTime                   The date and time the streaming operation ended, in Unix timestamp format.
    
    serverName                The name of the DbStreamer server that performed the streaming operation.
    
    weblinkToken              The AsterionDB Secure Weblink Token, if one was used, to access the content.
    
    userAgent                 The browser's user-agent value.
    
    bytesTransmitted          The number of bytes transmitted.
    
    forwardedFor              The IP address of the browser that initiated the request.
    
    referer                   The webpage, if one was used, to access the content.
    
*/

  function get_object_streaming_history
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_object_type_restrictions

  The get_object_type_restrictions function allows a client application to determine the types of objects that a keyword group is 
  restricted to.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    keywordGroupId            The keyword_groups.keyword_group_id of the keyword group associated with the returned set of object
                              type restrictions.
                              
  Embedded values in the returned JSON string value:

    The JSON string returned by this function contains an array of object types with the following properties:
  
      objectType              The object_types.object_type value of the object type that is restricted to the specified keyword 
                              group.
      
      objectTypeId            The object_types.object_type_id value of the object type that is restricted to the specified keyword
                              group.
                              
*/

  function get_object_type_restrictions
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_object_types
  
  The get_object_types function allows a client application to determine the types of objects supported by AsterionDB.
  
  This function can only be called by a user session that has been created by a system administrator.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

  Embedded values in the returned JSON string value:

    The JSON string returned by this function contains an array of supported object types with the following properties:
    
      objectType              The object_types.object_type value.
      
      objectTypeId            The object_types.object_type_id value.
      
      tableName               The object_types.table_name value.  This is the table that is used to store the objects.
      
      columnName              The object_types.column_name value.  This is the name of the column that is used to store the object
                              data.
                              
      dataType                The object_types.data_type value.
      
      description             The object_types.description value.
      
      gatewayIngestionEnabled The object_types.gateway_ingestion_enabled value.  This value indicates whether the object type can
                              be ingested through the DbObscura Gateway.
                              
      adminAccessOnly         The object_types.admin_access_only value.  This value indicates whether the object type is available
                              for use by system administrator's only or by all user's of AsterionDB.
      
      enabled                 The object_types.enabled value.
      
      htmlAcceptValue         The htmlAcceptValue parameter allows you to specify the <input> accept attribute value for a specific 
                              object. This value is used to limit the types of files that can be uploaded.  Search the web for 
                              HTML attribute:accept for further information.
                              
      metadataClassification  The metadata classification associated with the data type.  This value is used for metadata analysis
                              functions.
  
*/

  function get_object_types
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_object_vault_profile

  The get_object_vault_profile allows a client application to determine the AsterionDB SecureObject Vault profile.  Client 
  applications use the profile information to determine the features to enable in the user interface.
  
  There are no required JSON parameters for this function call.
  
  The JSON string returned by this function will contain the following properties:
  
    allowNewUsers             If enabled, new users can be created
    
    sharingEnabled            If enabled, sharing of objects among users is allowed.
    
    usersGuideLink            A link to the AsterionDB Converged Computing Platform User's Guide.
    
    installationGuideLink     A link to the AsterionDB Converged Computing Platform Installation and Configuraiton Guide.
    
    signupPageEnabled         If enabled, new user's can sign up on the login page.
    
    smtpEnabled               If enabled, the AsterionDB platform can utilize outbound SMTP Email capabilities.
    
    automationOptionEnabled   If enabled, process automation is supported.
    
    metadataOptionEnabled     If enabled, metadata analysis (audio, video, image) is supported.
    
    dicomOptionEnabled        if enabled, advanced processing for DICOM images is supported.

*/

  function get_object_vault_profile
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_query_keywords

  The get_query_keywords function allows a client application to retrieve the currently valid set of keywords that can be used to
  search for objects.  This function takes into consideration the previously selected keyword/value pairs when determining the
  valid set of keywords to be returned.  Consider the following situation of three objects with keywords and values.
  
    1.  color/green ; finish/glossy ; texture/smooth
    2.  color/blue ; finish/satin ; texture/rough ; final-approval/yes
    3.  color/green ; finish/matte ; texture/smooth
    
  If the client application has selected for objects with a keyword combination of color/blue the resulting set of keywords
  will be finish, texture and final-approval.

  Returned keywords are also restricted such that only those keyword groups that are not associated with any object types and 
  keyword groups that are specifically associated with the selected object types are returned.
  
  When retrieving shared objects, the returned set can be restricted by the setting of sharedOption.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    viewType                  The type of object view to query.  Possible values are:
    
                                object_vault_restapi.OVT_CATALOGED
                                object_vault_restapi.OVT_DELETED
                                object_vault_restapi.OVT_SHARED
    
    selectedKeywords          An array of selected keyword_in_group_id values.
    
    selectedKeywordValues     An array of value_id values.
    
    objectTypeIds             An array of selected object_type_id values.
    
    sharedOption              The sharedOption limits the returned set of shared objects.  Possible values are:
    
                                object_vault_restapi.ALL_SHARED_OBJECTS
                                object_vault_restapi.SHARED_WITH_PUBLIC
                                object_vault_restapi.SHARED_WITH_USER
                                
                              The sharedOption value is only evaluated when querying the shared object view.  Setting the value of
                              sharedOption to null is equivalent to object_vault_restapi.ALL_SHARED_OBJECTS.

  The JSON string returned by this function contains an array of keyword entries with the following properties:
  
    lastName                  The lastName value is only provided when querying for shared objects.  It is the last name of the 
                              owner of the object that is associated with the returned keyword.
    
    firstName                 The firstName value is only provided when querying for shared objects. It is the first name of the 
                              owner of the object that is associated with the returned keyword.
    
    keywordGroup              The keyword group that the returned keyword is a part of.
    
    keyword                   The returned keyword.
    
    keywordGroupId            The keyword_group.keyword_group_id value.
    
    keywordId                 The keyword.keyword_id value.
    
    keywordInGroupId          The keywords_in_a_group.keyword_in_group_id value.
    
    keywordValueType          The keywords.keyword_value_type value.
    
*/

  function get_query_keywords
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_resource_utilization_data
  
  The get_resource_utlization_data function allows a client application to retrieve the user's resource utilization data.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

  The JSON string returned by this function contains an object with three items:
  
    totalUtilization          The totalUtilization item is a JSON object with the following properties:
    
      itemCount               The total number of items owned by the user.
      
      totalUtilization        The total net storage amount (not a gross storage value).
    
    existingObjects           The existingObjects item is a JSON array with the following properties:
    
      objectType              The object type.
      
      itemCount               The total number of items of this object type.
      
      byteTotal               The total net byte total of all items (not a gross storage value).
    
    deletedObjects            The deletedObjects item is a JSON array with the following properties:
    
      objectType              The object type.
      
      itemCount               The total number of items of this object type.
      
      byteTotal               The total net byte total of all items (not a gross storage value).
    
*/

  function get_resource_utilization_data
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_secure_weblink_info

  The get_secure_weblink_info allows a client application to retrieve the information needed in order to process a secure
  weblink generated by a call to object_vault_restapi.generate_secure_weblink.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    weblinkToken              The secure weblink token.

  The JSON string returned by this function contains the following properties:

    objectName                The name of the object.
    
    fileExtension             The object's file extension.
    
    objectId                  The object id.
    
    accessCount               The number of times the object has been accessed by the secure weblink.
    
    accessLimit               The limit on the number of times the object can be accessed by the secure weblink. A value of
                              object_vault_restapi.UNLIMITED indicates that there is no limit.
    
    validUntil                If not null, the value of validUntil indicates that date and time that the secure weblink will expire.
    
    firstName                 The object owner's first name.
    
    lastName                  The object owner's last name.
    
    passwordRequired          If a password is required before access to the secure content can be granted, the value of 
                              passwordRequired will be set to object_vault_restapi.OPTION_ENABLED.
    
    contentDisposition        The contentDisposition value indicates how the browser is to handle the content (e.g. stream vs.
                              download).  The value of content disposition will be object_vault_restapi.STREAM_CONTENT or
                              object_vault_restapi.DOWNLOAD_CONTENT.
    
    htmlElement               The value of htmlElement indicates the HTML element to be used to display/interpret the object.
    
    mimeType                  The object's mime type.
    
    secureStream              If access to the secure content does not require a password then the value of secureStream contains
                              a link to the content.
    
*/

  function get_secure_weblink_info
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_session_info
  
  The get_session_info allows a client application to retrieve it's session information.  
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

  The JSON string returned by this function for Web and API clients contains the following properties:  
  
    sessionId               The session ID.
    
    sessionStatus           The present status of the session.  Possible values are:
    
                              object_vault_restapi.SS_ACTIVE
                              object_vault_restapi.SS_SESSION_LIMIT
                              object_vault_restapi.SS_CHANGE_PASSWORD
                              object_vault_restapi.SS_TERMINATED
                        
    apiUserId               The RestAPI bound user-id.

    username                The username associated with the session.

    firstName               The user's first name.

    middleName              The user's middle name.

    lastName                The user's last name.

    emailAddress            The user's email address.

    accountType             The account type.  Valid values are:
    
                              object_vault_restapi.AT_USER
                              object_vault_restapi.AT_EVALUATOR
                              object_vault_restapi.AT_OWNER

    autoQueryEnabled        The value of the autoQueryEnabled, which maps to object_vault_users.auto_query_enabled.

    defaultTimezone         The user's default timezone (e.g. America/Los_Angeles).
    
    concurrentFileUploads   The number of files that can be uploaded concurrently via the web interface.  Default value is 1.
      
    grantedPermissions      The grantedPermissions value is a JSON array containing the following elements:
          
                              permission        The permission granted to the user.
                              permissionClass   The class/group of permissions that the permission is a part of.

    termsAccepted           A flag indicating whether the user has affirmatively checked the 'terms accepted' checkbox.
    
  The JSON string returned by this function for a file transfer client contains the following properties:
  
    sessionId               The session ID.
    
    sessionStatus           The present status of the session.  Possible values are:
    
                              object_vault_restapi.SS_ACTIVE
                              object_vault_restapi.SS_SESSION_LIMIT
                              object_vault_restapi.SS_CHANGE_PASSWORD
                              object_vault_restapi.SS_TERMINATED
                        
    firstName               The user's first name.

    middleName              The user's middle name.

    lastName                The user's last name.

*/

  function get_session_info
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_shared_keyword_values

  The get_shared_keyword_values function allows a client application to determine, based upon previous keyword value selections, 
  the set of shared objects with keywords values available for a given keyword.  Consider the following situation of three objects 
  with owners, keywords and values.
  
    1. user1 ;  color/green ; finish/glossy
    2. user1 ;  color/blue ; finish/satin
    3. user2 ;  color/green ; finish/matte
    
  If the client application has selected for objects from user1 with a keyword combination of color/green the resulting keyword 
  value set for the keyword finish will contain glossy only.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    keywordInGroupId          The keyword_groups.keyword_in_group_id value of the keyword that the resulting set of keyword values
                              will be for.

    selectedKeywords          The selectedKeywords parameter is a JSON array of selected keyword_object_map.keyword_in_group_id
                              values.  Each selectedKeyword array entry must have a corresponding selectedKeywordValue entry.
                              
    selectedKeywordValues     The selectedKeywordValues parameter is a JSON array of keyword_values.value_id values that specify
                              the keyword values that have been previously selected.
                              
  Embedded values in the returned JSON string value:

    The JSON string returned by this function contains an array of keyword values with the following properties:
    
      keywordValue            The keyword value.
      
      valueId                 The keyword value's ID.

*/

  function get_shared_keyword_values
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_static_suggestion_list

  The get_static_suggestion_list allows a client application to retrieve the static set of suggested keyword values for a specified 
  keyword in a group.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    keywordInGroupId          The static set of suggested keyword values will be returned for the keyword in a group specified by 
                              keywordInGroupId.
                              
  The JSON string returned by this function contains an array of suggested keyword value entries with the following properties:
  
    keywordValue              The suggested keyword value.
    
    keywordValueType          The keyword value type.  Possible values are:

                                object_vault_restapi.KVT_CHARACTER
                                object_vault_restapi.KVT_DATE
                                object_vault_restapi.KVT_FLOAT
                                object_vault_restapi.KVT_INTEGER
                                object_vault_restapi.KVT_JSON
                                object_vault_restapi.KVT_TEXT_AREA
                                object_vault_restapi.KVT_TIME
                                object_vault_restapi.KVT_TIMESTAMP
      
    
    valueId                   The suggested keyword value's value_id.
                                  
*/

  function get_static_suggestion_list
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_suggestions

  The get_suggestions function allows a client application to retrieve the static or dynamic list of suggested keyword values for
  a specified keyword in a group.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    keywordInGroupId          The set of suggested keyword values will be returned for the keyword in a group specified by 
                              keywordInGroupId. 
                              
  The JSON string returned by this function contains an array of suggested keyword value entries with the following properties:
  
    keywordValue              The suggested keyword value.
  
*/  

  function get_suggestions
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_support_info
  
  The get_support_info function allows a client application to retrieve relevant support and version information from AsterionDB.
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

  The returned JSON string contains the following properties:

    profileName               The name of the AsterionDB installation.
      
    schemaVersion             The AsterionDB schema version number.
      
    databaseVersion           The Oracle database version number.
      
    databaseClientVersion     The Oracle client version number.
      
    dbTwigVersion             The DbTwig version number.

*/

  function get_support_info
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_system_permissions
  
  The get_system_permissions function allows a system administrator to determine the system permissions supported by AsterionDB.
  
  This function can only be called by a user session that has been created by a system administrator.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

  The JSON string returned by this function contains an array of system permission objects with the following properties:
  
    permission                The system permission supported by AsterionDB.  The set of permissions returned by this function
                              varies based on the options supported by AsterionDB.
                                
    permissionId              The system permission_id value.
    
    grantedByDefault          A flag indicating if the system permission is granted by default.  Possible values are
                              object_vault_restapi.OPTION_ENABLED and object_vault_restapi.OPTION_DISABLED.
    
*/

  function get_system_permissions
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_system_settings
  
  The get_system_settings function allows a system administrator to retrieve the AsterionDB system options and settings.
  
  This function can only be called by a user session that has been created by a system administrator.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

  Embedded values in the returned JSON string value:
  
    profileName               The AsterionDB system profile name.
    
    websiteRootAddress        The AsterionDB website root address (i.e. asteriondb.yoursite.com)
    
    streamProxyPrefix         The prefix value to be applied to streaming weblinks built for processing by a proxy server.  See the
                              AsterionDB Configuration and Installation Guide for more information.
    
    downloadProxyPrefix       The prefix value to be applied to download weblinks built for processing by a proxy server.  See the
                              AsterionDB Configuration and Installation Guide for more information.
    
    usersGuideLink            The usersGuideLink value provides the URL that a client application can use to link to the AsterionDB
                              User's Guide.  This value can be a location resolved by your local HTTP server through a redirect, a
                              direct link to the content or point to a Cloud based resource.  The default value is:
                              
                                https://cloud-eval.asteriondb.com/objectVault/usersGuide
    
    installationGuideLink     The installationGuideLink value provides the URL that a client application can use to link to the 
                              AsterionDB Installation and Configuration Guide.  This value can be a location resolved by your local 
                              HTTP server through a redirect, a direct link to the content or point to a Cloud based resource.  
                              The default value is:
                              
                                https://cloud-eval.asteriondb.com/objectVault/installationGuide
    
    sslEnabled                If enabled SSL enabled weblinks will be generated (e.g. https://...).  Use the constants
                              object_vault_restapi.OPTION_ENABLED and object_vault_restapi.OPTION_DISABLED to set this value.
    
    allowNewUsers             If enabled new users can be created.  User creation can be accomlished by enrollment, self-enrollment
                              or invitation.  Use the constants object_vault_restapi.OPTION_ENABLED and 
                              object_vault_restapi.OPTION_DISABLED to set this value.
    
    signupPageEnabled         If enabled new users can self register by accessing an appropriate link on the login page.  Use the 
                              constants object_vault_restapi.OPTION_ENABLED and object_vault_restapi.OPTION_DISABLED to set this 
                              value.
    
    defaultLobTablespace      The tablespace that will be used by default to store LOB (unstructured) data.
    
    sharingEnabled            Use the constant object_vault_restapi.OPTION_ENABLED to enable sharing of objects.
    
    secureWeblinkWebpage      The value of secureWeblinkWebpage is used when constructing links for secure content.  The URL will 
                              be in the following format:
                              
                                http(s)://you.server.com/secureWeblinkWebpage
    
    extraErrorInfoEnabled     If enabled extra error information will be emitted by the data layer.  This option should not be
                              enabled in production environments.  Use the constant object_vault_restapi.OPTION_ENABLED to enable
                              this option.
    
    metadataAnalysisEnabled   Use the constant object_vault_restapi.OPTION_ENABLED to enable metadata analysis.
    
    metadataAnalysisInterval  The metadataAnalysisInterval is the amount of time the automated metadata analysis job will sleep
                              in between invocations.
              
*/

  function get_system_settings
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_tablespace_list
  
  The get_tablespace_list function allows a client application to determine the tablespaces available to AsterionDB.
  
  This function can only be called by a user session that has been created by a system administrator.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

  The JSON string returned by this function contains an array of tablespace entries with the following properties:
  
    tablespaceName            The tablespace name.
    
*/

  function get_tablespace_list
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_user_list
  
  The get_user_list function allows a client application to retrieve a list of user's of the AsterionDB system.
  
  This function can only be called by a user session that has been created by a system administrator.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

  The JSON string returned by this function contains an array of user entries with the following properties:
  
    username                  The username.
    
    firstName                 The user's first name.
    
    middleName                The user's middle name.
    
    lastName                  The user's last name.
    
    emailAddress              The user's email address.
    
    accountType               The account type.  Valid values are:
      
                                object_vault_restapi.AT_USER
                                object_vault_restapi.AT_EVALUATOR
                                object_vault_restapi.AT_OWNER

    accountStatus             The user account status.  Possible values are:
    
                                object_vault_restapi.AS_ACTIVE
                                object_vault_restapi.AS_LOCKED
                                object_vault_restapi.AS_UNCONFIRMED
                                object_vault_restapi.AS_CHANGE_PASSWORD
    
    creationDate              The date the user was created in the system.  Expressed as a Unix timestamp value.
    
    activeSessionCount        The number of active sessions for the user in the system.
    
    lastActivity              The date and time of last activity.  Expressed as a Unix timestamp value.
    
    usageByUser               The userByUser value is a JSON object with the following properties:
    
      itemCount               The number of items owned by ther user.
      
      totalUsage              The total amount of bytes used by the user.
    
*/

  function get_user_list
  (
    p_json_parameters                 clob
  )
  return clob;
/*

  function get_user_permissions
  
  The get_user_permissions function allows a client application to retrieve the permissions supported by AsterionDB and determine
  which permissions have been granted to a user.
  
  This function can only be called by a user session that has been created by a system administrator.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
    
    username                  The user whose granted permissions are to be retrieved.

  The JSON string returned by this function contains an array of system permissions with the following properties:
  
    permission                The system permission supported by AsterionDB.  The set of permissions returned by this function
                              varies based on the options supported by AsterionDB.
                                
    permissionClass           The class of permissions that this specific permission is a part of.
    
    granted                   A flag indicating whether this system permission has been granted to the user.  Possible values are:
    
                                object_vault_restapi.OPTION_ENABLED
                                object_vault_restapi.OPTION_DISABLED
                                
*/

  function get_user_permissions
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_user_settings

  The get_user_settings allows a client application to retrieve the user's settings.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

  The JSON string returned by this function contains the following properties:

    username                  The user's username.
    
    firstName                 The user's first name.
    
    middleName                The user's middle name.
    
    lastName                  The user's last name.
    
    emailAddress              The user's email address.
    
    accountType               The account type.  Valid values are:
      
                                object_vault_restapi.AT_USER
                                object_vault_restapi.AT_EVALUATOR
                                object_vault_restapi.AT_OWNER

    sessionInactivityLimit    The inactivity limit, expressed in seconds.  A user session that exceedes the inactivity limit will
                              be terminated.
                              
    sessionLimit              The limit on the number of concurrently active sessions the user may create.
    
    autoQueryEnabled          The value of autoQueryEnabled, which defaults to object_vault_restapi.OPTION_ENABLED, determines
                              whether the web client application should query for objects automatically.  Setting this value
                              to object_vault_restapi.OPTION_DISABLED is advised when working with large data sets.
                              
    rowLimit                  The limit on the number of rows returned by when querying for objects.  The default limit is 9,999
                              rows.
                              
    defaultTimezone           The user's default timezone (e.g. America/Los_Angeles).
    
    accountStatus             The user account status.  Possible values are:
    
                                object_vault_restapi.AS_ACTIVE
                                object_vault_restapi.AS_LOCKED
                                object_vault_restapi.AS_UNCONFIRMED
                                object_vault_restapi.AS_CHANGE_PASSWORD
    
    apiClientToken            The user's API Client Token.
  
*/

  function get_user_settings
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_user_streaming_history
  
  The get_user_streaming_history function allows a client application to retrieve the user's streaming history.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

  The JSON string returned by this function contains an array of streaming log entries the following properties:

    startTime                 The date and time the streaming operation started, in Unix timestamp format.
    
    endTime                   The date and time the streaming operation ended, in Unix timestamp format.
    
    serverName                The name of the DbStreamer server that performed the streaming operation.
    
    objectName                The object name.
    
    weblinkToken              The AsterionDB Secure Weblink Token, if one was used, to access the content.
    
    userAgent                 The browser's user-agent value.
    
    bytesTransmitted          The number of bytes transmitted.
    
    forwardedFor              The IP address of the browser that initiated the request.
    
    referer                   The webpage, if one was used, to access the content.
    
*/

  function get_user_streaming_history
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_users_object_is_shared_with
  
  The get_users_object_is_shared_with function allows a client application to determine the users that an object is shared with.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    objectId                  The object ID value.
    
  The JSON string returned by this function contains an array of user entries the following properties:

    name                      The user's name.  A concatenation of the user's first and last name.
    
    apiUserId                 The API exposed user ID.
    
*/

  function get_users_object_is_shared_with
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_users_with_view_shared_priv
  
  The get_users_with_view_shared_priv function allows a client application to determine the user's that are allowed to view shared 
  objects.  The returned set is used to build a pick list to allow the user to share an object with other users.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

  The JSON string returned by this function contains an array of user entries the following properties:

    name                      The user's name.  A concatenation of the user's first and last name.
    
    apiUserId                 The API exposed user ID.
    
*/

  function get_users_with_view_shared_priv
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_vault_objects
  
  The get_vault_objects allows a client application to retrieve objects from AsterionDB.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    viewType                  The type of object view to query.  Possible values are:
    
                                object_vault_restapi.OVT_CATALOGED
                                object_vault_restapi.OVT_UNCATALOGED
                                object_vault_restapi.OVT_DELETED
                                object_vault_restapi.OVT_SHARED
    
    selectedKeywords          An array of selected keyword_in_group_id values.
    
    selectedKeywordValues     An array of selected value_id values.  Note that in the case of one keyword being selected the 
                              corresponding selectedKeywordValue is not required.  Similarly, when more than one keywords has been
                              selected, the corresponding selectedKeywordValue is not required for the last keyword.  This allows
                              the get_vault_objects function to match for objects that are associated with the keyword without
                              regard to the corresponding keyword value.
    
    objectTypeIds             An array of selected object_type_id values.
    
    sharedOption              The sharedOption limits the returned set of shared objects.  Possible values are:
    
                                object_vault_restapi.ALL_SHARED_OBJECTS
                                object_vault_restapi.SHARED_WITH_PUBLIC
                                object_vault_restapi.SHARED_WITH_USER
                                
                              The sharedOption value is only evaluated when querying the shared object view.  Setting the value of
                              sharedOption to null is equivalent to object_vault_restapi.ALL_SHARED_OBJECTS.

    The JSON string returned by this function contains an array of objects with the following properties:
    
      sourcePath              The object's source path.
      
      objectType              The object type.
      
      objectId                The object id.
      
      fileExtension           The object's file extension.
      
      creationMethod          The method used to create the object.
      
      gateway                 The DbObscura Gateway server associated with the object, if any.
      
      shareStatus             The sharing status for the object.
      
      programUsedToCreate     The program used to create the object, if known.
      
      mimeType                The object's mime type.
      
      metadataAvailable       A flag indicating whether metadata is available for the object.  The constant value
                              object_vault_restapi.OPTION_ENABLED indicates that metadata is available.
      
      htmlElement             The HTML element used to display/interact with the object.
      
      objectTypeId            The object_type_id value.
      
      objectName              The object's name.
      
      contentLength           The actual content length.
      
      extensionId             The object's file extension id.
      
      versionedObject         A flag indicating whether the object is versioned.  The constant value
                              object_vault_restapi.OPTION_ENABLED indicates that the object is versioned.
      
      keywordList             A concatenated string of keyword/value pairs associated with the object, if any.
      
      immutableObject         A flag indicating whether the object is immutable.  An immutable object can not be changed in any
                              way.  The constant value object_vault_restapi.OPTION_ENABLED indicates that the object is immutable.
      
      ownerName               For shared objects, the owner name is a concatenation of object owner's "last_name, first_name".
      
      creationDate            The date the object was created.  Expressed in Unix timestamp format.
      
      modificationDate        The date the object was last modified.  Expressed in Unix timestamp format.
      
      lastAccessDate          The date the object was accessed last.  Expressed in Unix timestamp format.
      
      lastMetadataChangeDate  The date the object's was last modified.  Expressed in Unix timestamp format.
      
      ingestedFileCDate       If available from the source file system, the object's creation date.  Expressed in Unix timestamp
                              format.
      
      ingestedFileMDate       If available from the source file system, the object's modification date.  Expressed in Unix timestamp
                              format.
      
      ingestedFileADate       If available from the source file system, the date the object was last accessed.  Expressed in Unix 
                              timestamp format.
  
*/

  function get_vault_objects
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  function get_version_data

  The get_version_data function allows a client application to retrieve an object's underlying version information.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    objectId                  The object ID value.
    
  The JSON string returned by this function contains an array of user entries the following properties:

    versionNumber             The version number.
    
    itemId                    The item id - object_versions.item_id.
    
    versionDate               The date the version was created.  Expressed in Unix timestamp format.
    
    sourcePath                The source path value for the versioned item.
  
*/

  function get_version_data
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  procedure grant_user_permission

  The grant_user_permission procedure allows a system administrator to grant permissions to a user.
  
  This function can only be called by a user session that has been created by a system administrator.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
  
    username                  The user to be granted permission.
    
    permission                The permission to be granted.

*/

  procedure grant_user_permission
  (
    p_json_parameters                 clob
  );

/*

  procedure new_user_signup

  The new_user_signup procedure allows a web client to process a self-registration request from a new user.
  
  Embedded parameter values:
  
    username                  The username.
    
    password                  The user's password.
    
    firstName                 The user's first name.

    middleName                The user's middle name/initial.

    lastName                  The user's last name.

    emailAddress              The user's primary email address.

    defaultTimezone           The user's default timezone (e.g. America/Los_Angeles).

    accountType               The account type.  Valid values are:
      
                                object_vault_restapi.AT_USER
                                object_vault_restapi.AT_EVALUATOR

    invitationToken           If the user has been invited to regsiter an account by the system administrator, the email link will
                              contain a token.  This token value is used to validate the user's attempt to self-register.

    termsAccepted             When self-registering, the user must actively select the checkbox indicating they have accepted the
                              terms of use.  When calling new_user_signup, a termsAccepted parameter must be supplied with the 
                              value set to object_vault_restapi.OPTION_ENABLED.
                              
  Possible exceptions returned:
  
    error_logging_pkg.PASSWORD_REQUIRED
    error_logging_pkg.NEW_USERS_NOT_ALLOWED
    error_logging_pkg.OWNER_ALREADY_EXISTS
    error_logging_pkg.USERNAME_TAKEN
    error_logging_pkg.EMAIL_ADDRESS_EXISTS
    error_logging_pkg.INVALID_INVITATION_TOKEN
    error_logging_pkg.SELF_ENROLLMENT_DISABLED
    
*/

  procedure new_user_signup
  (
    p_json_parameters                 clob
  );

/*

  procedure parse_source_path

  The parse_source_path procedure allows a client application to parse source path information into keyword/value pairs.

  Consider the following scenario.  There is an object in AsterionDB with the following source path information:
  
    /storage/dicom/images/series-0001/study-0001/image001.dcm
    
  One can easily see that the file system organization implies that image001.dcm is part of the series 'series-0001' and the study
  value is 'study-0001'.  If you have a keyword group called DICOM Images with keywords 'series' and 'study', we can parse the file
  system representation appropriately.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    viewType                  The type of object view to query.  Possible values are:
    
                                object_vault_restapi.OVT_CATALOGED
                                object_vault_restapi.OVT_UNCATALOGED
    
    searchString              The search string to find within the source path.  The source path is matched against the beginning 
                              of the search string.  In the above example, a search string of '/storage/dicom/images' would find 
                              the corresponding DICOM images.
    
    subdirectoryKeywords      The subdirectoryKeywords value is a JSON array of keyword_in_group_id values that map each 
                              subdirectory component to a keyword.  The array should have as many elements in it as the maximum
                              subdirectory depth of paths returned by object_vault_restapi.search_source_path.  Consider the 
                              following source path:
                              
                                /storage/dicom/images/series-0001/study-0001/image001.dcm
                                
                              The maximum path depth is 5.  The proper array for subdirectoryKeywords would thus contain 5 elements.
                              To map a subdirectory to a keyword, specify the appropriate keyword_in_group_id in the corresponding
                              array element.  All other array elements shall be set to null.
                              
    filenameKeyword           To map the filename, excluding the file extension, to a keyword specify the appropriate 
                              keyword_in_group_id in the filenameKeyword value.
    
*/

  procedure parse_source_path
  (
    p_json_parameters                 clob
  );

/*

  procedure purge_api_errors

  The purge_api_errors allows a system administrator to clear the API error log.
  
  This function can only be called by a user session that has been created by a system administrator.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
  
*/


  procedure purge_api_errors
  (
    p_json_parameters                 clob
  );

/*

  procedure purge_deleted_objects

  The purge_deleted_objects procedure allows a user to purge all of their deleted objects.  Once purged, the deleted objects can not
  be recovered.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

  Possible exceptions returned:
  
    error_logging_pkg.IMMUTABLE_OBJECT  
    
*/

  procedure purge_deleted_objects
  (
    p_json_parameters                 clob
  );

/*

  procedure recover_username

  The recover_username procedure allows a user to submit a request to recover their username.  If the email address supplied by the
  user is registered in AsterionDB, a recovery email with the user's username will be sent.
  
  This procedure requires outbound SMTP Email support to be enabled.
  
  Embedded parameter values:
  
    clientAddress             See introduction
    
    emailAddress              The user's email address.
    
  Possible exceptions returned:

    error_logging_pkg.FEATURE_DISABLED    
    error_logging_pkg.INVALID_PARAMETERS
    
*/

  procedure recover_username
  (
    p_json_parameters                 clob
  );

/*

  procedure remove_all_associated_keywords

  The remove_all_associated_keywords procedure allows a client application to remove all of the keywords associated with a set of
  objects.  Removing all keywords will cause the objects to be 'uncataloged'.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    objectIds                 The objectIds value is a JSON array of object_id values.  This is the set of objects for which all
                              keywords will be removed.

  Possible exceptions returned:
  
    error_logging_pkg.IMMUTABLE_OBJECT  

*/

  procedure remove_all_associated_keywords
  (
    p_json_parameters                 clob
  );

/*

  procedure remove_associated_keywords

  The remove_associated_keywords procedure allows a client application to remove a set of keyword-value pairs from a set of objects.

  Note that the removal of keyword-value pairs may render an object uncataloged.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    objectIds                 The objectIds value is a JSON array of object_id values.  This specified keyword-value pairs will be
                              unassociated from this set of objects.
                              
    keywordValuePairs         The set of keyword-value pairs to be removed from the specified set of objects.

  
  Possible exceptions returned:
  
    error_logging_pkg.IMMUTABLE_OBJECT  

*/

  procedure remove_associated_keywords
  (
    p_json_parameters                 clob
  );

/*

  procedure remove_keyword_from_group

  The remove_keyword_from_group procedure allows a client application to remove a keyword from a group of keywords.
  
  Removing a keyword from a group may result in objects that become uncataloged.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    keywordInGroupId          The keyword in a group to be removed.  

  Possible exceptions returned:
  
    error_logging_pkg.IMMUTABLE_OBJECT  

*/

  procedure remove_keyword_from_group
  (
    p_json_parameters                 clob
  );

/*

  procedure reset_password

  The reset_password procedure allows a client application to process a user's request to reset their password.  This function is 
  called after the user has received a reset token from a call to object_vault_restapi.generate_password_reset_token.
  
  Embedded parameter values:
  
    clientAddress             See introduction

    confirmationToken         The confirmation token generated by object_vault_restapi.generate_password_reset_token.
    
    newPassword               The user's new password.

*/

  procedure reset_password
  (
    p_json_parameters                 clob
  );

/*

  function restapi_error

  The restapi_error function allows the DbTwig middle-tier listener to process Oracle specific RestAPI errors.  The AsterionDB 
  RestAPI will throw an exception upon encountering an Oracle specific error.  The middle-tier listener intercepts these exceptions, 
  calls the service based RestAPI Error handler and sends the response to the client layer.
  
  Please see the discussion of exceptions and error handling in the introduction.
  
  Embedded parameter values:
  
    sessionId                 See introduction.  The session ID is specified if available.  Note, a session ID is not always 
                              available.  
  
    errorCode                 The Oracle specific error code that was caught by the middle-tier.
    
    errorMessage              The Oracle specific error message that was received by the middle-tier.
    
*/

  function restapi_error
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  procedure restore_objects

  The restore_objects function allows a client application to restore objects that have been deleted.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    objectIds                 The set of objects to be restored.
    
*/

  procedure restore_objects
  (
    p_json_parameters                 clob
  );

/*

  procedure revoke_all_permissions

  The revoke_all_permissions procedure allows a system administrator to revoke all permissions from a user.
  
  This function can only be called by a user session that has been created by a system administrator.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
  
    username                  The user that will have all privileges revoked.
    
*/

  procedure revoke_all_permissions
  (
    p_json_parameters                 clob
  );
  
/*

  procedure revoke_user_permission

  The revoke_user_permission procedure allows a system administrator to revoke a permission from a user.
  
  This procedure can only be called by a user session that has been created by a system administrator.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
  
    username                  The user that will have a privilege revoked.
    
    permission                The permission to be revoked.  Possible permission values are found in the
                              system_permissions.permission table.
    
*/

  procedure revoke_user_permission
  (
    p_json_parameters                 clob
  );

/*

  procedure save_oauth_reply

  The save_oauth_reply procedure allows a middle-tier component to save the response received from an OAuth authorization handshake.
  
  This procedure can only be called by a user session that has been created by a system administrator.
  
  The OAuth handshake can only be initiated by a system administrator.  As part of the handshake, the OAuth server receives a
  redirect URI that will process the OAuth reply.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
  
  The OAuth reply contains its own embedded parameters within a JSON object.  These parameters are processed by the save_oauth_reply
  procedure.
  
*/

  procedure save_oauth_reply
  (
    p_json_parameters                 clob
  );

/*

  function search_source_path

  The search_source_path function allows a client application to search a source path for matching objects.  This function is used
  by the AsterionDB path parsing functionality to provide a list of matching objects for a given source path.  The list of matching
  objects is aggregated by source path.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
  
    viewType                  The type of object view to query.  Possible values are:
    
                                object_vault_restapi.OVT_CATALOGED
                                object_vault_restapi.OVT_UNCATALOGED
    
  The JSON string returned by this function contains an array with the following entries:

    objectCount               The number of objects found.
    
    objectTypeIds             A set of object_type_id values representing the types of objects found.
    
    sourcePaths               The source paths found - with the filename component parsed out.
    
*/

  function search_source_path
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  procedure send_email_to_all_users

  The send_email_to_all_users procedure sends an email to all users of the AsterionDB system.

  This procedure can only be called by a user session that has been created by a system administrator.

  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
  
    subject                   The email subject line.
    
    emailText                 The text of the email to be sent.

  Possible exceptions returned:
  
    error_logging_pkg.FEATURE_DISABLED
    error_logging_pkg.INVALID_PARAMETERS
    
*/

  procedure send_email_to_all_users
  (
    p_json_parameters                 clob
  );

/*

  procedure send_invitation

  The send_invitation procedure sends an email invitation to register as a user of the AsterionDB system.

  This procedure can only be called by a user session that has been created by a system administrator.

  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
  
    emailAddress              The recipient's email address.
    
    firstName                 The recipient's first name.
    
    lastName                  The recipient's last name.
    
    invitationNote            A note to include with the invitation.
    
  Possible exceptions returned:
  
    error_logging_pkg.FEATURE_DISABLED
    error_logging_pkg.INVALID_PARAMETERS
    
*/

  procedure send_invitation
  (
    p_json_parameters                 clob
  );

/*

  procedure send_test_email

  The send_test_email procedure sends a test email to the system administrator.

  This procedure can only be called by a user session that has been created by a system administrator.

  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
  
    subject                   The email subject line.
    
    emailText                 The text of the email to be sent.
   
  Possible exceptions returned:
  
    error_logging_pkg.FEATURE_DISABLED
    error_logging_pkg.INVALID_PARAMETERS
    
*/

  procedure send_test_email
  (
    p_json_parameters                 clob
  );

/*

  procedure set_immutable_state 

  The set_immutable_state procedure allows a user application to set the immutable state for a group of objects.  
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
  
    immutableObject           A flag indicating whether the object is immutable.  An immutable object can not be changed in any
                              way.  The constant value object_vault_restapi.OPTION_ENABLED indicates that the object is immutable.
      
*/

  procedure set_immutable_state 
  (
    p_json_parameters                 clob
  );

/*

  procedure set_keyword_value

  The set_keyword_value procedure allows a user application to set a keyword value for a group of objects.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
  
    objectIds                 The group of objects to have a keyword value set for.
    
    keywordInGroupId          The keyword in a group that will have a value set.
    
    keywordValue              The keyword value.
    
    oldValueId                If this operation is to set the value of an existing keyword/value pair the prior keyword value id is
                              specified by the oldValueId parameter.

  Possible exceptions returned:
  
    error_logging_pkg.IMMUTABLE_OBJECT  

*/

  procedure set_keyword_value
  (
    p_json_parameters                 clob
  );

/*

  procedure set_share_status

  The set_share_status procedure allows a user application to set the share status for a group of objects.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
  
    objectIds                 The group of objects to have the share status set for.
    
    shareStatus               The share status that all specified objects will be set to.  Possible values are:
    
                                object_vault_restapi.SHS_NOT_SHARED
                                object_vault_restapi.SHS_SHARE_WITH_ALL
                                object_vault_restapi.SHS_SHARE_WITH_USERS
    
  Possible exceptions returned:
  
    error_logging_pkg.PERMISSION_NOT_GRANTED
    error_logging_pkg.OBJECT_NOT_FOUND
    error_logging_pkg.SHARING_DISABLED
    
*/

  procedure set_share_status
  (
    p_json_parameters                 clob
  );

/*

  procedure share_objects_with_users
  
  The share_objects_with_users allows a user application to specify the users that a group of objects are to be shared with.  This
  function is called after setting the share status for the objects of concern to object_vault_restapi.SHS_SHARE_WITH_USERS.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
  
    objectIds                 The group of objects to be shared.
    
    apiUserIds                The api_user_id values of the users that the objects will be shared with.
    
  Possible exceptions returned:
  
    error_logging_pkg.PERMISSION_NOT_GRANTED
    error_logging_pkg.OBJECT_NOT_FOUND
    error_logging_pkg.SHARING_DISABLED
    
*/

  procedure share_objects_with_users
  (
    p_json_parameters                 clob
  );

/*

  POC feature.  Document in dedicated package for DbObscura value added feature.
*/

  procedure spawn_helper_application
  (
    p_json_parameters                 clob
  );

/*

  procedure terminate_user_session
  
  The terminate_user_session procedure allows a user application to process a logout request.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
  
*/

  procedure terminate_user_session
  (
    p_json_parameters                 clob
  );

/*

  procedure toggle_account_status

  The toggle_account_status procedure allows a system administrator to toggel a user's account status between locked to unlocked.
  
  This procedure can only be called by a user session that has been created by a system administrator.

  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
  
    username                  The user whose account status will be toggled.
    
*/

  procedure toggle_account_status
  (
    p_json_parameters                 clob
  );

/*

  procedure transform_to_versioned_object

  The transform_to_versioned_object procedure allows a client application to enable version tracking for an object.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
  
    objectId                  The object to be transformed into a versioned object.  
    
  Possible exceptions returned:
  
    error_logging_pkg.IMMUTABLE_OBJECT  
    error_logging_pkg.UNABLE_TO_TRANSFORM    

*/

  procedure transform_to_versioned_object
  (
    p_json_parameters                 clob
  );

/*

  procedure update_email_config
  
  The update_email_config procedure allows a system administrator to update the SMTP outbound email configuration information for
  an AsterionDB installation.
  
  This procedure can only be called by a user session that has been created by a system administrator.

  This procedure required infromation that is generated as part of the Google GMail Oauth process.  See the
  Google documentation on OAuth for further information:
  
    https://developers.google.com/identity/protocols/oauth2/web-server
    
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    smtpEmailSender           The email address used to send outbound emails.
    
    gmailClientId             The GMail client ID.  
    
    gmailClientSecret         The Gmail client secret.

*/

  procedure update_email_config
  (
    p_json_parameters                 clob
  );

/*

  procedure update_file_extensions

  The update_file_extensions procedure allows a system administrator to update the file extensions associated with an object type.

  This procedure can only be called by a user session that has been created by a system administrator.

  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    objectTypeId              The object_type_id of the type of object that will be assigned to the specified set of file 
                              extensions.
    
    fileExtensions            The fileExtensions parameter is a JSON array with the following properties:
    
      fileExtension           The file extension.
      
      mimeType                The mime type associated with the file extension.

      htmlElement             The HTML element (e.g. <object>) used to display the object, if any.  This value can be set to null.
    
*/

  procedure update_file_extensions
  (
    p_json_parameters                 clob
  );

/*

  procedure update_keyword_group

  The update_keyword_group procedure allows a client application to update a keyword group's settings.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    keywordGroup              The keyword group's name.
      
    keywordGroupId            The keyword group's ID value.
      
    description               A description of the keyword group.
    
    objectTypeIds             The objectTypeIds parameter is an embedded JSON array of object_type_id values.  This parameter is 
                              used to specify the object types that this keyword group will be restricted to.

*/

  procedure update_keyword_group
  (
    p_json_parameters                 clob
  );

/*

  procedure update_keyword_in_a_group

  The update_keyword_in_a_group procedure allows a client application to update the settings for a keyword that is part of a group.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    keywordInGroupId          The keywords_in_a_group.keyword_in_group_id value.
      
    userInputHandling         The userInputHandling value governs how the client interface is to handle user input for this keyword
                              value.  Possible values are:
                              
                                object_vault_restapi.UIH_NO_SUGGESTIONS
                                object_vault_restapi.UIH_STATIC_LIST                                
                                object_vault_restapi.UIH_DYNAMIC_LIST                                

*/

  procedure update_keyword_in_a_group
  (
    p_json_parameters                 clob
  );

/*

  procedure update_object_type

  The update_object_type procedure allows a system administrator to update the settings for an object type.
  
  This procedure can only be called by a user session that has been created by a system administrator.

  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction

    objectTypeId              The object_types.object_type_id value.
    
    objectType                The object_types.object_type value.
    
    tableName                 The object_types.table_name value.  This is the table that is used to store the objects.
    
    columnName                The object_types.column_name value.  This is the name of the column that is used to store the object
                              data.
                            
    dataType                  The object_types.data_type value.
    
    description               The object_types.description value.
    
    gatewayIngestionEnabled   The object_types.gateway_ingestion_enabled value.  This value indicates whether the object type can
                              be ingested through the DbObscura Gateway.
                            
    adminAccessOnly           The object_types.admin_access_only value.  This value indicates whether the object type is available
                              for use by system administrator's only or by all user's of AsterionDB.
    
    htmlAcceptValue           The htmlAcceptValue parameter allows you to specify the <input> accept attribute value for a specific 
                              object. This value is used to limit the types of files that can be uploaded.  Search the web for 
                              HTML attribute:accept for further information.

    metadataClassification    The metadata classification for the object.
    
  Possible exceptions returned:
  
    error_logging_pkg.ACTION_DISALLOWED
    
*/

  procedure update_object_type
  (
    p_json_parameters                 clob
  );

/*

  procedure update_object_vault_profile

  The update_object_vault_profile procedure allows a system administrator to update the AsterionDB profile.
  
  This procedure can only be called by a user session that has been created by a system administrator.

  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
  
    profileName               The AsterionDB system profile name.
    
    websiteRootAddress        The AsterionDB website root address (i.e. asteriondb.yoursite.com)
    
    streamProxyPrefix         The prefix value to be applied to streaming weblinks built for processing by a proxy server.  See the
                              AsterionDB Configuration and Installation Guide for more information.
    
    downloadProxyPrefix       The prefix value to be applied to download weblinks built for processing by a proxy server.  See the
                              AsterionDB Configuration and Installation Guide for more information.
    
    usersGuideLink            The usersGuideLink value provides the URL that a client application can use to link to the AsterionDB
                              User's Guide.  This value can be a location resolved by your local HTTP server through a redirect, a
                              direct link to the content or point to a Cloud based resource.  The default value is:
                              
                                https://cloud-eval.asteriondb.com/objectVault/usersGuide
    
    installationGuideLink     The installationGuideLink value provides the URL that a client application can use to link to the 
                              AsterionDB Installation and Configuration Guide.  This value can be a location resolved by your local 
                              HTTP server through a redirect, a direct link to the content or point to a Cloud based resource.  
                              The default value is:
                              
                                https://cloud-eval.asteriondb.com/objectVault/installationGuide
    
    sslEnabled                If enabled SSL enabled weblinks will be generated (e.g. https://...).  Use the constants
                              object_vault_restapi.OPTION_ENABLED and object_vault_restapi.OPTION_DISABLED to set this value.
    
    allowNewUsers             If enabled new users can be created.  User creation can be accomlished by enrollment, self-enrollment
                              or invitation.  Use the constants object_vault_restapi.OPTION_ENABLED and 
                              object_vault_restapi.OPTION_DISABLED to set this value.
    
    signupPageEnabled         If enabled new users can self register by accessing an appropriate link on the login page.  Use the 
                              constants object_vault_restapi.OPTION_ENABLED and object_vault_restapi.OPTION_DISABLED to set this 
                              value.
    
    defaultLobTablespace      The tablespace that will be used by default to store LOB (unstructured) data.
    
    sharingEnabled            Use the constant object_vault_restapi.OPTION_ENABLED to enable sharing of objects.
    
    secureWeblinkWebpage      The value of secureWeblinkWebpage is used when constructing links for secure content.  The URL will 
                              be in the following format:
                              
                                http(s)://you.server.com/secureWeblinkWebpage
    
    extraErrorInfoEnabled     If enabled extra error information will be emitted by the data layer.  This option should not be
                              enabled in production environments.  Use the constant object_vault_restapi.OPTION_ENABLED to enable
                              this option.
    
    metadataAnalysisInterval  The metadataAnalysisInterval is the amount of time the automated metadata analysis job will sleep
                              in between invocations.


  Possible exceptions returned:
  
    error_logging_pkg.FEATURE_DISABLED
*/

  procedure update_object_vault_profile
  (
    p_json_parameters                 clob
  );

/*

  procedure update_system_permission
  
  The update_system_permission procedure allows a system administrator to update a system permission's properties.
  
  This procedure can only be called by a user session that has been created by a system administrator.

  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
  
    permissionId              The system permission_id value.
    
    grantedByDefault          A flag indicating if the system permission is granted by default.  Possible values are
                              object_vault_restapi.OPTION_ENABLED and object_vault_restapi.OPTION_DISABLED.
    
*/

  procedure update_system_permission
  (
    p_json_parameters                 clob
  );

/*

  procedure update_user_info

  The update_user_info procedure allows a client application to update a user's information.

  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
  
    firstName                 The user's first name.

    middleName                The user's middle name/initial.

    lastName                  The user's last name.

*/

  procedure update_user_info
  (
    p_json_parameters                 clob
  );

/*

  procedure update_user_preferences

  The update_user_preferences procedure allows a client application to update a user's preferences.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
  
    autoQueryEnabled          The value of the autoQueryEnabled, which maps to object_vault_users.auto_query_enabled.

    defaultTimezone           The user's default timezone (e.g. America/Los_Angeles).

*/

  procedure update_user_preferences
  (
    p_json_parameters                 clob
  );

/*

  procedure update_user_properties

  The update_user_properties procedure allows a system administrator to update a user's properties.
  
  This procedure can only be called by a user session that has been created by a system administrator.

  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
  
    username                  The username of the AsterionDB user whose properties are to be updated.


    sessionInactivityLimit    The inactivity limit, expressed in seconds.  A user session that exceedes the inactivity limit will
                              be terminated.
                              
    sessionLimit              The limit on the number of concurrently active sessions the user may create.

*/

  procedure update_user_properties
  (
    p_json_parameters                 clob
  );

/*

  procedure update_version_settings
  
  The update_version_settings procedure allows a client application to update the versioning settings for an object.
  
  Embedded parameter values:
  
    sessionId                 See introduction
    clientAddress             See introduction
    userAgent                 See introduction
  
    objectId                  The object_id of the object to update.
    
    versionsToRetain          The number of versions to retain.  Note that the data for trimmed versions is removed.
                              The associated metadata (links, access history) is retained.  Set this value to 
                              object_vault_restapi.UNLIMITED to allow for the retention of an unlimited number of 
                              versions.  The value can not be set to zero.
    
    versionsHaveSameName      This value determines whether a newly uploaded version's object name must match
                              the existing object's name.  Use the constants object_vault_restapi.OPTION_ENABLED and
                              object_vault_restapi.OPTION_DISABLED to set this value.
*/

  procedure update_version_settings
  (
    p_json_parameters                 clob
  );

/*

  procedure validate_confirmation_token

  The validate_confirmation_token procedure allows a client application to validate a system generated confirmation token.  
  Confirmation tokens are generated as a step in various AsterionDB authorization workflows.  The workflows that generate a
  confirmation token are:
  
    Enrolling a user.
    
    User initiated password recovery.

  Embedded parameter values:
  
    confirmationToken         The system generated confirmation token which was received in an email that was sent by the AsterionDB
                              system.
                              
  Possible exceptions returned:
  
    error_logging_pkg.INVALID_CONFIRMATION_DATA                              
    
*/

  procedure validate_confirmation_token
  (
    p_json_parameters                 clob
  );

/*

  function validate_invitation_token

  The validate_invitation_token function allows a client application to validate a user enrollment invitation token.  Enrollment
  invitations are sent out by the system as an email and contain an invitation token within a link in the document.  The validation
  of this token, if successful, will return the information needed to allow the user to complete the enrollment process.
  
  Embedded parameter values:
  
    invitationToken           The system generated invitation token which was received in an email that was sent by the AsterionDB
                              system.
  
  The JSON string returned by this function contains the following properties:
  
    firstName                 The invited user's first name.
    
    lastName                  The invited user's last name.
    
    emailAddress              The invited user's email address.

  Possible exceptions returned:
  
    error_logging_pkg.INVALID_INVITATION_TOKEN
    
*/

  function validate_invitation_token
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  procedure validate_new_email_address

  The validate_new_email_address procedure allows a client application to validate a new user's email address as part of the self
  enrollment or enrollment by invitation workflow.  Validation will ensure that the email address does not already exist in the 
  system.
  
  Embedded parameter values:
  
    emailAddress              The new user's email address.
    
  Possible exceptions returned:
  
    error_logging_pkg.EMAIL_ADDRESS_EXISTS
    
*/

  procedure validate_new_email_address
  (
    p_json_parameters                 clob
  );

/*

  procedure validate_new_username

  The validate_new_username procedure allows a new user's username to be validated as part of the workflow for user enrollment.
  Validation will ensure that the username does not already exist in the system.
  
  Embedded parameter values:

    username                  The new user's username.
    
  Possible exceptions returned:
  
    error_logging_pkg.USERNAME_TAKEN    

*/

  procedure validate_new_username
  (
    p_json_parameters                 clob
  );

/*

  function validate_secure_weblink_password

  The validate_secure_weblink_password function will validate a secure weblink that is being used to access content.  The secure
  weblink is generated by a call to object_vault_restapi.generate_secure_weblink.

  Assigning a password to a secure weblink is an option that can be selected at the time that the weblink is generated.  If a
  password was assigned at the time the weblink was generated, the weblink and password must be validated upon use by calling this
  function.
  
  Embedded parameter values:
  
    clientAddress             See introduction

    webliknkToken             The weblink token generated by a call to object_vault_restapi.generate_secure_weblink.
    
    weblinkPassword           The weblink password.
    
  The JSON string returned by this function contains the following properties:

    secureStream              The URL that is used to access the secure content.

  Possible exceptions returned:
  
    error_logging_pkg.INVALID_PASSWORD
    
*/

  function validate_secure_weblink_password
  (
    p_json_parameters                 clob
  )
  return clob;

/*

  procedure validate_session
  
  This procedure is used by DbTwig to check session validation for every API call.
  
  This procedure is not callable directly by client applications.

*/

  procedure validate_session
  (
    p_object_type                     middle_tier_map.object_type%type,
    p_object_name                     middle_tier_map.object_name%type,
    p_json_parameters                 clob
  );

end object_vault_restapi;