POST | /app/file |
---|
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using ServiceStack;
using ServiceStack.DataAnnotations;
using Voice.Api.App.Portal;
using Voice.Api.Files;
using Voice.Api;
using Voice.Api.Customers;
namespace Voice.Api
{
public partial class EntityInfo
{
///<summary>
///The ID of the object
///</summary>
[ApiMember(Description="The ID of the object")]
public virtual string Id { get; set; }
///<summary>
///The date the object was created
///</summary>
[ApiMember(Description="The date the object was created")]
public virtual string DateCreated { get; set; }
///<summary>
///The date the object was last modified
///</summary>
[ApiMember(Description="The date the object was last modified")]
public virtual string DateLastModified { get; set; }
///<summary>
///The user that created this object
///</summary>
[ApiMember(Description="The user that created this object")]
public virtual string CreatedBy { get; set; }
///<summary>
///The user that last modified this object
///</summary>
[ApiMember(Description="The user that last modified this object")]
public virtual string LastModifiedBy { get; set; }
}
}
namespace Voice.Api.App.Portal
{
///<summary>
///Creates a new file. You can either upload directly or via form files multipart
///</summary>
[Api(Description="Creates a new file. You can either upload directly or via form files multipart")]
public partial class AppUploadFile
{
public virtual string FileName { get; set; }
public virtual string AccountId { get; set; }
public virtual string CustomerId { get; set; }
}
}
namespace Voice.Api.Customers
{
public partial class CustomerBreadcrumb
{
public virtual string Id { get; set; }
public virtual string Name { get; set; }
}
}
namespace Voice.Api.Files
{
public partial class FileInfo
: EntityInfo
{
///<summary>
///The type of file this is
///</summary>
[ApiMember(Description="The type of file this is")]
public virtual FileTypes Type { get; set; }
///<summary>
///The account ID this file is associated with
///</summary>
[ApiMember(Description="The account ID this file is associated with")]
public virtual string AccountId { get; set; }
///<summary>
///The name of the account this file is associated with
///</summary>
[ApiMember(Description="The name of the account this file is associated with")]
public virtual string AccountName { get; set; }
///<summary>
///The ID of the customer this file is associated with
///</summary>
[ApiMember(Description="The ID of the customer this file is associated with")]
public virtual string CustomerId { get; set; }
///<summary>
///The name of the customer this file is associated with
///</summary>
[ApiMember(Description="The name of the customer this file is associated with")]
public virtual string CustomerName { get; set; }
///<summary>
///The breadcrumb to the customer for this file
///</summary>
[ApiMember(Description="The breadcrumb to the customer for this file")]
public virtual List<CustomerBreadcrumb> CustomerBreadcrumb { get; set; }
///<summary>
///The ID of the user this file is assocaited with
///</summary>
[ApiMember(Description="The ID of the user this file is assocaited with")]
public virtual string UserId { get; set; }
///<summary>
///The name of the user this file is associated with
///</summary>
[ApiMember(Description="The name of the user this file is associated with")]
public virtual string UserName { get; set; }
///<summary>
///The original file name for the file
///</summary>
[ApiMember(Description="The original file name for the file")]
public virtual string FileName { get; set; }
///<summary>
///The URI of the file
///</summary>
[ApiMember(Description="The URI of the file")]
public virtual string Uri { get; set; }
///<summary>
///The Content type of the file
///</summary>
[ApiMember(Description="The Content type of the file")]
public virtual string ContentType { get; set; }
///<summary>
///The size of the file
///</summary>
[ApiMember(Description="The size of the file")]
public virtual long ContentLength { get; set; }
///<summary>
///The Twilio ID of the recording
///</summary>
[ApiMember(Description="The Twilio ID of the recording")]
public virtual string RecordingSid { get; set; }
///<summary>
///The duration of the recording in seconds
///</summary>
[ApiMember(Description="The duration of the recording in seconds")]
public virtual int RecordingDuration { get; set; }
///<summary>
///Who is the recording from?
///</summary>
[ApiMember(Description="Who is the recording from?")]
public virtual string RecordingFrom { get; set; }
///<summary>
///Transcription (if available)
///</summary>
[ApiMember(Description="Transcription (if available)")]
public virtual string Transcription { get; set; }
///<summary>
///From Address (e.g. caller ID) for incoming calls
///</summary>
[ApiMember(Description="From Address (e.g. caller ID) for incoming calls")]
public virtual string FromAddress { get; set; }
///<summary>
///To Address (e.g. dialed number) for outgoing calls
///</summary>
[ApiMember(Description="To Address (e.g. dialed number) for outgoing calls")]
public virtual string ToAddress { get; set; }
///<summary>
///The AI transcription for this call
///</summary>
[ApiMember(Description="The AI transcription for this call")]
public virtual string AITranscription { get; set; }
}
public enum FileTypes
{
Upload,
VoiceMessage,
CallRecording,
Fax,
Attachment,
FaxOutgoing,
}
}
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /app/file HTTP/1.1
Host: team.evovoice.io
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
fileName: String,
accountId: String,
customerId: String
}
HTTP/1.1 200 OK Content-Type: text/jsv Content-Length: length { type: Upload, accountId: String, accountName: String, customerId: String, customerName: String, customerBreadcrumb: [ { id: String, name: String } ], userId: String, userName: String, fileName: String, uri: String, contentType: String, contentLength: 0, recordingSid: String, recordingDuration: 0, recordingFrom: String, transcription: String, fromAddress: String, toAddress: String, aiTranscription: String, id: String, dateCreated: String, dateLastModified: String, createdBy: String, lastModifiedBy: String }