Evo Voice

<back to all web services

NewIntegration

Creates a new integration

The following routes are available for this service:
POST/integrations


export class NodeParameterMap
{
    [key:string] : NodeParameter;

    public constructor(init?: Partial<NodeParameterMap>) { (Object as any).assign(this, init); }
}


export class EntityInfo
{
    /** @description The ID of the object */
    // @ApiMember(Description="The ID of the object")
    public id: string;

    /** @description The date the object was created */
    // @ApiMember(Description="The date the object was created")
    public dateCreated: string;

    /** @description The date the object was last modified */
    // @ApiMember(Description="The date the object was last modified")
    public dateLastModified: string;

    /** @description The user that created this object */
    // @ApiMember(Description="The user that created this object")
    public createdBy: string;

    /** @description The user that last modified this object */
    // @ApiMember(Description="The user that last modified this object")
    public lastModifiedBy: string;

    public constructor(init?: Partial<EntityInfo>) { (Object as any).assign(this, init); }
}

export class CustomerBreadcrumb
{
    public id: string;
    public name: string;

    public constructor(init?: Partial<CustomerBreadcrumb>) { (Object as any).assign(this, init); }
}

export enum IntegrationTypes
{
    HostedSuite = 'HostedSuite',
    OfficeRnd = 'OfficeRnd',
    Zoho = 'Zoho',
}

export enum IntegrationStatuses
{
    NotConfigured = 'NotConfigured',
    Error = 'Error',
    OK = 'OK',
}

export enum ValueTypes
{
    NotSpecified = 'NotSpecified',
    String = 'String',
    Boolean = 'Boolean',
    Number = 'Number',
    List = 'List',
    Struct = 'Struct',
    Transition = 'Transition',
    Custom = 'Custom',
    Date = 'Date',
    AudioFile = 'AudioFile',
    TimeZoneId = 'TimeZoneId',
    PhoneNumber = 'PhoneNumber',
    User = 'User',
    Endpoint = 'Endpoint',
    Time = 'Time',
    File = 'File',
    FaxNumber = 'FaxNumber',
    EmailAccount = 'EmailAccount',
    Customer = 'Customer',
    Flow = 'Flow',
    Team = 'Team',
    FlowReference = 'FlowReference',
    Integration = 'Integration',
    Assistant = 'Assistant',
}

export enum UIHints
{
    None = 'None',
    LargeText = 'LargeText',
    InlineForm = 'InlineForm',
    Password = 'Password',
    InlineStruct = 'InlineStruct',
}

export class Struct
{

    public constructor(init?: Partial<Struct>) { (Object as any).assign(this, init); }
}

export class Value
{
    public boolValue?: boolean;
    public stringValue: string;
    public numberValue?: number;
    public listValue: Struct[];
    public structValue: Struct;

    public constructor(init?: Partial<Value>) { (Object as any).assign(this, init); }
}

export enum DataFieldUniqueness
{
    NotUnique = 'NotUnique',
    Unique = 'Unique',
    UniqueToCustomer = 'UniqueToCustomer',
}

export enum UserDataFieldModes
{
    Hidden = 'Hidden',
    ReadOnly = 'ReadOnly',
    ReadWrite = 'ReadWrite',
}

export class DataField
{
    public id: string;
    public name: string;
    public type: ValueTypes;
    public uiHint: UIHints;
    public uiTab: string;
    public isAsync: boolean;
    public disableBinding: boolean;
    public structType: DataType;
    public listType: DataType;
    public description: string;
    public possibleValues: string[];
    public isOutput: boolean;
    public customFieldValuesUrl: string;
    public defaultValue: Value;
    public transitionNameFormat: string;
    public uniqueness: DataFieldUniqueness;
    public voiceOnly: boolean;
    public conditionalVisibilityField: string;
    public conditionalVisibilityValue: string;
    public noEvalTemplate: boolean;
    public userMode: UserDataFieldModes;
    public anyValueType: boolean;

    public constructor(init?: Partial<DataField>) { (Object as any).assign(this, init); }
}

export class DataType
{
    public typeName: string;
    public fields: DataField[];

    public constructor(init?: Partial<DataType>) { (Object as any).assign(this, init); }
}

export enum IntegrationFeatures
{
    CrmSync = 'CrmSync',
    OAuth2 = 'OAuth2',
}

export class IntegrationInfo extends EntityInfo
{
    /** @description The ID of the account associated with this integration */
    // @ApiMember(Description="The ID of the account associated with this integration")
    public accountId: string;

    /** @description The ID of the customer this integration is associated with */
    // @ApiMember(Description="The ID of the customer this integration is associated with")
    public customerId: string;

