openapi: 3.2.0 info: title: D-Tools SI API Documentation Publish Clients API description: 'The API allows integrations to: - Publish catalogs and projects to SI users. - Subscribe to projects and catalogs published by SI users. All API calls must pass an API key in the request header. The API key can be generated in SI 2016 Control Panel using the ''Manage Integrations'' feature. An API key is specific to a SI user and an integration. API callers must add to each call a custom header named **X-DTSI-ApiKey** along with the value of the API key. For example, if the API key value is `q54R39UBr0Skgd7VHvEbuwiRAOArUpt02o7z/vY+iwrg`, the custom header would be as follows: ``` X-DTSI-ApiKey: q54R39UBr0Skgd7VHvEbuwiRAOArUpt02o7z/vY+iwrg ```' version: 1.0.0 servers: - url: https://api.d-tools.com/si tags: - name: PublishClients description: Allows an integration to update a client list to a SI user. paths: /Publish/Clients: post: tags: - PublishClients summary: Publish a list of clients to SI. requestBody: description: The client list. content: application/json-patch+json: schema: $ref: '#/components/schemas/ClientList' application/json: schema: $ref: '#/components/schemas/ClientList' text/json: schema: $ref: '#/components/schemas/ClientList' application/*+json: schema: $ref: '#/components/schemas/ClientList' application/xml: schema: $ref: '#/components/schemas/ClientList' text/xml: schema: $ref: '#/components/schemas/ClientList' application/*+xml: schema: $ref: '#/components/schemas/ClientList' required: true responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/PublishResponse' text/json: schema: $ref: '#/components/schemas/PublishResponse' application/xml: schema: $ref: '#/components/schemas/PublishResponse' text/xml: schema: $ref: '#/components/schemas/PublishResponse' /Publish/Clients/Update: post: tags: - PublishClients summary: Update an existing client in SI requestBody: description: '' content: application/json-patch+json: schema: $ref: '#/components/schemas/UpdateClient' application/json: schema: $ref: '#/components/schemas/UpdateClient' text/json: schema: $ref: '#/components/schemas/UpdateClient' application/*+json: schema: $ref: '#/components/schemas/UpdateClient' application/xml: schema: $ref: '#/components/schemas/UpdateClient' text/xml: schema: $ref: '#/components/schemas/UpdateClient' application/*+xml: schema: $ref: '#/components/schemas/UpdateClient' required: true responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/PublishResponse' text/json: schema: $ref: '#/components/schemas/PublishResponse' application/xml: schema: $ref: '#/components/schemas/PublishResponse' text/xml: schema: $ref: '#/components/schemas/PublishResponse' components: schemas: UpdateClient: type: object properties: integrationId: type: - 'null' - string description: Integration Id of client to update (Must pass either IntegrationId Or Client Number) number: type: - 'null' - string description: Number of client to update (Must pass either IntegrationId Or Client Number) updateFields: type: - 'null' - array items: $ref: '#/components/schemas/UpdateClientField' description: List of UpdateFields for the client. Each UpdateField has a Id and a Value. siteAddress: description: Client Site Address $ref: '#/components/schemas/Address' billingAddress: description: Client Billing Address $ref: '#/components/schemas/Address' description: Update Project PublishResponse: type: object properties: messageId: type: string description: Check the status of the transaction using this Message Id format: uuid message: type: - 'null' - string description: Success Message description: Project publish response ClientContact: type: object properties: firstName: type: - 'null' - string lastName: type: - 'null' - string company: type: - 'null' - string title: type: - 'null' - string email: type: - 'null' - string phone: type: - 'null' - string fax: type: - 'null' - string mobile: type: - 'null' - string street1: type: - 'null' - string street2: type: - 'null' - string city: type: - 'null' - string state: type: - 'null' - string postalCode: type: - 'null' - string country: type: - 'null' - string notes: type: - 'null' - string description: Client contact object UpdateClientField: type: object properties: clientFieldId: pattern: ^-?(?:0|[1-9]\d*)$ type: - integer - string description: 'ClientFieldId (pass the correct Id for the field you want to udpate) Name = 1, Number = 2, Phone = 3, Fax = 4, Email = 5, Website = 6, Inactive = 7, IntegrationId = 8 CustomField1 = 101, CustomField2 = 102, CustomField3 = 103, CustomField4 = 104, CustomField5 = 105, CustomField6 = 106, CustomField7 = 107, CustomField8 = 108, CustomField9 = 109, CustomField10 = 110, CustomField11 = 111, CustomField12 = 112, CustomField13 = 113, CustomField14 = 114, CustomField15 = 115, CustomField16 = 116, CustomField17 = 117, CustomField18 = 118, CustomField19 = 119, CustomField20 = 120, CustomField21 = 121, CustomField22 = 122, CustomField23 = 123, CustomField24 = 124' format: uint8 value: type: - 'null' - string description: Value for the client field. Datetime and decimal should be invariant. ClientList: type: object properties: id: type: - 'null' - string description: Unique Id for the client (Required) name: type: - 'null' - string description: Name for the client list (Required) description: type: - 'null' - string description: Client list description clients: type: - 'null' - array items: $ref: '#/components/schemas/Client' description: Client list. description: Client List objects Client: type: object properties: id: type: - 'null' - string description: Unique Id for the client (must be Guid). Client will be created in SI with this Guid and will be used to update client. name: type: - 'null' - string description: Client name (Required) number: type: - 'null' - string description: Number integrationId: type: - 'null' - string description: Optional Id provided by the Integration for client. The IntegrationId can be used to update clients phone: type: - 'null' - string description: Phone fax: type: - 'null' - string description: Fax email: type: - 'null' - string description: Email webSite: type: - 'null' - string description: Web site clientType: type: - 'null' - string description: Client Type - must be Lead or Prospect or Client leadSource: type: - 'null' - string description: Lead source tax: type: - 'null' - string description: Tax laborTax: type: - 'null' - string description: Labor tax createdOn: type: string description: Date the client was created (UTC Time) format: date-time updatedOn: type: string description: Date the client was updated (UTC Time) format: date-time updatedBy: type: - 'null' - string description: Client Updated By publishedBy: type: - 'null' - string description: Client Published By clientAddresses: type: - 'null' - array items: $ref: '#/components/schemas/ClientAddress' description: Client addresses for client clientContacts: type: - 'null' - array items: $ref: '#/components/schemas/ClientContact' description: Client contacts for client customField1: type: - 'null' - string description: CustomField1 (Text) (BETA). customField2: type: - 'null' - string description: CustomField2 (Text) (BETA). customField3: type: - 'null' - string description: CustomField3 (Text) (BETA). customField4: type: - 'null' - string description: CustomField4 (Text) (BETA). customField5: type: - 'null' - string description: CustomField5 (Text) (BETA). customField6: type: - 'null' - boolean description: CustomField6 (Boolean) (BETA). customField7: type: - 'null' - boolean description: CustomField7 (Boolean) (BETA). customField8: type: - 'null' - boolean description: CustomField8 (Boolean) (BETA). customField9: type: - 'null' - boolean description: CustomField9 (Boolean) (BETA). customField10: type: - 'null' - boolean description: CustomField10 (Boolean) (BETA). customField11: type: - 'null' - string description: CustomField11 (Date) (BETA). format: date-time customField12: type: - 'null' - string description: CustomField12 (Date) (BETA). format: date-time customField13: type: - 'null' - string description: CustomField13 (Date) (BETA). format: date-time customField14: type: - 'null' - string description: CustomField14 (Date) (BETA). format: date-time customField15: type: - 'null' - string description: CustomField15 (Date) (BETA). format: date-time customField16: type: - 'null' - string description: CustomField16 (List) (BETA). customField17: type: - 'null' - string description: CustomField17 (List) (BETA). customField18: type: - 'null' - string description: CustomField18 (List) (BETA). customField19: type: - 'null' - string description: CustomField19 (List) (BETA). customField20: type: - 'null' - string description: CustomField20 (List) (BETA). customField21: type: - 'null' - string description: CustomField21 (Hyperlink) (BETA). customField22: type: - 'null' - string description: CustomField22 (Hyperlink) (BETA). customField23: type: - 'null' - string description: CustomField23 (Hyperlink) (BETA). customField24: type: - 'null' - string description: CustomField24 (Hyperlink) (BETA). description: Client object Address: type: object properties: street1: type: - 'null' - string street2: type: - 'null' - string city: type: - 'null' - string state: type: - 'null' - string postalCode: type: - 'null' - string country: type: - 'null' - string phone: type: - 'null' - string fax: type: - 'null' - string ClientAddress: type: object properties: typeId: pattern: ^-?(?:0|[1-9]\d*)$ type: - integer - string description: Client Addres Type - must be type 1 = Billing, 2 = Site, 3 = Other format: uint8 name: type: - 'null' - string street1: type: - 'null' - string street2: type: - 'null' - string city: type: - 'null' - string state: type: - 'null' - string postalCode: type: - 'null' - string country: type: - 'null' - string phone: type: - 'null' - string fax: type: - 'null' - string description: Client address object