POST | /async/elma/files/browse |
---|
using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using ServiceStack;
using ServiceStack.DataAnnotations;
using PwC.Elmaas.Core.Services.Contracts.Requests;
using PwC.Elmaas.Core.Domain.Concretes.Models;
using PwC.Elmaas.Core.Domain.Contracts.Models;
using PwC.Elmaas.Core.Services.Contracts.Responses;
using PwC.DigitalHub.Utilities.IO.Core.Concretes.Models;
namespace PwC.DigitalHub.Utilities.IO.Core.Concretes.Models
{
///<summary>
///Represents information about a file or directory.
///</summary>
[Api(Description="Represents information about a file or directory.")]
public partial class FileMetadata
: IFileMetadata
{
public FileMetadata()
{
Extensions = new Dictionary<string, string>{};
}
///<summary>
///The name of the file.For files, gets the name of the file.For directories, gets the name of the last directory in the hierarchy if a hierarchy exists; otherwise, the name of the directory.
///</summary>
[ApiMember(Description="The name of the file.\nFor files, gets the name of the file.\nFor directories, gets the name of the last directory in the hierarchy if a hierarchy exists; otherwise, the name of the directory.", Name="Name")]
public virtual string Name { get; set; }
///<summary>
///The full path of the directory or file.
///</summary>
[ApiMember(Description="The full path of the directory or file.", Name="FullName")]
public virtual string FullName { get; set; }
///<summary>
///The time the current file or directory was last accessed.
///</summary>
[ApiMember(Description="The time the current file or directory was last accessed.", Name="LastAccessTime")]
public virtual DateTime LastAccessTime { get; set; }
///<summary>
///The name of the file.
///</summary>
[ApiMember(Description="The name of the file.", Name="LastAccessTimeUtc")]
public virtual DateTime LastAccessTimeUtc { get; set; }
///<summary>
///The time when the current file or directory was last written to.
///</summary>
[ApiMember(Description="The time when the current file or directory was last written to.", Name="LastAccessTime")]
public virtual DateTime LastWriteTime { get; set; }
///<summary>
///The time, in coordinated universal time (UTC), when the current file or directory was last written to.
///</summary>
[ApiMember(Description="The time, in coordinated universal time (UTC), when the current file or directory was last written to.", Name="LastWriteTimeUtc")]
public virtual DateTime LastWriteTimeUtc { get; set; }
///<summary>
///The size, in bytes, of the current file.
///</summary>
[ApiMember(Description="The size, in bytes, of the current file.", Name="Length")]
public virtual long Length { get; set; }
///<summary>
///The size, in bytes, of the current file.
///</summary>
[ApiMember(Description="The size, in bytes, of the current file.", Name="UserId")]
public virtual int UserId { get; set; }
///<summary>
///The file group id.
///</summary>
[ApiMember(Description="The file group id.", Name="GroupId")]
public virtual int GroupId { get; set; }
///<summary>
///A value that indicates whether the others can read from this file.
///</summary>
[ApiMember(Description="A value that indicates whether the others can read from this file.", Name="OthersCanRead")]
public virtual bool OthersCanRead { get; set; }
///<summary>
///A value that indicates whether the group members can execute this file.
///</summary>
[ApiMember(Description="A value that indicates whether the group members can execute this file.", Name="GroupCanExecute")]
public virtual bool GroupCanExecute { get; set; }
///<summary>
///A value that indicates whether the group members can write into this file.
///</summary>
[ApiMember(Description="A value that indicates whether the group members can write into this file.", Name="GroupCanWrite")]
public virtual bool GroupCanWrite { get; set; }
///<summary>
///A value that indicates whether the group members can read from this file.
///</summary>
[ApiMember(Description="A value that indicates whether the group members can read from this file.", Name="GroupCanRead")]
public virtual bool GroupCanRead { get; set; }
///<summary>
///A value that indicates whether the owner can execute this file.
///</summary>
[ApiMember(Description="A value that indicates whether the owner can execute this file.", Name="OwnerCanExecute")]
public virtual bool OwnerCanExecute { get; set; }
///<summary>
///A value that indicates whether the owner can write into this file.
///</summary>
[ApiMember(Description="A value that indicates whether the owner can write into this file.", Name="OwnerCanWrite")]
public virtual bool OwnerCanWrite { get; set; }
///<summary>
///A value that indicates whether the owner can read from this file.
///</summary>
[ApiMember(Description="A value that indicates whether the owner can read from this file.", Name="OthersCanRead")]
public virtual bool OwnerCanRead { get; set; }
///<summary>
///A value that indicates whether others can read from this file.
///</summary>
[ApiMember(Description="A value that indicates whether others can read from this file.", Name="OthersCanExecute")]
public virtual bool OthersCanExecute { get; set; }
///<summary>
///A value that indicates whether others can write into this file.
///</summary>
[ApiMember(Description="A value that indicates whether others can write into this file.", Name="OthersCanWrite")]
public virtual bool OthersCanWrite { get; set; }
///<summary>
///Extensions to the file attributes.
///</summary>
[ApiMember(Description="Extensions to the file attributes.", Name="Extensions")]
public virtual Dictionary<string, string> Extensions { get; set; }
}
}
namespace PwC.Elmaas.Core.Domain.Concretes.Models
{
public enum DirectoryType
{
Upload,
Download,
}
///<summary>
///Represents the credentials of a user to authenticate the access of an ELMA server.
///</summary>
[Api(Description="Represents the credentials of a user to authenticate the access of an ELMA server.")]
public partial class ElmaCredential
: IElmaCredential
{
///<summary>
///The unique identifier of this instance. This identifer is only relevant in the context of data storage and retrieval.
///</summary>
[ApiMember(Description="The unique identifier of this instance. This identifer is only relevant in the context of data storage and retrieval.", IsRequired=true, Name="Id")]
public virtual string Id { get; set; }
///<summary>
///The security certificate to authenticate the user and grant access to the ELMA server. This certificate is generated from the BZSt-issued *.pfx BOP certificate. More details on BOP (BZSt-Online Portal - https://www.elster.de/bportal/start)
///</summary>
[ApiMember(Description="The security certificate to authenticate the user and grant access to the ELMA server. This certificate is generated from the BZSt-issued *.pfx BOP certificate. More details on BOP (BZSt-Online Portal - https://www.elster.de/bportal/start)", IsRequired=true, Name="Certificate")]
[Required]
[StringLength(int.MaxValue)]
public virtual PemCertificate Certificate { get; set; }
///<summary>
///The BZSt (Bundeszentralamt für Steuern) - tax number of the user. 11-character text field that may only consist of two capital letters and 9 digits (0-9). The fiscal authority BZSt provides this number during registration at the BOP (BZSt-Online Portal - https://www.elster.de/bportal/start). The number is available in the private area of the BOP user account under "My BOP" under the "Registration Information"
///</summary>
[ApiMember(Description="The BZSt (Bundeszentralamt für Steuern) - tax number of the user. 11-character text field that may only consist of two capital letters and 9 digits (0-9). The fiscal authority BZSt provides this number during registration at the BOP (BZSt-Online Portal - https://www.elster.de/bportal/start). The number is available in the private area of the BOP user account under \"My BOP\" under the \"Registration Information\"", IsRequired=true, Name="AuthSteuernummer")]
[Required]
[StringLength(11)]
public virtual string AuthSteuernummer { get; set; }
///<summary>
///The account identifier of a BZSt-Online Portal (BOP) user. 10-character text field that may only contain numbers (0-9).
///</summary>
[ApiMember(Description="The account identifier of a BZSt-Online Portal (BOP) user. 10-character text field that may only contain numbers (0-9).", IsRequired=true, Name="AccountId")]
[Required]
[StringLength(10)]
public virtual string AccountId { get; set; }
///<summary>
///The password to protect the certificate from unauthorized access.
///</summary>
[ApiMember(Description="The password to protect the certificate from unauthorized access.", IsRequired=true, Name="Password")]
public virtual string Password { get; set; }
}
}
namespace PwC.Elmaas.Core.Domain.Contracts.Models
{
///<summary>
///Represents a PEM-encoded certificate.
///</summary>
[Api(Description="Represents a PEM-encoded certificate.")]
public partial class PemCertificate
{
public PemCertificate()
{
Tags = new List<string>{};
}
///<summary>
///The unique identifier (e.g. the file name) of the certificate.
///</summary>
[ApiMember(Description="The unique identifier (e.g. the file name) of the certificate.", IsRequired=true, Name="Id")]
public virtual string Id { get; set; }
///<summary>
///The PEM-encoded content of the certificate.
///</summary>
[ApiMember(Description="The PEM-encoded content of the certificate.", IsRequired=true, Name="Content")]
public virtual string Content { get; set; }
///<summary>
///The description of the certificate.
///</summary>
[ApiMember(Description="The description of the certificate.", Name="Description")]
public virtual string Description { get; set; }
///<summary>
///Tags to label or identify the certificate.
///</summary>
[ApiMember(Description="Tags to label or identify the certificate.", Name="Tags")]
public virtual List<string> Tags { get; set; }
}
}
namespace PwC.Elmaas.Core.Services.Contracts.Requests
{
///<summary>
///Represents a request to browse directories for files on the ELMA server in an asynchronous operation.
///</summary>
[Api(Description="Represents a request to browse directories for files on the ELMA server in an asynchronous operation.")]
public partial class BrowseFilesAsync
: BrowseFilesBase
{
}
///<summary>
///Specifies a request to browse directories for files on the ELMA server.
///</summary>
[Api(Description="Specifies a request to browse directories for files on the ELMA server.")]
public partial class BrowseFilesBase
: IPost, IAuthenticateRequest, IStageableRequest
{
///<summary>
///The directory to browse for files.
///</summary>
[ApiMember(Description="The directory to browse for files.", IsRequired=true, Name="DirectoryType")]
public virtual DirectoryType DirectoryType { get; set; }
///<summary>
///The credential to gain access on the ELMA server.
///</summary>
[ApiMember(Description="The credential to gain access on the ELMA server.", IsRequired=true, Name="Credential")]
public virtual ElmaCredential Credential { get; set; }
///<summary>
///Should operations be staged on the ELMA server? true: operations are executed on the Test ELMA server. false: operations are executed on the Live (Production) ELMA server.
///</summary>
[ApiMember(Description="Should operations be staged on the ELMA server? true: operations are executed on the Test ELMA server. false: operations are executed on the Live (Production) ELMA server.", Name="StagingEnabled")]
public virtual bool? StagingEnabled { get; set; }
}
}
namespace PwC.Elmaas.Core.Services.Contracts.Responses
{
///<summary>
///Encapsulates the results of browsing an ELMA server directory
///</summary>
[Api(Description="Encapsulates the results of browsing an ELMA server directory")]
public partial class BrowseResponse
{
public BrowseResponse()
{
Files = new List<FileMetadata>{};
}
///<summary>
///The files from the file browse operation.
///</summary>
[ApiMember(Description="The files from the file browse operation.", Name="Files")]
public virtual List<FileMetadata> Files { get; set; }
///<summary>
///The status of the file browse operation.
///</summary>
[ApiMember(Description="The status of the file browse operation.", Name="ResponseStatus")]
public virtual ResponseStatus ResponseStatus { get; set; }
}
}
To override the Content-type in your clients, use the HTTP Accept Header, append the .x-msgpack suffix or ?format=x-msgpack
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /async/elma/files/browse HTTP/1.1
Host: reportfiling.staging.pwc.de
Accept: application/x-msgpack
Content-Type: application/x-msgpack
Content-Length: length
{"directoryType":"Upload","credential":{"id":"String_String","certificate":{"id":"String","content":"String","description":"String","tags":["String"]},"authSteuernummer":"String","accountId":"String","password":"String"},"stagingEnabled":false}
HTTP/1.1 200 OK Content-Type: application/x-msgpack Content-Length: length {"files":[{"name":"String","fullName":"String","lastAccessTime":"\/Date(-62135596800000-0000)\/","lastAccessTimeUtc":"\/Date(-62135596800000-0000)\/","lastWriteTime":"\/Date(-62135596800000-0000)\/","lastWriteTimeUtc":"\/Date(-62135596800000-0000)\/","length":0,"userId":0,"groupId":0,"othersCanRead":false,"groupCanExecute":false,"groupCanWrite":false,"groupCanRead":false,"ownerCanExecute":false,"ownerCanWrite":false,"ownerCanRead":false,"othersCanExecute":false,"othersCanWrite":false,"extensions":{"String":"String"}}],"responseStatus":{"errorCode":"String","message":"String","stackTrace":"String","errors":[{"errorCode":"String","fieldName":"String","message":"String","meta":{"String":"String"}}],"meta":{"String":"String"}}}