    /** @description The name of the customer this integration is associated with */
    // @ApiMember(Description="The name of the customer this integration is associated with")
    public customerName: string;

    /** @description The date the integration was sync'd last */
    // @ApiMember(Description="The date the integration was sync'd last")
    public dateLastSync: string;

    /** @description The breadcrumb to the customer for this integration */
    // @ApiMember(Description="The breadcrumb to the customer for this integration")
    public customerBreadcrumb: CustomerBreadcrumb[];

    /** @description The name of the integration (e.g. HostedSuite Dallas) */
    // @ApiMember(Description="The name of the integration (e.g. HostedSuite Dallas)")
    public name: string;

    /** @description Automatically create new customers / users when sync'ing with CRM? */
    // @ApiMember(Description="Automatically create new customers / users when sync'ing with CRM?")
    public automaticallyCreateCustomers: boolean;

    /** @description The type of integration */
    // @ApiMember(Description="The type of integration")
    public type: IntegrationTypes;

    /** @description The status of the integration */
    // @ApiMember(Description="The status of the integration")
    public status: IntegrationStatuses;

    /** @description The status of the integration */
    // @ApiMember(Description="The status of the integration")
    public statusMessage: string;

    /** @description The settings type for this integration */
    // @ApiMember(Description="The settings type for this integration")
    public settingsDataType: DataType;

    /** @description The settings for this integration */
    // @ApiMember(Description="The settings for this integration")
    public settings: Struct;

    /** @description The features supported by this integration */
    // @ApiMember(Description="The features supported by this integration")
    public features: IntegrationFeatures[];

    /** @description Is this integration authorized (OAuth)? */
    // @ApiMember(Description="Is this integration authorized (OAuth)?")
    public isAuthorized: boolean;

    public constructor(init?: Partial<IntegrationInfo>) { super(init); (Object as any).assign(this, init); }
}

/** @description Creates a new integration */
// @Api(Description="Creates a new integration")
export class NewIntegration implements IPost
{
    /** @description The account ID to associate this integration with */
    // @ApiMember(Description="The account ID to associate this integration with")
    public accountId: string;

    /** @description The type of integration */
    // @ApiMember(Description="The type of integration")
    public type: IntegrationTypes;

    /** @description The name of the integration */
    // @ApiMember(Description="The name of the integration")
    public name: string;

    /** @description The parent customer for this integration */
    // @ApiMember(Description="The parent customer for this integration")
    public customerId: string;

    public constructor(init?: Partial<NewIntegration>) { (Object as any).assign(this, init); }
}

TypeScript NewIntegration DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml

HTTP + XML

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /integrations HTTP/1.1 
Host: team.evovoice.io 
Accept: application/xml
Content-Type: application/xml
Content-Length: length

<NewIntegration xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Integrations">
  <AccountId>String</AccountId>
  <CustomerId>String</CustomerId>
  <Name>String</Name>
  <Type>HostedSuite</Type>
</NewIntegration>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<IntegrationInfo xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Integrations">
  <CreatedBy xmlns="http://schemas.datacontract.org/2004/07/Voice.Api">String</CreatedBy>
  <DateCreated xmlns="http://schemas.datacontract.org/2004/07/Voice.Api">String</DateCreated>
  <DateLastModified xmlns="http://schemas.datacontract.org/2004/07/Voice.Api">String</DateLastModified>
  <Id xmlns="http://schemas.datacontract.org/2004/07/Voice.Api">String</Id>
  <LastModifiedBy xmlns="http://schemas.datacontract.org/2004/07/Voice.Api">String</LastModifiedBy>
  <AccountId>String</AccountId>
  <AutomaticallyCreateCustomers>false</AutomaticallyCreateCustomers>
  <CustomerBreadcrumb xmlns:d2p1="http://schemas.datacontract.org/2004/07/Voice.Api.Customers">
    <d2p1:CustomerBreadcrumb>
      <d2p1:Id>String</d2p1:Id>
      <d2p1:Name>String</d2p1:Name>
    </d2p1:CustomerBreadcrumb>
  </CustomerBreadcrumb>
  <CustomerId>String</CustomerId>
  <CustomerName>String</CustomerName>
  <DateLastSync>String</DateLastSync>
  <Features>
    <IntegrationFeatures>CrmSync</IntegrationFeatures>
  </Features>
  <IsAuthorized>false</IsAuthorized>
  <Name>String</Name>
  <Settings xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" i:nil="true" />
  <SettingsDataType xmlns:d2p1="http://schemas.datacontract.org/2004/07/Voice.Api.Flows.Data" i:nil="true" />
  <Status>NotConfigured</Status>
  <StatusMessage>String</StatusMessage>
  <Type>HostedSuite</Type>
</IntegrationInfo>