From d3f1d5a5d9d5a0ba920e7af304ecc65025218570 Mon Sep 17 00:00:00 2001 From: amitsendinblue Date: Mon, 13 Feb 2023 12:43:03 +0530 Subject: [PATCH 1/3] AST-8-V4.0.0 --- .vs/sib_api_v3_sdk/DesignTimeBuild/.dtbcache | Bin 0 -> 153734 bytes .vs/sib_api_v3_sdk/v15/Server/sqlite3/db.lock | 0 .../v15/Server/sqlite3/storage.ide | Bin 0 -> 4096 bytes .../v15/Server/sqlite3/storage.ide-shm | Bin 0 -> 32768 bytes .../v15/Server/sqlite3/storage.ide-wal | Bin 0 -> 1194832 bytes LICENSE.txt | 2 +- README.md | 158 +- docs/AttributesApi.md | 287 --- docs/Body.md | 14 +- docs/Body1.md | 14 +- docs/Body10.md | 12 + docs/Body11.md | 9 + docs/Body12.md | 12 + docs/Body2.md | 12 + docs/Body3.md | 10 + docs/Body4.md | 10 + docs/Body5.md | 12 + docs/Body6.md | 19 + docs/Body7.md | 18 + docs/Body8.md | 14 + docs/Body9.md | 9 + docs/BodyVariablesItems.md | 8 + docs/CompaniesApi.md | 501 +++++ docs/CompaniesList.md | 9 + docs/Company.md | 12 + docs/CompanyAttributes.md | 8 + docs/CompanyAttributesInner.md | 13 + docs/ComponentItems.md | 10 + docs/Contact.md | 16 - docs/ContactsApi.md | 8 +- docs/{ListsApi.md => ConversationsApi.md} | 277 ++- docs/ConversationsMessage.md | 18 + docs/ConversationsMessageFile.md | 13 + docs/ConversationsMessageFileImageInfo.md | 11 + docs/CreateApiKeyRequest.md | 10 + docs/CreateApiKeyResponse.md | 10 + docs/CreateAttribute.md | 1 + docs/CreateCategoryModel.md | 9 + docs/CreateContact.md | 2 +- docs/CreateEmailCampaign.md | 2 + docs/CreateEmailCampaignRecipients.md | 1 + docs/CreateProductModel.md | 9 + docs/CreateSmsCampaign.md | 2 + docs/CreateSubAccount.md | 6 +- docs/CreateSubAccountResponse.md | 9 + docs/CreateUpdateBatchCategory.md | 10 + docs/CreateUpdateBatchCategoryModel.md | 10 + docs/CreateUpdateBatchProducts.md | 10 + docs/CreateUpdateBatchProductsModel.md | 10 + docs/CreateUpdateCategories.md | 11 + docs/CreateUpdateCategory.md | 12 + docs/CreateUpdateProduct.md | 18 + docs/CreateUpdateProducts.md | 17 + docs/CreatedBatchId.md | 9 + docs/Deal.md | 12 + docs/DealAttributes.md | 8 + docs/DealAttributesInner.md | 13 + docs/DealsApi.md | 565 ++++++ docs/DealsList.md | 9 + docs/{CRMApi.md => EcommerceApi.md} | 441 ++-- docs/EmailCampaignsApi.md | 11 +- docs/FileData.md | 9 +- docs/FileDownloadableLink.md | 9 + docs/FileList.md | 8 + docs/FilesApi.md | 370 ++++ docs/GetCampaignStats.md | 2 + docs/GetCategories.md | 10 + docs/GetCategoryDetails.md | 13 + docs/GetProductDetails.md | 22 + docs/GetProducts.md | 10 + docs/GetScheduledEmailByBatchId.md | 10 + docs/GetScheduledEmailByBatchIdBatches.md | 11 + docs/GetScheduledEmailByMessageId.md | 11 + docs/GetSsoToken.md | 2 +- docs/GetWebhook.md | 2 +- docs/GetWhatsappCampaignOverview.md | 17 + docs/InboundParsingApi.md | 71 + docs/InlineResponse200.md | 9 + docs/InlineResponse201.md | 9 + docs/InlineResponse2011.md | 9 + docs/MasterAccountApi.md | 85 +- docs/NoteData.md | 1 + docs/NoteId.md | 9 + docs/NoteList.md | 8 + docs/NotesApi.md | 365 ++++ docs/Order.md | 17 + docs/OrderBatch.md | 10 + docs/OrderBilling.md | 15 + docs/OrderProducts.md | 12 + docs/Pipeline.md | 9 + docs/PipelineStage.md | 10 + docs/ScheduleSmtpEmail.md | 11 + docs/SendSmtpEmail.md | 2 + docs/SendTransacSms.md | 1 + ...ubAccountDetailsResponsePlanInfoCredits.md | 2 +- docs/SubAccountsResponseSubAccounts.md | 8 +- docs/Task.md | 11 - docs/TaskList.md | 9 + docs/TaskReminder.md | 2 +- docs/TaskTypes.md | 1 - docs/{FoldersApi.md => TasksApi.md} | 198 +- docs/TransactionalEmailsApi.md | 232 ++- docs/UpdateContact.md | 2 +- docs/UpdateEmailCampaign.md | 4 +- docs/UpdateEmailCampaignRecipients.md | 3 +- docs/UpdateSmsCampaign.md | 2 + docs/UpdateSmtpTemplate.md | 2 +- docs/UploadImageModel.md | 9 + docs/VariablesItems.md | 11 + docs/WhatsappCampStats.md | 13 + docs/WhatsappCampTemplate.md | 19 + docs/WhatsappCampaignsApi.md | 145 ++ sib_api_v3_sdk.sln | 12 +- src/sib_api_v3_sdk/Api/CompaniesApi.cs | 1617 +++++++++++++++ src/sib_api_v3_sdk/Api/ContactsApi.cs | 40 +- .../Api/{ListsApi.cs => ConversationsApi.cs} | 1218 ++++++----- src/sib_api_v3_sdk/Api/DealsApi.cs | 1796 +++++++++++++++++ .../Api/{CRMApi.cs => EcommerceApi.cs} | 1596 ++++++--------- src/sib_api_v3_sdk/Api/EmailCampaignsApi.cs | 62 +- src/sib_api_v3_sdk/Api/FilesApi.cs | 1197 +++++++++++ src/sib_api_v3_sdk/Api/InboundParsingApi.cs | 197 ++ src/sib_api_v3_sdk/Api/MasterAccountApi.cs | 303 ++- .../Api/{AttributesApi.cs => NotesApi.cs} | 753 ++++--- .../Api/{FoldersApi.cs => TasksApi.cs} | 862 ++++---- .../Api/TransactionalEmailsApi.cs | 685 ++++++- .../Api/WhatsappCampaignsApi.cs | 522 +++++ src/sib_api_v3_sdk/Client/ApiClient.cs | 2 +- src/sib_api_v3_sdk/Client/Configuration.cs | 2 +- src/sib_api_v3_sdk/Model/Body.cs | 207 +- src/sib_api_v3_sdk/Model/Body1.cs | 222 +- src/sib_api_v3_sdk/Model/Body10.cs | 185 ++ src/sib_api_v3_sdk/Model/Body11.cs | 126 ++ src/sib_api_v3_sdk/Model/Body12.cs | 164 ++ src/sib_api_v3_sdk/Model/Body2.cs | 164 ++ src/sib_api_v3_sdk/Model/Body3.cs | 143 ++ src/sib_api_v3_sdk/Model/Body4.cs | 130 ++ src/sib_api_v3_sdk/Model/Body5.cs | 164 ++ src/sib_api_v3_sdk/Model/Body6.cs | 311 +++ src/sib_api_v3_sdk/Model/Body7.cs | 266 +++ src/sib_api_v3_sdk/Model/Body8.cs | 219 ++ src/sib_api_v3_sdk/Model/Body9.cs | 126 ++ .../Model/BodyVariablesItems.cs | 97 + src/sib_api_v3_sdk/Model/CompaniesList.cs | 113 ++ src/sib_api_v3_sdk/Model/Company.cs | 164 ++ src/sib_api_v3_sdk/Model/CompanyAttributes.cs | 98 + .../Model/CompanyAttributesInner.cs | 176 ++ src/sib_api_v3_sdk/Model/ComponentItems.cs | 128 ++ src/sib_api_v3_sdk/Model/Contact.cs | 253 --- .../Model/ConversationsMessage.cs | 286 +++ .../Model/ConversationsMessageFile.cs | 180 ++ .../ConversationsMessageFileImageInfo.cs | 147 ++ .../Model/CreateApiKeyRequest.cs | 143 ++ .../Model/CreateApiKeyResponse.cs | 130 ++ src/sib_api_v3_sdk/Model/CreateAttribute.cs | 19 +- .../Model/CreateCategoryModel.cs | 113 ++ src/sib_api_v3_sdk/Model/CreateContact.cs | 6 +- .../Model/CreateEmailCampaign.cs | 36 +- .../Model/CreateEmailCampaignRecipients.cs | 21 +- .../Model/CreateProductModel.cs | 113 ++ src/sib_api_v3_sdk/Model/CreateSmsCampaign.cs | 36 +- src/sib_api_v3_sdk/Model/CreateSubAccount.cs | 22 +- .../Model/CreateSubAccountResponse.cs | 126 ++ .../Model/CreateUpdateBatchCategory.cs | 143 ++ .../Model/CreateUpdateBatchCategoryModel.cs | 130 ++ .../Model/CreateUpdateBatchProducts.cs | 143 ++ .../Model/CreateUpdateBatchProductsModel.cs | 130 ++ .../Model/CreateUpdateCategories.cs | 160 ++ .../Model/CreateUpdateCategory.cs | 185 ++ .../Model/CreateUpdateProduct.cs | 295 +++ .../Model/CreateUpdateProducts.cs | 270 +++ src/sib_api_v3_sdk/Model/CreatedBatchId.cs | 126 ++ src/sib_api_v3_sdk/Model/Deal.cs | 164 ++ src/sib_api_v3_sdk/Model/DealAttributes.cs | 98 + .../Model/DealAttributesInner.cs | 176 ++ src/sib_api_v3_sdk/Model/DealsList.cs | 113 ++ src/sib_api_v3_sdk/Model/FileData.cs | 117 +- .../Model/FileDownloadableLink.cs | 126 ++ src/sib_api_v3_sdk/Model/FileList.cs | 98 + src/sib_api_v3_sdk/Model/GetCampaignStats.cs | 36 +- src/sib_api_v3_sdk/Model/GetCategories.cs | 150 ++ .../Model/GetCategoryDetails.cs | 218 ++ src/sib_api_v3_sdk/Model/GetProductDetails.cs | 387 ++++ src/sib_api_v3_sdk/Model/GetProducts.cs | 150 ++ .../Model/GetScheduledEmailByBatchId.cs | 129 ++ .../GetScheduledEmailByBatchIdBatches.cs | 209 ++ .../Model/GetScheduledEmailByMessageId.cs | 209 ++ src/sib_api_v3_sdk/Model/GetSsoToken.cs | 6 +- src/sib_api_v3_sdk/Model/GetWebhook.cs | 16 +- .../Model/GetWhatsappCampaignOverview.cs | 365 ++++ src/sib_api_v3_sdk/Model/InlineResponse200.cs | 126 ++ src/sib_api_v3_sdk/Model/InlineResponse201.cs | 126 ++ .../Model/InlineResponse2011.cs | 126 ++ src/sib_api_v3_sdk/Model/NoteData.cs | 19 +- src/sib_api_v3_sdk/Model/NoteId.cs | 113 ++ src/sib_api_v3_sdk/Model/NoteList.cs | 98 + src/sib_api_v3_sdk/Model/Order.cs | 300 +++ src/sib_api_v3_sdk/Model/OrderBatch.cs | 143 ++ src/sib_api_v3_sdk/Model/OrderBilling.cs | 215 ++ src/sib_api_v3_sdk/Model/OrderProducts.cs | 193 ++ src/sib_api_v3_sdk/Model/Pipeline.cs | 113 ++ src/sib_api_v3_sdk/Model/PipelineStage.cs | 130 ++ src/sib_api_v3_sdk/Model/ScheduleSmtpEmail.cs | 146 ++ src/sib_api_v3_sdk/Model/SendSmtpEmail.cs | 58 +- src/sib_api_v3_sdk/Model/SendTransacSms.cs | 19 +- ...ubAccountDetailsResponsePlanInfoCredits.cs | 8 +- ...untDetailsResponsePlanInfoCreditsEmails.cs | 2 +- ...bAccountDetailsResponsePlanInfoFeatures.cs | 2 +- .../Model/SubAccountsResponseSubAccounts.cs | 24 +- src/sib_api_v3_sdk/Model/Task.cs | 195 +- src/sib_api_v3_sdk/Model/TaskList.cs | 113 ++ src/sib_api_v3_sdk/Model/TaskReminder.cs | 6 +- src/sib_api_v3_sdk/Model/TaskTypes.cs | 19 +- .../Model/UpdateBatchContactsContacts.cs | 6 +- src/sib_api_v3_sdk/Model/UpdateContact.cs | 6 +- .../Model/UpdateEmailCampaign.cs | 42 +- .../Model/UpdateEmailCampaignRecipients.cs | 27 +- src/sib_api_v3_sdk/Model/UpdateSmsCampaign.cs | 36 +- .../Model/UpdateSmtpTemplate.cs | 6 +- src/sib_api_v3_sdk/Model/UploadImageModel.cs | 126 ++ src/sib_api_v3_sdk/Model/VariablesItems.cs | 144 ++ src/sib_api_v3_sdk/Model/WhatsappCampStats.cs | 221 ++ .../Model/WhatsappCampTemplate.cs | 279 +++ src/sib_api_v3_sdk/sib_api_v3_sdk.csproj | 5 +- 223 files changed, 23452 insertions(+), 4362 deletions(-) create mode 100644 .vs/sib_api_v3_sdk/DesignTimeBuild/.dtbcache create mode 100644 .vs/sib_api_v3_sdk/v15/Server/sqlite3/db.lock create mode 100644 .vs/sib_api_v3_sdk/v15/Server/sqlite3/storage.ide create mode 100644 .vs/sib_api_v3_sdk/v15/Server/sqlite3/storage.ide-shm create mode 100644 .vs/sib_api_v3_sdk/v15/Server/sqlite3/storage.ide-wal delete mode 100644 docs/AttributesApi.md create mode 100644 docs/Body10.md create mode 100644 docs/Body11.md create mode 100644 docs/Body12.md create mode 100644 docs/Body2.md create mode 100644 docs/Body3.md create mode 100644 docs/Body4.md create mode 100644 docs/Body5.md create mode 100644 docs/Body6.md create mode 100644 docs/Body7.md create mode 100644 docs/Body8.md create mode 100644 docs/Body9.md create mode 100644 docs/BodyVariablesItems.md create mode 100644 docs/CompaniesApi.md create mode 100644 docs/CompaniesList.md create mode 100644 docs/Company.md create mode 100644 docs/CompanyAttributes.md create mode 100644 docs/CompanyAttributesInner.md create mode 100644 docs/ComponentItems.md delete mode 100644 docs/Contact.md rename docs/{ListsApi.md => ConversationsApi.md} (58%) create mode 100644 docs/ConversationsMessage.md create mode 100644 docs/ConversationsMessageFile.md create mode 100644 docs/ConversationsMessageFileImageInfo.md create mode 100644 docs/CreateApiKeyRequest.md create mode 100644 docs/CreateApiKeyResponse.md create mode 100644 docs/CreateCategoryModel.md create mode 100644 docs/CreateProductModel.md create mode 100644 docs/CreateSubAccountResponse.md create mode 100644 docs/CreateUpdateBatchCategory.md create mode 100644 docs/CreateUpdateBatchCategoryModel.md create mode 100644 docs/CreateUpdateBatchProducts.md create mode 100644 docs/CreateUpdateBatchProductsModel.md create mode 100644 docs/CreateUpdateCategories.md create mode 100644 docs/CreateUpdateCategory.md create mode 100644 docs/CreateUpdateProduct.md create mode 100644 docs/CreateUpdateProducts.md create mode 100644 docs/CreatedBatchId.md create mode 100644 docs/Deal.md create mode 100644 docs/DealAttributes.md create mode 100644 docs/DealAttributesInner.md create mode 100644 docs/DealsApi.md create mode 100644 docs/DealsList.md rename docs/{CRMApi.md => EcommerceApi.md} (59%) create mode 100644 docs/FileDownloadableLink.md create mode 100644 docs/FileList.md create mode 100644 docs/FilesApi.md create mode 100644 docs/GetCategories.md create mode 100644 docs/GetCategoryDetails.md create mode 100644 docs/GetProductDetails.md create mode 100644 docs/GetProducts.md create mode 100644 docs/GetScheduledEmailByBatchId.md create mode 100644 docs/GetScheduledEmailByBatchIdBatches.md create mode 100644 docs/GetScheduledEmailByMessageId.md create mode 100644 docs/GetWhatsappCampaignOverview.md create mode 100644 docs/InlineResponse200.md create mode 100644 docs/InlineResponse201.md create mode 100644 docs/InlineResponse2011.md create mode 100644 docs/NoteId.md create mode 100644 docs/NoteList.md create mode 100644 docs/NotesApi.md create mode 100644 docs/Order.md create mode 100644 docs/OrderBatch.md create mode 100644 docs/OrderBilling.md create mode 100644 docs/OrderProducts.md create mode 100644 docs/Pipeline.md create mode 100644 docs/PipelineStage.md create mode 100644 docs/ScheduleSmtpEmail.md create mode 100644 docs/TaskList.md rename docs/{FoldersApi.md => TasksApi.md} (60%) create mode 100644 docs/UploadImageModel.md create mode 100644 docs/VariablesItems.md create mode 100644 docs/WhatsappCampStats.md create mode 100644 docs/WhatsappCampTemplate.md create mode 100644 docs/WhatsappCampaignsApi.md create mode 100644 src/sib_api_v3_sdk/Api/CompaniesApi.cs rename src/sib_api_v3_sdk/Api/{ListsApi.cs => ConversationsApi.cs} (56%) create mode 100644 src/sib_api_v3_sdk/Api/DealsApi.cs rename src/sib_api_v3_sdk/Api/{CRMApi.cs => EcommerceApi.cs} (60%) create mode 100644 src/sib_api_v3_sdk/Api/FilesApi.cs rename src/sib_api_v3_sdk/Api/{AttributesApi.cs => NotesApi.cs} (51%) rename src/sib_api_v3_sdk/Api/{FoldersApi.cs => TasksApi.cs} (60%) create mode 100644 src/sib_api_v3_sdk/Api/WhatsappCampaignsApi.cs create mode 100644 src/sib_api_v3_sdk/Model/Body10.cs create mode 100644 src/sib_api_v3_sdk/Model/Body11.cs create mode 100644 src/sib_api_v3_sdk/Model/Body12.cs create mode 100644 src/sib_api_v3_sdk/Model/Body2.cs create mode 100644 src/sib_api_v3_sdk/Model/Body3.cs create mode 100644 src/sib_api_v3_sdk/Model/Body4.cs create mode 100644 src/sib_api_v3_sdk/Model/Body5.cs create mode 100644 src/sib_api_v3_sdk/Model/Body6.cs create mode 100644 src/sib_api_v3_sdk/Model/Body7.cs create mode 100644 src/sib_api_v3_sdk/Model/Body8.cs create mode 100644 src/sib_api_v3_sdk/Model/Body9.cs create mode 100644 src/sib_api_v3_sdk/Model/BodyVariablesItems.cs create mode 100644 src/sib_api_v3_sdk/Model/CompaniesList.cs create mode 100644 src/sib_api_v3_sdk/Model/Company.cs create mode 100644 src/sib_api_v3_sdk/Model/CompanyAttributes.cs create mode 100644 src/sib_api_v3_sdk/Model/CompanyAttributesInner.cs create mode 100644 src/sib_api_v3_sdk/Model/ComponentItems.cs delete mode 100644 src/sib_api_v3_sdk/Model/Contact.cs create mode 100644 src/sib_api_v3_sdk/Model/ConversationsMessage.cs create mode 100644 src/sib_api_v3_sdk/Model/ConversationsMessageFile.cs create mode 100644 src/sib_api_v3_sdk/Model/ConversationsMessageFileImageInfo.cs create mode 100644 src/sib_api_v3_sdk/Model/CreateApiKeyRequest.cs create mode 100644 src/sib_api_v3_sdk/Model/CreateApiKeyResponse.cs create mode 100644 src/sib_api_v3_sdk/Model/CreateCategoryModel.cs create mode 100644 src/sib_api_v3_sdk/Model/CreateProductModel.cs create mode 100644 src/sib_api_v3_sdk/Model/CreateSubAccountResponse.cs create mode 100644 src/sib_api_v3_sdk/Model/CreateUpdateBatchCategory.cs create mode 100644 src/sib_api_v3_sdk/Model/CreateUpdateBatchCategoryModel.cs create mode 100644 src/sib_api_v3_sdk/Model/CreateUpdateBatchProducts.cs create mode 100644 src/sib_api_v3_sdk/Model/CreateUpdateBatchProductsModel.cs create mode 100644 src/sib_api_v3_sdk/Model/CreateUpdateCategories.cs create mode 100644 src/sib_api_v3_sdk/Model/CreateUpdateCategory.cs create mode 100644 src/sib_api_v3_sdk/Model/CreateUpdateProduct.cs create mode 100644 src/sib_api_v3_sdk/Model/CreateUpdateProducts.cs create mode 100644 src/sib_api_v3_sdk/Model/CreatedBatchId.cs create mode 100644 src/sib_api_v3_sdk/Model/Deal.cs create mode 100644 src/sib_api_v3_sdk/Model/DealAttributes.cs create mode 100644 src/sib_api_v3_sdk/Model/DealAttributesInner.cs create mode 100644 src/sib_api_v3_sdk/Model/DealsList.cs create mode 100644 src/sib_api_v3_sdk/Model/FileDownloadableLink.cs create mode 100644 src/sib_api_v3_sdk/Model/FileList.cs create mode 100644 src/sib_api_v3_sdk/Model/GetCategories.cs create mode 100644 src/sib_api_v3_sdk/Model/GetCategoryDetails.cs create mode 100644 src/sib_api_v3_sdk/Model/GetProductDetails.cs create mode 100644 src/sib_api_v3_sdk/Model/GetProducts.cs create mode 100644 src/sib_api_v3_sdk/Model/GetScheduledEmailByBatchId.cs create mode 100644 src/sib_api_v3_sdk/Model/GetScheduledEmailByBatchIdBatches.cs create mode 100644 src/sib_api_v3_sdk/Model/GetScheduledEmailByMessageId.cs create mode 100644 src/sib_api_v3_sdk/Model/GetWhatsappCampaignOverview.cs create mode 100644 src/sib_api_v3_sdk/Model/InlineResponse200.cs create mode 100644 src/sib_api_v3_sdk/Model/InlineResponse201.cs create mode 100644 src/sib_api_v3_sdk/Model/InlineResponse2011.cs create mode 100644 src/sib_api_v3_sdk/Model/NoteId.cs create mode 100644 src/sib_api_v3_sdk/Model/NoteList.cs create mode 100644 src/sib_api_v3_sdk/Model/Order.cs create mode 100644 src/sib_api_v3_sdk/Model/OrderBatch.cs create mode 100644 src/sib_api_v3_sdk/Model/OrderBilling.cs create mode 100644 src/sib_api_v3_sdk/Model/OrderProducts.cs create mode 100644 src/sib_api_v3_sdk/Model/Pipeline.cs create mode 100644 src/sib_api_v3_sdk/Model/PipelineStage.cs create mode 100644 src/sib_api_v3_sdk/Model/ScheduleSmtpEmail.cs create mode 100644 src/sib_api_v3_sdk/Model/TaskList.cs create mode 100644 src/sib_api_v3_sdk/Model/UploadImageModel.cs create mode 100644 src/sib_api_v3_sdk/Model/VariablesItems.cs create mode 100644 src/sib_api_v3_sdk/Model/WhatsappCampStats.cs create mode 100644 src/sib_api_v3_sdk/Model/WhatsappCampTemplate.cs diff --git a/.vs/sib_api_v3_sdk/DesignTimeBuild/.dtbcache b/.vs/sib_api_v3_sdk/DesignTimeBuild/.dtbcache new file mode 100644 index 0000000000000000000000000000000000000000..a85c9d4ee62352e2d8adf375651ecca339a1cde3 GIT binary patch literal 153734 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 literal 0 HcmV?d00001 diff --git a/.vs/sib_api_v3_sdk/v15/Server/sqlite3/db.lock b/.vs/sib_api_v3_sdk/v15/Server/sqlite3/db.lock new file mode 100644 index 0000000..e69de29 diff --git a/.vs/sib_api_v3_sdk/v15/Server/sqlite3/storage.ide b/.vs/sib_api_v3_sdk/v15/Server/sqlite3/storage.ide new file mode 100644 index 0000000000000000000000000000000000000000..56758a88b356f5fc284d2b23256cb2a77affde45 GIT binary patch literal 4096 zcmWFz^vNtqRY=P(%1ta$FlG>7U}9o$P*7lCU|@t|AVoG{WYA-E8MMY1k!}PC+S?R4I`Lk#3L>MLI;31`7~SIu(_aQdAUFSQHlQ0;EGR zKt&~N@p+fsac2biotg8^9cR9G=HVXhKKFgk{hjmgd2igY@~Nz{K~$<#Ig0boUmPD? z{e66kgtm1y#veZ%v*}Rvc4x1z(0fCngt&md^|p$o@A(vU;oX1!<g3OQwvVwi5?2rR;LJY)0F31geATQWV`@H=><$0v+YrX96 zagY!4gMH3s+Iz|8lzhGgc&{K7g2GS)ib63c4ke%@Tmhw^G+YT+K^Z6u<-o2^1-Kfn zfotJ9xE^kRickqELlvkB)xf?-^10Z#-3T|q%}^a`KuxFxwc!@11Ghq5s0a0-0W^e0 z&={IPQ@9P9!R^o-T0l!^1+AeCw1sxi9y&lr=medi3v`7$pc{0D9?%o+gkEqL+zq|q z9_Ryop&#^z0Wc5-!C)8yL*ZT+2KT{mxE~&X5ik-)!Dtu*V__VOhY9c?JOmHJBk(9p zgh?YQcSvUtj!!PhF{06_nAMhvq1-^U& zJ^`PAPrxVO6YvT61bhNM0iS?Rz$f4n@Co`7>?>>1ne>sGm?JqI1h8X^z3C!fQw!fY5QBek`s(6!2H4^@X=UF44T40`w# z#h!`u?0(41zK9a+RcOU?<+(2UO()93?dkIHtFGMAHULDjhRVZ_$Yv0+h%7%Po7paU zPsks?gxK{G@BjO4+rAKfrDj7)NvZ85$ui0IDuiG4^AdiQ zlUv%(9j$UWx%<0m!?A4RPWY9Mtyra`wvS1cNw!NT{AwV#w0%dBto!8Qw&5uJDlfOR zZBtt1baMB1*M?)+eyQ*)1N+ljOKqn}mPxinD*S3Fx3o=Pk*wkJaNF$_epQrPJ}a9s zPVW95@_gH@7JfyuIk1h?cB*8VWc$;?uSRl9+i@4kx?dh{TkXQHN^;93vKbqd$HD#I zQ=V@-1;ejQa?5G5>1K0aV|l)9cZ_5`AP={Fj^S5jx#d#X%I|bXO8GdD9 zgKS$iXXd`_w|iV3eqJ_%h)rbK_L@erM##f$lWF)>MQ*uFHsdaPf5@#;h`mxA|M#Ko zkqy6cvVXa>)bO`$c6t65*>oe0k=ve3 z{G9?>7sZ=I@4~M~XmUX(*YqB3IM#023?k;1>4BLByM7 zd6jGya&k@k$n*EeW)Lw?;;#xRpO~#kiB38vNwtvYZ*6;^dn4ljrZ1%^+f& zEYFqA3{H}2C(nONHrWiyCaOP1HkW-%w%bbvg6zib8(^ULyl+05u9sSfh|?Xu}cd`ND4MmB?p zwPpEv*|gvM4ZjA;Ef2_M5V3$PFObblPLk><&rgs|H{!!`+q1G6M7%|oUyw~V;vl*0 zLD>u<7L?_MvYFY*-QP)`ze6_Nh>yr^&&g&Gv5qXSmrXa~V7cuf*$g5UlI2CRnZ?Q7 N-&vl&Q#ON$e*+HIFM7SbhCTk=b2~b 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%0DH3Mr`eWTKvA4 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 literal 0 HcmV?d00001 diff --git a/LICENSE.txt b/LICENSE.txt index ea594db..2c3ec28 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2020 SendinBlue +Copyright (c) 2023 SendinBlue Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 851fb9b..023a26b 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ SendinBlue's API matches the [OpenAPI v2 definition](https://www.openapis.org/). This C# SDK is automatically generated by the [Swagger Codegen](https://github.com/swagger-api/swagger-codegen) project and is reviewed and maintained by SendinBlue: - API version: 3.0.0 -- SDK version: 3.3.0 +- SDK version: 4.0.0 - Build package: io.swagger.codegen.languages.CSharpClientCodegen For more information, please visit [https://account.sendinblue.com/support](https://account.sendinblue.com/support) @@ -89,23 +89,13 @@ All URIs are relative to *https://api.sendinblue.com/v3* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- *AccountApi* | [**GetAccount**](docs/AccountApi.md#getaccount) | **GET** /account | Get your account information, plan and credits details -*AttributesApi* | [**CreateAttribute**](docs/AttributesApi.md#createattribute) | **POST** /contacts/attributes/{attributeCategory}/{attributeName} | Create contact attribute -*AttributesApi* | [**DeleteAttribute**](docs/AttributesApi.md#deleteattribute) | **DELETE** /contacts/attributes/{attributeCategory}/{attributeName} | Delete an attribute -*AttributesApi* | [**GetAttributes**](docs/AttributesApi.md#getattributes) | **GET** /contacts/attributes | List all attributes -*AttributesApi* | [**UpdateAttribute**](docs/AttributesApi.md#updateattribute) | **PUT** /contacts/attributes/{attributeCategory}/{attributeName} | Update contact attribute -*CRMApi* | [**CrmFilesIdDataGet**](docs/CRMApi.md#crmfilesiddataget) | **GET** /crm/files/{id}/data | Get file details -*CRMApi* | [**CrmFilesIdDelete**](docs/CRMApi.md#crmfilesiddelete) | **DELETE** /crm/files/{id} | Delete a file -*CRMApi* | [**CrmFilesIdGet**](docs/CRMApi.md#crmfilesidget) | **GET** /crm/files/{id} | Download a file -*CRMApi* | [**CrmFilesPost**](docs/CRMApi.md#crmfilespost) | **POST** /crm/files | Upload a file -*CRMApi* | [**CrmNotesIdDelete**](docs/CRMApi.md#crmnotesiddelete) | **DELETE** /crm/notes/{id} | Delete a note -*CRMApi* | [**CrmNotesIdGet**](docs/CRMApi.md#crmnotesidget) | **GET** /crm/notes/{id} | Get a note -*CRMApi* | [**CrmNotesIdPatch**](docs/CRMApi.md#crmnotesidpatch) | **PATCH** /crm/notes/{id} | Update a note -*CRMApi* | [**CrmNotesPost**](docs/CRMApi.md#crmnotespost) | **POST** /crm/notes | Create a note -*CRMApi* | [**CrmTasksIdDelete**](docs/CRMApi.md#crmtasksiddelete) | **DELETE** /crm/tasks/{id} | Delete a task -*CRMApi* | [**CrmTasksIdGet**](docs/CRMApi.md#crmtasksidget) | **GET** /crm/tasks/{id} | Get a task -*CRMApi* | [**CrmTasksIdPatch**](docs/CRMApi.md#crmtasksidpatch) | **PATCH** /crm/tasks/{id} | Update a task -*CRMApi* | [**CrmTasksPost**](docs/CRMApi.md#crmtaskspost) | **POST** /crm/tasks | Create a task -*CRMApi* | [**CrmTasktypesGet**](docs/CRMApi.md#crmtasktypesget) | **GET** /crm/tasktypes | Get all task types +*CompaniesApi* | [**CompaniesAttributesGet**](docs/CompaniesApi.md#companiesattributesget) | **GET** /companies/attributes | Get company attributes +*CompaniesApi* | [**CompaniesGet**](docs/CompaniesApi.md#companiesget) | **GET** /companies | Get all companies +*CompaniesApi* | [**CompaniesIdDelete**](docs/CompaniesApi.md#companiesiddelete) | **DELETE** /companies/{id} | Delete a company +*CompaniesApi* | [**CompaniesIdGet**](docs/CompaniesApi.md#companiesidget) | **GET** /companies/{id} | Get a company +*CompaniesApi* | [**CompaniesIdPatch**](docs/CompaniesApi.md#companiesidpatch) | **PATCH** /companies/{id} | Update a company +*CompaniesApi* | [**CompaniesLinkUnlinkIdPatch**](docs/CompaniesApi.md#companieslinkunlinkidpatch) | **PATCH** /companies/link-unlink/{id} | Link and Unlink company with contacts and deals +*CompaniesApi* | [**CompaniesPost**](docs/CompaniesApi.md#companiespost) | **POST** /companies | Create a company *ContactsApi* | [**AddContactToList**](docs/ContactsApi.md#addcontacttolist) | **POST** /contacts/lists/{listId}/contacts/add | Add existing contacts to a list *ContactsApi* | [**CreateAttribute**](docs/ContactsApi.md#createattribute) | **POST** /contacts/attributes/{attributeCategory}/{attributeName} | Create contact attribute *ContactsApi* | [**CreateContact**](docs/ContactsApi.md#createcontact) | **POST** /contacts | Create a contact @@ -134,6 +124,34 @@ Class | Method | HTTP request | Description *ContactsApi* | [**UpdateContact**](docs/ContactsApi.md#updatecontact) | **PUT** /contacts/{identifier} | Update a contact *ContactsApi* | [**UpdateFolder**](docs/ContactsApi.md#updatefolder) | **PUT** /contacts/folders/{folderId} | Update a folder *ContactsApi* | [**UpdateList**](docs/ContactsApi.md#updatelist) | **PUT** /contacts/lists/{listId} | Update a list +*ConversationsApi* | [**ConversationsAgentOnlinePingPost**](docs/ConversationsApi.md#conversationsagentonlinepingpost) | **POST** /conversations/agentOnlinePing | Sets agent’s status to online for 2-3 minutes +*ConversationsApi* | [**ConversationsMessagesIdDelete**](docs/ConversationsApi.md#conversationsmessagesiddelete) | **DELETE** /conversations/messages/{id} | Delete a message sent by an agent +*ConversationsApi* | [**ConversationsMessagesIdGet**](docs/ConversationsApi.md#conversationsmessagesidget) | **GET** /conversations/messages/{id} | Get a message +*ConversationsApi* | [**ConversationsMessagesIdPut**](docs/ConversationsApi.md#conversationsmessagesidput) | **PUT** /conversations/messages/{id} | Update a message sent by an agent +*ConversationsApi* | [**ConversationsMessagesPost**](docs/ConversationsApi.md#conversationsmessagespost) | **POST** /conversations/messages | Send a message as an agent +*ConversationsApi* | [**ConversationsPushedMessagesIdDelete**](docs/ConversationsApi.md#conversationspushedmessagesiddelete) | **DELETE** /conversations/pushedMessages/{id} | Delete an automated message +*ConversationsApi* | [**ConversationsPushedMessagesIdGet**](docs/ConversationsApi.md#conversationspushedmessagesidget) | **GET** /conversations/pushedMessages/{id} | Get an automated message +*ConversationsApi* | [**ConversationsPushedMessagesIdPut**](docs/ConversationsApi.md#conversationspushedmessagesidput) | **PUT** /conversations/pushedMessages/{id} | Update an automated message +*ConversationsApi* | [**ConversationsPushedMessagesPost**](docs/ConversationsApi.md#conversationspushedmessagespost) | **POST** /conversations/pushedMessages | Send an automated message to a visitor +*DealsApi* | [**CrmAttributesDealsGet**](docs/DealsApi.md#crmattributesdealsget) | **GET** /crm/attributes/deals | Get deal attributes +*DealsApi* | [**CrmDealsGet**](docs/DealsApi.md#crmdealsget) | **GET** /crm/deals | Get all deals +*DealsApi* | [**CrmDealsIdDelete**](docs/DealsApi.md#crmdealsiddelete) | **DELETE** /crm/deals/{id} | Delete a deal +*DealsApi* | [**CrmDealsIdGet**](docs/DealsApi.md#crmdealsidget) | **GET** /crm/deals/{id} | Get a deal +*DealsApi* | [**CrmDealsIdPatch**](docs/DealsApi.md#crmdealsidpatch) | **PATCH** /crm/deals/{id} | Update a deal +*DealsApi* | [**CrmDealsLinkUnlinkIdPatch**](docs/DealsApi.md#crmdealslinkunlinkidpatch) | **PATCH** /crm/deals/link-unlink/{id} | Link and Unlink a deal with contacts and companies +*DealsApi* | [**CrmDealsPost**](docs/DealsApi.md#crmdealspost) | **POST** /crm/deals | Create a deal +*DealsApi* | [**CrmPipelineDetailsGet**](docs/DealsApi.md#crmpipelinedetailsget) | **GET** /crm/pipeline/details | Get pipeline stages +*EcommerceApi* | [**CreateBatchOrder**](docs/EcommerceApi.md#createbatchorder) | **POST** /orders/status/batch | Maintains a batch of orders +*EcommerceApi* | [**CreateOrder**](docs/EcommerceApi.md#createorder) | **POST** /orders/status | Maintains every transactional status of the order +*EcommerceApi* | [**CreateUpdateBatchCategory**](docs/EcommerceApi.md#createupdatebatchcategory) | **POST** /categories/batch | Create the categories in a batch +*EcommerceApi* | [**CreateUpdateBatchProducts**](docs/EcommerceApi.md#createupdatebatchproducts) | **POST** /products/batch | Creates the products in a batch +*EcommerceApi* | [**CreateUpdateCategory**](docs/EcommerceApi.md#createupdatecategory) | **POST** /categories | Create/Update a category +*EcommerceApi* | [**CreateUpdateProduct**](docs/EcommerceApi.md#createupdateproduct) | **POST** /products | Create/Update a product +*EcommerceApi* | [**EcommerceActivatePost**](docs/EcommerceApi.md#ecommerceactivatepost) | **POST** /ecommerce/activate | **Fulfills the eCommerce pre-requisites** +*EcommerceApi* | [**GetCategories**](docs/EcommerceApi.md#getcategories) | **GET** /categories | Return all your categories +*EcommerceApi* | [**GetCategoryInfo**](docs/EcommerceApi.md#getcategoryinfo) | **GET** /categories/{id} | Get a category details +*EcommerceApi* | [**GetProductInfo**](docs/EcommerceApi.md#getproductinfo) | **GET** /products/{id} | Get a product's details +*EcommerceApi* | [**GetProducts**](docs/EcommerceApi.md#getproducts) | **GET** /products | Return all your products *EmailCampaignsApi* | [**CreateEmailCampaign**](docs/EmailCampaignsApi.md#createemailcampaign) | **POST** /emailCampaigns | Create an email campaign *EmailCampaignsApi* | [**DeleteEmailCampaign**](docs/EmailCampaignsApi.md#deleteemailcampaign) | **DELETE** /emailCampaigns/{campaignId} | Delete an email campaign *EmailCampaignsApi* | [**EmailExportRecipients**](docs/EmailCampaignsApi.md#emailexportrecipients) | **POST** /emailCampaigns/{campaignId}/exportRecipients | Export the recipients of an email campaign @@ -147,30 +165,27 @@ Class | Method | HTTP request | Description *EmailCampaignsApi* | [**UpdateCampaignStatus**](docs/EmailCampaignsApi.md#updatecampaignstatus) | **PUT** /emailCampaigns/{campaignId}/status | Update an email campaign status *EmailCampaignsApi* | [**UpdateEmailCampaign**](docs/EmailCampaignsApi.md#updateemailcampaign) | **PUT** /emailCampaigns/{campaignId} | Update an email campaign *EmailCampaignsApi* | [**UploadImageToGallery**](docs/EmailCampaignsApi.md#uploadimagetogallery) | **POST** /emailCampaigns/images | Upload an image to your account's image gallery -*FoldersApi* | [**CreateFolder**](docs/FoldersApi.md#createfolder) | **POST** /contacts/folders | Create a folder -*FoldersApi* | [**DeleteFolder**](docs/FoldersApi.md#deletefolder) | **DELETE** /contacts/folders/{folderId} | Delete a folder (and all its lists) -*FoldersApi* | [**GetFolder**](docs/FoldersApi.md#getfolder) | **GET** /contacts/folders/{folderId} | Returns a folder's details -*FoldersApi* | [**GetFolderLists**](docs/FoldersApi.md#getfolderlists) | **GET** /contacts/folders/{folderId}/lists | Get lists in a folder -*FoldersApi* | [**GetFolders**](docs/FoldersApi.md#getfolders) | **GET** /contacts/folders | Get all folders -*FoldersApi* | [**UpdateFolder**](docs/FoldersApi.md#updatefolder) | **PUT** /contacts/folders/{folderId} | Update a folder +*FilesApi* | [**CrmFilesGet**](docs/FilesApi.md#crmfilesget) | **GET** /crm/files | Get all files +*FilesApi* | [**CrmFilesIdDataGet**](docs/FilesApi.md#crmfilesiddataget) | **GET** /crm/files/{id}/data | Get file details +*FilesApi* | [**CrmFilesIdDelete**](docs/FilesApi.md#crmfilesiddelete) | **DELETE** /crm/files/{id} | Delete a file +*FilesApi* | [**CrmFilesIdGet**](docs/FilesApi.md#crmfilesidget) | **GET** /crm/files/{id} | Download a file +*FilesApi* | [**CrmFilesPost**](docs/FilesApi.md#crmfilespost) | **POST** /crm/files | Upload a file +*InboundParsingApi* | [**GetInboundEmailAttachment**](docs/InboundParsingApi.md#getinboundemailattachment) | **GET** /inbound/attachments/{downloadToken} | Retrieve inbound attachment with download token. *InboundParsingApi* | [**GetInboundEmailEvents**](docs/InboundParsingApi.md#getinboundemailevents) | **GET** /inbound/events | Get the list of all the events for the received emails. *InboundParsingApi* | [**GetInboundEmailEventsByUuid**](docs/InboundParsingApi.md#getinboundemaileventsbyuuid) | **GET** /inbound/events/{uuid} | Fetch all events history for one particular received email. -*ListsApi* | [**AddContactToList**](docs/ListsApi.md#addcontacttolist) | **POST** /contacts/lists/{listId}/contacts/add | Add existing contacts to a list -*ListsApi* | [**CreateList**](docs/ListsApi.md#createlist) | **POST** /contacts/lists | Create a list -*ListsApi* | [**DeleteList**](docs/ListsApi.md#deletelist) | **DELETE** /contacts/lists/{listId} | Delete a list -*ListsApi* | [**GetContactsFromList**](docs/ListsApi.md#getcontactsfromlist) | **GET** /contacts/lists/{listId}/contacts | Get contacts in a list -*ListsApi* | [**GetFolderLists**](docs/ListsApi.md#getfolderlists) | **GET** /contacts/folders/{folderId}/lists | Get lists in a folder -*ListsApi* | [**GetList**](docs/ListsApi.md#getlist) | **GET** /contacts/lists/{listId} | Get a list's details -*ListsApi* | [**GetLists**](docs/ListsApi.md#getlists) | **GET** /contacts/lists | Get all the lists -*ListsApi* | [**RemoveContactFromList**](docs/ListsApi.md#removecontactfromlist) | **POST** /contacts/lists/{listId}/contacts/remove | Delete a contact from a list -*ListsApi* | [**UpdateList**](docs/ListsApi.md#updatelist) | **PUT** /contacts/lists/{listId} | Update a list *MasterAccountApi* | [**CorporateMasterAccountGet**](docs/MasterAccountApi.md#corporatemasteraccountget) | **GET** /corporate/masterAccount | Get the details of requested master account *MasterAccountApi* | [**CorporateSubAccountGet**](docs/MasterAccountApi.md#corporatesubaccountget) | **GET** /corporate/subAccount | Get the list of all the sub-accounts of the master account. *MasterAccountApi* | [**CorporateSubAccountIdDelete**](docs/MasterAccountApi.md#corporatesubaccountiddelete) | **DELETE** /corporate/subAccount/{id} | Delete a sub-account *MasterAccountApi* | [**CorporateSubAccountIdGet**](docs/MasterAccountApi.md#corporatesubaccountidget) | **GET** /corporate/subAccount/{id} | Get sub-account details *MasterAccountApi* | [**CorporateSubAccountIdPlanPut**](docs/MasterAccountApi.md#corporatesubaccountidplanput) | **PUT** /corporate/subAccount/{id}/plan | Update sub-account plan +*MasterAccountApi* | [**CorporateSubAccountKeyPost**](docs/MasterAccountApi.md#corporatesubaccountkeypost) | **POST** /corporate/subAccount/key | Create an API key for a sub-account *MasterAccountApi* | [**CorporateSubAccountPost**](docs/MasterAccountApi.md#corporatesubaccountpost) | **POST** /corporate/subAccount | Create a new sub-account under a master account. *MasterAccountApi* | [**CorporateSubAccountSsoTokenPost**](docs/MasterAccountApi.md#corporatesubaccountssotokenpost) | **POST** /corporate/subAccount/ssoToken | Generate SSO token to access Sendinblue +*NotesApi* | [**CrmNotesGet**](docs/NotesApi.md#crmnotesget) | **GET** /crm/notes | Get all notes +*NotesApi* | [**CrmNotesIdDelete**](docs/NotesApi.md#crmnotesiddelete) | **DELETE** /crm/notes/{id} | Delete a note +*NotesApi* | [**CrmNotesIdGet**](docs/NotesApi.md#crmnotesidget) | **GET** /crm/notes/{id} | Get a note +*NotesApi* | [**CrmNotesIdPatch**](docs/NotesApi.md#crmnotesidpatch) | **PATCH** /crm/notes/{id} | Update a note +*NotesApi* | [**CrmNotesPost**](docs/NotesApi.md#crmnotespost) | **POST** /crm/notes | Create a note *ProcessApi* | [**GetProcess**](docs/ProcessApi.md#getprocess) | **GET** /processes/{processId} | Return the informations for a process *ProcessApi* | [**GetProcesses**](docs/ProcessApi.md#getprocesses) | **GET** /processes | Return all the processes for your account *ResellerApi* | [**AddCredits**](docs/ResellerApi.md#addcredits) | **POST** /reseller/children/{childIdentifier}/credits/add | Add Email and/or SMS credits to a specific child account @@ -205,14 +220,23 @@ Class | Method | HTTP request | Description *SendersApi* | [**GetIpsFromSender**](docs/SendersApi.md#getipsfromsender) | **GET** /senders/{senderId}/ips | Get all the dedicated IPs for a sender *SendersApi* | [**GetSenders**](docs/SendersApi.md#getsenders) | **GET** /senders | Get the list of all your senders *SendersApi* | [**UpdateSender**](docs/SendersApi.md#updatesender) | **PUT** /senders/{senderId} | Update a sender +*TasksApi* | [**CrmTasksGet**](docs/TasksApi.md#crmtasksget) | **GET** /crm/tasks | Get all tasks +*TasksApi* | [**CrmTasksIdDelete**](docs/TasksApi.md#crmtasksiddelete) | **DELETE** /crm/tasks/{id} | Delete a task +*TasksApi* | [**CrmTasksIdGet**](docs/TasksApi.md#crmtasksidget) | **GET** /crm/tasks/{id} | Get a task +*TasksApi* | [**CrmTasksIdPatch**](docs/TasksApi.md#crmtasksidpatch) | **PATCH** /crm/tasks/{id} | Update a task +*TasksApi* | [**CrmTasksPost**](docs/TasksApi.md#crmtaskspost) | **POST** /crm/tasks | Create a task +*TasksApi* | [**CrmTasktypesGet**](docs/TasksApi.md#crmtasktypesget) | **GET** /crm/tasktypes | Get all task types *TransactionalEmailsApi* | [**BlockNewDomain**](docs/TransactionalEmailsApi.md#blocknewdomain) | **POST** /smtp/blockedDomains | Add a new domain to the list of blocked domains *TransactionalEmailsApi* | [**CreateSmtpTemplate**](docs/TransactionalEmailsApi.md#createsmtptemplate) | **POST** /smtp/templates | Create an email template *TransactionalEmailsApi* | [**DeleteBlockedDomain**](docs/TransactionalEmailsApi.md#deleteblockeddomain) | **DELETE** /smtp/blockedDomains/{domain} | Unblock an existing domain from the list of blocked domains *TransactionalEmailsApi* | [**DeleteHardbounces**](docs/TransactionalEmailsApi.md#deletehardbounces) | **POST** /smtp/deleteHardbounces | Delete hardbounces +*TransactionalEmailsApi* | [**DeleteScheduledEmailById**](docs/TransactionalEmailsApi.md#deletescheduledemailbyid) | **DELETE** /smtp/email/{identifier} | Delete scheduled emails by batchId or messageId *TransactionalEmailsApi* | [**DeleteSmtpTemplate**](docs/TransactionalEmailsApi.md#deletesmtptemplate) | **DELETE** /smtp/templates/{templateId} | Delete an inactive email template *TransactionalEmailsApi* | [**GetAggregatedSmtpReport**](docs/TransactionalEmailsApi.md#getaggregatedsmtpreport) | **GET** /smtp/statistics/aggregatedReport | Get your transactional email activity aggregated over a period of time *TransactionalEmailsApi* | [**GetBlockedDomains**](docs/TransactionalEmailsApi.md#getblockeddomains) | **GET** /smtp/blockedDomains | Get the list of blocked domains *TransactionalEmailsApi* | [**GetEmailEventReport**](docs/TransactionalEmailsApi.md#getemaileventreport) | **GET** /smtp/statistics/events | Get all your transactional email activity (unaggregated events) +*TransactionalEmailsApi* | [**GetScheduledEmailByBatchId**](docs/TransactionalEmailsApi.md#getscheduledemailbybatchid) | **GET** /smtp/emailStatus/{batchId} | Fetch scheduled emails by batchId +*TransactionalEmailsApi* | [**GetScheduledEmailByMessageId**](docs/TransactionalEmailsApi.md#getscheduledemailbymessageid) | **GET** /smtp/emailStatus/{messageId} | Fetch scheduled email by messageId *TransactionalEmailsApi* | [**GetSmtpReport**](docs/TransactionalEmailsApi.md#getsmtpreport) | **GET** /smtp/statistics/reports | Get your transactional email activity aggregated per day *TransactionalEmailsApi* | [**GetSmtpTemplate**](docs/TransactionalEmailsApi.md#getsmtptemplate) | **GET** /smtp/templates/{templateId} | Returns the template information *TransactionalEmailsApi* | [**GetSmtpTemplates**](docs/TransactionalEmailsApi.md#getsmtptemplates) | **GET** /smtp/templates | Get the list of email templates @@ -233,6 +257,8 @@ Class | Method | HTTP request | Description *WebhooksApi* | [**GetWebhook**](docs/WebhooksApi.md#getwebhook) | **GET** /webhooks/{webhookId} | Get a webhook details *WebhooksApi* | [**GetWebhooks**](docs/WebhooksApi.md#getwebhooks) | **GET** /webhooks | Get all webhooks *WebhooksApi* | [**UpdateWebhook**](docs/WebhooksApi.md#updatewebhook) | **PUT** /webhooks/{webhookId} | Update a webhook +*WhatsappCampaignsApi* | [**DeleteWhatsappCampaign**](docs/WhatsappCampaignsApi.md#deletewhatsappcampaign) | **DELETE** /whatsappCampaigns/{campaignId} | Delete a whatsapp campaign +*WhatsappCampaignsApi* | [**GetWhatsappCampaign**](docs/WhatsappCampaignsApi.md#getwhatsappcampaign) | **GET** /whatsappCampaigns/{campaignId} | Get Whatsapp campaign Overview @@ -250,9 +276,31 @@ Class | Method | HTTP request | Description - [Model.BlockDomain](docs/BlockDomain.md) - [Model.Body](docs/Body.md) - [Model.Body1](docs/Body1.md) - - [Model.Contact](docs/Contact.md) + - [Model.Body10](docs/Body10.md) + - [Model.Body11](docs/Body11.md) + - [Model.Body12](docs/Body12.md) + - [Model.Body2](docs/Body2.md) + - [Model.Body3](docs/Body3.md) + - [Model.Body4](docs/Body4.md) + - [Model.Body5](docs/Body5.md) + - [Model.Body6](docs/Body6.md) + - [Model.Body7](docs/Body7.md) + - [Model.Body8](docs/Body8.md) + - [Model.Body9](docs/Body9.md) + - [Model.BodyVariablesItems](docs/BodyVariablesItems.md) + - [Model.CompaniesList](docs/CompaniesList.md) + - [Model.Company](docs/Company.md) + - [Model.CompanyAttributes](docs/CompanyAttributes.md) + - [Model.CompanyAttributesInner](docs/CompanyAttributesInner.md) + - [Model.ComponentItems](docs/ComponentItems.md) + - [Model.ConversationsMessage](docs/ConversationsMessage.md) + - [Model.ConversationsMessageFile](docs/ConversationsMessageFile.md) + - [Model.ConversationsMessageFileImageInfo](docs/ConversationsMessageFileImageInfo.md) + - [Model.CreateApiKeyRequest](docs/CreateApiKeyRequest.md) + - [Model.CreateApiKeyResponse](docs/CreateApiKeyResponse.md) - [Model.CreateAttribute](docs/CreateAttribute.md) - [Model.CreateAttributeEnumeration](docs/CreateAttributeEnumeration.md) + - [Model.CreateCategoryModel](docs/CreateCategoryModel.md) - [Model.CreateChild](docs/CreateChild.md) - [Model.CreateContact](docs/CreateContact.md) - [Model.CreateDoiContact](docs/CreateDoiContact.md) @@ -261,6 +309,7 @@ Class | Method | HTTP request | Description - [Model.CreateEmailCampaignSender](docs/CreateEmailCampaignSender.md) - [Model.CreateList](docs/CreateList.md) - [Model.CreateModel](docs/CreateModel.md) + - [Model.CreateProductModel](docs/CreateProductModel.md) - [Model.CreateReseller](docs/CreateReseller.md) - [Model.CreateSender](docs/CreateSender.md) - [Model.CreateSenderIps](docs/CreateSenderIps.md) @@ -271,14 +320,30 @@ Class | Method | HTTP request | Description - [Model.CreateSmtpTemplate](docs/CreateSmtpTemplate.md) - [Model.CreateSmtpTemplateSender](docs/CreateSmtpTemplateSender.md) - [Model.CreateSubAccount](docs/CreateSubAccount.md) + - [Model.CreateSubAccountResponse](docs/CreateSubAccountResponse.md) + - [Model.CreateUpdateBatchCategory](docs/CreateUpdateBatchCategory.md) + - [Model.CreateUpdateBatchCategoryModel](docs/CreateUpdateBatchCategoryModel.md) + - [Model.CreateUpdateBatchProducts](docs/CreateUpdateBatchProducts.md) + - [Model.CreateUpdateBatchProductsModel](docs/CreateUpdateBatchProductsModel.md) + - [Model.CreateUpdateCategories](docs/CreateUpdateCategories.md) + - [Model.CreateUpdateCategory](docs/CreateUpdateCategory.md) - [Model.CreateUpdateContactModel](docs/CreateUpdateContactModel.md) - [Model.CreateUpdateFolder](docs/CreateUpdateFolder.md) + - [Model.CreateUpdateProduct](docs/CreateUpdateProduct.md) + - [Model.CreateUpdateProducts](docs/CreateUpdateProducts.md) - [Model.CreateWebhook](docs/CreateWebhook.md) + - [Model.CreatedBatchId](docs/CreatedBatchId.md) - [Model.CreatedProcessId](docs/CreatedProcessId.md) + - [Model.Deal](docs/Deal.md) + - [Model.DealAttributes](docs/DealAttributes.md) + - [Model.DealAttributesInner](docs/DealAttributesInner.md) + - [Model.DealsList](docs/DealsList.md) - [Model.DeleteHardbounces](docs/DeleteHardbounces.md) - [Model.EmailExportRecipients](docs/EmailExportRecipients.md) - [Model.ErrorModel](docs/ErrorModel.md) - [Model.FileData](docs/FileData.md) + - [Model.FileDownloadableLink](docs/FileDownloadableLink.md) + - [Model.FileList](docs/FileList.md) - [Model.GetAccountMarketingAutomation](docs/GetAccountMarketingAutomation.md) - [Model.GetAccountPlan](docs/GetAccountPlan.md) - [Model.GetAccountRelay](docs/GetAccountRelay.md) @@ -291,6 +356,8 @@ Class | Method | HTTP request | Description - [Model.GetCampaignOverview](docs/GetCampaignOverview.md) - [Model.GetCampaignRecipients](docs/GetCampaignRecipients.md) - [Model.GetCampaignStats](docs/GetCampaignStats.md) + - [Model.GetCategories](docs/GetCategories.md) + - [Model.GetCategoryDetails](docs/GetCategoryDetails.md) - [Model.GetChildAccountCreationStatus](docs/GetChildAccountCreationStatus.md) - [Model.GetChildDomain](docs/GetChildDomain.md) - [Model.GetChildDomains](docs/GetChildDomains.md) @@ -341,8 +408,13 @@ Class | Method | HTTP request | Description - [Model.GetLists](docs/GetLists.md) - [Model.GetProcess](docs/GetProcess.md) - [Model.GetProcesses](docs/GetProcesses.md) + - [Model.GetProductDetails](docs/GetProductDetails.md) + - [Model.GetProducts](docs/GetProducts.md) - [Model.GetReports](docs/GetReports.md) - [Model.GetReportsReports](docs/GetReportsReports.md) + - [Model.GetScheduledEmailByBatchId](docs/GetScheduledEmailByBatchId.md) + - [Model.GetScheduledEmailByBatchIdBatches](docs/GetScheduledEmailByBatchIdBatches.md) + - [Model.GetScheduledEmailByMessageId](docs/GetScheduledEmailByMessageId.md) - [Model.GetSendersList](docs/GetSendersList.md) - [Model.GetSendersListIps](docs/GetSendersListIps.md) - [Model.GetSendersListSenders](docs/GetSendersListSenders.md) @@ -371,6 +443,10 @@ Class | Method | HTTP request | Description - [Model.GetTransacSmsReportReports](docs/GetTransacSmsReportReports.md) - [Model.GetWebhook](docs/GetWebhook.md) - [Model.GetWebhooks](docs/GetWebhooks.md) + - [Model.GetWhatsappCampaignOverview](docs/GetWhatsappCampaignOverview.md) + - [Model.InlineResponse200](docs/InlineResponse200.md) + - [Model.InlineResponse201](docs/InlineResponse201.md) + - [Model.InlineResponse2011](docs/InlineResponse2011.md) - [Model.ManageIp](docs/ManageIp.md) - [Model.MasterDetailsResponse](docs/MasterDetailsResponse.md) - [Model.MasterDetailsResponseBillingInfo](docs/MasterDetailsResponseBillingInfo.md) @@ -380,6 +456,14 @@ Class | Method | HTTP request | Description - [Model.MasterDetailsResponsePlanInfoFeatures](docs/MasterDetailsResponsePlanInfoFeatures.md) - [Model.Note](docs/Note.md) - [Model.NoteData](docs/NoteData.md) + - [Model.NoteId](docs/NoteId.md) + - [Model.NoteList](docs/NoteList.md) + - [Model.Order](docs/Order.md) + - [Model.OrderBatch](docs/OrderBatch.md) + - [Model.OrderBilling](docs/OrderBilling.md) + - [Model.OrderProducts](docs/OrderProducts.md) + - [Model.Pipeline](docs/Pipeline.md) + - [Model.PipelineStage](docs/PipelineStage.md) - [Model.PostContactInfo](docs/PostContactInfo.md) - [Model.PostContactInfoContacts](docs/PostContactInfoContacts.md) - [Model.PostSendFailed](docs/PostSendFailed.md) @@ -394,6 +478,7 @@ Class | Method | HTTP request | Description - [Model.RequestContactImport](docs/RequestContactImport.md) - [Model.RequestContactImportNewList](docs/RequestContactImportNewList.md) - [Model.RequestSmsRecipientExport](docs/RequestSmsRecipientExport.md) + - [Model.ScheduleSmtpEmail](docs/ScheduleSmtpEmail.md) - [Model.SendReport](docs/SendReport.md) - [Model.SendReportEmail](docs/SendReportEmail.md) - [Model.SendSms](docs/SendSms.md) @@ -425,6 +510,7 @@ Class | Method | HTTP request | Description - [Model.SubAccountsResponse](docs/SubAccountsResponse.md) - [Model.SubAccountsResponseSubAccounts](docs/SubAccountsResponseSubAccounts.md) - [Model.Task](docs/Task.md) + - [Model.TaskList](docs/TaskList.md) - [Model.TaskReminder](docs/TaskReminder.md) - [Model.TaskTypes](docs/TaskTypes.md) - [Model.UpdateAttribute](docs/UpdateAttribute.md) @@ -446,7 +532,11 @@ Class | Method | HTTP request | Description - [Model.UpdateSmtpTemplate](docs/UpdateSmtpTemplate.md) - [Model.UpdateSmtpTemplateSender](docs/UpdateSmtpTemplateSender.md) - [Model.UpdateWebhook](docs/UpdateWebhook.md) + - [Model.UploadImageModel](docs/UploadImageModel.md) - [Model.UploadImageToGallery](docs/UploadImageToGallery.md) + - [Model.VariablesItems](docs/VariablesItems.md) + - [Model.WhatsappCampStats](docs/WhatsappCampStats.md) + - [Model.WhatsappCampTemplate](docs/WhatsappCampTemplate.md) - [Model.GetChildInfo](docs/GetChildInfo.md) - [Model.GetExtendedCampaignOverview](docs/GetExtendedCampaignOverview.md) - [Model.GetExtendedClient](docs/GetExtendedClient.md) diff --git a/docs/AttributesApi.md b/docs/AttributesApi.md deleted file mode 100644 index c90674d..0000000 --- a/docs/AttributesApi.md +++ /dev/null @@ -1,287 +0,0 @@ -# sib_api_v3_sdk.Api.AttributesApi - -All URIs are relative to *https://api.sendinblue.com/v3* - -Method | HTTP request | Description -------------- | ------------- | ------------- -[**CreateAttribute**](AttributesApi.md#createattribute) | **POST** /contacts/attributes/{attributeCategory}/{attributeName} | Create contact attribute -[**DeleteAttribute**](AttributesApi.md#deleteattribute) | **DELETE** /contacts/attributes/{attributeCategory}/{attributeName} | Delete an attribute -[**GetAttributes**](AttributesApi.md#getattributes) | **GET** /contacts/attributes | List all attributes -[**UpdateAttribute**](AttributesApi.md#updateattribute) | **PUT** /contacts/attributes/{attributeCategory}/{attributeName} | Update contact attribute - - - -# **CreateAttribute** -> void CreateAttribute (string attributeCategory, string attributeName, CreateAttribute createAttribute) - -Create contact attribute - -### Example -```csharp -using System; -using System.Diagnostics; -using sib_api_v3_sdk.Api; -using sib_api_v3_sdk.Client; -using sib_api_v3_sdk.Model; - -namespace Example -{ - public class CreateAttributeExample - { - public void main() - { - // Configure API key authorization: api-key - Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); - // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed - // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); - // Configure API key authorization: partner-key - Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); - // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed - // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - - var apiInstance = new AttributesApi(); - var attributeCategory = attributeCategory_example; // string | Category of the attribute - var attributeName = attributeName_example; // string | Name of the attribute - var createAttribute = new CreateAttribute(); // CreateAttribute | Values to create an attribute - - try - { - // Create contact attribute - apiInstance.CreateAttribute(attributeCategory, attributeName, createAttribute); - } - catch (Exception e) - { - Debug.Print("Exception when calling AttributesApi.CreateAttribute: " + e.Message ); - } - } - } -} -``` - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **attributeCategory** | **string**| Category of the attribute | - **attributeName** | **string**| Name of the attribute | - **createAttribute** | [**CreateAttribute**](CreateAttribute.md)| Values to create an attribute | - -### Return type - -void (empty response body) - -### Authorization - -[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - - -# **DeleteAttribute** -> void DeleteAttribute (string attributeCategory, string attributeName) - -Delete an attribute - -### Example -```csharp -using System; -using System.Diagnostics; -using sib_api_v3_sdk.Api; -using sib_api_v3_sdk.Client; -using sib_api_v3_sdk.Model; - -namespace Example -{ - public class DeleteAttributeExample - { - public void main() - { - // Configure API key authorization: api-key - Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); - // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed - // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); - // Configure API key authorization: partner-key - Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); - // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed - // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - - var apiInstance = new AttributesApi(); - var attributeCategory = attributeCategory_example; // string | Category of the attribute - var attributeName = attributeName_example; // string | Name of the existing attribute - - try - { - // Delete an attribute - apiInstance.DeleteAttribute(attributeCategory, attributeName); - } - catch (Exception e) - { - Debug.Print("Exception when calling AttributesApi.DeleteAttribute: " + e.Message ); - } - } - } -} -``` - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **attributeCategory** | **string**| Category of the attribute | - **attributeName** | **string**| Name of the existing attribute | - -### Return type - -void (empty response body) - -### Authorization - -[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - - -# **GetAttributes** -> GetAttributes GetAttributes () - -List all attributes - -### Example -```csharp -using System; -using System.Diagnostics; -using sib_api_v3_sdk.Api; -using sib_api_v3_sdk.Client; -using sib_api_v3_sdk.Model; - -namespace Example -{ - public class GetAttributesExample - { - public void main() - { - // Configure API key authorization: api-key - Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); - // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed - // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); - // Configure API key authorization: partner-key - Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); - // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed - // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - - var apiInstance = new AttributesApi(); - - try - { - // List all attributes - GetAttributes result = apiInstance.GetAttributes(); - Debug.WriteLine(result); - } - catch (Exception e) - { - Debug.Print("Exception when calling AttributesApi.GetAttributes: " + e.Message ); - } - } - } -} -``` - -### Parameters -This endpoint does not need any parameter. - -### Return type - -[**GetAttributes**](GetAttributes.md) - -### Authorization - -[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - - -# **UpdateAttribute** -> void UpdateAttribute (string attributeCategory, string attributeName, UpdateAttribute updateAttribute) - -Update contact attribute - -### Example -```csharp -using System; -using System.Diagnostics; -using sib_api_v3_sdk.Api; -using sib_api_v3_sdk.Client; -using sib_api_v3_sdk.Model; - -namespace Example -{ - public class UpdateAttributeExample - { - public void main() - { - // Configure API key authorization: api-key - Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); - // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed - // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); - // Configure API key authorization: partner-key - Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); - // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed - // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - - var apiInstance = new AttributesApi(); - var attributeCategory = attributeCategory_example; // string | Category of the attribute - var attributeName = attributeName_example; // string | Name of the existing attribute - var updateAttribute = new UpdateAttribute(); // UpdateAttribute | Values to update an attribute - - try - { - // Update contact attribute - apiInstance.UpdateAttribute(attributeCategory, attributeName, updateAttribute); - } - catch (Exception e) - { - Debug.Print("Exception when calling AttributesApi.UpdateAttribute: " + e.Message ); - } - } - } -} -``` - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **attributeCategory** | **string**| Category of the attribute | - **attributeName** | **string**| Name of the existing attribute | - **updateAttribute** | [**UpdateAttribute**](UpdateAttribute.md)| Values to update an attribute | - -### Return type - -void (empty response body) - -### Authorization - -[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - diff --git a/docs/Body.md b/docs/Body.md index 570989f..6b01c54 100644 --- a/docs/Body.md +++ b/docs/Body.md @@ -3,17 +3,9 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**Name** | **string** | Name of task | -**Duration** | **long?** | Duration of task | [optional] -**TaskTypeId** | **string** | Id for type of task e.g Call / Email / Meeting etc. | -**Date** | **DateTime?** | Task date/time | -**Notes** | **string** | Notes added to a task | [optional] -**Done** | **bool?** | Task marked as done | [optional] -**AssignToId** | **string** | User id to whom task is assigned | [optional] -**ContactsIds** | **List<int?>** | Contact ids for contacts linked to this task | [optional] -**DealsIds** | **List<string>** | Deal ids for deals a task is linked to | [optional] -**CompaniesIds** | **List<string>** | Companies ids for companies a task is linked to | [optional] -**Reminder** | [**TaskReminder**](TaskReminder.md) | | [optional] +**Name** | **string** | Name of company | +**Attributes** | **Object** | Attributes for company creation | [optional] +**CountryCode** | **long?** | Country code if phone_number is passed in attributes. | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/Body1.md b/docs/Body1.md index 699bf07..6515115 100644 --- a/docs/Body1.md +++ b/docs/Body1.md @@ -3,17 +3,9 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**Name** | **string** | Name of task | -**Duration** | **int?** | Duration of task | [optional] -**TaskTypeId** | **string** | Id for type of task e.g Call / Email / Meeting etc. | -**Date** | **DateTime?** | Task date/time | -**Notes** | **string** | Notes added to a task | [optional] -**Done** | **bool?** | Task marked as done | [optional] -**AssignToId** | **string** | User id to whom task is assigned | [optional] -**ContactsIds** | **List<int?>** | Contact ids for contacts linked to this task | [optional] -**DealsIds** | **List<string>** | Deal ids for deals a task is linked to | [optional] -**CompaniesIds** | **List<string>** | Companies ids for companies a task is linked to | [optional] -**Reminder** | [**TaskReminder**](TaskReminder.md) | | [optional] +**Name** | **string** | Name of company | [optional] +**Attributes** | **Object** | Attributes for company update | [optional] +**CountryCode** | **long?** | Country code if phone_number is passed in attributes. | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/Body10.md b/docs/Body10.md new file mode 100644 index 0000000..d54ae27 --- /dev/null +++ b/docs/Body10.md @@ -0,0 +1,12 @@ +# sib_api_v3_sdk.Model.Body10 +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**VisitorId** | **string** | visitor’s ID received <a href="https://developers.sendinblue.com/docs/conversations-webhooks">from a webhook</a> or generated by you to <a href="https://developers.sendinblue.com/docs/customize-the-widget#identifying-existing-users">bind existing user account to Conversations</a> | +**Text** | **string** | message text | +**AgentId** | **string** | agent ID. It can be found on agent’s page or received <a href="https://developers.sendinblue.com/docs/conversations-webhooks">from a webhook</a>. Optional if `groupId` is set. | [optional] +**GroupId** | **string** | group ID. It can be found on group’s page. Optional if `agentId` is set. | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/Body11.md b/docs/Body11.md new file mode 100644 index 0000000..cc708ad --- /dev/null +++ b/docs/Body11.md @@ -0,0 +1,9 @@ +# sib_api_v3_sdk.Model.Body11 +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Text** | **string** | edited message text | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/Body12.md b/docs/Body12.md new file mode 100644 index 0000000..8a266ca --- /dev/null +++ b/docs/Body12.md @@ -0,0 +1,12 @@ +# sib_api_v3_sdk.Model.Body12 +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**AgentId** | **string** | agent ID. It can be found on agent’s page or received <a href="https://developers.sendinblue.com/docs/conversations-webhooks">from a webhook</a>. Alternatively, you can use `agentEmail` + `agentName` + `receivedFrom` instead (all 3 fields required). | [optional] +**ReceivedFrom** | **string** | mark your messages to distinguish messages created by you from the others. | [optional] +**AgentEmail** | **string** | agent email. When sending online pings from a standalone system, it’s hard to maintain a 1-to-1 relationship between the users of both systems. In this case, an agent can be specified by their email address. If there’s no agent with the specified email address in your Sendinblue organization, a dummy agent will be created automatically. | [optional] +**AgentName** | **string** | agent name. | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/Body2.md b/docs/Body2.md new file mode 100644 index 0000000..42b4e6f --- /dev/null +++ b/docs/Body2.md @@ -0,0 +1,12 @@ +# sib_api_v3_sdk.Model.Body2 +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**LinkContactIds** | **List<long?>** | Contact ids for contacts to be linked with company | [optional] +**UnlinkContactIds** | **List<long?>** | Contact ids for contacts to be unlinked from company | [optional] +**LinkDealsIds** | **List<string>** | Deals ids for deals to be linked with company | [optional] +**UnlinkDealsIds** | **List<string>** | Deals ids for deals to be unlinked from company | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/Body3.md b/docs/Body3.md new file mode 100644 index 0000000..1fff349 --- /dev/null +++ b/docs/Body3.md @@ -0,0 +1,10 @@ +# sib_api_v3_sdk.Model.Body3 +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Name** | **string** | Name of deal | +**Attributes** | **Object** | Attributes fo\\r deal creation | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/Body4.md b/docs/Body4.md new file mode 100644 index 0000000..1cf72cd --- /dev/null +++ b/docs/Body4.md @@ -0,0 +1,10 @@ +# sib_api_v3_sdk.Model.Body4 +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Name** | **string** | Name of deal | [optional] +**Attributes** | **Object** | Attributes for deal update | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/Body5.md b/docs/Body5.md new file mode 100644 index 0000000..6ecf5d6 --- /dev/null +++ b/docs/Body5.md @@ -0,0 +1,12 @@ +# sib_api_v3_sdk.Model.Body5 +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**LinkContactIds** | **List<long?>** | Contact ids for contacts to be linked with deal | [optional] +**UnlinkContactIds** | **List<long?>** | Contact ids for contacts to be unlinked from deal | [optional] +**LinkCompanyIds** | **List<string>** | Company ids to be linked with deal | [optional] +**UnlinkCompanyIds** | **List<string>** | Company ids to be unlinked from deal | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/Body6.md b/docs/Body6.md new file mode 100644 index 0000000..f1b2826 --- /dev/null +++ b/docs/Body6.md @@ -0,0 +1,19 @@ +# sib_api_v3_sdk.Model.Body6 +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Name** | **string** | Name of task | +**Duration** | **long?** | Duration of task in milliseconds [1 minute = 60000 ms] | [optional] +**TaskTypeId** | **string** | Id for type of task e.g Call / Email / Meeting etc. | +**Date** | **DateTime?** | Task due date and time | +**Notes** | **string** | Notes added to a task | [optional] +**Done** | **bool?** | Task marked as done | [optional] +**AssignToId** | **string** | User id to whom task is assigned | [optional] +**ContactsIds** | **List<int?>** | Contact ids for contacts linked to this task | [optional] +**DealsIds** | **List<string>** | Deal ids for deals a task is linked to | [optional] +**CompaniesIds** | **List<string>** | Companies ids for companies a task is linked to | [optional] +**Reminder** | [**TaskReminder**](TaskReminder.md) | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/Body7.md b/docs/Body7.md new file mode 100644 index 0000000..e0c1fa5 --- /dev/null +++ b/docs/Body7.md @@ -0,0 +1,18 @@ +# sib_api_v3_sdk.Model.Body7 +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Name** | **string** | Name of task | [optional] +**Duration** | **int?** | Duration of task in milliseconds [1 minute = 60000 ms] | [optional] +**TaskTypeId** | **string** | Id for type of task e.g Call / Email / Meeting etc. | [optional] +**Date** | **DateTime?** | Task date/time | [optional] +**Notes** | **string** | Notes added to a task | [optional] +**Done** | **bool?** | Task marked as done | [optional] +**AssignToId** | **string** | User id to whom task is assigned | [optional] +**ContactsIds** | **List<int?>** | Contact ids for contacts linked to this task | [optional] +**DealsIds** | **List<string>** | Deal ids for deals a task is linked to | [optional] +**CompaniesIds** | **List<string>** | Companies ids for companies a task is linked to | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/Body8.md b/docs/Body8.md new file mode 100644 index 0000000..051a911 --- /dev/null +++ b/docs/Body8.md @@ -0,0 +1,14 @@ +# sib_api_v3_sdk.Model.Body8 +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**VisitorId** | **string** | visitor’s ID received <a href="https://developers.sendinblue.com/docs/conversations-webhooks">from a webhook</a> or generated by you to <a href="https://developers.sendinblue.com/docs/customize-the-widget#identifying-existing-users">bind existing user account to Conversations</a> | +**Text** | **string** | message text | +**AgentId** | **string** | agent ID. It can be found on agent’s page or received <a href="https://developers.sendinblue.com/docs/conversations-webhooks">from a webhook</a>. Alternatively, you can use `agentEmail` + `agentName` + `receivedFrom` instead (all 3 fields required). | [optional] +**ReceivedFrom** | **string** | mark your messages to distinguish messages created by you from the others. | [optional] +**AgentEmail** | **string** | agent email. When sending messages from a standalone system, it’s hard to maintain a 1-to-1 relationship between the users of both systems. In this case, an agent can be specified by their email address. | [optional] +**AgentName** | **string** | agent name | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/Body9.md b/docs/Body9.md new file mode 100644 index 0000000..e5e67c4 --- /dev/null +++ b/docs/Body9.md @@ -0,0 +1,9 @@ +# sib_api_v3_sdk.Model.Body9 +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Text** | **string** | edited message text | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/BodyVariablesItems.md b/docs/BodyVariablesItems.md new file mode 100644 index 0000000..39f56c3 --- /dev/null +++ b/docs/BodyVariablesItems.md @@ -0,0 +1,8 @@ +# sib_api_v3_sdk.Model.BodyVariablesItems +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/CompaniesApi.md b/docs/CompaniesApi.md new file mode 100644 index 0000000..e3cebc2 --- /dev/null +++ b/docs/CompaniesApi.md @@ -0,0 +1,501 @@ +# sib_api_v3_sdk.Api.CompaniesApi + +All URIs are relative to *https://api.sendinblue.com/v3* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**CompaniesAttributesGet**](CompaniesApi.md#companiesattributesget) | **GET** /companies/attributes | Get company attributes +[**CompaniesGet**](CompaniesApi.md#companiesget) | **GET** /companies | Get all companies +[**CompaniesIdDelete**](CompaniesApi.md#companiesiddelete) | **DELETE** /companies/{id} | Delete a company +[**CompaniesIdGet**](CompaniesApi.md#companiesidget) | **GET** /companies/{id} | Get a company +[**CompaniesIdPatch**](CompaniesApi.md#companiesidpatch) | **PATCH** /companies/{id} | Update a company +[**CompaniesLinkUnlinkIdPatch**](CompaniesApi.md#companieslinkunlinkidpatch) | **PATCH** /companies/link-unlink/{id} | Link and Unlink company with contacts and deals +[**CompaniesPost**](CompaniesApi.md#companiespost) | **POST** /companies | Create a company + + + +# **CompaniesAttributesGet** +> CompanyAttributes CompaniesAttributesGet () + +Get company attributes + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class CompaniesAttributesGetExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new CompaniesApi(); + + try + { + // Get company attributes + CompanyAttributes result = apiInstance.CompaniesAttributesGet(); + Debug.WriteLine(result); + } + catch (Exception e) + { + Debug.Print("Exception when calling CompaniesApi.CompaniesAttributesGet: " + e.Message ); + } + } + } +} +``` + +### Parameters +This endpoint does not need any parameter. + +### Return type + +[**CompanyAttributes**](CompanyAttributes.md) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **CompaniesGet** +> CompaniesList CompaniesGet (string filters = null, long? linkedContactsIds = null, string linkedDealsIds = null, long? page = null, long? limit = null, string sort = null, string sortBy = null) + +Get all companies + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class CompaniesGetExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new CompaniesApi(); + var filters = filters_example; // string | Filter by attrbutes. If you have filter for owner on your side please send it as {\"attributes.owner\":\"5b1a17d914b73d35a76ca0c7\"} (optional) + var linkedContactsIds = 789; // long? | Filter by linked contacts ids (optional) + var linkedDealsIds = linkedDealsIds_example; // string | Filter by linked deals ids (optional) + var page = 789; // long? | Index of the first document of the page (optional) + var limit = 789; // long? | Number of documents per page (optional) (default to 50) + var sort = sort_example; // string | Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + var sortBy = sortBy_example; // string | The field used to sort field names. (optional) + + try + { + // Get all companies + CompaniesList result = apiInstance.CompaniesGet(filters, linkedContactsIds, linkedDealsIds, page, limit, sort, sortBy); + Debug.WriteLine(result); + } + catch (Exception e) + { + Debug.Print("Exception when calling CompaniesApi.CompaniesGet: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **filters** | **string**| Filter by attrbutes. If you have filter for owner on your side please send it as {"attributes.owner":"5b1a17d914b73d35a76ca0c7"} | [optional] + **linkedContactsIds** | **long?**| Filter by linked contacts ids | [optional] + **linkedDealsIds** | **string**| Filter by linked deals ids | [optional] + **page** | **long?**| Index of the first document of the page | [optional] + **limit** | **long?**| Number of documents per page | [optional] [default to 50] + **sort** | **string**| Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed | [optional] + **sortBy** | **string**| The field used to sort field names. | [optional] + +### Return type + +[**CompaniesList**](CompaniesList.md) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **CompaniesIdDelete** +> void CompaniesIdDelete (string id) + +Delete a company + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class CompaniesIdDeleteExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new CompaniesApi(); + var id = id_example; // string | + + try + { + // Delete a company + apiInstance.CompaniesIdDelete(id); + } + catch (Exception e) + { + Debug.Print("Exception when calling CompaniesApi.CompaniesIdDelete: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **string**| | + +### Return type + +void (empty response body) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **CompaniesIdGet** +> Company CompaniesIdGet (string id) + +Get a company + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class CompaniesIdGetExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new CompaniesApi(); + var id = id_example; // string | + + try + { + // Get a company + Company result = apiInstance.CompaniesIdGet(id); + Debug.WriteLine(result); + } + catch (Exception e) + { + Debug.Print("Exception when calling CompaniesApi.CompaniesIdGet: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **string**| | + +### Return type + +[**Company**](Company.md) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **CompaniesIdPatch** +> Company CompaniesIdPatch (string id, Body1 body) + +Update a company + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class CompaniesIdPatchExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new CompaniesApi(); + var id = id_example; // string | + var body = new Body1(); // Body1 | Updated company details. + + try + { + // Update a company + Company result = apiInstance.CompaniesIdPatch(id, body); + Debug.WriteLine(result); + } + catch (Exception e) + { + Debug.Print("Exception when calling CompaniesApi.CompaniesIdPatch: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **string**| | + **body** | [**Body1**](Body1.md)| Updated company details. | + +### Return type + +[**Company**](Company.md) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **CompaniesLinkUnlinkIdPatch** +> void CompaniesLinkUnlinkIdPatch (string id, Body2 body) + +Link and Unlink company with contacts and deals + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class CompaniesLinkUnlinkIdPatchExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new CompaniesApi(); + var id = id_example; // string | + var body = new Body2(); // Body2 | Linked / Unlinked contacts and deals ids. + + try + { + // Link and Unlink company with contacts and deals + apiInstance.CompaniesLinkUnlinkIdPatch(id, body); + } + catch (Exception e) + { + Debug.Print("Exception when calling CompaniesApi.CompaniesLinkUnlinkIdPatch: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **string**| | + **body** | [**Body2**](Body2.md)| Linked / Unlinked contacts and deals ids. | + +### Return type + +void (empty response body) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **CompaniesPost** +> InlineResponse200 CompaniesPost (Body body) + +Create a company + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class CompaniesPostExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new CompaniesApi(); + var body = new Body(); // Body | Company create data. + + try + { + // Create a company + InlineResponse200 result = apiInstance.CompaniesPost(body); + Debug.WriteLine(result); + } + catch (Exception e) + { + Debug.Print("Exception when calling CompaniesApi.CompaniesPost: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**Body**](Body.md)| Company create data. | + +### Return type + +[**InlineResponse200**](InlineResponse200.md) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/CompaniesList.md b/docs/CompaniesList.md new file mode 100644 index 0000000..9dac1d5 --- /dev/null +++ b/docs/CompaniesList.md @@ -0,0 +1,9 @@ +# sib_api_v3_sdk.Model.CompaniesList +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Items** | [**List<Company>**](Company.md) | List of compaies | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/Company.md b/docs/Company.md new file mode 100644 index 0000000..9ae30a4 --- /dev/null +++ b/docs/Company.md @@ -0,0 +1,12 @@ +# sib_api_v3_sdk.Model.Company +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **string** | Unique company id | [optional] +**Attributes** | **Object** | Company attributes with values | [optional] +**LinkedContactsIds** | **List<int?>** | Contact ids for contacts linked to this company | [optional] +**LinkedDealsIds** | **List<string>** | Deals ids for companies linked to this company | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/CompanyAttributes.md b/docs/CompanyAttributes.md new file mode 100644 index 0000000..87cc9f7 --- /dev/null +++ b/docs/CompanyAttributes.md @@ -0,0 +1,8 @@ +# sib_api_v3_sdk.Model.CompanyAttributes +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/CompanyAttributesInner.md b/docs/CompanyAttributesInner.md new file mode 100644 index 0000000..de0abfe --- /dev/null +++ b/docs/CompanyAttributesInner.md @@ -0,0 +1,13 @@ +# sib_api_v3_sdk.Model.CompanyAttributesInner +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**InternalName** | **string** | | [optional] +**Label** | **string** | | [optional] +**AttributeTypeName** | **string** | | [optional] +**AttributeOptions** | **List<Object>** | | [optional] +**IsRequired** | **bool?** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/ComponentItems.md b/docs/ComponentItems.md new file mode 100644 index 0000000..1bb9eda --- /dev/null +++ b/docs/ComponentItems.md @@ -0,0 +1,10 @@ +# sib_api_v3_sdk.Model.ComponentItems +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Type** | **string** | | [optional] +**Text** | **string** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/Contact.md b/docs/Contact.md deleted file mode 100644 index 6373b86..0000000 --- a/docs/Contact.md +++ /dev/null @@ -1,16 +0,0 @@ -# sib_api_v3_sdk.Model.Contact -## Properties - -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**VirtualNextTask** | **Object** | Next incomplete task of contact | [optional] -**Email** | **string** | Contact email | -**AssignToId** | **string** | User id to whom contact is assigned | [optional] -**ContactsId** | **int?** | Contact id | [optional] -**CrmLists** | **Object** | CRM lists in which contact is added | -**Attributes** | **Object** | Contact attributes e.g firstname / lastname / SMS etc. | [optional] -**CreatedAt** | **DateTime?** | Contact created date/time | [optional] -**UpdatedAt** | **DateTime?** | Contact updated date/time | [optional] - -[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) - diff --git a/docs/ContactsApi.md b/docs/ContactsApi.md index 7f34b41..956c21f 100644 --- a/docs/ContactsApi.md +++ b/docs/ContactsApi.md @@ -782,7 +782,7 @@ This endpoint does not need any parameter. # **GetContactInfo** -> GetExtendedContactDetails GetContactInfo (string identifier) +> GetExtendedContactDetails GetContactInfo (string identifier, Object startDate = null, Object endDate = null) Get a contact's details @@ -813,11 +813,13 @@ namespace Example var apiInstance = new ContactsApi(); var identifier = identifier_example; // string | Email (urlencoded) OR ID of the contact OR its SMS attribute value + var startDate = new Object(); // Object | **Mandatory if endDate is used.** Starting date (YYYY-MM-DD) of the statistic events specific to campaigns. Must be lower than equal to endDate (optional) + var endDate = new Object(); // Object | **Mandatory if startDate is used.** Ending date (YYYY-MM-DD) of the statistic events specific to campaigns. Must be greater than equal to startDate. (optional) try { // Get a contact's details - GetExtendedContactDetails result = apiInstance.GetContactInfo(identifier); + GetExtendedContactDetails result = apiInstance.GetContactInfo(identifier, startDate, endDate); Debug.WriteLine(result); } catch (Exception e) @@ -834,6 +836,8 @@ namespace Example Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **identifier** | **string**| Email (urlencoded) OR ID of the contact OR its SMS attribute value | + **startDate** | [**Object**](Object.md)| **Mandatory if endDate is used.** Starting date (YYYY-MM-DD) of the statistic events specific to campaigns. Must be lower than equal to endDate | [optional] + **endDate** | [**Object**](Object.md)| **Mandatory if startDate is used.** Ending date (YYYY-MM-DD) of the statistic events specific to campaigns. Must be greater than equal to startDate. | [optional] ### Return type diff --git a/docs/ListsApi.md b/docs/ConversationsApi.md similarity index 58% rename from docs/ListsApi.md rename to docs/ConversationsApi.md index 047aef3..ece4148 100644 --- a/docs/ListsApi.md +++ b/docs/ConversationsApi.md @@ -1,25 +1,27 @@ -# sib_api_v3_sdk.Api.ListsApi +# sib_api_v3_sdk.Api.ConversationsApi All URIs are relative to *https://api.sendinblue.com/v3* Method | HTTP request | Description ------------- | ------------- | ------------- -[**AddContactToList**](ListsApi.md#addcontacttolist) | **POST** /contacts/lists/{listId}/contacts/add | Add existing contacts to a list -[**CreateList**](ListsApi.md#createlist) | **POST** /contacts/lists | Create a list -[**DeleteList**](ListsApi.md#deletelist) | **DELETE** /contacts/lists/{listId} | Delete a list -[**GetContactsFromList**](ListsApi.md#getcontactsfromlist) | **GET** /contacts/lists/{listId}/contacts | Get contacts in a list -[**GetFolderLists**](ListsApi.md#getfolderlists) | **GET** /contacts/folders/{folderId}/lists | Get lists in a folder -[**GetList**](ListsApi.md#getlist) | **GET** /contacts/lists/{listId} | Get a list's details -[**GetLists**](ListsApi.md#getlists) | **GET** /contacts/lists | Get all the lists -[**RemoveContactFromList**](ListsApi.md#removecontactfromlist) | **POST** /contacts/lists/{listId}/contacts/remove | Delete a contact from a list -[**UpdateList**](ListsApi.md#updatelist) | **PUT** /contacts/lists/{listId} | Update a list +[**ConversationsAgentOnlinePingPost**](ConversationsApi.md#conversationsagentonlinepingpost) | **POST** /conversations/agentOnlinePing | Sets agent’s status to online for 2-3 minutes +[**ConversationsMessagesIdDelete**](ConversationsApi.md#conversationsmessagesiddelete) | **DELETE** /conversations/messages/{id} | Delete a message sent by an agent +[**ConversationsMessagesIdGet**](ConversationsApi.md#conversationsmessagesidget) | **GET** /conversations/messages/{id} | Get a message +[**ConversationsMessagesIdPut**](ConversationsApi.md#conversationsmessagesidput) | **PUT** /conversations/messages/{id} | Update a message sent by an agent +[**ConversationsMessagesPost**](ConversationsApi.md#conversationsmessagespost) | **POST** /conversations/messages | Send a message as an agent +[**ConversationsPushedMessagesIdDelete**](ConversationsApi.md#conversationspushedmessagesiddelete) | **DELETE** /conversations/pushedMessages/{id} | Delete an automated message +[**ConversationsPushedMessagesIdGet**](ConversationsApi.md#conversationspushedmessagesidget) | **GET** /conversations/pushedMessages/{id} | Get an automated message +[**ConversationsPushedMessagesIdPut**](ConversationsApi.md#conversationspushedmessagesidput) | **PUT** /conversations/pushedMessages/{id} | Update an automated message +[**ConversationsPushedMessagesPost**](ConversationsApi.md#conversationspushedmessagespost) | **POST** /conversations/pushedMessages | Send an automated message to a visitor - -# **AddContactToList** -> PostContactInfo AddContactToList (long? listId, AddContactToList contactEmails) + +# **ConversationsAgentOnlinePingPost** +> void ConversationsAgentOnlinePingPost (Body12 body) -Add existing contacts to a list +Sets agent’s status to online for 2-3 minutes + +We recommend pinging this endpoint every minute for as long as the agent has to be considered online. ### Example ```csharp @@ -31,7 +33,7 @@ using sib_api_v3_sdk.Model; namespace Example { - public class AddContactToListExample + public class ConversationsAgentOnlinePingPostExample { public void main() { @@ -44,19 +46,17 @@ namespace Example // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - var apiInstance = new ListsApi(); - var listId = 789; // long? | Id of the list - var contactEmails = new AddContactToList(); // AddContactToList | Emails addresses OR IDs of the contacts + var apiInstance = new ConversationsApi(); + var body = new Body12(); // Body12 | Agent fields. try { - // Add existing contacts to a list - PostContactInfo result = apiInstance.AddContactToList(listId, contactEmails); - Debug.WriteLine(result); + // Sets agent’s status to online for 2-3 minutes + apiInstance.ConversationsAgentOnlinePingPost(body); } catch (Exception e) { - Debug.Print("Exception when calling ListsApi.AddContactToList: " + e.Message ); + Debug.Print("Exception when calling ConversationsApi.ConversationsAgentOnlinePingPost: " + e.Message ); } } } @@ -67,12 +67,11 @@ namespace Example Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **listId** | **long?**| Id of the list | - **contactEmails** | [**AddContactToList**](AddContactToList.md)| Emails addresses OR IDs of the contacts | + **body** | [**Body12**](Body12.md)| Agent fields. | ### Return type -[**PostContactInfo**](PostContactInfo.md) +void (empty response body) ### Authorization @@ -85,11 +84,13 @@ Name | Type | Description | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **CreateList** -> CreateModel CreateList (CreateList createList) + +# **ConversationsMessagesIdDelete** +> void ConversationsMessagesIdDelete (string id) + +Delete a message sent by an agent -Create a list +Only agents’ messages can be deleted. ### Example ```csharp @@ -101,7 +102,7 @@ using sib_api_v3_sdk.Model; namespace Example { - public class CreateListExample + public class ConversationsMessagesIdDeleteExample { public void main() { @@ -114,18 +115,17 @@ namespace Example // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - var apiInstance = new ListsApi(); - var createList = new CreateList(); // CreateList | Values to create a list + var apiInstance = new ConversationsApi(); + var id = id_example; // string | ID of the message try { - // Create a list - CreateModel result = apiInstance.CreateList(createList); - Debug.WriteLine(result); + // Delete a message sent by an agent + apiInstance.ConversationsMessagesIdDelete(id); } catch (Exception e) { - Debug.Print("Exception when calling ListsApi.CreateList: " + e.Message ); + Debug.Print("Exception when calling ConversationsApi.ConversationsMessagesIdDelete: " + e.Message ); } } } @@ -136,11 +136,11 @@ namespace Example Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **createList** | [**CreateList**](CreateList.md)| Values to create a list | + **id** | **string**| ID of the message | ### Return type -[**CreateModel**](CreateModel.md) +void (empty response body) ### Authorization @@ -153,11 +153,11 @@ Name | Type | Description | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **DeleteList** -> void DeleteList (long? listId) + +# **ConversationsMessagesIdGet** +> ConversationsMessage ConversationsMessagesIdGet (string id) -Delete a list +Get a message ### Example ```csharp @@ -169,7 +169,7 @@ using sib_api_v3_sdk.Model; namespace Example { - public class DeleteListExample + public class ConversationsMessagesIdGetExample { public void main() { @@ -182,17 +182,18 @@ namespace Example // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - var apiInstance = new ListsApi(); - var listId = 789; // long? | Id of the list + var apiInstance = new ConversationsApi(); + var id = id_example; // string | ID of the message try { - // Delete a list - apiInstance.DeleteList(listId); + // Get a message + ConversationsMessage result = apiInstance.ConversationsMessagesIdGet(id); + Debug.WriteLine(result); } catch (Exception e) { - Debug.Print("Exception when calling ListsApi.DeleteList: " + e.Message ); + Debug.Print("Exception when calling ConversationsApi.ConversationsMessagesIdGet: " + e.Message ); } } } @@ -203,11 +204,11 @@ namespace Example Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **listId** | **long?**| Id of the list | + **id** | **string**| ID of the message | ### Return type -void (empty response body) +[**ConversationsMessage**](ConversationsMessage.md) ### Authorization @@ -220,11 +221,13 @@ void (empty response body) [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **GetContactsFromList** -> GetContacts GetContactsFromList (long? listId, string modifiedSince = null, long? limit = null, long? offset = null, string sort = null) + +# **ConversationsMessagesIdPut** +> ConversationsMessage ConversationsMessagesIdPut (string id, Body9 body = null) + +Update a message sent by an agent -Get contacts in a list +Only agents’ messages can be edited. ### Example ```csharp @@ -236,7 +239,7 @@ using sib_api_v3_sdk.Model; namespace Example { - public class GetContactsFromListExample + public class ConversationsMessagesIdPutExample { public void main() { @@ -249,22 +252,19 @@ namespace Example // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - var apiInstance = new ListsApi(); - var listId = 789; // long? | Id of the list - var modifiedSince = modifiedSince_example; // string | Filter (urlencoded) the contacts modified after a given UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ). Prefer to pass your timezone in date-time format for accurate result. (optional) - var limit = 789; // long? | Number of documents per page (optional) (default to 50) - var offset = 789; // long? | Index of the first document of the page (optional) (default to 0) - var sort = sort_example; // string | Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional) (default to desc) + var apiInstance = new ConversationsApi(); + var id = id_example; // string | ID of the message + var body = new Body9(); // Body9 | (optional) try { - // Get contacts in a list - GetContacts result = apiInstance.GetContactsFromList(listId, modifiedSince, limit, offset, sort); + // Update a message sent by an agent + ConversationsMessage result = apiInstance.ConversationsMessagesIdPut(id, body); Debug.WriteLine(result); } catch (Exception e) { - Debug.Print("Exception when calling ListsApi.GetContactsFromList: " + e.Message ); + Debug.Print("Exception when calling ConversationsApi.ConversationsMessagesIdPut: " + e.Message ); } } } @@ -275,15 +275,12 @@ namespace Example Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **listId** | **long?**| Id of the list | - **modifiedSince** | **string**| Filter (urlencoded) the contacts modified after a given UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ). Prefer to pass your timezone in date-time format for accurate result. | [optional] - **limit** | **long?**| Number of documents per page | [optional] [default to 50] - **offset** | **long?**| Index of the first document of the page | [optional] [default to 0] - **sort** | **string**| Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed | [optional] [default to desc] + **id** | **string**| ID of the message | + **body** | [**Body9**](Body9.md)| | [optional] ### Return type -[**GetContacts**](GetContacts.md) +[**ConversationsMessage**](ConversationsMessage.md) ### Authorization @@ -296,11 +293,11 @@ Name | Type | Description | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **GetFolderLists** -> GetFolderLists GetFolderLists (long? folderId, long? limit = null, long? offset = null, string sort = null) + +# **ConversationsMessagesPost** +> ConversationsMessage ConversationsMessagesPost (Body8 body) -Get lists in a folder +Send a message as an agent ### Example ```csharp @@ -312,7 +309,7 @@ using sib_api_v3_sdk.Model; namespace Example { - public class GetFolderListsExample + public class ConversationsMessagesPostExample { public void main() { @@ -325,21 +322,18 @@ namespace Example // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - var apiInstance = new ListsApi(); - var folderId = 789; // long? | Id of the folder - var limit = 789; // long? | Number of documents per page (optional) (default to 10) - var offset = 789; // long? | Index of the first document of the page (optional) (default to 0) - var sort = sort_example; // string | Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional) (default to desc) + var apiInstance = new ConversationsApi(); + var body = new Body8(); // Body8 | Message fields. try { - // Get lists in a folder - GetFolderLists result = apiInstance.GetFolderLists(folderId, limit, offset, sort); + // Send a message as an agent + ConversationsMessage result = apiInstance.ConversationsMessagesPost(body); Debug.WriteLine(result); } catch (Exception e) { - Debug.Print("Exception when calling ListsApi.GetFolderLists: " + e.Message ); + Debug.Print("Exception when calling ConversationsApi.ConversationsMessagesPost: " + e.Message ); } } } @@ -350,14 +344,11 @@ namespace Example Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **folderId** | **long?**| Id of the folder | - **limit** | **long?**| Number of documents per page | [optional] [default to 10] - **offset** | **long?**| Index of the first document of the page | [optional] [default to 0] - **sort** | **string**| Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed | [optional] [default to desc] + **body** | [**Body8**](Body8.md)| Message fields. | ### Return type -[**GetFolderLists**](GetFolderLists.md) +[**ConversationsMessage**](ConversationsMessage.md) ### Authorization @@ -370,11 +361,11 @@ Name | Type | Description | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **GetList** -> GetExtendedList GetList (long? listId) + +# **ConversationsPushedMessagesIdDelete** +> void ConversationsPushedMessagesIdDelete (string id) -Get a list's details +Delete an automated message ### Example ```csharp @@ -386,7 +377,7 @@ using sib_api_v3_sdk.Model; namespace Example { - public class GetListExample + public class ConversationsPushedMessagesIdDeleteExample { public void main() { @@ -399,18 +390,17 @@ namespace Example // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - var apiInstance = new ListsApi(); - var listId = 789; // long? | Id of the list + var apiInstance = new ConversationsApi(); + var id = id_example; // string | ID of the message try { - // Get a list's details - GetExtendedList result = apiInstance.GetList(listId); - Debug.WriteLine(result); + // Delete an automated message + apiInstance.ConversationsPushedMessagesIdDelete(id); } catch (Exception e) { - Debug.Print("Exception when calling ListsApi.GetList: " + e.Message ); + Debug.Print("Exception when calling ConversationsApi.ConversationsPushedMessagesIdDelete: " + e.Message ); } } } @@ -421,11 +411,11 @@ namespace Example Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **listId** | **long?**| Id of the list | + **id** | **string**| ID of the message | ### Return type -[**GetExtendedList**](GetExtendedList.md) +void (empty response body) ### Authorization @@ -438,11 +428,11 @@ Name | Type | Description | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **GetLists** -> GetLists GetLists (long? limit = null, long? offset = null, string sort = null) + +# **ConversationsPushedMessagesIdGet** +> ConversationsMessage ConversationsPushedMessagesIdGet (string id) -Get all the lists +Get an automated message ### Example ```csharp @@ -454,7 +444,7 @@ using sib_api_v3_sdk.Model; namespace Example { - public class GetListsExample + public class ConversationsPushedMessagesIdGetExample { public void main() { @@ -467,20 +457,18 @@ namespace Example // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - var apiInstance = new ListsApi(); - var limit = 789; // long? | Number of documents per page (optional) (default to 10) - var offset = 789; // long? | Index of the first document of the page (optional) (default to 0) - var sort = sort_example; // string | Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional) (default to desc) + var apiInstance = new ConversationsApi(); + var id = id_example; // string | ID of the message sent previously try { - // Get all the lists - GetLists result = apiInstance.GetLists(limit, offset, sort); + // Get an automated message + ConversationsMessage result = apiInstance.ConversationsPushedMessagesIdGet(id); Debug.WriteLine(result); } catch (Exception e) { - Debug.Print("Exception when calling ListsApi.GetLists: " + e.Message ); + Debug.Print("Exception when calling ConversationsApi.ConversationsPushedMessagesIdGet: " + e.Message ); } } } @@ -491,13 +479,11 @@ namespace Example Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **limit** | **long?**| Number of documents per page | [optional] [default to 10] - **offset** | **long?**| Index of the first document of the page | [optional] [default to 0] - **sort** | **string**| Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed | [optional] [default to desc] + **id** | **string**| ID of the message sent previously | ### Return type -[**GetLists**](GetLists.md) +[**ConversationsMessage**](ConversationsMessage.md) ### Authorization @@ -510,11 +496,11 @@ Name | Type | Description | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **RemoveContactFromList** -> PostContactInfo RemoveContactFromList (long? listId, RemoveContactFromList contactEmails) + +# **ConversationsPushedMessagesIdPut** +> ConversationsMessage ConversationsPushedMessagesIdPut (string id, Body11 body) -Delete a contact from a list +Update an automated message ### Example ```csharp @@ -526,7 +512,7 @@ using sib_api_v3_sdk.Model; namespace Example { - public class RemoveContactFromListExample + public class ConversationsPushedMessagesIdPutExample { public void main() { @@ -539,19 +525,19 @@ namespace Example // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - var apiInstance = new ListsApi(); - var listId = 789; // long? | Id of the list - var contactEmails = new RemoveContactFromList(); // RemoveContactFromList | Emails addresses OR IDs of the contacts + var apiInstance = new ConversationsApi(); + var id = id_example; // string | ID of the message + var body = new Body11(); // Body11 | try { - // Delete a contact from a list - PostContactInfo result = apiInstance.RemoveContactFromList(listId, contactEmails); + // Update an automated message + ConversationsMessage result = apiInstance.ConversationsPushedMessagesIdPut(id, body); Debug.WriteLine(result); } catch (Exception e) { - Debug.Print("Exception when calling ListsApi.RemoveContactFromList: " + e.Message ); + Debug.Print("Exception when calling ConversationsApi.ConversationsPushedMessagesIdPut: " + e.Message ); } } } @@ -562,12 +548,12 @@ namespace Example Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **listId** | **long?**| Id of the list | - **contactEmails** | [**RemoveContactFromList**](RemoveContactFromList.md)| Emails addresses OR IDs of the contacts | + **id** | **string**| ID of the message | + **body** | [**Body11**](Body11.md)| | ### Return type -[**PostContactInfo**](PostContactInfo.md) +[**ConversationsMessage**](ConversationsMessage.md) ### Authorization @@ -580,11 +566,13 @@ Name | Type | Description | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **UpdateList** -> void UpdateList (long? listId, UpdateList updateList) + +# **ConversationsPushedMessagesPost** +> ConversationsMessage ConversationsPushedMessagesPost (Body10 body) -Update a list +Send an automated message to a visitor + +Example of automated messages: order status, announce new features in your web app, etc. ### Example ```csharp @@ -596,7 +584,7 @@ using sib_api_v3_sdk.Model; namespace Example { - public class UpdateListExample + public class ConversationsPushedMessagesPostExample { public void main() { @@ -609,18 +597,18 @@ namespace Example // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - var apiInstance = new ListsApi(); - var listId = 789; // long? | Id of the list - var updateList = new UpdateList(); // UpdateList | Values to update a list + var apiInstance = new ConversationsApi(); + var body = new Body10(); // Body10 | try { - // Update a list - apiInstance.UpdateList(listId, updateList); + // Send an automated message to a visitor + ConversationsMessage result = apiInstance.ConversationsPushedMessagesPost(body); + Debug.WriteLine(result); } catch (Exception e) { - Debug.Print("Exception when calling ListsApi.UpdateList: " + e.Message ); + Debug.Print("Exception when calling ConversationsApi.ConversationsPushedMessagesPost: " + e.Message ); } } } @@ -631,12 +619,11 @@ namespace Example Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **listId** | **long?**| Id of the list | - **updateList** | [**UpdateList**](UpdateList.md)| Values to update a list | + **body** | [**Body10**](Body10.md)| | ### Return type -void (empty response body) +[**ConversationsMessage**](ConversationsMessage.md) ### Authorization diff --git a/docs/ConversationsMessage.md b/docs/ConversationsMessage.md new file mode 100644 index 0000000..79d2d6c --- /dev/null +++ b/docs/ConversationsMessage.md @@ -0,0 +1,18 @@ +# sib_api_v3_sdk.Model.ConversationsMessage +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **string** | Message ID. It can be used for further manipulations with the message. | [optional] +**Type** | **string** | `"agent"` for agents’ messages, `"visitor"` for visitors’ messages. | [optional] +**Text** | **string** | Message text or name of the attached file | [optional] +**VisitorId** | **string** | visitor’s ID | [optional] +**AgentId** | **string** | ID of the agent on whose behalf the message was sent (only in messages sent by an agent). | [optional] +**AgentName** | **string** | Agent’s name as displayed to the visitor. Only in the messages sent by an agent. | [optional] +**CreatedAt** | **long?** | Timestamp in milliseconds. | [optional] +**IsPushed** | **bool?** | `true` for pushed messages | [optional] +**ReceivedFrom** | **string** | In two-way integrations, messages sent via REST API can be marked with receivedFrom property and then filtered out when received in a webhook to avoid infinite loop. | [optional] +**File** | [**ConversationsMessageFile**](ConversationsMessageFile.md) | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/ConversationsMessageFile.md b/docs/ConversationsMessageFile.md new file mode 100644 index 0000000..e0cc0ce --- /dev/null +++ b/docs/ConversationsMessageFile.md @@ -0,0 +1,13 @@ +# sib_api_v3_sdk.Model.ConversationsMessageFile +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Filename** | **string** | Name of the file | [optional] +**Size** | **long?** | Size in bytes | [optional] +**IsImage** | **bool?** | Whether the file is an image | [optional] +**Url** | **string** | URL of the file | [optional] +**ImageInfo** | [**ConversationsMessageFileImageInfo**](ConversationsMessageFileImageInfo.md) | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/ConversationsMessageFileImageInfo.md b/docs/ConversationsMessageFileImageInfo.md new file mode 100644 index 0000000..4ecdc41 --- /dev/null +++ b/docs/ConversationsMessageFileImageInfo.md @@ -0,0 +1,11 @@ +# sib_api_v3_sdk.Model.ConversationsMessageFileImageInfo +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Width** | **long?** | Width of the image | [optional] +**Height** | **long?** | height of the image | [optional] +**PreviewUrl** | **string** | URL of the preview | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/CreateApiKeyRequest.md b/docs/CreateApiKeyRequest.md new file mode 100644 index 0000000..9ac5163 --- /dev/null +++ b/docs/CreateApiKeyRequest.md @@ -0,0 +1,10 @@ +# sib_api_v3_sdk.Model.CreateApiKeyRequest +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **long?** | Id of the sub-account organization | +**Name** | **string** | Name of the API key | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/CreateApiKeyResponse.md b/docs/CreateApiKeyResponse.md new file mode 100644 index 0000000..ddefa5f --- /dev/null +++ b/docs/CreateApiKeyResponse.md @@ -0,0 +1,10 @@ +# sib_api_v3_sdk.Model.CreateApiKeyResponse +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Status** | **string** | Status of the API operation. | [optional] +**Key** | **string** | API Key | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/CreateAttribute.md b/docs/CreateAttribute.md index 12a9085..ae15587 100644 --- a/docs/CreateAttribute.md +++ b/docs/CreateAttribute.md @@ -4,6 +4,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **Value** | **string** | Value of the attribute. Use only if the attribute's category is 'calculated' or 'global' | [optional] +**IsRecurring** | **bool?** | Type of the attribute. Use only if the attribute's category is 'calculated' or 'global' | [optional] **Enumeration** | [**List<CreateAttributeEnumeration>**](CreateAttributeEnumeration.md) | List of values and labels that the attribute can take. Use only if the attribute's category is "category". For example, [{"value":1, "label":"male"}, {"value":2, "label":"female"}] | [optional] **Type** | **string** | Type of the attribute. Use only if the attribute's category is 'normal', 'category' or 'transactional' ( type 'boolean' is only available if the category is 'normal' attribute, type 'id' is only available if the category is 'transactional' attribute & type 'category' is only available if the category is 'category' attribute ) | [optional] diff --git a/docs/CreateCategoryModel.md b/docs/CreateCategoryModel.md new file mode 100644 index 0000000..40ebdc0 --- /dev/null +++ b/docs/CreateCategoryModel.md @@ -0,0 +1,9 @@ +# sib_api_v3_sdk.Model.CreateCategoryModel +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **long?** | ID of the category when a new category is created | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/CreateContact.md b/docs/CreateContact.md index 05a9206..82b6408 100644 --- a/docs/CreateContact.md +++ b/docs/CreateContact.md @@ -4,7 +4,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **Email** | **string** | Email address of the user. Mandatory if "SMS" field is not passed in "attributes" parameter. Mobile Number in "SMS" field should be passed with proper country code. For example {"SMS":"+91xxxxxxxxxx"} or {"SMS":"0091xxxxxxxxxx"} | [optional] -**Attributes** | **Object** | Pass the set of attributes and their values. These attributes must be present in your SendinBlue account. For eg. {"FNAME":"Elly", "LNAME":"Roger"} | [optional] +**Attributes** | **Object** | Pass the set of attributes and their values. The attribute's parameter should be passed in capital letter while creating a contact. These attributes must be present in your SendinBlue account. For eg. {"FNAME":"Elly", "LNAME":"Roger"} | [optional] **EmailBlacklisted** | **bool?** | Set this field to blacklist the contact for emails (emailBlacklisted = true) | [optional] **SmsBlacklisted** | **bool?** | Set this field to blacklist the contact for SMS (smsBlacklisted = true) | [optional] **ListIds** | **List<long?>** | Ids of the lists to add the contact to | [optional] diff --git a/docs/CreateEmailCampaign.md b/docs/CreateEmailCampaign.md index da54f17..0d0e8f7 100644 --- a/docs/CreateEmailCampaign.md +++ b/docs/CreateEmailCampaign.md @@ -31,6 +31,8 @@ Name | Type | Description | Notes **IpWarmupEnable** | **bool?** | Available for dedicated ip clients. Set this to true if you wish to warm up your ip. | [optional] [default to false] **InitialQuota** | **long?** | Mandatory if ipWarmupEnable is set to true. Set an initial quota greater than 1 for warming up your ip. We recommend you set a value of 3000. | [optional] **IncreaseRate** | **long?** | Mandatory if ipWarmupEnable is set to true. Set a percentage increase rate for warming up your ip. We recommend you set the increase rate to 30% per day. If you want to send the same number of emails every day, set the daily increase value to 0%. | [optional] +**UnsubscriptionPageId** | **string** | Enter an unsubscription page id. The page id is a 24 digit alphanumeric id that can be found in the URL when editing the page. If not entered, then the default unsubscription page will be used. | [optional] +**UpdateFormId** | **string** | Mandatory if templateId is used containing the {{ update_profile }} tag. Enter an update profile form id. The form id is a 24 digit alphanumeric id that can be found in the URL when editing the form. If not entered, then the default update profile form will be used. | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/CreateEmailCampaignRecipients.md b/docs/CreateEmailCampaignRecipients.md index 5b66d95..7f039c1 100644 --- a/docs/CreateEmailCampaignRecipients.md +++ b/docs/CreateEmailCampaignRecipients.md @@ -5,6 +5,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **ExclusionListIds** | **List<long?>** | List ids to exclude from the campaign | [optional] **ListIds** | **List<long?>** | Mandatory if scheduledAt is not empty. List Ids to send the campaign to | [optional] +**SegmentIds** | **List<long?>** | Mandatory if listIds are not used. Segment ids to send the campaign to. | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/CreateProductModel.md b/docs/CreateProductModel.md new file mode 100644 index 0000000..78d9a37 --- /dev/null +++ b/docs/CreateProductModel.md @@ -0,0 +1,9 @@ +# sib_api_v3_sdk.Model.CreateProductModel +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **long?** | ID of the Product when a new product is created | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/CreateSmsCampaign.md b/docs/CreateSmsCampaign.md index 92cd5d1..1881886 100644 --- a/docs/CreateSmsCampaign.md +++ b/docs/CreateSmsCampaign.md @@ -9,6 +9,8 @@ Name | Type | Description | Notes **Recipients** | [**CreateSmsCampaignRecipients**](CreateSmsCampaignRecipients.md) | | [optional] **ScheduledAt** | **string** | UTC date-time on which the campaign has to run (YYYY-MM-DDTHH:mm:ss.SSSZ). Prefer to pass your timezone in date-time format for accurate result. | [optional] **UnicodeEnabled** | **bool?** | Format of the message. It indicates whether the content should be treated as unicode or not. | [optional] [default to false] +**OrganisationPrefix** | **string** | A recognizable prefix will ensure your audience knows who you are. Recommended by U.S. carriers. This will be added as your Brand Name before the message content. **Prefer verifying maximum length of 160 characters including this prefix in message content to avoid multiple sending of same sms.** | [optional] +**UnsubscribeInstruction** | **string** | Instructions to unsubscribe from future communications. Recommended by U.S. carriers. Must include **STOP** keyword. This will be added as instructions after the end of message content. **Prefer verifying maximum length of 160 characters including this instructions in message content to avoid multiple sending of same sms.** | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/CreateSubAccount.md b/docs/CreateSubAccount.md index d5d65fa..91ea486 100644 --- a/docs/CreateSubAccount.md +++ b/docs/CreateSubAccount.md @@ -3,10 +3,10 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**CompanyName** | **string** | Name of the organization | +**CompanyName** | **string** | Set the name of the sub-account company | **Email** | **string** | Email address for the organization | -**Language** | **string** | Language for identifying localization information | [optional] -**Timezone** | **string** | Request timezone of the client | [optional] +**Language** | **string** | Set the language of the sub-account | [optional] +**Timezone** | **string** | Set the timezone of the sub-account | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/CreateSubAccountResponse.md b/docs/CreateSubAccountResponse.md new file mode 100644 index 0000000..1883c18 --- /dev/null +++ b/docs/CreateSubAccountResponse.md @@ -0,0 +1,9 @@ +# sib_api_v3_sdk.Model.CreateSubAccountResponse +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **long?** | ID of the sub-account created | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/CreateUpdateBatchCategory.md b/docs/CreateUpdateBatchCategory.md new file mode 100644 index 0000000..aee4165 --- /dev/null +++ b/docs/CreateUpdateBatchCategory.md @@ -0,0 +1,10 @@ +# sib_api_v3_sdk.Model.CreateUpdateBatchCategory +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Categories** | [**List<CreateUpdateCategories>**](CreateUpdateCategories.md) | array of categories objects | +**UpdateEnabled** | **bool?** | Facilitate to update the existing categories in the same request (updateEnabled = true) | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/CreateUpdateBatchCategoryModel.md b/docs/CreateUpdateBatchCategoryModel.md new file mode 100644 index 0000000..d514e44 --- /dev/null +++ b/docs/CreateUpdateBatchCategoryModel.md @@ -0,0 +1,10 @@ +# sib_api_v3_sdk.Model.CreateUpdateBatchCategoryModel +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**CreatedCount** | **long?** | Number of the new created categories | [optional] +**UpdatedCount** | **long?** | Number of the existing categories updated | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/CreateUpdateBatchProducts.md b/docs/CreateUpdateBatchProducts.md new file mode 100644 index 0000000..691e41e --- /dev/null +++ b/docs/CreateUpdateBatchProducts.md @@ -0,0 +1,10 @@ +# sib_api_v3_sdk.Model.CreateUpdateBatchProducts +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Products** | [**List<CreateUpdateProducts>**](CreateUpdateProducts.md) | array of products objects | +**UpdateEnabled** | **bool?** | Facilitate to update the existing categories in the same request (updateEnabled = true) | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/CreateUpdateBatchProductsModel.md b/docs/CreateUpdateBatchProductsModel.md new file mode 100644 index 0000000..ac00093 --- /dev/null +++ b/docs/CreateUpdateBatchProductsModel.md @@ -0,0 +1,10 @@ +# sib_api_v3_sdk.Model.CreateUpdateBatchProductsModel +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**CreatedCount** | **long?** | Number of the new created products | [optional] +**UpdatedCount** | **long?** | Number of the existing products updated | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/CreateUpdateCategories.md b/docs/CreateUpdateCategories.md new file mode 100644 index 0000000..f136a19 --- /dev/null +++ b/docs/CreateUpdateCategories.md @@ -0,0 +1,11 @@ +# sib_api_v3_sdk.Model.CreateUpdateCategories +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **string** | Unique Category ID as saved in the shop | +**Name** | **string** | **Mandatory in case of creation**. Name of the Category, as displayed in the shop | [optional] +**Url** | **string** | URL to the category | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/CreateUpdateCategory.md b/docs/CreateUpdateCategory.md new file mode 100644 index 0000000..c670b84 --- /dev/null +++ b/docs/CreateUpdateCategory.md @@ -0,0 +1,12 @@ +# sib_api_v3_sdk.Model.CreateUpdateCategory +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **string** | Unique Category ID as saved in the shop | +**Name** | **string** | **Mandatory in case of creation**. Name of the Category, as displayed in the shop | [optional] +**Url** | **string** | URL to the category | [optional] +**UpdateEnabled** | **bool?** | Facilitate to update the existing category in the same request (updateEnabled = true) | [optional] [default to false] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/CreateUpdateProduct.md b/docs/CreateUpdateProduct.md new file mode 100644 index 0000000..b04871f --- /dev/null +++ b/docs/CreateUpdateProduct.md @@ -0,0 +1,18 @@ +# sib_api_v3_sdk.Model.CreateUpdateProduct +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **string** | Product ID for which you requested the details | +**Name** | **string** | Mandatory in case of creation**. Name of the product for which you requested the details | +**Url** | **string** | URL to the product | [optional] +**ImageUrl** | **string** | Absolute URL to the cover image of the product | [optional] +**Sku** | **string** | Product identifier from the shop | [optional] +**Price** | **float?** | Price of the product | [optional] +**Categories** | **List<string>** | Category ID-s of the product | [optional] +**ParentId** | **string** | Parent product id of the product | [optional] +**MetaInfo** | **Dictionary<string, Object>** | Meta data of product such as description, vendor, producer, stock level. The size of cumulative metaInfo shall not exceed **1000 KB**. Maximum length of metaInfo object can be 10. | [optional] +**UpdateEnabled** | **bool?** | Facilitate to update the existing category in the same request (updateEnabled = true) | [optional] [default to false] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/CreateUpdateProducts.md b/docs/CreateUpdateProducts.md new file mode 100644 index 0000000..a7639a0 --- /dev/null +++ b/docs/CreateUpdateProducts.md @@ -0,0 +1,17 @@ +# sib_api_v3_sdk.Model.CreateUpdateProducts +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **string** | Product ID for which you requested the details | +**Name** | **string** | Mandatory in case of creation**. Name of the product for which you requested the details | +**Url** | **string** | URL to the product | [optional] +**ImageUrl** | **string** | Absolute URL to the cover image of the product | [optional] +**Sku** | **string** | Product identifier from the shop | [optional] +**Price** | **float?** | Price of the product | [optional] +**Categories** | **List<string>** | Category ID-s of the product | [optional] +**ParentId** | **string** | Parent product id of the product | [optional] +**MetaInfo** | **Dictionary<string, Object>** | Meta data of product such as description, vendor, producer, stock level. The size of cumulative metaInfo shall not exceed **1000 KB**. Maximum length of metaInfo object can be 10. | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/CreatedBatchId.md b/docs/CreatedBatchId.md new file mode 100644 index 0000000..91f9f23 --- /dev/null +++ b/docs/CreatedBatchId.md @@ -0,0 +1,9 @@ +# sib_api_v3_sdk.Model.CreatedBatchId +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**BatchId** | **decimal?** | Batch ID of the request | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/Deal.md b/docs/Deal.md new file mode 100644 index 0000000..046455d --- /dev/null +++ b/docs/Deal.md @@ -0,0 +1,12 @@ +# sib_api_v3_sdk.Model.Deal +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **string** | Unique deal id | [optional] +**Attributes** | **Object** | Deal attributes with values | [optional] +**LinkedContactsIds** | **List<int?>** | Contact ids for contacts linked to this deal | [optional] +**LinkedCompaniesIds** | **List<string>** | Companies ids for companies linked to this deal | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/DealAttributes.md b/docs/DealAttributes.md new file mode 100644 index 0000000..8e29325 --- /dev/null +++ b/docs/DealAttributes.md @@ -0,0 +1,8 @@ +# sib_api_v3_sdk.Model.DealAttributes +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/DealAttributesInner.md b/docs/DealAttributesInner.md new file mode 100644 index 0000000..4a76d4d --- /dev/null +++ b/docs/DealAttributesInner.md @@ -0,0 +1,13 @@ +# sib_api_v3_sdk.Model.DealAttributesInner +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**InternalName** | **string** | | [optional] +**Label** | **string** | | [optional] +**AttributeTypeName** | **string** | | [optional] +**AttributeOptions** | **List<Object>** | | [optional] +**IsRequired** | **bool?** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/DealsApi.md b/docs/DealsApi.md new file mode 100644 index 0000000..a23516e --- /dev/null +++ b/docs/DealsApi.md @@ -0,0 +1,565 @@ +# sib_api_v3_sdk.Api.DealsApi + +All URIs are relative to *https://api.sendinblue.com/v3* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**CrmAttributesDealsGet**](DealsApi.md#crmattributesdealsget) | **GET** /crm/attributes/deals | Get deal attributes +[**CrmDealsGet**](DealsApi.md#crmdealsget) | **GET** /crm/deals | Get all deals +[**CrmDealsIdDelete**](DealsApi.md#crmdealsiddelete) | **DELETE** /crm/deals/{id} | Delete a deal +[**CrmDealsIdGet**](DealsApi.md#crmdealsidget) | **GET** /crm/deals/{id} | Get a deal +[**CrmDealsIdPatch**](DealsApi.md#crmdealsidpatch) | **PATCH** /crm/deals/{id} | Update a deal +[**CrmDealsLinkUnlinkIdPatch**](DealsApi.md#crmdealslinkunlinkidpatch) | **PATCH** /crm/deals/link-unlink/{id} | Link and Unlink a deal with contacts and companies +[**CrmDealsPost**](DealsApi.md#crmdealspost) | **POST** /crm/deals | Create a deal +[**CrmPipelineDetailsGet**](DealsApi.md#crmpipelinedetailsget) | **GET** /crm/pipeline/details | Get pipeline stages + + + +# **CrmAttributesDealsGet** +> DealAttributes CrmAttributesDealsGet () + +Get deal attributes + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class CrmAttributesDealsGetExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new DealsApi(); + + try + { + // Get deal attributes + DealAttributes result = apiInstance.CrmAttributesDealsGet(); + Debug.WriteLine(result); + } + catch (Exception e) + { + Debug.Print("Exception when calling DealsApi.CrmAttributesDealsGet: " + e.Message ); + } + } + } +} +``` + +### Parameters +This endpoint does not need any parameter. + +### Return type + +[**DealAttributes**](DealAttributes.md) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **CrmDealsGet** +> DealsList CrmDealsGet (string filtersAttributes = null, string filtersLinkedCompaniesIds = null, string filtersLinkedContactsIds = null, long? offset = null, long? limit = null, string sort = null, string sortBy = null) + +Get all deals + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class CrmDealsGetExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new DealsApi(); + var filtersAttributes = filtersAttributes_example; // string | Filter by attrbutes. If you have filter for owner on your side please send it as `attributes.owner`.\" (optional) + var filtersLinkedCompaniesIds = filtersLinkedCompaniesIds_example; // string | Filter by linked companies ids (optional) + var filtersLinkedContactsIds = filtersLinkedContactsIds_example; // string | Filter by linked companies ids (optional) + var offset = 789; // long? | Index of the first document of the page (optional) + var limit = 789; // long? | Number of documents per page (optional) (default to 50) + var sort = sort_example; // string | Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + var sortBy = sortBy_example; // string | The field used to sort field names. (optional) + + try + { + // Get all deals + DealsList result = apiInstance.CrmDealsGet(filtersAttributes, filtersLinkedCompaniesIds, filtersLinkedContactsIds, offset, limit, sort, sortBy); + Debug.WriteLine(result); + } + catch (Exception e) + { + Debug.Print("Exception when calling DealsApi.CrmDealsGet: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **filtersAttributes** | **string**| Filter by attrbutes. If you have filter for owner on your side please send it as `attributes.owner`." | [optional] + **filtersLinkedCompaniesIds** | **string**| Filter by linked companies ids | [optional] + **filtersLinkedContactsIds** | **string**| Filter by linked companies ids | [optional] + **offset** | **long?**| Index of the first document of the page | [optional] + **limit** | **long?**| Number of documents per page | [optional] [default to 50] + **sort** | **string**| Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed | [optional] + **sortBy** | **string**| The field used to sort field names. | [optional] + +### Return type + +[**DealsList**](DealsList.md) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **CrmDealsIdDelete** +> void CrmDealsIdDelete (string id) + +Delete a deal + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class CrmDealsIdDeleteExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new DealsApi(); + var id = id_example; // string | + + try + { + // Delete a deal + apiInstance.CrmDealsIdDelete(id); + } + catch (Exception e) + { + Debug.Print("Exception when calling DealsApi.CrmDealsIdDelete: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **string**| | + +### Return type + +void (empty response body) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **CrmDealsIdGet** +> Deal CrmDealsIdGet (string id) + +Get a deal + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class CrmDealsIdGetExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new DealsApi(); + var id = id_example; // string | + + try + { + // Get a deal + Deal result = apiInstance.CrmDealsIdGet(id); + Debug.WriteLine(result); + } + catch (Exception e) + { + Debug.Print("Exception when calling DealsApi.CrmDealsIdGet: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **string**| | + +### Return type + +[**Deal**](Deal.md) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **CrmDealsIdPatch** +> void CrmDealsIdPatch (string id, Body4 body) + +Update a deal + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class CrmDealsIdPatchExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new DealsApi(); + var id = id_example; // string | + var body = new Body4(); // Body4 | Updated deal details. + + try + { + // Update a deal + apiInstance.CrmDealsIdPatch(id, body); + } + catch (Exception e) + { + Debug.Print("Exception when calling DealsApi.CrmDealsIdPatch: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **string**| | + **body** | [**Body4**](Body4.md)| Updated deal details. | + +### Return type + +void (empty response body) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **CrmDealsLinkUnlinkIdPatch** +> void CrmDealsLinkUnlinkIdPatch (string id, Body5 body) + +Link and Unlink a deal with contacts and companies + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class CrmDealsLinkUnlinkIdPatchExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new DealsApi(); + var id = id_example; // string | + var body = new Body5(); // Body5 | Linked / Unlinked contacts and companies ids. + + try + { + // Link and Unlink a deal with contacts and companies + apiInstance.CrmDealsLinkUnlinkIdPatch(id, body); + } + catch (Exception e) + { + Debug.Print("Exception when calling DealsApi.CrmDealsLinkUnlinkIdPatch: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **string**| | + **body** | [**Body5**](Body5.md)| Linked / Unlinked contacts and companies ids. | + +### Return type + +void (empty response body) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **CrmDealsPost** +> InlineResponse201 CrmDealsPost (Body3 body) + +Create a deal + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class CrmDealsPostExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new DealsApi(); + var body = new Body3(); // Body3 | Deal create data. + + try + { + // Create a deal + InlineResponse201 result = apiInstance.CrmDealsPost(body); + Debug.WriteLine(result); + } + catch (Exception e) + { + Debug.Print("Exception when calling DealsApi.CrmDealsPost: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**Body3**](Body3.md)| Deal create data. | + +### Return type + +[**InlineResponse201**](InlineResponse201.md) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **CrmPipelineDetailsGet** +> Pipeline CrmPipelineDetailsGet () + +Get pipeline stages + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class CrmPipelineDetailsGetExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new DealsApi(); + + try + { + // Get pipeline stages + Pipeline result = apiInstance.CrmPipelineDetailsGet(); + Debug.WriteLine(result); + } + catch (Exception e) + { + Debug.Print("Exception when calling DealsApi.CrmPipelineDetailsGet: " + e.Message ); + } + } + } +} +``` + +### Parameters +This endpoint does not need any parameter. + +### Return type + +[**Pipeline**](Pipeline.md) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/DealsList.md b/docs/DealsList.md new file mode 100644 index 0000000..f43b901 --- /dev/null +++ b/docs/DealsList.md @@ -0,0 +1,9 @@ +# sib_api_v3_sdk.Model.DealsList +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Items** | [**List<Deal>**](Deal.md) | List of deals | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/CRMApi.md b/docs/EcommerceApi.md similarity index 59% rename from docs/CRMApi.md rename to docs/EcommerceApi.md index c534f63..ed95aac 100644 --- a/docs/CRMApi.md +++ b/docs/EcommerceApi.md @@ -1,97 +1,27 @@ -# sib_api_v3_sdk.Api.CRMApi +# sib_api_v3_sdk.Api.EcommerceApi All URIs are relative to *https://api.sendinblue.com/v3* Method | HTTP request | Description ------------- | ------------- | ------------- -[**CrmFilesIdDataGet**](CRMApi.md#crmfilesiddataget) | **GET** /crm/files/{id}/data | Get file details -[**CrmFilesIdDelete**](CRMApi.md#crmfilesiddelete) | **DELETE** /crm/files/{id} | Delete a file -[**CrmFilesIdGet**](CRMApi.md#crmfilesidget) | **GET** /crm/files/{id} | Download a file -[**CrmFilesPost**](CRMApi.md#crmfilespost) | **POST** /crm/files | Upload a file -[**CrmNotesIdDelete**](CRMApi.md#crmnotesiddelete) | **DELETE** /crm/notes/{id} | Delete a note -[**CrmNotesIdGet**](CRMApi.md#crmnotesidget) | **GET** /crm/notes/{id} | Get a note -[**CrmNotesIdPatch**](CRMApi.md#crmnotesidpatch) | **PATCH** /crm/notes/{id} | Update a note -[**CrmNotesPost**](CRMApi.md#crmnotespost) | **POST** /crm/notes | Create a note -[**CrmTasksIdDelete**](CRMApi.md#crmtasksiddelete) | **DELETE** /crm/tasks/{id} | Delete a task -[**CrmTasksIdGet**](CRMApi.md#crmtasksidget) | **GET** /crm/tasks/{id} | Get a task -[**CrmTasksIdPatch**](CRMApi.md#crmtasksidpatch) | **PATCH** /crm/tasks/{id} | Update a task -[**CrmTasksPost**](CRMApi.md#crmtaskspost) | **POST** /crm/tasks | Create a task -[**CrmTasktypesGet**](CRMApi.md#crmtasktypesget) | **GET** /crm/tasktypes | Get all task types - - - -# **CrmFilesIdDataGet** -> FileData CrmFilesIdDataGet (string id) - -Get file details +[**CreateBatchOrder**](EcommerceApi.md#createbatchorder) | **POST** /orders/status/batch | Maintains a batch of orders +[**CreateOrder**](EcommerceApi.md#createorder) | **POST** /orders/status | Maintains every transactional status of the order +[**CreateUpdateBatchCategory**](EcommerceApi.md#createupdatebatchcategory) | **POST** /categories/batch | Create the categories in a batch +[**CreateUpdateBatchProducts**](EcommerceApi.md#createupdatebatchproducts) | **POST** /products/batch | Creates the products in a batch +[**CreateUpdateCategory**](EcommerceApi.md#createupdatecategory) | **POST** /categories | Create/Update a category +[**CreateUpdateProduct**](EcommerceApi.md#createupdateproduct) | **POST** /products | Create/Update a product +[**EcommerceActivatePost**](EcommerceApi.md#ecommerceactivatepost) | **POST** /ecommerce/activate | **Fulfills the eCommerce pre-requisites** +[**GetCategories**](EcommerceApi.md#getcategories) | **GET** /categories | Return all your categories +[**GetCategoryInfo**](EcommerceApi.md#getcategoryinfo) | **GET** /categories/{id} | Get a category details +[**GetProductInfo**](EcommerceApi.md#getproductinfo) | **GET** /products/{id} | Get a product's details +[**GetProducts**](EcommerceApi.md#getproducts) | **GET** /products | Return all your products -### Example -```csharp -using System; -using System.Diagnostics; -using sib_api_v3_sdk.Api; -using sib_api_v3_sdk.Client; -using sib_api_v3_sdk.Model; - -namespace Example -{ - public class CrmFilesIdDataGetExample - { - public void main() - { - // Configure API key authorization: api-key - Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); - // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed - // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); - // Configure API key authorization: partner-key - Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); - // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed - // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - - var apiInstance = new CRMApi(); - var id = id_example; // string | File id to get file data. - - try - { - // Get file details - FileData result = apiInstance.CrmFilesIdDataGet(id); - Debug.WriteLine(result); - } - catch (Exception e) - { - Debug.Print("Exception when calling CRMApi.CrmFilesIdDataGet: " + e.Message ); - } - } - } -} -``` -### Parameters + +# **CreateBatchOrder** +> void CreateBatchOrder (OrderBatch orderBatch) -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **id** | **string**| File id to get file data. | - -### Return type - -[**FileData**](FileData.md) - -### Authorization - -[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) - -### HTTP request headers - - - **Content-Type**: application/json - - **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - - -# **CrmFilesIdDelete** -> void CrmFilesIdDelete (string id) - -Delete a file +Maintains a batch of orders ### Example ```csharp @@ -103,7 +33,7 @@ using sib_api_v3_sdk.Model; namespace Example { - public class CrmFilesIdDeleteExample + public class CreateBatchOrderExample { public void main() { @@ -116,17 +46,17 @@ namespace Example // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - var apiInstance = new CRMApi(); - var id = id_example; // string | File id to delete. + var apiInstance = new EcommerceApi(); + var orderBatch = new OrderBatch(); // OrderBatch | try { - // Delete a file - apiInstance.CrmFilesIdDelete(id); + // Maintains a batch of orders + apiInstance.CreateBatchOrder(orderBatch); } catch (Exception e) { - Debug.Print("Exception when calling CRMApi.CrmFilesIdDelete: " + e.Message ); + Debug.Print("Exception when calling EcommerceApi.CreateBatchOrder: " + e.Message ); } } } @@ -137,7 +67,7 @@ namespace Example Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **id** | **string**| File id to delete. | + **orderBatch** | [**OrderBatch**](OrderBatch.md)| | ### Return type @@ -154,11 +84,11 @@ void (empty response body) [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **CrmFilesIdGet** -> void CrmFilesIdGet (string id) + +# **CreateOrder** +> void CreateOrder (Order order) -Download a file +Maintains every transactional status of the order ### Example ```csharp @@ -170,7 +100,7 @@ using sib_api_v3_sdk.Model; namespace Example { - public class CrmFilesIdGetExample + public class CreateOrderExample { public void main() { @@ -183,17 +113,17 @@ namespace Example // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - var apiInstance = new CRMApi(); - var id = id_example; // string | File id to download. + var apiInstance = new EcommerceApi(); + var order = new Order(); // Order | try { - // Download a file - apiInstance.CrmFilesIdGet(id); + // Maintains every transactional status of the order + apiInstance.CreateOrder(order); } catch (Exception e) { - Debug.Print("Exception when calling CRMApi.CrmFilesIdGet: " + e.Message ); + Debug.Print("Exception when calling EcommerceApi.CreateOrder: " + e.Message ); } } } @@ -204,7 +134,7 @@ namespace Example Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **id** | **string**| File id to download. | + **order** | [**Order**](Order.md)| | ### Return type @@ -221,11 +151,11 @@ void (empty response body) [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **CrmFilesPost** -> FileData CrmFilesPost (System.IO.Stream file, List dealsIds = null) + +# **CreateUpdateBatchCategory** +> CreateUpdateBatchCategoryModel CreateUpdateBatchCategory (CreateUpdateBatchCategory createUpdateBatchCategory) -Upload a file +Create the categories in a batch ### Example ```csharp @@ -237,7 +167,7 @@ using sib_api_v3_sdk.Model; namespace Example { - public class CrmFilesPostExample + public class CreateUpdateBatchCategoryExample { public void main() { @@ -250,87 +180,18 @@ namespace Example // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - var apiInstance = new CRMApi(); - var file = new System.IO.Stream(); // System.IO.Stream | File data to create a file. - var dealsIds = new List(); // List | Deal ids linked to a file (optional) + var apiInstance = new EcommerceApi(); + var createUpdateBatchCategory = new CreateUpdateBatchCategory(); // CreateUpdateBatchCategory | Values to create a batch of categories try { - // Upload a file - FileData result = apiInstance.CrmFilesPost(file, dealsIds); + // Create the categories in a batch + CreateUpdateBatchCategoryModel result = apiInstance.CreateUpdateBatchCategory(createUpdateBatchCategory); Debug.WriteLine(result); } catch (Exception e) { - Debug.Print("Exception when calling CRMApi.CrmFilesPost: " + e.Message ); - } - } - } -} -``` - -### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **file** | **System.IO.Stream**| File data to create a file. | - **dealsIds** | [**List<string>**](string.md)| Deal ids linked to a file | [optional] - -### Return type - -[**FileData**](FileData.md) - -### Authorization - -[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) - -### HTTP request headers - - - **Content-Type**: multipart/form-data - - **Accept**: application/json - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - - -# **CrmNotesIdDelete** -> void CrmNotesIdDelete (string id) - -Delete a note - -### Example -```csharp -using System; -using System.Diagnostics; -using sib_api_v3_sdk.Api; -using sib_api_v3_sdk.Client; -using sib_api_v3_sdk.Model; - -namespace Example -{ - public class CrmNotesIdDeleteExample - { - public void main() - { - // Configure API key authorization: api-key - Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); - // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed - // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); - // Configure API key authorization: partner-key - Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); - // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed - // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - - var apiInstance = new CRMApi(); - var id = id_example; // string | Note ID to delete - - try - { - // Delete a note - apiInstance.CrmNotesIdDelete(id); - } - catch (Exception e) - { - Debug.Print("Exception when calling CRMApi.CrmNotesIdDelete: " + e.Message ); + Debug.Print("Exception when calling EcommerceApi.CreateUpdateBatchCategory: " + e.Message ); } } } @@ -341,11 +202,11 @@ namespace Example Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **id** | **string**| Note ID to delete | + **createUpdateBatchCategory** | [**CreateUpdateBatchCategory**](CreateUpdateBatchCategory.md)| Values to create a batch of categories | ### Return type -void (empty response body) +[**CreateUpdateBatchCategoryModel**](CreateUpdateBatchCategoryModel.md) ### Authorization @@ -358,11 +219,11 @@ void (empty response body) [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **CrmNotesIdGet** -> Note CrmNotesIdGet (string id) + +# **CreateUpdateBatchProducts** +> CreateUpdateBatchProductsModel CreateUpdateBatchProducts (CreateUpdateBatchProducts createUpdateBatchProducts) -Get a note +Creates the products in a batch ### Example ```csharp @@ -374,7 +235,7 @@ using sib_api_v3_sdk.Model; namespace Example { - public class CrmNotesIdGetExample + public class CreateUpdateBatchProductsExample { public void main() { @@ -387,18 +248,18 @@ namespace Example // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - var apiInstance = new CRMApi(); - var id = id_example; // string | Note ID to get + var apiInstance = new EcommerceApi(); + var createUpdateBatchProducts = new CreateUpdateBatchProducts(); // CreateUpdateBatchProducts | Values to create a batch of products try { - // Get a note - Note result = apiInstance.CrmNotesIdGet(id); + // Creates the products in a batch + CreateUpdateBatchProductsModel result = apiInstance.CreateUpdateBatchProducts(createUpdateBatchProducts); Debug.WriteLine(result); } catch (Exception e) { - Debug.Print("Exception when calling CRMApi.CrmNotesIdGet: " + e.Message ); + Debug.Print("Exception when calling EcommerceApi.CreateUpdateBatchProducts: " + e.Message ); } } } @@ -409,11 +270,11 @@ namespace Example Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **id** | **string**| Note ID to get | + **createUpdateBatchProducts** | [**CreateUpdateBatchProducts**](CreateUpdateBatchProducts.md)| Values to create a batch of products | ### Return type -[**Note**](Note.md) +[**CreateUpdateBatchProductsModel**](CreateUpdateBatchProductsModel.md) ### Authorization @@ -426,11 +287,11 @@ Name | Type | Description | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **CrmNotesIdPatch** -> Note CrmNotesIdPatch (string id, NoteData body) + +# **CreateUpdateCategory** +> CreateCategoryModel CreateUpdateCategory (CreateUpdateCategory createUpdateCategory) -Update a note +Create/Update a category ### Example ```csharp @@ -442,7 +303,7 @@ using sib_api_v3_sdk.Model; namespace Example { - public class CrmNotesIdPatchExample + public class CreateUpdateCategoryExample { public void main() { @@ -455,19 +316,18 @@ namespace Example // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - var apiInstance = new CRMApi(); - var id = id_example; // string | Note ID to update - var body = new NoteData(); // NoteData | Note data to update a note + var apiInstance = new EcommerceApi(); + var createUpdateCategory = new CreateUpdateCategory(); // CreateUpdateCategory | Values to create/update a category try { - // Update a note - Note result = apiInstance.CrmNotesIdPatch(id, body); + // Create/Update a category + CreateCategoryModel result = apiInstance.CreateUpdateCategory(createUpdateCategory); Debug.WriteLine(result); } catch (Exception e) { - Debug.Print("Exception when calling CRMApi.CrmNotesIdPatch: " + e.Message ); + Debug.Print("Exception when calling EcommerceApi.CreateUpdateCategory: " + e.Message ); } } } @@ -478,12 +338,11 @@ namespace Example Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **id** | **string**| Note ID to update | - **body** | [**NoteData**](NoteData.md)| Note data to update a note | + **createUpdateCategory** | [**CreateUpdateCategory**](CreateUpdateCategory.md)| Values to create/update a category | ### Return type -[**Note**](Note.md) +[**CreateCategoryModel**](CreateCategoryModel.md) ### Authorization @@ -496,11 +355,11 @@ Name | Type | Description | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **CrmNotesPost** -> Note CrmNotesPost (NoteData body) + +# **CreateUpdateProduct** +> CreateProductModel CreateUpdateProduct (CreateUpdateProduct createUpdateProduct) -Create a note +Create/Update a product ### Example ```csharp @@ -512,7 +371,7 @@ using sib_api_v3_sdk.Model; namespace Example { - public class CrmNotesPostExample + public class CreateUpdateProductExample { public void main() { @@ -525,18 +384,18 @@ namespace Example // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - var apiInstance = new CRMApi(); - var body = new NoteData(); // NoteData | Note data to create a note. + var apiInstance = new EcommerceApi(); + var createUpdateProduct = new CreateUpdateProduct(); // CreateUpdateProduct | Values to create/update a product try { - // Create a note - Note result = apiInstance.CrmNotesPost(body); + // Create/Update a product + CreateProductModel result = apiInstance.CreateUpdateProduct(createUpdateProduct); Debug.WriteLine(result); } catch (Exception e) { - Debug.Print("Exception when calling CRMApi.CrmNotesPost: " + e.Message ); + Debug.Print("Exception when calling EcommerceApi.CreateUpdateProduct: " + e.Message ); } } } @@ -547,11 +406,11 @@ namespace Example Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **body** | [**NoteData**](NoteData.md)| Note data to create a note. | + **createUpdateProduct** | [**CreateUpdateProduct**](CreateUpdateProduct.md)| Values to create/update a product | ### Return type -[**Note**](Note.md) +[**CreateProductModel**](CreateProductModel.md) ### Authorization @@ -564,11 +423,11 @@ Name | Type | Description | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **CrmTasksIdDelete** -> void CrmTasksIdDelete (string id) + +# **EcommerceActivatePost** +> void EcommerceActivatePost () -Delete a task +**Fulfills the eCommerce pre-requisites** ### Example ```csharp @@ -580,7 +439,7 @@ using sib_api_v3_sdk.Model; namespace Example { - public class CrmTasksIdDeleteExample + public class EcommerceActivatePostExample { public void main() { @@ -593,17 +452,16 @@ namespace Example // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - var apiInstance = new CRMApi(); - var id = id_example; // string | + var apiInstance = new EcommerceApi(); try { - // Delete a task - apiInstance.CrmTasksIdDelete(id); + // **Fulfills the eCommerce pre-requisites** + apiInstance.EcommerceActivatePost(); } catch (Exception e) { - Debug.Print("Exception when calling CRMApi.CrmTasksIdDelete: " + e.Message ); + Debug.Print("Exception when calling EcommerceApi.EcommerceActivatePost: " + e.Message ); } } } @@ -611,10 +469,7 @@ namespace Example ``` ### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **id** | **string**| | +This endpoint does not need any parameter. ### Return type @@ -631,11 +486,11 @@ void (empty response body) [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **CrmTasksIdGet** -> Task CrmTasksIdGet (string id) + +# **GetCategories** +> GetCategories GetCategories (long? limit = null, long? offset = null, string sort = null, List ids = null) -Get a task +Return all your categories ### Example ```csharp @@ -647,7 +502,7 @@ using sib_api_v3_sdk.Model; namespace Example { - public class CrmTasksIdGetExample + public class GetCategoriesExample { public void main() { @@ -660,18 +515,21 @@ namespace Example // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - var apiInstance = new CRMApi(); - var id = id_example; // string | + var apiInstance = new EcommerceApi(); + var limit = 789; // long? | Number of documents per page (optional) (default to 50) + var offset = 789; // long? | Index of the first document in the page (optional) (default to 0) + var sort = sort_example; // string | Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional) (default to desc) + var ids = new List(); // List | Filter by category ids (optional) try { - // Get a task - Task result = apiInstance.CrmTasksIdGet(id); + // Return all your categories + GetCategories result = apiInstance.GetCategories(limit, offset, sort, ids); Debug.WriteLine(result); } catch (Exception e) { - Debug.Print("Exception when calling CRMApi.CrmTasksIdGet: " + e.Message ); + Debug.Print("Exception when calling EcommerceApi.GetCategories: " + e.Message ); } } } @@ -682,11 +540,14 @@ namespace Example Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **id** | **string**| | + **limit** | **long?**| Number of documents per page | [optional] [default to 50] + **offset** | **long?**| Index of the first document in the page | [optional] [default to 0] + **sort** | **string**| Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed | [optional] [default to desc] + **ids** | [**List<string>**](string.md)| Filter by category ids | [optional] ### Return type -[**Task**](Task.md) +[**GetCategories**](GetCategories.md) ### Authorization @@ -699,11 +560,11 @@ Name | Type | Description | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **CrmTasksIdPatch** -> Task CrmTasksIdPatch (string id, Body1 body) + +# **GetCategoryInfo** +> GetCategoryDetails GetCategoryInfo (string id) -Update a task +Get a category details ### Example ```csharp @@ -715,7 +576,7 @@ using sib_api_v3_sdk.Model; namespace Example { - public class CrmTasksIdPatchExample + public class GetCategoryInfoExample { public void main() { @@ -728,19 +589,18 @@ namespace Example // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - var apiInstance = new CRMApi(); - var id = id_example; // string | - var body = new Body1(); // Body1 | Updated task details. + var apiInstance = new EcommerceApi(); + var id = id_example; // string | Category ID try { - // Update a task - Task result = apiInstance.CrmTasksIdPatch(id, body); + // Get a category details + GetCategoryDetails result = apiInstance.GetCategoryInfo(id); Debug.WriteLine(result); } catch (Exception e) { - Debug.Print("Exception when calling CRMApi.CrmTasksIdPatch: " + e.Message ); + Debug.Print("Exception when calling EcommerceApi.GetCategoryInfo: " + e.Message ); } } } @@ -751,12 +611,11 @@ namespace Example Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **id** | **string**| | - **body** | [**Body1**](Body1.md)| Updated task details. | + **id** | **string**| Category ID | ### Return type -[**Task**](Task.md) +[**GetCategoryDetails**](GetCategoryDetails.md) ### Authorization @@ -769,11 +628,11 @@ Name | Type | Description | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **CrmTasksPost** -> Task CrmTasksPost (Body body) + +# **GetProductInfo** +> GetProductDetails GetProductInfo (string id) -Create a task +Get a product's details ### Example ```csharp @@ -785,7 +644,7 @@ using sib_api_v3_sdk.Model; namespace Example { - public class CrmTasksPostExample + public class GetProductInfoExample { public void main() { @@ -798,18 +657,18 @@ namespace Example // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - var apiInstance = new CRMApi(); - var body = new Body(); // Body | Task name. + var apiInstance = new EcommerceApi(); + var id = id_example; // string | Product ID try { - // Create a task - Task result = apiInstance.CrmTasksPost(body); + // Get a product's details + GetProductDetails result = apiInstance.GetProductInfo(id); Debug.WriteLine(result); } catch (Exception e) { - Debug.Print("Exception when calling CRMApi.CrmTasksPost: " + e.Message ); + Debug.Print("Exception when calling EcommerceApi.GetProductInfo: " + e.Message ); } } } @@ -820,11 +679,11 @@ namespace Example Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **body** | [**Body**](Body.md)| Task name. | + **id** | **string**| Product ID | ### Return type -[**Task**](Task.md) +[**GetProductDetails**](GetProductDetails.md) ### Authorization @@ -837,11 +696,11 @@ Name | Type | Description | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **CrmTasktypesGet** -> TaskTypes CrmTasktypesGet () + +# **GetProducts** +> GetProducts GetProducts (long? limit = null, long? offset = null, string sort = null, List ids = null) -Get all task types +Return all your products ### Example ```csharp @@ -853,7 +712,7 @@ using sib_api_v3_sdk.Model; namespace Example { - public class CrmTasktypesGetExample + public class GetProductsExample { public void main() { @@ -866,17 +725,21 @@ namespace Example // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - var apiInstance = new CRMApi(); + var apiInstance = new EcommerceApi(); + var limit = 789; // long? | Number of documents per page (optional) (default to 50) + var offset = 789; // long? | Index of the first document in the page (optional) (default to 0) + var sort = sort_example; // string | Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional) (default to desc) + var ids = new List(); // List | Filter by product ids (optional) try { - // Get all task types - TaskTypes result = apiInstance.CrmTasktypesGet(); + // Return all your products + GetProducts result = apiInstance.GetProducts(limit, offset, sort, ids); Debug.WriteLine(result); } catch (Exception e) { - Debug.Print("Exception when calling CRMApi.CrmTasktypesGet: " + e.Message ); + Debug.Print("Exception when calling EcommerceApi.GetProducts: " + e.Message ); } } } @@ -884,11 +747,17 @@ namespace Example ``` ### Parameters -This endpoint does not need any parameter. + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **limit** | **long?**| Number of documents per page | [optional] [default to 50] + **offset** | **long?**| Index of the first document in the page | [optional] [default to 0] + **sort** | **string**| Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed | [optional] [default to desc] + **ids** | [**List<string>**](string.md)| Filter by product ids | [optional] ### Return type -[**TaskTypes**](TaskTypes.md) +[**GetProducts**](GetProducts.md) ### Authorization diff --git a/docs/EmailCampaignsApi.md b/docs/EmailCampaignsApi.md index acaaf55..c59c730 100644 --- a/docs/EmailCampaignsApi.md +++ b/docs/EmailCampaignsApi.md @@ -396,7 +396,7 @@ namespace Example var status = status_example; // string | Filter on the status of the campaign (optional) var startDate = startDate_example; // string | Mandatory if endDate is used. Starting (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) var endDate = endDate_example; // string | Mandatory if startDate is used. Ending (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) - var limit = 789; // long? | Number of documents per page (optional) (default to 500) + var limit = 789; // long? | Number of documents per page (optional) (default to 50) var offset = 789; // long? | Index of the first document in the page (optional) (default to 0) var sort = sort_example; // string | Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional) (default to desc) @@ -423,7 +423,7 @@ Name | Type | Description | Notes **status** | **string**| Filter on the status of the campaign | [optional] **startDate** | **string**| Mandatory if endDate is used. Starting (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) | [optional] **endDate** | **string**| Mandatory if startDate is used. Ending (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) | [optional] - **limit** | **long?**| Number of documents per page | [optional] [default to 500] + **limit** | **long?**| Number of documents per page | [optional] [default to 50] **offset** | **long?**| Index of the first document in the page | [optional] [default to 0] **sort** | **string**| Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed | [optional] [default to desc] @@ -859,7 +859,7 @@ void (empty response body) # **UploadImageToGallery** -> void UploadImageToGallery (UploadImageToGallery uploadImage) +> UploadImageModel UploadImageToGallery (UploadImageToGallery uploadImage) Upload an image to your account's image gallery @@ -892,7 +892,8 @@ namespace Example try { // Upload an image to your account's image gallery - apiInstance.UploadImageToGallery(uploadImage); + UploadImageModel result = apiInstance.UploadImageToGallery(uploadImage); + Debug.WriteLine(result); } catch (Exception e) { @@ -911,7 +912,7 @@ Name | Type | Description | Notes ### Return type -void (empty response body) +[**UploadImageModel**](UploadImageModel.md) ### Authorization diff --git a/docs/FileData.md b/docs/FileData.md index 60d2484..8c28e74 100644 --- a/docs/FileData.md +++ b/docs/FileData.md @@ -3,16 +3,13 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**Url** | **string** | Url of uploaded file | [optional] -**Id** | **string** | Id of uploaded file | [optional] **Name** | **string** | Name of uploaded file | [optional] **AuthorId** | **string** | Account id of user which created the file | [optional] -**Author** | **Object** | Account details of user which created the file | [optional] **ContactId** | **long?** | Contact id of contact on which file is uploaded | [optional] -**DealIds** | **List<string>** | Deal ids linked to a file | [optional] -**Size** | **long?** | Size of file uploaded | [optional] +**DealId** | **string** | Deal id linked to a file | [optional] +**CompanyId** | **string** | Company id linked to a file | [optional] +**Size** | **long?** | Size of file in bytes | [optional] **CreatedAt** | **DateTime?** | File created date/time | [optional] -**UpdatedAt** | **DateTime?** | File updated date/time | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/FileDownloadableLink.md b/docs/FileDownloadableLink.md new file mode 100644 index 0000000..b6844ac --- /dev/null +++ b/docs/FileDownloadableLink.md @@ -0,0 +1,9 @@ +# sib_api_v3_sdk.Model.FileDownloadableLink +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**FileUrl** | **string** | A unique link to download the requested file. | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/FileList.md b/docs/FileList.md new file mode 100644 index 0000000..7f82169 --- /dev/null +++ b/docs/FileList.md @@ -0,0 +1,8 @@ +# sib_api_v3_sdk.Model.FileList +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/FilesApi.md b/docs/FilesApi.md new file mode 100644 index 0000000..ee92b5a --- /dev/null +++ b/docs/FilesApi.md @@ -0,0 +1,370 @@ +# sib_api_v3_sdk.Api.FilesApi + +All URIs are relative to *https://api.sendinblue.com/v3* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**CrmFilesGet**](FilesApi.md#crmfilesget) | **GET** /crm/files | Get all files +[**CrmFilesIdDataGet**](FilesApi.md#crmfilesiddataget) | **GET** /crm/files/{id}/data | Get file details +[**CrmFilesIdDelete**](FilesApi.md#crmfilesiddelete) | **DELETE** /crm/files/{id} | Delete a file +[**CrmFilesIdGet**](FilesApi.md#crmfilesidget) | **GET** /crm/files/{id} | Download a file +[**CrmFilesPost**](FilesApi.md#crmfilespost) | **POST** /crm/files | Upload a file + + + +# **CrmFilesGet** +> FileList CrmFilesGet (string entity = null, string entityIds = null, int? dateFrom = null, int? dateTo = null, long? offset = null, long? limit = null, string sort = null) + +Get all files + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class CrmFilesGetExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new FilesApi(); + var entity = entity_example; // string | Filter by file entity type (optional) + var entityIds = entityIds_example; // string | Filter by file entity IDs (optional) + var dateFrom = 56; // int? | dateFrom to date range filter type (timestamp in milliseconds) (optional) + var dateTo = 56; // int? | dateTo to date range filter type (timestamp in milliseconds) (optional) + var offset = 789; // long? | Index of the first document of the page (optional) + var limit = 789; // long? | Number of documents per page (optional) (default to 50) + var sort = sort_example; // string | Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + + try + { + // Get all files + FileList result = apiInstance.CrmFilesGet(entity, entityIds, dateFrom, dateTo, offset, limit, sort); + Debug.WriteLine(result); + } + catch (Exception e) + { + Debug.Print("Exception when calling FilesApi.CrmFilesGet: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **entity** | **string**| Filter by file entity type | [optional] + **entityIds** | **string**| Filter by file entity IDs | [optional] + **dateFrom** | **int?**| dateFrom to date range filter type (timestamp in milliseconds) | [optional] + **dateTo** | **int?**| dateTo to date range filter type (timestamp in milliseconds) | [optional] + **offset** | **long?**| Index of the first document of the page | [optional] + **limit** | **long?**| Number of documents per page | [optional] [default to 50] + **sort** | **string**| Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed | [optional] + +### Return type + +[**FileList**](FileList.md) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **CrmFilesIdDataGet** +> FileData CrmFilesIdDataGet (string id) + +Get file details + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class CrmFilesIdDataGetExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new FilesApi(); + var id = id_example; // string | File id to get file data. + + try + { + // Get file details + FileData result = apiInstance.CrmFilesIdDataGet(id); + Debug.WriteLine(result); + } + catch (Exception e) + { + Debug.Print("Exception when calling FilesApi.CrmFilesIdDataGet: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **string**| File id to get file data. | + +### Return type + +[**FileData**](FileData.md) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **CrmFilesIdDelete** +> void CrmFilesIdDelete (string id) + +Delete a file + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class CrmFilesIdDeleteExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new FilesApi(); + var id = id_example; // string | File id to delete. + + try + { + // Delete a file + apiInstance.CrmFilesIdDelete(id); + } + catch (Exception e) + { + Debug.Print("Exception when calling FilesApi.CrmFilesIdDelete: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **string**| File id to delete. | + +### Return type + +void (empty response body) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **CrmFilesIdGet** +> FileDownloadableLink CrmFilesIdGet (string id) + +Download a file + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class CrmFilesIdGetExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new FilesApi(); + var id = id_example; // string | File id to download. + + try + { + // Download a file + FileDownloadableLink result = apiInstance.CrmFilesIdGet(id); + Debug.WriteLine(result); + } + catch (Exception e) + { + Debug.Print("Exception when calling FilesApi.CrmFilesIdGet: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **string**| File id to download. | + +### Return type + +[**FileDownloadableLink**](FileDownloadableLink.md) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **CrmFilesPost** +> FileData CrmFilesPost (System.IO.Stream file, string dealId = null, long? contactId = null, string companyId = null) + +Upload a file + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class CrmFilesPostExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new FilesApi(); + var file = new System.IO.Stream(); // System.IO.Stream | File data to create a file. + var dealId = dealId_example; // string | Deal id linked to a file (optional) + var contactId = 789; // long? | Contact id linked to a file (optional) + var companyId = companyId_example; // string | Company id linked to a file (optional) + + try + { + // Upload a file + FileData result = apiInstance.CrmFilesPost(file, dealId, contactId, companyId); + Debug.WriteLine(result); + } + catch (Exception e) + { + Debug.Print("Exception when calling FilesApi.CrmFilesPost: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **file** | **System.IO.Stream**| File data to create a file. | + **dealId** | **string**| Deal id linked to a file | [optional] + **contactId** | **long?**| Contact id linked to a file | [optional] + **companyId** | **string**| Company id linked to a file | [optional] + +### Return type + +[**FileData**](FileData.md) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: multipart/form-data + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/GetCampaignStats.md b/docs/GetCampaignStats.md index c463261..4fe1ed6 100644 --- a/docs/GetCampaignStats.md +++ b/docs/GetCampaignStats.md @@ -13,6 +13,8 @@ Name | Type | Description | Notes **HardBounces** | **long?** | Number of harbounce for the campaign | **UniqueViews** | **long?** | Number of unique openings for the campaign | **TrackableViews** | **long?** | Recipients without any privacy protection option enabled in their email client | +**TrackableViewsRate** | **float?** | Rate of recipients without any privacy protection option enabled in their email client | [optional] +**EstimatedViews** | **long?** | Rate of recipients without any privacy protection option enabled in their email client, applied to all delivered emails | [optional] **Unsubscriptions** | **long?** | Number of unsubscription for the campaign | **Viewed** | **long?** | Number of openings for the campaign | **Deferred** | **long?** | Number of deferred emails for the campaign | [optional] diff --git a/docs/GetCategories.md b/docs/GetCategories.md new file mode 100644 index 0000000..4fffd64 --- /dev/null +++ b/docs/GetCategories.md @@ -0,0 +1,10 @@ +# sib_api_v3_sdk.Model.GetCategories +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Categories** | **List<Object>** | | +**Count** | **long?** | Number of categories | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/GetCategoryDetails.md b/docs/GetCategoryDetails.md new file mode 100644 index 0000000..bf5a27d --- /dev/null +++ b/docs/GetCategoryDetails.md @@ -0,0 +1,13 @@ +# sib_api_v3_sdk.Model.GetCategoryDetails +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **string** | Category ID for which you requested the details | +**Name** | **string** | Name of the category for which you requested the details | +**CreatedAt** | **string** | Creation UTC date-time of the category (YYYY-MM-DDTHH:mm:ss.SSSZ) | +**ModifiedAt** | **string** | Last modification UTC date-time of the category (YYYY-MM-DDTHH:mm:ss.SSSZ) | +**Url** | **string** | URL to the category | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/GetProductDetails.md b/docs/GetProductDetails.md new file mode 100644 index 0000000..a5e05ef --- /dev/null +++ b/docs/GetProductDetails.md @@ -0,0 +1,22 @@ +# sib_api_v3_sdk.Model.GetProductDetails +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **string** | Product ID for which you requested the details | +**Name** | **string** | Name of the product for which you requested the details | +**CreatedAt** | **string** | Creation UTC date-time of the product (YYYY-MM-DDTHH:mm:ss.SSSZ) | +**ModifiedAt** | **string** | Last modification UTC date-time of the product (YYYY-MM-DDTHH:mm:ss.SSSZ) | +**Url** | **string** | URL to the product | [optional] +**ImageUrl** | **string** | Absolute URL to the cover image of the product | [optional] +**Sku** | **string** | Product identifier from the shop | [optional] +**Price** | **float?** | Price of the product | [optional] +**Categories** | **List<string>** | Category ID-s of the product | [optional] +**ParentId** | **string** | Parent product id of the product | [optional] +**S3Original** | **string** | S3 url of original image | [optional] +**S3ThumbAnalytics** | **string** | S3 thumbnail url of original image in 120x120 dimension for analytics section | +**MetaInfo** | **Object** | Meta data of product such as description, vendor, producer, stock level, etc. | [optional] +**S3ThumbEditor** | **string** | S3 thumbnail url of original image in 600x400 dimension for editor section | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/GetProducts.md b/docs/GetProducts.md new file mode 100644 index 0000000..ad05af6 --- /dev/null +++ b/docs/GetProducts.md @@ -0,0 +1,10 @@ +# sib_api_v3_sdk.Model.GetProducts +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Products** | **List<Object>** | | +**Count** | **long?** | Number of products | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/GetScheduledEmailByBatchId.md b/docs/GetScheduledEmailByBatchId.md new file mode 100644 index 0000000..de6e601 --- /dev/null +++ b/docs/GetScheduledEmailByBatchId.md @@ -0,0 +1,10 @@ +# sib_api_v3_sdk.Model.GetScheduledEmailByBatchId +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Count** | **int?** | Total number of batches | [optional] +**Batches** | [**List<GetScheduledEmailByBatchIdBatches>**](GetScheduledEmailByBatchIdBatches.md) | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/GetScheduledEmailByBatchIdBatches.md b/docs/GetScheduledEmailByBatchIdBatches.md new file mode 100644 index 0000000..5e33521 --- /dev/null +++ b/docs/GetScheduledEmailByBatchIdBatches.md @@ -0,0 +1,11 @@ +# sib_api_v3_sdk.Model.GetScheduledEmailByBatchIdBatches +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ScheduledAt** | **DateTime?** | Datetime for which the batch was scheduled | +**CreatedAt** | **DateTime?** | Datetime on which the batch was scheduled | +**Status** | **string** | Current status of the scheduled batch | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/GetScheduledEmailByMessageId.md b/docs/GetScheduledEmailByMessageId.md new file mode 100644 index 0000000..14f8118 --- /dev/null +++ b/docs/GetScheduledEmailByMessageId.md @@ -0,0 +1,11 @@ +# sib_api_v3_sdk.Model.GetScheduledEmailByMessageId +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ScheduledAt** | **DateTime?** | Datetime for which the email was scheduled | +**CreatedAt** | **DateTime?** | Datetime on which the email was scheduled | +**Status** | **string** | Current status of the scheduled email | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/GetSsoToken.md b/docs/GetSsoToken.md index 58bb819..15b3053 100644 --- a/docs/GetSsoToken.md +++ b/docs/GetSsoToken.md @@ -3,7 +3,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**Token** | **string** | Session token. It will remain valid for a short period of time only. | +**Token** | **string** | Session token, it will remain valid for 15 days. | [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/GetWebhook.md b/docs/GetWebhook.md index 1aa3072..849b65d 100644 --- a/docs/GetWebhook.md +++ b/docs/GetWebhook.md @@ -7,7 +7,7 @@ Name | Type | Description | Notes **Id** | **long?** | ID of the webhook | **Description** | **string** | Description of the webhook | **Events** | **List<string>** | | -**Type** | **string** | Type of webhook (marketing or transac) | +**Type** | **string** | Type of webhook (marketing or transactional) | **CreatedAt** | **string** | Creation UTC date-time of the webhook (YYYY-MM-DDTHH:mm:ss.SSSZ) | **ModifiedAt** | **string** | Last modification UTC date-time of the webhook (YYYY-MM-DDTHH:mm:ss.SSSZ) | diff --git a/docs/GetWhatsappCampaignOverview.md b/docs/GetWhatsappCampaignOverview.md new file mode 100644 index 0000000..253d8f3 --- /dev/null +++ b/docs/GetWhatsappCampaignOverview.md @@ -0,0 +1,17 @@ +# sib_api_v3_sdk.Model.GetWhatsappCampaignOverview +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **long?** | ID of the Whatsapp Campaign | +**CampaignName** | **string** | Name of the Whatsapp Campaign | +**CampaignStatus** | **string** | Status of the Whatsapp Campaign | +**ScheduledAt** | **string** | UTC date-time on which Whatsapp campaign is scheduled. Should be in YYYY-MM-DDTHH:mm:ss.SSSZ format | [optional] +**SenderNumber** | **string** | Sender of the Whatsapp Campaign | +**Stats** | [**WhatsappCampStats**](WhatsappCampStats.md) | | [optional] +**Template** | [**WhatsappCampTemplate**](WhatsappCampTemplate.md) | | +**CreatedAt** | **string** | Creation UTC date-time of the SMS campaign (YYYY-MM-DDTHH:mm:ss.SSSZ) | +**ModifiedAt** | **string** | UTC date-time of last modification of the SMS campaign (YYYY-MM-DDTHH:mm:ss.SSSZ) | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/InboundParsingApi.md b/docs/InboundParsingApi.md index 3c4fd63..3a9b9bc 100644 --- a/docs/InboundParsingApi.md +++ b/docs/InboundParsingApi.md @@ -4,10 +4,81 @@ All URIs are relative to *https://api.sendinblue.com/v3* Method | HTTP request | Description ------------- | ------------- | ------------- +[**GetInboundEmailAttachment**](InboundParsingApi.md#getinboundemailattachment) | **GET** /inbound/attachments/{downloadToken} | Retrieve inbound attachment with download token. [**GetInboundEmailEvents**](InboundParsingApi.md#getinboundemailevents) | **GET** /inbound/events | Get the list of all the events for the received emails. [**GetInboundEmailEventsByUuid**](InboundParsingApi.md#getinboundemaileventsbyuuid) | **GET** /inbound/events/{uuid} | Fetch all events history for one particular received email. + +# **GetInboundEmailAttachment** +> System.IO.Stream GetInboundEmailAttachment (string downloadToken) + +Retrieve inbound attachment with download token. + +This endpoint will retrieve inbound attachment with download token. + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class GetInboundEmailAttachmentExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new InboundParsingApi(); + var downloadToken = downloadToken_example; // string | Token to fetch a particular attachment + + try + { + // Retrieve inbound attachment with download token. + System.IO.Stream result = apiInstance.GetInboundEmailAttachment(downloadToken); + Debug.WriteLine(result); + } + catch (Exception e) + { + Debug.Print("Exception when calling InboundParsingApi.GetInboundEmailAttachment: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **downloadToken** | **string**| Token to fetch a particular attachment | + +### Return type + +**System.IO.Stream** + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + # **GetInboundEmailEvents** > GetInboundEmailEvents GetInboundEmailEvents (string sender = null, DateTime? startDate = null, DateTime? endDate = null, long? limit = null, long? offset = null, string sort = null) diff --git a/docs/InlineResponse200.md b/docs/InlineResponse200.md new file mode 100644 index 0000000..63ff0c2 --- /dev/null +++ b/docs/InlineResponse200.md @@ -0,0 +1,9 @@ +# sib_api_v3_sdk.Model.InlineResponse200 +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **string** | Unique company id | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/InlineResponse201.md b/docs/InlineResponse201.md new file mode 100644 index 0000000..b7868a8 --- /dev/null +++ b/docs/InlineResponse201.md @@ -0,0 +1,9 @@ +# sib_api_v3_sdk.Model.InlineResponse201 +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **string** | Unique deal id | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/InlineResponse2011.md b/docs/InlineResponse2011.md new file mode 100644 index 0000000..be9a591 --- /dev/null +++ b/docs/InlineResponse2011.md @@ -0,0 +1,9 @@ +# sib_api_v3_sdk.Model.InlineResponse2011 +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **string** | Unique task id | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/MasterAccountApi.md b/docs/MasterAccountApi.md index 29d7a20..a722647 100644 --- a/docs/MasterAccountApi.md +++ b/docs/MasterAccountApi.md @@ -9,6 +9,7 @@ Method | HTTP request | Description [**CorporateSubAccountIdDelete**](MasterAccountApi.md#corporatesubaccountiddelete) | **DELETE** /corporate/subAccount/{id} | Delete a sub-account [**CorporateSubAccountIdGet**](MasterAccountApi.md#corporatesubaccountidget) | **GET** /corporate/subAccount/{id} | Get sub-account details [**CorporateSubAccountIdPlanPut**](MasterAccountApi.md#corporatesubaccountidplanput) | **PUT** /corporate/subAccount/{id}/plan | Update sub-account plan +[**CorporateSubAccountKeyPost**](MasterAccountApi.md#corporatesubaccountkeypost) | **POST** /corporate/subAccount/key | Create an API key for a sub-account [**CorporateSubAccountPost**](MasterAccountApi.md#corporatesubaccountpost) | **POST** /corporate/subAccount | Create a new sub-account under a master account. [**CorporateSubAccountSsoTokenPost**](MasterAccountApi.md#corporatesubaccountssotokenpost) | **POST** /corporate/subAccount/ssoToken | Generate SSO token to access Sendinblue @@ -111,7 +112,7 @@ namespace Example // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); var apiInstance = new MasterAccountApi(); - var offset = 56; // int? | Page number of sub-accounts listing + var offset = 56; // int? | Index of the first sub-account in the page var limit = 56; // int? | Number of sub-accounts to be displayed on each page try @@ -133,7 +134,7 @@ namespace Example Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **offset** | **int?**| Page number of sub-accounts listing | + **offset** | **int?**| Index of the first sub-account in the page | **limit** | **int?**| Number of sub-accounts to be displayed on each page | ### Return type @@ -224,7 +225,7 @@ void (empty response body) Get sub-account details -This endpoint will provide the details of specified sub-account organization +This endpoint will provide the details for the specified sub-account company ### Example ```csharp @@ -359,9 +360,79 @@ void (empty response body) [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **CorporateSubAccountKeyPost** +> CreateApiKeyResponse CorporateSubAccountKeyPost (CreateApiKeyRequest createApiKeyRequest) + +Create an API key for a sub-account + +This endpoint will generate an API v3 key for a sub account + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class CorporateSubAccountKeyPostExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new MasterAccountApi(); + var createApiKeyRequest = new CreateApiKeyRequest(); // CreateApiKeyRequest | Values to generate API key for sub-account + + try + { + // Create an API key for a sub-account + CreateApiKeyResponse result = apiInstance.CorporateSubAccountKeyPost(createApiKeyRequest); + Debug.WriteLine(result); + } + catch (Exception e) + { + Debug.Print("Exception when calling MasterAccountApi.CorporateSubAccountKeyPost: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **createApiKeyRequest** | [**CreateApiKeyRequest**](CreateApiKeyRequest.md)| Values to generate API key for sub-account | + +### Return type + +[**CreateApiKeyResponse**](CreateApiKeyResponse.md) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + # **CorporateSubAccountPost** -> CreateModel CorporateSubAccountPost (CreateSubAccount subAccountCreate) +> CreateSubAccountResponse CorporateSubAccountPost (CreateSubAccount subAccountCreate) Create a new sub-account under a master account. @@ -396,7 +467,7 @@ namespace Example try { // Create a new sub-account under a master account. - CreateModel result = apiInstance.CorporateSubAccountPost(subAccountCreate); + CreateSubAccountResponse result = apiInstance.CorporateSubAccountPost(subAccountCreate); Debug.WriteLine(result); } catch (Exception e) @@ -416,7 +487,7 @@ Name | Type | Description | Notes ### Return type -[**CreateModel**](CreateModel.md) +[**CreateSubAccountResponse**](CreateSubAccountResponse.md) ### Authorization @@ -435,7 +506,7 @@ Name | Type | Description | Notes Generate SSO token to access Sendinblue -This endpoint generates an sso token to authenticate and access a sub-account of the master using the account endpoint https://app.sendinblue.com/account/login/sub-account/sso/[token], where [token] will be replaced with actual token. +This endpoint generates an sso token to authenticate and access a sub-account of the master using the account endpoint https://account-app.sendinblue.com/account/login/sub-account/sso/[token], where [token] will be replaced by the actual token. ### Example ```csharp diff --git a/docs/NoteData.md b/docs/NoteData.md index 9d69be7..32802b5 100644 --- a/docs/NoteData.md +++ b/docs/NoteData.md @@ -6,6 +6,7 @@ Name | Type | Description | Notes **Text** | **string** | Text content of a note | **ContactIds** | **List<int?>** | Contact Ids linked to a note | [optional] **DealIds** | **List<string>** | Deal Ids linked to a note | [optional] +**CompanyIds** | **List<string>** | Company Ids linked to a note | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/NoteId.md b/docs/NoteId.md new file mode 100644 index 0000000..419513b --- /dev/null +++ b/docs/NoteId.md @@ -0,0 +1,9 @@ +# sib_api_v3_sdk.Model.NoteId +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **string** | Unique note Id | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/NoteList.md b/docs/NoteList.md new file mode 100644 index 0000000..6961326 --- /dev/null +++ b/docs/NoteList.md @@ -0,0 +1,8 @@ +# sib_api_v3_sdk.Model.NoteList +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/NotesApi.md b/docs/NotesApi.md new file mode 100644 index 0000000..fc8fbb9 --- /dev/null +++ b/docs/NotesApi.md @@ -0,0 +1,365 @@ +# sib_api_v3_sdk.Api.NotesApi + +All URIs are relative to *https://api.sendinblue.com/v3* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**CrmNotesGet**](NotesApi.md#crmnotesget) | **GET** /crm/notes | Get all notes +[**CrmNotesIdDelete**](NotesApi.md#crmnotesiddelete) | **DELETE** /crm/notes/{id} | Delete a note +[**CrmNotesIdGet**](NotesApi.md#crmnotesidget) | **GET** /crm/notes/{id} | Get a note +[**CrmNotesIdPatch**](NotesApi.md#crmnotesidpatch) | **PATCH** /crm/notes/{id} | Update a note +[**CrmNotesPost**](NotesApi.md#crmnotespost) | **POST** /crm/notes | Create a note + + + +# **CrmNotesGet** +> NoteList CrmNotesGet (string entity = null, string entityIds = null, int? dateFrom = null, int? dateTo = null, long? offset = null, long? limit = null, string sort = null) + +Get all notes + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class CrmNotesGetExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new NotesApi(); + var entity = entity_example; // string | Filter by note entity type (optional) + var entityIds = entityIds_example; // string | Filter by note entity IDs (optional) + var dateFrom = 56; // int? | dateFrom to date range filter type (timestamp in milliseconds) (optional) + var dateTo = 56; // int? | dateTo to date range filter type (timestamp in milliseconds) (optional) + var offset = 789; // long? | Index of the first document of the page (optional) + var limit = 789; // long? | Number of documents per page (optional) (default to 50) + var sort = sort_example; // string | Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + + try + { + // Get all notes + NoteList result = apiInstance.CrmNotesGet(entity, entityIds, dateFrom, dateTo, offset, limit, sort); + Debug.WriteLine(result); + } + catch (Exception e) + { + Debug.Print("Exception when calling NotesApi.CrmNotesGet: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **entity** | **string**| Filter by note entity type | [optional] + **entityIds** | **string**| Filter by note entity IDs | [optional] + **dateFrom** | **int?**| dateFrom to date range filter type (timestamp in milliseconds) | [optional] + **dateTo** | **int?**| dateTo to date range filter type (timestamp in milliseconds) | [optional] + **offset** | **long?**| Index of the first document of the page | [optional] + **limit** | **long?**| Number of documents per page | [optional] [default to 50] + **sort** | **string**| Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed | [optional] + +### Return type + +[**NoteList**](NoteList.md) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **CrmNotesIdDelete** +> void CrmNotesIdDelete (string id) + +Delete a note + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class CrmNotesIdDeleteExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new NotesApi(); + var id = id_example; // string | Note ID to delete + + try + { + // Delete a note + apiInstance.CrmNotesIdDelete(id); + } + catch (Exception e) + { + Debug.Print("Exception when calling NotesApi.CrmNotesIdDelete: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **string**| Note ID to delete | + +### Return type + +void (empty response body) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **CrmNotesIdGet** +> Note CrmNotesIdGet (string id) + +Get a note + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class CrmNotesIdGetExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new NotesApi(); + var id = id_example; // string | Note ID to get + + try + { + // Get a note + Note result = apiInstance.CrmNotesIdGet(id); + Debug.WriteLine(result); + } + catch (Exception e) + { + Debug.Print("Exception when calling NotesApi.CrmNotesIdGet: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **string**| Note ID to get | + +### Return type + +[**Note**](Note.md) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **CrmNotesIdPatch** +> void CrmNotesIdPatch (string id, NoteData body) + +Update a note + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class CrmNotesIdPatchExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new NotesApi(); + var id = id_example; // string | Note ID to update + var body = new NoteData(); // NoteData | Note data to update a note + + try + { + // Update a note + apiInstance.CrmNotesIdPatch(id, body); + } + catch (Exception e) + { + Debug.Print("Exception when calling NotesApi.CrmNotesIdPatch: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **id** | **string**| Note ID to update | + **body** | [**NoteData**](NoteData.md)| Note data to update a note | + +### Return type + +void (empty response body) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **CrmNotesPost** +> NoteId CrmNotesPost (NoteData body) + +Create a note + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class CrmNotesPostExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new NotesApi(); + var body = new NoteData(); // NoteData | Note data to create a note. + + try + { + // Create a note + NoteId result = apiInstance.CrmNotesPost(body); + Debug.WriteLine(result); + } + catch (Exception e) + { + Debug.Print("Exception when calling NotesApi.CrmNotesPost: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **body** | [**NoteData**](NoteData.md)| Note data to create a note. | + +### Return type + +[**NoteId**](NoteId.md) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/Order.md b/docs/Order.md new file mode 100644 index 0000000..72dc629 --- /dev/null +++ b/docs/Order.md @@ -0,0 +1,17 @@ +# sib_api_v3_sdk.Model.Order +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **string** | Unique ID of the order. | +**CreatedAt** | **string** | Event occurrence UTC date-time (YYYY-MM-DDTHH:mm:ssZ), when order is actually created. | +**UpdatedAt** | **string** | Event updated UTC date-time (YYYY-MM-DDTHH:mm:ssZ), when the status of the order is actually changed/updated. | +**Status** | **string** | State of the order. | +**Amount** | **decimal?** | Total amount of the order, including all shipping expenses, tax and the price of items. | +**Products** | [**List<OrderProducts>**](OrderProducts.md) | | +**Email** | **string** | Email of the contact, Mandatory if "phone" field is not passed in "billing" parameter. | [optional] +**Billing** | [**OrderBilling**](OrderBilling.md) | | [optional] +**Coupons** | **List<string>** | Coupons applied to the order. Stored case insensitive. | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/OrderBatch.md b/docs/OrderBatch.md new file mode 100644 index 0000000..77830a1 --- /dev/null +++ b/docs/OrderBatch.md @@ -0,0 +1,10 @@ +# sib_api_v3_sdk.Model.OrderBatch +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Orders** | [**List<Order>**](Order.md) | array of order objects | +**NotifyUrl** | **string** | Notify Url provided by client to get the status of batch request | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/OrderBilling.md b/docs/OrderBilling.md new file mode 100644 index 0000000..516b68b --- /dev/null +++ b/docs/OrderBilling.md @@ -0,0 +1,15 @@ +# sib_api_v3_sdk.Model.OrderBilling +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Address** | **string** | Full billing address. | [optional] +**City** | **string** | Exact city of the address. | [optional] +**CountryCode** | **string** | Billing country 2-letter ISO code. | [optional] +**Phone** | **string** | Phone number to contact for further details about the order, Mandatory if "email" field is not passed. | [optional] +**PostCode** | **string** | Postcode for delivery and billing. | [optional] +**PaymentMethod** | **string** | How the visitor will pay for the item(s), e.g. paypal, check, etc. | [optional] +**Region** | **string** | Exact region (state/province) for delivery and billing. | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/OrderProducts.md b/docs/OrderProducts.md new file mode 100644 index 0000000..3bd40d7 --- /dev/null +++ b/docs/OrderProducts.md @@ -0,0 +1,12 @@ +# sib_api_v3_sdk.Model.OrderProducts +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**ProductId** | **string** | ID of the product. | +**Quantity** | **decimal?** | How many pieces of the product the visitor has added to the cart. | +**VariantId** | **string** | Product ID of the red color shirts. | [optional] +**Price** | **decimal?** | The price of a unit of product | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/Pipeline.md b/docs/Pipeline.md new file mode 100644 index 0000000..e90a6a2 --- /dev/null +++ b/docs/Pipeline.md @@ -0,0 +1,9 @@ +# sib_api_v3_sdk.Model.Pipeline +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Stages** | [**List<PipelineStage>**](PipelineStage.md) | List of stages | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/PipelineStage.md b/docs/PipelineStage.md new file mode 100644 index 0000000..3504523 --- /dev/null +++ b/docs/PipelineStage.md @@ -0,0 +1,10 @@ +# sib_api_v3_sdk.Model.PipelineStage +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Id** | **string** | Stage id | [optional] +**Name** | **string** | Stage name | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/ScheduleSmtpEmail.md b/docs/ScheduleSmtpEmail.md new file mode 100644 index 0000000..5a1b194 --- /dev/null +++ b/docs/ScheduleSmtpEmail.md @@ -0,0 +1,11 @@ +# sib_api_v3_sdk.Model.ScheduleSmtpEmail +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**MessageId** | **string** | Message ID of the transactional email scheduled | [optional] +**MessageIds** | **List<string>** | | [optional] +**BatchId** | **string** | Batch ID of the batch transactional email scheduled | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/SendSmtpEmail.md b/docs/SendSmtpEmail.md index afd0502..c4c4111 100644 --- a/docs/SendSmtpEmail.md +++ b/docs/SendSmtpEmail.md @@ -17,6 +17,8 @@ Name | Type | Description | Notes **Params** | **Object** | Pass the set of attributes to customize the template. For example, {"FNAME":"Joe", "LNAME":"Doe"}. It's considered only if template is in New Template Language format. | [optional] **MessageVersions** | [**List<SendSmtpEmailMessageVersions>**](SendSmtpEmailMessageVersions.md) | You can customize and send out multiple versions of a mail. templateId can be customized only if global parameter contains templateId. htmlContent and textContent can be customized only if any of the two, htmlContent or textContent, is present in global parameters. Some global parameters such as **to(mandatory), bcc, cc, replyTo, subject** can also be customized specific to each version. Total number of recipients in one API request must not exceed 2000. However, you can still pass upto 99 recipients maximum in one message version. The size of individual params in all the messageVersions shall not exceed 100 KB limit and that of cumulative params shall not exceed 1000 KB. You can follow this **step-by-step guide** on how to use **messageVersions** to batch send emails - https://developers.sendinblue.com/docs/batch-send-transactional-emails | [optional] **Tags** | **List<string>** | Tag your emails to find them more easily | [optional] +**ScheduledAt** | **DateTime?** | UTC date-time on which the email has to schedule (YYYY-MM-DDTHH:mm:ss.SSSZ). Prefer to pass your timezone in date-time format for scheduling. There can be an expected delay of +5 minutes in scheduled email delivery. **Please note this feature is currently a public beta**. | [optional] +**BatchId** | **string** | Valid UUIDv4 batch id to identify the scheduled batches transactional email. If not passed we will create a valid UUIDv4 batch id at our end. | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/SendTransacSms.md b/docs/SendTransacSms.md index e0ae621..07fb6a8 100644 --- a/docs/SendTransacSms.md +++ b/docs/SendTransacSms.md @@ -10,6 +10,7 @@ Name | Type | Description | Notes **Tag** | **string** | Tag of the message | [optional] **WebUrl** | **string** | Webhook to call for each event triggered by the message (delivered etc.) | [optional] **UnicodeEnabled** | **bool?** | Format of the message. It indicates whether the content should be treated as unicode or not. | [optional] [default to false] +**OrganisationPrefix** | **string** | A recognizable prefix will ensure your audience knows who you are. Recommended by U.S. carriers. This will be added as your Brand Name before the message content. **Prefer verifying maximum length of 160 characters including this prefix in message content to avoid multiple sending of same sms.** | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/SubAccountDetailsResponsePlanInfoCredits.md b/docs/SubAccountDetailsResponsePlanInfoCredits.md index b80abb3..62349a7 100644 --- a/docs/SubAccountDetailsResponsePlanInfoCredits.md +++ b/docs/SubAccountDetailsResponsePlanInfoCredits.md @@ -3,7 +3,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**Sms** | **long?** | Sms quota of the sub-account | [optional] +**Sms** | **long?** | SMS credits remaining on the sub-account | [optional] **Emails** | [**SubAccountDetailsResponsePlanInfoCreditsEmails**](SubAccountDetailsResponsePlanInfoCreditsEmails.md) | | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/SubAccountsResponseSubAccounts.md b/docs/SubAccountsResponseSubAccounts.md index cbe8c2e..489f263 100644 --- a/docs/SubAccountsResponseSubAccounts.md +++ b/docs/SubAccountsResponseSubAccounts.md @@ -3,10 +3,10 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**Id** | **long?** | client id of sub-account organization | -**CompanyName** | **string** | Name of sub-account organization | -**Active** | **bool?** | Whether organization is active or not | -**CreatedAt** | **long?** | timestamp when the organization was created | +**Id** | **long?** | id of the sub-account | +**CompanyName** | **string** | Name of the sub-account company | +**Active** | **bool?** | Whether the sub-account is active or not | +**CreatedAt** | **long?** | Timestamp when the sub-account was created | [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/Task.md b/docs/Task.md index c780f76..83c16ea 100644 --- a/docs/Task.md +++ b/docs/Task.md @@ -3,23 +3,12 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**FirstContact** | [**Contact**](Contact.md) | | [optional] **Id** | **string** | Unique task id | [optional] **TaskTypeId** | **string** | Id for type of task e.g Call / Email / Meeting etc. | **Name** | **string** | Name of task | **ContactsIds** | **List<int?>** | Contact ids for contacts linked to this task | [optional] -**Contacts** | [**List<Contact>**](Contact.md) | Contact details for contacts linked to this task | [optional] **DealsIds** | **List<string>** | Deal ids for deals a task is linked to | [optional] **CompaniesIds** | **List<string>** | Companies ids for companies a task is linked to | [optional] -**AssignToId** | **string** | User id to whom task is assigned | [optional] -**Date** | **DateTime?** | Task date/time | -**Duration** | **int?** | Duration of task | [optional] -**Notes** | **string** | Notes added to a task | [optional] -**Done** | **bool?** | Task marked as done | [optional] -**Reminder** | [**TaskReminder**](TaskReminder.md) | Task reminder date/time for a task | [optional] -**CreatedAt** | **DateTime?** | Task created date/time | [optional] -**UpdatedAt** | **DateTime?** | Task update date/time | [optional] -**Refs** | **Object** | | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/TaskList.md b/docs/TaskList.md new file mode 100644 index 0000000..c18c4f1 --- /dev/null +++ b/docs/TaskList.md @@ -0,0 +1,9 @@ +# sib_api_v3_sdk.Model.TaskList +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Items** | [**List<Task>**](Task.md) | List of tasks | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/TaskReminder.md b/docs/TaskReminder.md index c34c18e..4d0457c 100644 --- a/docs/TaskReminder.md +++ b/docs/TaskReminder.md @@ -5,7 +5,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **Value** | **int?** | Value of time unit before reminder is to be sent | **Unit** | **string** | Unit of time before reminder is to be sent | -**Types** | **List<string>** | Type of task reminder | +**Types** | **List<string>** | Type of task reminder e.g email, push | [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/TaskTypes.md b/docs/TaskTypes.md index e0dd8d0..98ddd3e 100644 --- a/docs/TaskTypes.md +++ b/docs/TaskTypes.md @@ -4,7 +4,6 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **Id** | **string** | Id of task type | [optional] -**Icon** | **string** | Icon of task type | [optional] **Title** | **string** | Title of task type | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/FoldersApi.md b/docs/TasksApi.md similarity index 60% rename from docs/FoldersApi.md rename to docs/TasksApi.md index 0fb8416..33e848c 100644 --- a/docs/FoldersApi.md +++ b/docs/TasksApi.md @@ -1,22 +1,22 @@ -# sib_api_v3_sdk.Api.FoldersApi +# sib_api_v3_sdk.Api.TasksApi All URIs are relative to *https://api.sendinblue.com/v3* Method | HTTP request | Description ------------- | ------------- | ------------- -[**CreateFolder**](FoldersApi.md#createfolder) | **POST** /contacts/folders | Create a folder -[**DeleteFolder**](FoldersApi.md#deletefolder) | **DELETE** /contacts/folders/{folderId} | Delete a folder (and all its lists) -[**GetFolder**](FoldersApi.md#getfolder) | **GET** /contacts/folders/{folderId} | Returns a folder's details -[**GetFolderLists**](FoldersApi.md#getfolderlists) | **GET** /contacts/folders/{folderId}/lists | Get lists in a folder -[**GetFolders**](FoldersApi.md#getfolders) | **GET** /contacts/folders | Get all folders -[**UpdateFolder**](FoldersApi.md#updatefolder) | **PUT** /contacts/folders/{folderId} | Update a folder +[**CrmTasksGet**](TasksApi.md#crmtasksget) | **GET** /crm/tasks | Get all tasks +[**CrmTasksIdDelete**](TasksApi.md#crmtasksiddelete) | **DELETE** /crm/tasks/{id} | Delete a task +[**CrmTasksIdGet**](TasksApi.md#crmtasksidget) | **GET** /crm/tasks/{id} | Get a task +[**CrmTasksIdPatch**](TasksApi.md#crmtasksidpatch) | **PATCH** /crm/tasks/{id} | Update a task +[**CrmTasksPost**](TasksApi.md#crmtaskspost) | **POST** /crm/tasks | Create a task +[**CrmTasktypesGet**](TasksApi.md#crmtasktypesget) | **GET** /crm/tasktypes | Get all task types - -# **CreateFolder** -> CreateModel CreateFolder (CreateUpdateFolder createFolder) + +# **CrmTasksGet** +> TaskList CrmTasksGet (string filterType = null, string filterStatus = null, string filterDate = null, string filterAssignTo = null, string filterContacts = null, string filterDeals = null, string filterCompanies = null, int? dateFrom = null, int? dateTo = null, long? offset = null, long? limit = null, string sort = null, string sortBy = null) -Create a folder +Get all tasks ### Example ```csharp @@ -28,7 +28,7 @@ using sib_api_v3_sdk.Model; namespace Example { - public class CreateFolderExample + public class CrmTasksGetExample { public void main() { @@ -41,18 +41,30 @@ namespace Example // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - var apiInstance = new FoldersApi(); - var createFolder = new CreateUpdateFolder(); // CreateUpdateFolder | Name of the folder + var apiInstance = new TasksApi(); + var filterType = filterType_example; // string | Filter by task type (ID) (optional) + var filterStatus = filterStatus_example; // string | Filter by task status (optional) + var filterDate = filterDate_example; // string | Filter by date (optional) + var filterAssignTo = filterAssignTo_example; // string | Filter by assignTo id (optional) + var filterContacts = filterContacts_example; // string | Filter by contact ids (optional) + var filterDeals = filterDeals_example; // string | Filter by deals ids (optional) + var filterCompanies = filterCompanies_example; // string | Filter by companies ids (optional) + var dateFrom = 56; // int? | dateFrom to date range filter type (timestamp in milliseconds) (optional) + var dateTo = 56; // int? | dateTo to date range filter type (timestamp in milliseconds) (optional) + var offset = 789; // long? | Index of the first document of the page (optional) + var limit = 789; // long? | Number of documents per page (optional) (default to 50) + var sort = sort_example; // string | Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + var sortBy = sortBy_example; // string | The field used to sort field names. (optional) try { - // Create a folder - CreateModel result = apiInstance.CreateFolder(createFolder); + // Get all tasks + TaskList result = apiInstance.CrmTasksGet(filterType, filterStatus, filterDate, filterAssignTo, filterContacts, filterDeals, filterCompanies, dateFrom, dateTo, offset, limit, sort, sortBy); Debug.WriteLine(result); } catch (Exception e) { - Debug.Print("Exception when calling FoldersApi.CreateFolder: " + e.Message ); + Debug.Print("Exception when calling TasksApi.CrmTasksGet: " + e.Message ); } } } @@ -63,11 +75,23 @@ namespace Example Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **createFolder** | [**CreateUpdateFolder**](CreateUpdateFolder.md)| Name of the folder | + **filterType** | **string**| Filter by task type (ID) | [optional] + **filterStatus** | **string**| Filter by task status | [optional] + **filterDate** | **string**| Filter by date | [optional] + **filterAssignTo** | **string**| Filter by assignTo id | [optional] + **filterContacts** | **string**| Filter by contact ids | [optional] + **filterDeals** | **string**| Filter by deals ids | [optional] + **filterCompanies** | **string**| Filter by companies ids | [optional] + **dateFrom** | **int?**| dateFrom to date range filter type (timestamp in milliseconds) | [optional] + **dateTo** | **int?**| dateTo to date range filter type (timestamp in milliseconds) | [optional] + **offset** | **long?**| Index of the first document of the page | [optional] + **limit** | **long?**| Number of documents per page | [optional] [default to 50] + **sort** | **string**| Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed | [optional] + **sortBy** | **string**| The field used to sort field names. | [optional] ### Return type -[**CreateModel**](CreateModel.md) +[**TaskList**](TaskList.md) ### Authorization @@ -80,11 +104,11 @@ Name | Type | Description | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **DeleteFolder** -> void DeleteFolder (long? folderId) + +# **CrmTasksIdDelete** +> void CrmTasksIdDelete (string id) -Delete a folder (and all its lists) +Delete a task ### Example ```csharp @@ -96,7 +120,7 @@ using sib_api_v3_sdk.Model; namespace Example { - public class DeleteFolderExample + public class CrmTasksIdDeleteExample { public void main() { @@ -109,17 +133,17 @@ namespace Example // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - var apiInstance = new FoldersApi(); - var folderId = 789; // long? | Id of the folder + var apiInstance = new TasksApi(); + var id = id_example; // string | try { - // Delete a folder (and all its lists) - apiInstance.DeleteFolder(folderId); + // Delete a task + apiInstance.CrmTasksIdDelete(id); } catch (Exception e) { - Debug.Print("Exception when calling FoldersApi.DeleteFolder: " + e.Message ); + Debug.Print("Exception when calling TasksApi.CrmTasksIdDelete: " + e.Message ); } } } @@ -130,7 +154,7 @@ namespace Example Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **folderId** | **long?**| Id of the folder | + **id** | **string**| | ### Return type @@ -147,11 +171,11 @@ void (empty response body) [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **GetFolder** -> GetFolder GetFolder (long? folderId) + +# **CrmTasksIdGet** +> Task CrmTasksIdGet (string id) -Returns a folder's details +Get a task ### Example ```csharp @@ -163,7 +187,7 @@ using sib_api_v3_sdk.Model; namespace Example { - public class GetFolderExample + public class CrmTasksIdGetExample { public void main() { @@ -176,18 +200,18 @@ namespace Example // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - var apiInstance = new FoldersApi(); - var folderId = 789; // long? | id of the folder + var apiInstance = new TasksApi(); + var id = id_example; // string | try { - // Returns a folder's details - GetFolder result = apiInstance.GetFolder(folderId); + // Get a task + Task result = apiInstance.CrmTasksIdGet(id); Debug.WriteLine(result); } catch (Exception e) { - Debug.Print("Exception when calling FoldersApi.GetFolder: " + e.Message ); + Debug.Print("Exception when calling TasksApi.CrmTasksIdGet: " + e.Message ); } } } @@ -198,11 +222,11 @@ namespace Example Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **folderId** | **long?**| id of the folder | + **id** | **string**| | ### Return type -[**GetFolder**](GetFolder.md) +[**Task**](Task.md) ### Authorization @@ -215,11 +239,11 @@ Name | Type | Description | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **GetFolderLists** -> GetFolderLists GetFolderLists (long? folderId, long? limit = null, long? offset = null, string sort = null) + +# **CrmTasksIdPatch** +> void CrmTasksIdPatch (string id, Body7 body) -Get lists in a folder +Update a task ### Example ```csharp @@ -231,7 +255,7 @@ using sib_api_v3_sdk.Model; namespace Example { - public class GetFolderListsExample + public class CrmTasksIdPatchExample { public void main() { @@ -244,21 +268,18 @@ namespace Example // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - var apiInstance = new FoldersApi(); - var folderId = 789; // long? | Id of the folder - var limit = 789; // long? | Number of documents per page (optional) (default to 10) - var offset = 789; // long? | Index of the first document of the page (optional) (default to 0) - var sort = sort_example; // string | Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional) (default to desc) + var apiInstance = new TasksApi(); + var id = id_example; // string | + var body = new Body7(); // Body7 | Updated task details. try { - // Get lists in a folder - GetFolderLists result = apiInstance.GetFolderLists(folderId, limit, offset, sort); - Debug.WriteLine(result); + // Update a task + apiInstance.CrmTasksIdPatch(id, body); } catch (Exception e) { - Debug.Print("Exception when calling FoldersApi.GetFolderLists: " + e.Message ); + Debug.Print("Exception when calling TasksApi.CrmTasksIdPatch: " + e.Message ); } } } @@ -269,14 +290,12 @@ namespace Example Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **folderId** | **long?**| Id of the folder | - **limit** | **long?**| Number of documents per page | [optional] [default to 10] - **offset** | **long?**| Index of the first document of the page | [optional] [default to 0] - **sort** | **string**| Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed | [optional] [default to desc] + **id** | **string**| | + **body** | [**Body7**](Body7.md)| Updated task details. | ### Return type -[**GetFolderLists**](GetFolderLists.md) +void (empty response body) ### Authorization @@ -289,11 +308,11 @@ Name | Type | Description | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **GetFolders** -> GetFolders GetFolders (long? limit, long? offset, string sort = null) + +# **CrmTasksPost** +> InlineResponse2011 CrmTasksPost (Body6 body) -Get all folders +Create a task ### Example ```csharp @@ -305,7 +324,7 @@ using sib_api_v3_sdk.Model; namespace Example { - public class GetFoldersExample + public class CrmTasksPostExample { public void main() { @@ -318,20 +337,18 @@ namespace Example // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - var apiInstance = new FoldersApi(); - var limit = 789; // long? | Number of documents per page (default to 10) - var offset = 789; // long? | Index of the first document of the page (default to 0) - var sort = sort_example; // string | Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional) (default to desc) + var apiInstance = new TasksApi(); + var body = new Body6(); // Body6 | Task name. try { - // Get all folders - GetFolders result = apiInstance.GetFolders(limit, offset, sort); + // Create a task + InlineResponse2011 result = apiInstance.CrmTasksPost(body); Debug.WriteLine(result); } catch (Exception e) { - Debug.Print("Exception when calling FoldersApi.GetFolders: " + e.Message ); + Debug.Print("Exception when calling TasksApi.CrmTasksPost: " + e.Message ); } } } @@ -342,13 +359,11 @@ namespace Example Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **limit** | **long?**| Number of documents per page | [default to 10] - **offset** | **long?**| Index of the first document of the page | [default to 0] - **sort** | **string**| Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed | [optional] [default to desc] + **body** | [**Body6**](Body6.md)| Task name. | ### Return type -[**GetFolders**](GetFolders.md) +[**InlineResponse2011**](InlineResponse2011.md) ### Authorization @@ -361,11 +376,11 @@ Name | Type | Description | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - -# **UpdateFolder** -> void UpdateFolder (long? folderId, CreateUpdateFolder updateFolder) + +# **CrmTasktypesGet** +> TaskTypes CrmTasktypesGet () -Update a folder +Get all task types ### Example ```csharp @@ -377,7 +392,7 @@ using sib_api_v3_sdk.Model; namespace Example { - public class UpdateFolderExample + public class CrmTasktypesGetExample { public void main() { @@ -390,18 +405,17 @@ namespace Example // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); - var apiInstance = new FoldersApi(); - var folderId = 789; // long? | Id of the folder - var updateFolder = new CreateUpdateFolder(); // CreateUpdateFolder | Name of the folder + var apiInstance = new TasksApi(); try { - // Update a folder - apiInstance.UpdateFolder(folderId, updateFolder); + // Get all task types + TaskTypes result = apiInstance.CrmTasktypesGet(); + Debug.WriteLine(result); } catch (Exception e) { - Debug.Print("Exception when calling FoldersApi.UpdateFolder: " + e.Message ); + Debug.Print("Exception when calling TasksApi.CrmTasktypesGet: " + e.Message ); } } } @@ -409,15 +423,11 @@ namespace Example ``` ### Parameters - -Name | Type | Description | Notes -------------- | ------------- | ------------- | ------------- - **folderId** | **long?**| Id of the folder | - **updateFolder** | [**CreateUpdateFolder**](CreateUpdateFolder.md)| Name of the folder | +This endpoint does not need any parameter. ### Return type -void (empty response body) +[**TaskTypes**](TaskTypes.md) ### Authorization diff --git a/docs/TransactionalEmailsApi.md b/docs/TransactionalEmailsApi.md index 9ea31f5..8eb77dd 100644 --- a/docs/TransactionalEmailsApi.md +++ b/docs/TransactionalEmailsApi.md @@ -8,10 +8,13 @@ Method | HTTP request | Description [**CreateSmtpTemplate**](TransactionalEmailsApi.md#createsmtptemplate) | **POST** /smtp/templates | Create an email template [**DeleteBlockedDomain**](TransactionalEmailsApi.md#deleteblockeddomain) | **DELETE** /smtp/blockedDomains/{domain} | Unblock an existing domain from the list of blocked domains [**DeleteHardbounces**](TransactionalEmailsApi.md#deletehardbounces) | **POST** /smtp/deleteHardbounces | Delete hardbounces +[**DeleteScheduledEmailById**](TransactionalEmailsApi.md#deletescheduledemailbyid) | **DELETE** /smtp/email/{identifier} | Delete scheduled emails by batchId or messageId [**DeleteSmtpTemplate**](TransactionalEmailsApi.md#deletesmtptemplate) | **DELETE** /smtp/templates/{templateId} | Delete an inactive email template [**GetAggregatedSmtpReport**](TransactionalEmailsApi.md#getaggregatedsmtpreport) | **GET** /smtp/statistics/aggregatedReport | Get your transactional email activity aggregated over a period of time [**GetBlockedDomains**](TransactionalEmailsApi.md#getblockeddomains) | **GET** /smtp/blockedDomains | Get the list of blocked domains [**GetEmailEventReport**](TransactionalEmailsApi.md#getemaileventreport) | **GET** /smtp/statistics/events | Get all your transactional email activity (unaggregated events) +[**GetScheduledEmailByBatchId**](TransactionalEmailsApi.md#getscheduledemailbybatchid) | **GET** /smtp/emailStatus/{batchId} | Fetch scheduled emails by batchId +[**GetScheduledEmailByMessageId**](TransactionalEmailsApi.md#getscheduledemailbymessageid) | **GET** /smtp/emailStatus/{messageId} | Fetch scheduled email by messageId [**GetSmtpReport**](TransactionalEmailsApi.md#getsmtpreport) | **GET** /smtp/statistics/reports | Get your transactional email activity aggregated per day [**GetSmtpTemplate**](TransactionalEmailsApi.md#getsmtptemplate) | **GET** /smtp/templates/{templateId} | Returns the template information [**GetSmtpTemplates**](TransactionalEmailsApi.md#getsmtptemplates) | **GET** /smtp/templates | Get the list of email templates @@ -300,6 +303,75 @@ void (empty response body) [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **DeleteScheduledEmailById** +> void DeleteScheduledEmailById (string identifier) + +Delete scheduled emails by batchId or messageId + +Delete scheduled batch of emails by batchId or single scheduled email by messageId + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class DeleteScheduledEmailByIdExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new TransactionalEmailsApi(); + var identifier = identifier_example; // string | The `batchId` of scheduled emails batch (Should be a valid UUIDv4) or the `messageId` of scheduled email. + + try + { + // Delete scheduled emails by batchId or messageId + apiInstance.DeleteScheduledEmailById(identifier); + } + catch (Exception e) + { + Debug.Print("Exception when calling TransactionalEmailsApi.DeleteScheduledEmailById: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **identifier** | **string**| The `batchId` of scheduled emails batch (Should be a valid UUIDv4) or the `messageId` of scheduled email. | + +### Return type + +void (empty response body) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + # **DeleteSmtpTemplate** > void DeleteSmtpTemplate (long? templateId) @@ -541,7 +613,7 @@ namespace Example // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); var apiInstance = new TransactionalEmailsApi(); - var limit = 789; // long? | Number limitation for the result returned (optional) (default to 50) + var limit = 789; // long? | Number limitation for the result returned (optional) (default to 2500) var offset = 789; // long? | Beginning point in the list to retrieve from. (optional) (default to 0) var startDate = startDate_example; // string | Mandatory if endDate is used. Starting date of the report (YYYY-MM-DD). Must be lower than equal to endDate (optional) var endDate = endDate_example; // string | Mandatory if startDate is used. Ending date of the report (YYYY-MM-DD). Must be greater than equal to startDate (optional) @@ -572,7 +644,7 @@ namespace Example Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **limit** | **long?**| Number limitation for the result returned | [optional] [default to 50] + **limit** | **long?**| Number limitation for the result returned | [optional] [default to 2500] **offset** | **long?**| Beginning point in the list to retrieve from. | [optional] [default to 0] **startDate** | **string**| Mandatory if endDate is used. Starting date of the report (YYYY-MM-DD). Must be lower than equal to endDate | [optional] **endDate** | **string**| Mandatory if startDate is used. Ending date of the report (YYYY-MM-DD). Must be greater than equal to startDate | [optional] @@ -599,6 +671,162 @@ Name | Type | Description | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **GetScheduledEmailByBatchId** +> GetScheduledEmailByBatchId GetScheduledEmailByBatchId (string batchId, DateTime? startDate = null, DateTime? endDate = null, string sort = null, string status = null, long? limit = null, long? offset = null) + +Fetch scheduled emails by batchId + +Fetch scheduled batch of emails by batchId (Can retrieve data upto 30 days old) + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class GetScheduledEmailByBatchIdExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new TransactionalEmailsApi(); + var batchId = batchId_example; // string | The batchId of scheduled emails batch (Should be a valid UUIDv4) + var startDate = 2013-10-20; // DateTime? | Mandatory if `endDate` is used. Starting date (YYYY-MM-DD) from which you want to fetch the list. Can be maximum 30 days older tha current date. (optional) + var endDate = 2013-10-20; // DateTime? | Mandatory if `startDate` is used. Ending date (YYYY-MM-DD) till which you want to fetch the list. Maximum time period that can be selected is one month. (optional) + var sort = sort_example; // string | Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional) (default to desc) + var status = status_example; // string | Filter the records by `status` of the scheduled email batch or message. (optional) + var limit = 789; // long? | Number of documents returned per page (optional) (default to 100) + var offset = 789; // long? | Index of the first document on the page (optional) (default to 0) + + try + { + // Fetch scheduled emails by batchId + GetScheduledEmailByBatchId result = apiInstance.GetScheduledEmailByBatchId(batchId, startDate, endDate, sort, status, limit, offset); + Debug.WriteLine(result); + } + catch (Exception e) + { + Debug.Print("Exception when calling TransactionalEmailsApi.GetScheduledEmailByBatchId: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **batchId** | **string**| The batchId of scheduled emails batch (Should be a valid UUIDv4) | + **startDate** | **DateTime?**| Mandatory if `endDate` is used. Starting date (YYYY-MM-DD) from which you want to fetch the list. Can be maximum 30 days older tha current date. | [optional] + **endDate** | **DateTime?**| Mandatory if `startDate` is used. Ending date (YYYY-MM-DD) till which you want to fetch the list. Maximum time period that can be selected is one month. | [optional] + **sort** | **string**| Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed | [optional] [default to desc] + **status** | **string**| Filter the records by `status` of the scheduled email batch or message. | [optional] + **limit** | **long?**| Number of documents returned per page | [optional] [default to 100] + **offset** | **long?**| Index of the first document on the page | [optional] [default to 0] + +### Return type + +[**GetScheduledEmailByBatchId**](GetScheduledEmailByBatchId.md) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **GetScheduledEmailByMessageId** +> GetScheduledEmailByMessageId GetScheduledEmailByMessageId (string messageId, DateTime? startDate = null, DateTime? endDate = null) + +Fetch scheduled email by messageId + +Fetch scheduled email by messageId (Can retrieve data upto 30 days old) + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class GetScheduledEmailByMessageIdExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new TransactionalEmailsApi(); + var messageId = messageId_example; // string | The messageId of scheduled email + var startDate = 2013-10-20; // DateTime? | Mandatory if endDate is used. Starting date (YYYY-MM-DD) from which you want to fetch the list. Can be maximum 30 days older tha current date. (optional) + var endDate = 2013-10-20; // DateTime? | Mandatory if startDate is used. Ending date (YYYY-MM-DD) till which you want to fetch the list. Maximum time period that can be selected is one month. (optional) + + try + { + // Fetch scheduled email by messageId + GetScheduledEmailByMessageId result = apiInstance.GetScheduledEmailByMessageId(messageId, startDate, endDate); + Debug.WriteLine(result); + } + catch (Exception e) + { + Debug.Print("Exception when calling TransactionalEmailsApi.GetScheduledEmailByMessageId: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **messageId** | **string**| The messageId of scheduled email | + **startDate** | **DateTime?**| Mandatory if endDate is used. Starting date (YYYY-MM-DD) from which you want to fetch the list. Can be maximum 30 days older tha current date. | [optional] + **endDate** | **DateTime?**| Mandatory if startDate is used. Ending date (YYYY-MM-DD) till which you want to fetch the list. Maximum time period that can be selected is one month. | [optional] + +### Return type + +[**GetScheduledEmailByMessageId**](GetScheduledEmailByMessageId.md) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + # **GetSmtpReport** > GetReports GetSmtpReport (long? limit = null, long? offset = null, string startDate = null, string endDate = null, long? days = null, string tag = null, string sort = null) diff --git a/docs/UpdateContact.md b/docs/UpdateContact.md index ec60017..42dacb4 100644 --- a/docs/UpdateContact.md +++ b/docs/UpdateContact.md @@ -3,7 +3,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**Attributes** | **Object** | Pass the set of attributes to be updated. These attributes must be present in your account. To update existing email address of a contact with the new one please pass EMAIL in attribtes. For example, `{ "EMAIL":"newemail@domain.com", "FNAME":"Ellie", "LNAME":"Roger"}`. Keep in mind transactional attributes can be updated the same way as normal attributes. Mobile Number in "SMS" field should be passed with proper country code. For example {"SMS":"+91xxxxxxxxxx"} or {"SMS":"0091xxxxxxxxxx"} | [optional] +**Attributes** | **Object** | Pass the set of attributes to be updated. These attributes must be present in your account. To update existing email address of a contact with the new one please pass EMAIL in attributes. For example, `{ "EMAIL":"newemail@domain.com", "FNAME":"Ellie", "LNAME":"Roger"}`. The attribute's parameter should be passed in capital letter while updating a contact. Keep in mind transactional attributes can be updated the same way as normal attributes. Mobile Number in "SMS" field should be passed with proper country code. For example {"SMS":"+91xxxxxxxxxx"} or {"SMS":"0091xxxxxxxxxx"} | [optional] **EmailBlacklisted** | **bool?** | Set/unset this field to blacklist/allow the contact for emails (emailBlacklisted = true) | [optional] **SmsBlacklisted** | **bool?** | Set/unset this field to blacklist/allow the contact for SMS (smsBlacklisted = true) | [optional] **ListIds** | **List<long?>** | Ids of the lists to add the contact to | [optional] diff --git a/docs/UpdateEmailCampaign.md b/docs/UpdateEmailCampaign.md index 7b25d30..fc6c5c5 100644 --- a/docs/UpdateEmailCampaign.md +++ b/docs/UpdateEmailCampaign.md @@ -6,7 +6,7 @@ Name | Type | Description | Notes **Tag** | **string** | Tag of the campaign | [optional] **Sender** | [**UpdateEmailCampaignSender**](UpdateEmailCampaignSender.md) | | [optional] **Name** | **string** | Name of the campaign | [optional] -**HtmlContent** | **string** | Body of the message (HTML version). REQUIRED if htmlUrl is empty | [optional] +**HtmlContent** | **string** | Body of the message (HTML version). If the campaign is designed using Drag & Drop editor via HTML content, then the design page will not have Drag & Drop editor access for that campaign. REQUIRED if htmlUrl is empty | [optional] **HtmlUrl** | **string** | Url which contents the body of the email message. REQUIRED if htmlContent is empty | [optional] **ScheduledAt** | **string** | UTC date-time on which the campaign has to run (YYYY-MM-DDTHH:mm:ss.SSSZ). Prefer to pass your timezone in date-time format for accurate result. If sendAtBestTime is set to true, your campaign will be sent according to the date passed (ignoring the time part). | [optional] **Subject** | **string** | Subject of the campaign | [optional] @@ -31,6 +31,8 @@ Name | Type | Description | Notes **IpWarmupEnable** | **bool?** | Available for dedicated ip clients. Set this to true if you wish to warm up your ip. | [optional] [default to false] **InitialQuota** | **long?** | Set an initial quota greater than 1 for warming up your ip. We recommend you set a value of 3000. | [optional] **IncreaseRate** | **long?** | Set a percentage increase rate for warming up your ip. We recommend you set the increase rate to 30% per day. If you want to send the same number of emails every day, set the daily increase value to 0%. | [optional] +**UnsubscriptionPageId** | **string** | Enter an unsubscription page id. The page id is a 24 digit alphanumeric id that can be found in the URL when editing the page. | [optional] +**UpdateFormId** | **string** | Mandatory if templateId is used containing the {{ update_profile }} tag. Enter an update profile form id. The form id is a 24 digit alphanumeric id that can be found in the URL when editing the form. | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/UpdateEmailCampaignRecipients.md b/docs/UpdateEmailCampaignRecipients.md index fe4c309..f05d148 100644 --- a/docs/UpdateEmailCampaignRecipients.md +++ b/docs/UpdateEmailCampaignRecipients.md @@ -4,7 +4,8 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **ExclusionListIds** | **List<long?>** | List ids which have to be excluded from a campaign | [optional] -**ListIds** | **List<long?>** | Lists Ids to send the campaign to. REQUIRED if already not present in campaign and scheduledAt is not empty | [optional] +**ListIds** | **List<long?>** | Lists Ids to send the campaign to. Campaign should only be updated with listIds if listIds were used to create it. REQUIRED if already not present in campaign and scheduledAt is not empty | [optional] +**SegmentIds** | **List<long?>** | Mandatory if listIds are not used. Campaign should only be updated with segmentIds if segmentIds were used to create it. Segment ids to send the campaign to. | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/UpdateSmsCampaign.md b/docs/UpdateSmsCampaign.md index 1055d94..5daf6de 100644 --- a/docs/UpdateSmsCampaign.md +++ b/docs/UpdateSmsCampaign.md @@ -9,6 +9,8 @@ Name | Type | Description | Notes **Recipients** | [**CreateSmsCampaignRecipients**](CreateSmsCampaignRecipients.md) | | [optional] **ScheduledAt** | **string** | UTC date-time on which the campaign has to run (YYYY-MM-DDTHH:mm:ss.SSSZ). Prefer to pass your timezone in date-time format for accurate result. | [optional] **UnicodeEnabled** | **bool?** | Format of the message. It indicates whether the content should be treated as unicode or not. | [optional] [default to false] +**OrganisationPrefix** | **string** | A recognizable prefix will ensure your audience knows who you are. Recommended by U.S. carriers. This will be added as your Brand Name before the message content. **Prefer verifying maximum length of 160 characters including this prefix in message content to avoid multiple sending of same sms.** | [optional] +**UnsubscribeInstruction** | **string** | Instructions to unsubscribe from future communications. Recommended by U.S. carriers. Must include **STOP** keyword. This will be added as instructions after the end of message content. **Prefer verifying maximum length of 160 characters including this instructions in message content to avoid multiple sending of same sms.** | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/UpdateSmtpTemplate.md b/docs/UpdateSmtpTemplate.md index 02f75c3..98cfd36 100644 --- a/docs/UpdateSmtpTemplate.md +++ b/docs/UpdateSmtpTemplate.md @@ -6,7 +6,7 @@ Name | Type | Description | Notes **Tag** | **string** | Tag of the template | [optional] **Sender** | [**UpdateSmtpTemplateSender**](UpdateSmtpTemplateSender.md) | | [optional] **TemplateName** | **string** | Name of the template | [optional] -**HtmlContent** | **string** | Required if htmlUrl is empty. Body of the message (HTML must have more than 10 characters) | [optional] +**HtmlContent** | **string** | Required if htmlUrl is empty. If the template is designed using Drag & Drop editor via HTML content, then the design page will not have Drag & Drop editor access for that template. Body of the message (HTML must have more than 10 characters) | [optional] **HtmlUrl** | **string** | Required if htmlContent is empty. URL to the body of the email (HTML) | [optional] **Subject** | **string** | Subject of the email | [optional] **ReplyTo** | **string** | Email on which campaign recipients will be able to reply to | [optional] diff --git a/docs/UploadImageModel.md b/docs/UploadImageModel.md new file mode 100644 index 0000000..fa90ec8 --- /dev/null +++ b/docs/UploadImageModel.md @@ -0,0 +1,9 @@ +# sib_api_v3_sdk.Model.UploadImageModel +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Url** | **string** | URL of the image uploaded | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/VariablesItems.md b/docs/VariablesItems.md new file mode 100644 index 0000000..26d4506 --- /dev/null +++ b/docs/VariablesItems.md @@ -0,0 +1,11 @@ +# sib_api_v3_sdk.Model.VariablesItems +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Name** | **string** | | [optional] +**Default** | **string** | | [optional] +**Datatype** | **string** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/WhatsappCampStats.md b/docs/WhatsappCampStats.md new file mode 100644 index 0000000..f32a36c --- /dev/null +++ b/docs/WhatsappCampStats.md @@ -0,0 +1,13 @@ +# sib_api_v3_sdk.Model.WhatsappCampStats +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Sent** | **int?** | | +**Delivered** | **int?** | | +**Read** | **int?** | | +**Unsubscribe** | **int?** | | +**NotSent** | **int?** | | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/WhatsappCampTemplate.md b/docs/WhatsappCampTemplate.md new file mode 100644 index 0000000..bb989ae --- /dev/null +++ b/docs/WhatsappCampTemplate.md @@ -0,0 +1,19 @@ +# sib_api_v3_sdk.Model.WhatsappCampTemplate +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**Name** | **string** | name of the template | [optional] +**Category** | **string** | description of the template | [optional] +**Language** | **string** | language of the template | [optional] +**ContainsButton** | **bool?** | | [optional] +**DisplayHeader** | **bool?** | | [optional] +**HeaderType** | **string** | type of header | [optional] +**Components** | [**List<ComponentItems>**](ComponentItems.md) | array of component item objects | [optional] +**HeaderVariables** | [**List<VariablesItems>**](VariablesItems.md) | array of variables item object | [optional] +**BodyVariables** | [**List<VariablesItems>**](VariablesItems.md) | array of variables item variables | [optional] +**ButtonType** | **string** | | [optional] +**HideFooter** | **bool?** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/WhatsappCampaignsApi.md b/docs/WhatsappCampaignsApi.md new file mode 100644 index 0000000..61019fa --- /dev/null +++ b/docs/WhatsappCampaignsApi.md @@ -0,0 +1,145 @@ +# sib_api_v3_sdk.Api.WhatsappCampaignsApi + +All URIs are relative to *https://api.sendinblue.com/v3* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**DeleteWhatsappCampaign**](WhatsappCampaignsApi.md#deletewhatsappcampaign) | **DELETE** /whatsappCampaigns/{campaignId} | Delete a whatsapp campaign +[**GetWhatsappCampaign**](WhatsappCampaignsApi.md#getwhatsappcampaign) | **GET** /whatsappCampaigns/{campaignId} | Get Whatsapp campaign Overview + + + +# **DeleteWhatsappCampaign** +> void DeleteWhatsappCampaign (Object campaignId) + +Delete a whatsapp campaign + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class DeleteWhatsappCampaignExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new WhatsappCampaignsApi(); + var campaignId = new Object(); // Object | id of the campaign + + try + { + // Delete a whatsapp campaign + apiInstance.DeleteWhatsappCampaign(campaignId); + } + catch (Exception e) + { + Debug.Print("Exception when calling WhatsappCampaignsApi.DeleteWhatsappCampaign: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **campaignId** | [**Object**](Object.md)| id of the campaign | + +### Return type + +void (empty response body) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + + +# **GetWhatsappCampaign** +> GetWhatsappCampaignOverview GetWhatsappCampaign (Object campaignId) + +Get Whatsapp campaign Overview + +### Example +```csharp +using System; +using System.Diagnostics; +using sib_api_v3_sdk.Api; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace Example +{ + public class GetWhatsappCampaignExample + { + public void main() + { + // Configure API key authorization: api-key + Configuration.Default.AddApiKey("api-key", "YOUR_API_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("api-key", "Bearer"); + // Configure API key authorization: partner-key + Configuration.Default.AddApiKey("partner-key", "YOUR_PARTNER_KEY"); + // Uncomment below to setup prefix (e.g. Bearer) for API key, if needed + // Configuration.Default.AddApiKeyPrefix("partner-key", "Bearer"); + + var apiInstance = new WhatsappCampaignsApi(); + var campaignId = new Object(); // Object | Id of the campaign + + try + { + // Get Whatsapp campaign Overview + GetWhatsappCampaignOverview result = apiInstance.GetWhatsappCampaign(campaignId); + Debug.WriteLine(result); + } + catch (Exception e) + { + Debug.Print("Exception when calling WhatsappCampaignsApi.GetWhatsappCampaign: " + e.Message ); + } + } + } +} +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **campaignId** | [**Object**](Object.md)| Id of the campaign | + +### Return type + +[**GetWhatsappCampaignOverview**](GetWhatsappCampaignOverview.md) + +### Authorization + +[api-key](../README.md#api-key), [partner-key](../README.md#partner-key) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/sib_api_v3_sdk.sln b/sib_api_v3_sdk.sln index a22a8af..a4f889f 100644 --- a/sib_api_v3_sdk.sln +++ b/sib_api_v3_sdk.sln @@ -2,7 +2,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 VisualStudioVersion = 15.0.28307.1321 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "sib_api_v3_sdk", "src\sib_api_v3_sdk\sib_api_v3_sdk.csproj", "{5B3201DF-4DF3-4378-A1C0-0CC17F4E8E8C}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "sib_api_v3_sdk", "src\sib_api_v3_sdk\sib_api_v3_sdk.csproj", "{17020F04-B575-4F49-BF16-B65AF0D68A2A}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -10,15 +10,15 @@ Global Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {5B3201DF-4DF3-4378-A1C0-0CC17F4E8E8C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5B3201DF-4DF3-4378-A1C0-0CC17F4E8E8C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5B3201DF-4DF3-4378-A1C0-0CC17F4E8E8C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5B3201DF-4DF3-4378-A1C0-0CC17F4E8E8C}.Release|Any CPU.Build.0 = Release|Any CPU + {17020F04-B575-4F49-BF16-B65AF0D68A2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {17020F04-B575-4F49-BF16-B65AF0D68A2A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {17020F04-B575-4F49-BF16-B65AF0D68A2A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {17020F04-B575-4F49-BF16-B65AF0D68A2A}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {D2D4C59F-E9B8-405D-B967-F135732D56ED} + SolutionGuid = {E91C86A9-4587-4D4D-95EC-95771A196F08} EndGlobalSection EndGlobal diff --git a/src/sib_api_v3_sdk/Api/CompaniesApi.cs b/src/sib_api_v3_sdk/Api/CompaniesApi.cs new file mode 100644 index 0000000..751fe7b --- /dev/null +++ b/src/sib_api_v3_sdk/Api/CompaniesApi.cs @@ -0,0 +1,1617 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using RestSharp.Portable; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace sib_api_v3_sdk.Api +{ + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface ICompaniesApi : IApiAccessor + { + #region Synchronous Operations + /// + /// Get company attributes + /// + /// + /// + /// + /// Thrown when fails to make API call + /// CompanyAttributes + CompanyAttributes CompaniesAttributesGet (); + + /// + /// Get company attributes + /// + /// + /// + /// + /// Thrown when fails to make API call + /// ApiResponse of CompanyAttributes + ApiResponse CompaniesAttributesGetWithHttpInfo (); + /// + /// Get all companies + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Filter by attrbutes. If you have filter for owner on your side please send it as {"attributes.owner":"5b1a17d914b73d35a76ca0c7"} (optional) + /// Filter by linked contacts ids (optional) + /// Filter by linked deals ids (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// The field used to sort field names. (optional) + /// CompaniesList + CompaniesList CompaniesGet (string filters = null, long? linkedContactsIds = null, string linkedDealsIds = null, long? page = null, long? limit = null, string sort = null, string sortBy = null); + + /// + /// Get all companies + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Filter by attrbutes. If you have filter for owner on your side please send it as {"attributes.owner":"5b1a17d914b73d35a76ca0c7"} (optional) + /// Filter by linked contacts ids (optional) + /// Filter by linked deals ids (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// The field used to sort field names. (optional) + /// ApiResponse of CompaniesList + ApiResponse CompaniesGetWithHttpInfo (string filters = null, long? linkedContactsIds = null, string linkedDealsIds = null, long? page = null, long? limit = null, string sort = null, string sortBy = null); + /// + /// Delete a company + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// + void CompaniesIdDelete (string id); + + /// + /// Delete a company + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// ApiResponse of Object(void) + ApiResponse CompaniesIdDeleteWithHttpInfo (string id); + /// + /// Get a company + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// Company + Company CompaniesIdGet (string id); + + /// + /// Get a company + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// ApiResponse of Company + ApiResponse CompaniesIdGetWithHttpInfo (string id); + /// + /// Update a company + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// Updated company details. + /// Company + Company CompaniesIdPatch (string id, Body1 body); + + /// + /// Update a company + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// Updated company details. + /// ApiResponse of Company + ApiResponse CompaniesIdPatchWithHttpInfo (string id, Body1 body); + /// + /// Link and Unlink company with contacts and deals + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// Linked / Unlinked contacts and deals ids. + /// + void CompaniesLinkUnlinkIdPatch (string id, Body2 body); + + /// + /// Link and Unlink company with contacts and deals + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// Linked / Unlinked contacts and deals ids. + /// ApiResponse of Object(void) + ApiResponse CompaniesLinkUnlinkIdPatchWithHttpInfo (string id, Body2 body); + /// + /// Create a company + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Company create data. + /// InlineResponse200 + InlineResponse200 CompaniesPost (Body body); + + /// + /// Create a company + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Company create data. + /// ApiResponse of InlineResponse200 + ApiResponse CompaniesPostWithHttpInfo (Body body); + #endregion Synchronous Operations + #region Asynchronous Operations + /// + /// Get company attributes + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Task of CompanyAttributes + System.Threading.Tasks.Task CompaniesAttributesGetAsync (); + + /// + /// Get company attributes + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Task of ApiResponse (CompanyAttributes) + System.Threading.Tasks.Task> CompaniesAttributesGetAsyncWithHttpInfo (); + /// + /// Get all companies + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Filter by attrbutes. If you have filter for owner on your side please send it as {"attributes.owner":"5b1a17d914b73d35a76ca0c7"} (optional) + /// Filter by linked contacts ids (optional) + /// Filter by linked deals ids (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// The field used to sort field names. (optional) + /// Task of CompaniesList + System.Threading.Tasks.Task CompaniesGetAsync (string filters = null, long? linkedContactsIds = null, string linkedDealsIds = null, long? page = null, long? limit = null, string sort = null, string sortBy = null); + + /// + /// Get all companies + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Filter by attrbutes. If you have filter for owner on your side please send it as {"attributes.owner":"5b1a17d914b73d35a76ca0c7"} (optional) + /// Filter by linked contacts ids (optional) + /// Filter by linked deals ids (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// The field used to sort field names. (optional) + /// Task of ApiResponse (CompaniesList) + System.Threading.Tasks.Task> CompaniesGetAsyncWithHttpInfo (string filters = null, long? linkedContactsIds = null, string linkedDealsIds = null, long? page = null, long? limit = null, string sort = null, string sortBy = null); + /// + /// Delete a company + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// Task of void + System.Threading.Tasks.Task CompaniesIdDeleteAsync (string id); + + /// + /// Delete a company + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// Task of ApiResponse + System.Threading.Tasks.Task> CompaniesIdDeleteAsyncWithHttpInfo (string id); + /// + /// Get a company + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// Task of Company + System.Threading.Tasks.Task CompaniesIdGetAsync (string id); + + /// + /// Get a company + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// Task of ApiResponse (Company) + System.Threading.Tasks.Task> CompaniesIdGetAsyncWithHttpInfo (string id); + /// + /// Update a company + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// Updated company details. + /// Task of Company + System.Threading.Tasks.Task CompaniesIdPatchAsync (string id, Body1 body); + + /// + /// Update a company + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// Updated company details. + /// Task of ApiResponse (Company) + System.Threading.Tasks.Task> CompaniesIdPatchAsyncWithHttpInfo (string id, Body1 body); + /// + /// Link and Unlink company with contacts and deals + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// Linked / Unlinked contacts and deals ids. + /// Task of void + System.Threading.Tasks.Task CompaniesLinkUnlinkIdPatchAsync (string id, Body2 body); + + /// + /// Link and Unlink company with contacts and deals + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// Linked / Unlinked contacts and deals ids. + /// Task of ApiResponse + System.Threading.Tasks.Task> CompaniesLinkUnlinkIdPatchAsyncWithHttpInfo (string id, Body2 body); + /// + /// Create a company + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Company create data. + /// Task of InlineResponse200 + System.Threading.Tasks.Task CompaniesPostAsync (Body body); + + /// + /// Create a company + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Company create data. + /// Task of ApiResponse (InlineResponse200) + System.Threading.Tasks.Task> CompaniesPostAsyncWithHttpInfo (Body body); + #endregion Asynchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public partial class CompaniesApi : ICompaniesApi + { + private sib_api_v3_sdk.Client.ExceptionFactory _exceptionFactory = (name, response) => null; + + /// + /// Initializes a new instance of the class. + /// + /// + public CompaniesApi(String basePath) + { + this.Configuration = new sib_api_v3_sdk.Client.Configuration { BasePath = basePath }; + + ExceptionFactory = sib_api_v3_sdk.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using Configuration object + /// + /// An instance of Configuration + /// + public CompaniesApi(sib_api_v3_sdk.Client.Configuration configuration = null) + { + if (configuration == null) // use the default one in Configuration + this.Configuration = sib_api_v3_sdk.Client.Configuration.Default; + else + this.Configuration = configuration; + + ExceptionFactory = sib_api_v3_sdk.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Gets the base path of the API client. + /// + /// The base path + public String GetBasePath() + { + return this.Configuration.ApiClient.RestClient.BaseUrl.ToString(); + } + + /// + /// Sets the base path of the API client. + /// + /// The base path + [Obsolete("SetBasePath is deprecated, please do 'Configuration.ApiClient = new ApiClient(\"http://new-path\")' instead.")] + public void SetBasePath(String basePath) + { + // do nothing + } + + /// + /// Gets or sets the configuration object + /// + /// An instance of the Configuration + public sib_api_v3_sdk.Client.Configuration Configuration {get; set;} + + /// + /// Provides a factory method hook for the creation of exceptions. + /// + public sib_api_v3_sdk.Client.ExceptionFactory ExceptionFactory + { + get + { + if (_exceptionFactory != null && _exceptionFactory.GetInvocationList().Length > 1) + { + throw new InvalidOperationException("Multicast delegate for ExceptionFactory is unsupported."); + } + return _exceptionFactory; + } + set { _exceptionFactory = value; } + } + + /// + /// Gets the default header. + /// + /// Dictionary of HTTP header + [Obsolete("DefaultHeader is deprecated, please use Configuration.DefaultHeader instead.")] + public IDictionary DefaultHeader() + { + return new ReadOnlyDictionary(this.Configuration.DefaultHeader); + } + + /// + /// Add default header. + /// + /// Header field name. + /// Header field value. + /// + [Obsolete("AddDefaultHeader is deprecated, please use Configuration.AddDefaultHeader instead.")] + public void AddDefaultHeader(string key, string value) + { + this.Configuration.AddDefaultHeader(key, value); + } + + /// + /// Get company attributes + /// + /// Thrown when fails to make API call + /// CompanyAttributes + public CompanyAttributes CompaniesAttributesGet () + { + ApiResponse localVarResponse = CompaniesAttributesGetWithHttpInfo(); + return localVarResponse.Data; + } + + /// + /// Get company attributes + /// + /// Thrown when fails to make API call + /// ApiResponse of CompanyAttributes + public ApiResponse< CompanyAttributes > CompaniesAttributesGetWithHttpInfo () + { + + var localVarPath = "./companies/attributes"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CompaniesAttributesGet", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (CompanyAttributes) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(CompanyAttributes))); + } + + /// + /// Get company attributes + /// + /// Thrown when fails to make API call + /// Task of CompanyAttributes + public async System.Threading.Tasks.Task CompaniesAttributesGetAsync () + { + ApiResponse localVarResponse = await CompaniesAttributesGetAsyncWithHttpInfo(); + return localVarResponse.Data; + + } + + /// + /// Get company attributes + /// + /// Thrown when fails to make API call + /// Task of ApiResponse (CompanyAttributes) + public async System.Threading.Tasks.Task> CompaniesAttributesGetAsyncWithHttpInfo () + { + + var localVarPath = "./companies/attributes"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CompaniesAttributesGet", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (CompanyAttributes) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(CompanyAttributes))); + } + + /// + /// Get all companies + /// + /// Thrown when fails to make API call + /// Filter by attrbutes. If you have filter for owner on your side please send it as {"attributes.owner":"5b1a17d914b73d35a76ca0c7"} (optional) + /// Filter by linked contacts ids (optional) + /// Filter by linked deals ids (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// The field used to sort field names. (optional) + /// CompaniesList + public CompaniesList CompaniesGet (string filters = null, long? linkedContactsIds = null, string linkedDealsIds = null, long? page = null, long? limit = null, string sort = null, string sortBy = null) + { + ApiResponse localVarResponse = CompaniesGetWithHttpInfo(filters, linkedContactsIds, linkedDealsIds, page, limit, sort, sortBy); + return localVarResponse.Data; + } + + /// + /// Get all companies + /// + /// Thrown when fails to make API call + /// Filter by attrbutes. If you have filter for owner on your side please send it as {"attributes.owner":"5b1a17d914b73d35a76ca0c7"} (optional) + /// Filter by linked contacts ids (optional) + /// Filter by linked deals ids (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// The field used to sort field names. (optional) + /// ApiResponse of CompaniesList + public ApiResponse< CompaniesList > CompaniesGetWithHttpInfo (string filters = null, long? linkedContactsIds = null, string linkedDealsIds = null, long? page = null, long? limit = null, string sort = null, string sortBy = null) + { + + var localVarPath = "./companies"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (filters != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "filters", filters)); // query parameter + if (linkedContactsIds != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "linkedContactsIds", linkedContactsIds)); // query parameter + if (linkedDealsIds != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "linkedDealsIds", linkedDealsIds)); // query parameter + if (page != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "page", page)); // query parameter + if (limit != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "limit", limit)); // query parameter + if (sort != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sort", sort)); // query parameter + if (sortBy != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sortBy", sortBy)); // query parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CompaniesGet", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (CompaniesList) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(CompaniesList))); + } + + /// + /// Get all companies + /// + /// Thrown when fails to make API call + /// Filter by attrbutes. If you have filter for owner on your side please send it as {"attributes.owner":"5b1a17d914b73d35a76ca0c7"} (optional) + /// Filter by linked contacts ids (optional) + /// Filter by linked deals ids (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// The field used to sort field names. (optional) + /// Task of CompaniesList + public async System.Threading.Tasks.Task CompaniesGetAsync (string filters = null, long? linkedContactsIds = null, string linkedDealsIds = null, long? page = null, long? limit = null, string sort = null, string sortBy = null) + { + ApiResponse localVarResponse = await CompaniesGetAsyncWithHttpInfo(filters, linkedContactsIds, linkedDealsIds, page, limit, sort, sortBy); + return localVarResponse.Data; + + } + + /// + /// Get all companies + /// + /// Thrown when fails to make API call + /// Filter by attrbutes. If you have filter for owner on your side please send it as {"attributes.owner":"5b1a17d914b73d35a76ca0c7"} (optional) + /// Filter by linked contacts ids (optional) + /// Filter by linked deals ids (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// The field used to sort field names. (optional) + /// Task of ApiResponse (CompaniesList) + public async System.Threading.Tasks.Task> CompaniesGetAsyncWithHttpInfo (string filters = null, long? linkedContactsIds = null, string linkedDealsIds = null, long? page = null, long? limit = null, string sort = null, string sortBy = null) + { + + var localVarPath = "./companies"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (filters != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "filters", filters)); // query parameter + if (linkedContactsIds != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "linkedContactsIds", linkedContactsIds)); // query parameter + if (linkedDealsIds != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "linkedDealsIds", linkedDealsIds)); // query parameter + if (page != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "page", page)); // query parameter + if (limit != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "limit", limit)); // query parameter + if (sort != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sort", sort)); // query parameter + if (sortBy != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sortBy", sortBy)); // query parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CompaniesGet", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (CompaniesList) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(CompaniesList))); + } + + /// + /// Delete a company + /// + /// Thrown when fails to make API call + /// + /// + public void CompaniesIdDelete (string id) + { + CompaniesIdDeleteWithHttpInfo(id); + } + + /// + /// Delete a company + /// + /// Thrown when fails to make API call + /// + /// ApiResponse of Object(void) + public ApiResponse CompaniesIdDeleteWithHttpInfo (string id) + { + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling CompaniesApi->CompaniesIdDelete"); + + var localVarPath = "./companies/{id}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, + Method.DELETE, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CompaniesIdDelete", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + null); + } + + /// + /// Delete a company + /// + /// Thrown when fails to make API call + /// + /// Task of void + public async System.Threading.Tasks.Task CompaniesIdDeleteAsync (string id) + { + await CompaniesIdDeleteAsyncWithHttpInfo(id); + + } + + /// + /// Delete a company + /// + /// Thrown when fails to make API call + /// + /// Task of ApiResponse + public async System.Threading.Tasks.Task> CompaniesIdDeleteAsyncWithHttpInfo (string id) + { + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling CompaniesApi->CompaniesIdDelete"); + + var localVarPath = "./companies/{id}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + Method.DELETE, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CompaniesIdDelete", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + null); + } + + /// + /// Get a company + /// + /// Thrown when fails to make API call + /// + /// Company + public Company CompaniesIdGet (string id) + { + ApiResponse localVarResponse = CompaniesIdGetWithHttpInfo(id); + return localVarResponse.Data; + } + + /// + /// Get a company + /// + /// Thrown when fails to make API call + /// + /// ApiResponse of Company + public ApiResponse< Company > CompaniesIdGetWithHttpInfo (string id) + { + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling CompaniesApi->CompaniesIdGet"); + + var localVarPath = "./companies/{id}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CompaniesIdGet", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (Company) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(Company))); + } + + /// + /// Get a company + /// + /// Thrown when fails to make API call + /// + /// Task of Company + public async System.Threading.Tasks.Task CompaniesIdGetAsync (string id) + { + ApiResponse localVarResponse = await CompaniesIdGetAsyncWithHttpInfo(id); + return localVarResponse.Data; + + } + + /// + /// Get a company + /// + /// Thrown when fails to make API call + /// + /// Task of ApiResponse (Company) + public async System.Threading.Tasks.Task> CompaniesIdGetAsyncWithHttpInfo (string id) + { + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling CompaniesApi->CompaniesIdGet"); + + var localVarPath = "./companies/{id}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CompaniesIdGet", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (Company) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(Company))); + } + + /// + /// Update a company + /// + /// Thrown when fails to make API call + /// + /// Updated company details. + /// Company + public Company CompaniesIdPatch (string id, Body1 body) + { + ApiResponse localVarResponse = CompaniesIdPatchWithHttpInfo(id, body); + return localVarResponse.Data; + } + + /// + /// Update a company + /// + /// Thrown when fails to make API call + /// + /// Updated company details. + /// ApiResponse of Company + public ApiResponse< Company > CompaniesIdPatchWithHttpInfo (string id, Body1 body) + { + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling CompaniesApi->CompaniesIdPatch"); + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling CompaniesApi->CompaniesIdPatch"); + + var localVarPath = "./companies/{id}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + if (body != null && body.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter + } + else + { + localVarPostBody = body; // byte array + } + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, + Method.PATCH, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CompaniesIdPatch", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (Company) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(Company))); + } + + /// + /// Update a company + /// + /// Thrown when fails to make API call + /// + /// Updated company details. + /// Task of Company + public async System.Threading.Tasks.Task CompaniesIdPatchAsync (string id, Body1 body) + { + ApiResponse localVarResponse = await CompaniesIdPatchAsyncWithHttpInfo(id, body); + return localVarResponse.Data; + + } + + /// + /// Update a company + /// + /// Thrown when fails to make API call + /// + /// Updated company details. + /// Task of ApiResponse (Company) + public async System.Threading.Tasks.Task> CompaniesIdPatchAsyncWithHttpInfo (string id, Body1 body) + { + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling CompaniesApi->CompaniesIdPatch"); + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling CompaniesApi->CompaniesIdPatch"); + + var localVarPath = "./companies/{id}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + if (body != null && body.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter + } + else + { + localVarPostBody = body; // byte array + } + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + Method.PATCH, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CompaniesIdPatch", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (Company) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(Company))); + } + + /// + /// Link and Unlink company with contacts and deals + /// + /// Thrown when fails to make API call + /// + /// Linked / Unlinked contacts and deals ids. + /// + public void CompaniesLinkUnlinkIdPatch (string id, Body2 body) + { + CompaniesLinkUnlinkIdPatchWithHttpInfo(id, body); + } + + /// + /// Link and Unlink company with contacts and deals + /// + /// Thrown when fails to make API call + /// + /// Linked / Unlinked contacts and deals ids. + /// ApiResponse of Object(void) + public ApiResponse CompaniesLinkUnlinkIdPatchWithHttpInfo (string id, Body2 body) + { + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling CompaniesApi->CompaniesLinkUnlinkIdPatch"); + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling CompaniesApi->CompaniesLinkUnlinkIdPatch"); + + var localVarPath = "./companies/link-unlink/{id}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + if (body != null && body.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter + } + else + { + localVarPostBody = body; // byte array + } + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, + Method.PATCH, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CompaniesLinkUnlinkIdPatch", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + null); + } + + /// + /// Link and Unlink company with contacts and deals + /// + /// Thrown when fails to make API call + /// + /// Linked / Unlinked contacts and deals ids. + /// Task of void + public async System.Threading.Tasks.Task CompaniesLinkUnlinkIdPatchAsync (string id, Body2 body) + { + await CompaniesLinkUnlinkIdPatchAsyncWithHttpInfo(id, body); + + } + + /// + /// Link and Unlink company with contacts and deals + /// + /// Thrown when fails to make API call + /// + /// Linked / Unlinked contacts and deals ids. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> CompaniesLinkUnlinkIdPatchAsyncWithHttpInfo (string id, Body2 body) + { + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling CompaniesApi->CompaniesLinkUnlinkIdPatch"); + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling CompaniesApi->CompaniesLinkUnlinkIdPatch"); + + var localVarPath = "./companies/link-unlink/{id}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + if (body != null && body.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter + } + else + { + localVarPostBody = body; // byte array + } + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + Method.PATCH, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CompaniesLinkUnlinkIdPatch", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + null); + } + + /// + /// Create a company + /// + /// Thrown when fails to make API call + /// Company create data. + /// InlineResponse200 + public InlineResponse200 CompaniesPost (Body body) + { + ApiResponse localVarResponse = CompaniesPostWithHttpInfo(body); + return localVarResponse.Data; + } + + /// + /// Create a company + /// + /// Thrown when fails to make API call + /// Company create data. + /// ApiResponse of InlineResponse200 + public ApiResponse< InlineResponse200 > CompaniesPostWithHttpInfo (Body body) + { + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling CompaniesApi->CompaniesPost"); + + var localVarPath = "./companies"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (body != null && body.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter + } + else + { + localVarPostBody = body; // byte array + } + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, + Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CompaniesPost", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (InlineResponse200) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(InlineResponse200))); + } + + /// + /// Create a company + /// + /// Thrown when fails to make API call + /// Company create data. + /// Task of InlineResponse200 + public async System.Threading.Tasks.Task CompaniesPostAsync (Body body) + { + ApiResponse localVarResponse = await CompaniesPostAsyncWithHttpInfo(body); + return localVarResponse.Data; + + } + + /// + /// Create a company + /// + /// Thrown when fails to make API call + /// Company create data. + /// Task of ApiResponse (InlineResponse200) + public async System.Threading.Tasks.Task> CompaniesPostAsyncWithHttpInfo (Body body) + { + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling CompaniesApi->CompaniesPost"); + + var localVarPath = "./companies"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (body != null && body.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter + } + else + { + localVarPostBody = body; // byte array + } + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CompaniesPost", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (InlineResponse200) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(InlineResponse200))); + } + + } +} diff --git a/src/sib_api_v3_sdk/Api/ContactsApi.cs b/src/sib_api_v3_sdk/Api/ContactsApi.cs index 13e5555..f69268f 100644 --- a/src/sib_api_v3_sdk/Api/ContactsApi.cs +++ b/src/sib_api_v3_sdk/Api/ContactsApi.cs @@ -269,8 +269,10 @@ public interface IContactsApi : IApiAccessor /// /// Thrown when fails to make API call /// Email (urlencoded) OR ID of the contact OR its SMS attribute value + /// **Mandatory if endDate is used.** Starting date (YYYY-MM-DD) of the statistic events specific to campaigns. Must be lower than equal to endDate (optional) + /// **Mandatory if startDate is used.** Ending date (YYYY-MM-DD) of the statistic events specific to campaigns. Must be greater than equal to startDate. (optional) /// GetExtendedContactDetails - GetExtendedContactDetails GetContactInfo (string identifier); + GetExtendedContactDetails GetContactInfo (string identifier, Object startDate = null, Object endDate = null); /// /// Get a contact's details @@ -280,8 +282,10 @@ public interface IContactsApi : IApiAccessor /// /// Thrown when fails to make API call /// Email (urlencoded) OR ID of the contact OR its SMS attribute value + /// **Mandatory if endDate is used.** Starting date (YYYY-MM-DD) of the statistic events specific to campaigns. Must be lower than equal to endDate (optional) + /// **Mandatory if startDate is used.** Ending date (YYYY-MM-DD) of the statistic events specific to campaigns. Must be greater than equal to startDate. (optional) /// ApiResponse of GetExtendedContactDetails - ApiResponse GetContactInfoWithHttpInfo (string identifier); + ApiResponse GetContactInfoWithHttpInfo (string identifier, Object startDate = null, Object endDate = null); /// /// Get email campaigns' statistics for a contact /// @@ -909,8 +913,10 @@ public interface IContactsApi : IApiAccessor /// /// Thrown when fails to make API call /// Email (urlencoded) OR ID of the contact OR its SMS attribute value + /// **Mandatory if endDate is used.** Starting date (YYYY-MM-DD) of the statistic events specific to campaigns. Must be lower than equal to endDate (optional) + /// **Mandatory if startDate is used.** Ending date (YYYY-MM-DD) of the statistic events specific to campaigns. Must be greater than equal to startDate. (optional) /// Task of GetExtendedContactDetails - System.Threading.Tasks.Task GetContactInfoAsync (string identifier); + System.Threading.Tasks.Task GetContactInfoAsync (string identifier, Object startDate = null, Object endDate = null); /// /// Get a contact's details @@ -920,8 +926,10 @@ public interface IContactsApi : IApiAccessor /// /// Thrown when fails to make API call /// Email (urlencoded) OR ID of the contact OR its SMS attribute value + /// **Mandatory if endDate is used.** Starting date (YYYY-MM-DD) of the statistic events specific to campaigns. Must be lower than equal to endDate (optional) + /// **Mandatory if startDate is used.** Ending date (YYYY-MM-DD) of the statistic events specific to campaigns. Must be greater than equal to startDate. (optional) /// Task of ApiResponse (GetExtendedContactDetails) - System.Threading.Tasks.Task> GetContactInfoAsyncWithHttpInfo (string identifier); + System.Threading.Tasks.Task> GetContactInfoAsyncWithHttpInfo (string identifier, Object startDate = null, Object endDate = null); /// /// Get email campaigns' statistics for a contact /// @@ -3220,10 +3228,12 @@ public async System.Threading.Tasks.Task> GetAttribut /// /// Thrown when fails to make API call /// Email (urlencoded) OR ID of the contact OR its SMS attribute value + /// **Mandatory if endDate is used.** Starting date (YYYY-MM-DD) of the statistic events specific to campaigns. Must be lower than equal to endDate (optional) + /// **Mandatory if startDate is used.** Ending date (YYYY-MM-DD) of the statistic events specific to campaigns. Must be greater than equal to startDate. (optional) /// GetExtendedContactDetails - public GetExtendedContactDetails GetContactInfo (string identifier) + public GetExtendedContactDetails GetContactInfo (string identifier, Object startDate = null, Object endDate = null) { - ApiResponse localVarResponse = GetContactInfoWithHttpInfo(identifier); + ApiResponse localVarResponse = GetContactInfoWithHttpInfo(identifier, startDate, endDate); return localVarResponse.Data; } @@ -3232,8 +3242,10 @@ public GetExtendedContactDetails GetContactInfo (string identifier) /// /// Thrown when fails to make API call /// Email (urlencoded) OR ID of the contact OR its SMS attribute value + /// **Mandatory if endDate is used.** Starting date (YYYY-MM-DD) of the statistic events specific to campaigns. Must be lower than equal to endDate (optional) + /// **Mandatory if startDate is used.** Ending date (YYYY-MM-DD) of the statistic events specific to campaigns. Must be greater than equal to startDate. (optional) /// ApiResponse of GetExtendedContactDetails - public ApiResponse< GetExtendedContactDetails > GetContactInfoWithHttpInfo (string identifier) + public ApiResponse< GetExtendedContactDetails > GetContactInfoWithHttpInfo (string identifier, Object startDate = null, Object endDate = null) { // verify the required parameter 'identifier' is set if (identifier == null) @@ -3262,6 +3274,8 @@ public ApiResponse< GetExtendedContactDetails > GetContactInfoWithHttpInfo (stri localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); if (identifier != null) localVarPathParams.Add("identifier", this.Configuration.ApiClient.ParameterToString(identifier)); // path parameter + if (startDate != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "startDate", startDate)); // query parameter + if (endDate != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "endDate", endDate)); // query parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -3297,10 +3311,12 @@ public ApiResponse< GetExtendedContactDetails > GetContactInfoWithHttpInfo (stri /// /// Thrown when fails to make API call /// Email (urlencoded) OR ID of the contact OR its SMS attribute value + /// **Mandatory if endDate is used.** Starting date (YYYY-MM-DD) of the statistic events specific to campaigns. Must be lower than equal to endDate (optional) + /// **Mandatory if startDate is used.** Ending date (YYYY-MM-DD) of the statistic events specific to campaigns. Must be greater than equal to startDate. (optional) /// Task of GetExtendedContactDetails - public async System.Threading.Tasks.Task GetContactInfoAsync (string identifier) + public async System.Threading.Tasks.Task GetContactInfoAsync (string identifier, Object startDate = null, Object endDate = null) { - ApiResponse localVarResponse = await GetContactInfoAsyncWithHttpInfo(identifier); + ApiResponse localVarResponse = await GetContactInfoAsyncWithHttpInfo(identifier, startDate, endDate); return localVarResponse.Data; } @@ -3310,8 +3326,10 @@ public async System.Threading.Tasks.Task GetContactIn /// /// Thrown when fails to make API call /// Email (urlencoded) OR ID of the contact OR its SMS attribute value + /// **Mandatory if endDate is used.** Starting date (YYYY-MM-DD) of the statistic events specific to campaigns. Must be lower than equal to endDate (optional) + /// **Mandatory if startDate is used.** Ending date (YYYY-MM-DD) of the statistic events specific to campaigns. Must be greater than equal to startDate. (optional) /// Task of ApiResponse (GetExtendedContactDetails) - public async System.Threading.Tasks.Task> GetContactInfoAsyncWithHttpInfo (string identifier) + public async System.Threading.Tasks.Task> GetContactInfoAsyncWithHttpInfo (string identifier, Object startDate = null, Object endDate = null) { // verify the required parameter 'identifier' is set if (identifier == null) @@ -3340,6 +3358,8 @@ public async System.Threading.Tasks.Task> localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); if (identifier != null) localVarPathParams.Add("identifier", this.Configuration.ApiClient.ParameterToString(identifier)); // path parameter + if (startDate != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "startDate", startDate)); // query parameter + if (endDate != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "endDate", endDate)); // query parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) diff --git a/src/sib_api_v3_sdk/Api/ListsApi.cs b/src/sib_api_v3_sdk/Api/ConversationsApi.cs similarity index 56% rename from src/sib_api_v3_sdk/Api/ListsApi.cs rename to src/sib_api_v3_sdk/Api/ConversationsApi.cs index 70bf766..cc2abef 100644 --- a/src/sib_api_v3_sdk/Api/ListsApi.cs +++ b/src/sib_api_v3_sdk/Api/ConversationsApi.cs @@ -21,452 +21,412 @@ namespace sib_api_v3_sdk.Api /// /// Represents a collection of functions to interact with the API endpoints /// - public interface IListsApi : IApiAccessor + public interface IConversationsApi : IApiAccessor { #region Synchronous Operations /// - /// Add existing contacts to a list + /// Sets agent’s status to online for 2-3 minutes /// /// - /// + /// We recommend pinging this endpoint every minute for as long as the agent has to be considered online. /// /// Thrown when fails to make API call - /// Id of the list - /// Emails addresses OR IDs of the contacts - /// PostContactInfo - PostContactInfo AddContactToList (long? listId, AddContactToList contactEmails); + /// Agent fields. + /// + void ConversationsAgentOnlinePingPost (Body12 body); /// - /// Add existing contacts to a list + /// Sets agent’s status to online for 2-3 minutes /// /// - /// + /// We recommend pinging this endpoint every minute for as long as the agent has to be considered online. /// /// Thrown when fails to make API call - /// Id of the list - /// Emails addresses OR IDs of the contacts - /// ApiResponse of PostContactInfo - ApiResponse AddContactToListWithHttpInfo (long? listId, AddContactToList contactEmails); + /// Agent fields. + /// ApiResponse of Object(void) + ApiResponse ConversationsAgentOnlinePingPostWithHttpInfo (Body12 body); /// - /// Create a list + /// Delete a message sent by an agent /// /// - /// + /// Only agents’ messages can be deleted. /// /// Thrown when fails to make API call - /// Values to create a list - /// CreateModel - CreateModel CreateList (CreateList createList); + /// ID of the message + /// + void ConversationsMessagesIdDelete (string id); /// - /// Create a list + /// Delete a message sent by an agent /// /// - /// + /// Only agents’ messages can be deleted. /// /// Thrown when fails to make API call - /// Values to create a list - /// ApiResponse of CreateModel - ApiResponse CreateListWithHttpInfo (CreateList createList); + /// ID of the message + /// ApiResponse of Object(void) + ApiResponse ConversationsMessagesIdDeleteWithHttpInfo (string id); /// - /// Delete a list + /// Get a message /// /// /// /// /// Thrown when fails to make API call - /// Id of the list - /// - void DeleteList (long? listId); + /// ID of the message + /// ConversationsMessage + ConversationsMessage ConversationsMessagesIdGet (string id); /// - /// Delete a list + /// Get a message /// /// /// /// /// Thrown when fails to make API call - /// Id of the list - /// ApiResponse of Object(void) - ApiResponse DeleteListWithHttpInfo (long? listId); + /// ID of the message + /// ApiResponse of ConversationsMessage + ApiResponse ConversationsMessagesIdGetWithHttpInfo (string id); /// - /// Get contacts in a list + /// Update a message sent by an agent /// /// - /// + /// Only agents’ messages can be edited. /// /// Thrown when fails to make API call - /// Id of the list - /// Filter (urlencoded) the contacts modified after a given UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ). Prefer to pass your timezone in date-time format for accurate result. (optional) - /// Number of documents per page (optional, default to 50) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// GetContacts - GetContacts GetContactsFromList (long? listId, string modifiedSince = null, long? limit = null, long? offset = null, string sort = null); + /// ID of the message + /// (optional) + /// ConversationsMessage + ConversationsMessage ConversationsMessagesIdPut (string id, Body9 body = null); /// - /// Get contacts in a list + /// Update a message sent by an agent /// /// - /// + /// Only agents’ messages can be edited. /// /// Thrown when fails to make API call - /// Id of the list - /// Filter (urlencoded) the contacts modified after a given UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ). Prefer to pass your timezone in date-time format for accurate result. (optional) - /// Number of documents per page (optional, default to 50) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// ApiResponse of GetContacts - ApiResponse GetContactsFromListWithHttpInfo (long? listId, string modifiedSince = null, long? limit = null, long? offset = null, string sort = null); + /// ID of the message + /// (optional) + /// ApiResponse of ConversationsMessage + ApiResponse ConversationsMessagesIdPutWithHttpInfo (string id, Body9 body = null); /// - /// Get lists in a folder + /// Send a message as an agent /// /// /// /// /// Thrown when fails to make API call - /// Id of the folder - /// Number of documents per page (optional, default to 10) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// GetFolderLists - GetFolderLists GetFolderLists (long? folderId, long? limit = null, long? offset = null, string sort = null); + /// Message fields. + /// ConversationsMessage + ConversationsMessage ConversationsMessagesPost (Body8 body); /// - /// Get lists in a folder + /// Send a message as an agent /// /// /// /// /// Thrown when fails to make API call - /// Id of the folder - /// Number of documents per page (optional, default to 10) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// ApiResponse of GetFolderLists - ApiResponse GetFolderListsWithHttpInfo (long? folderId, long? limit = null, long? offset = null, string sort = null); + /// Message fields. + /// ApiResponse of ConversationsMessage + ApiResponse ConversationsMessagesPostWithHttpInfo (Body8 body); /// - /// Get a list's details + /// Delete an automated message /// /// /// /// /// Thrown when fails to make API call - /// Id of the list - /// GetExtendedList - GetExtendedList GetList (long? listId); + /// ID of the message + /// + void ConversationsPushedMessagesIdDelete (string id); /// - /// Get a list's details + /// Delete an automated message /// /// /// /// /// Thrown when fails to make API call - /// Id of the list - /// ApiResponse of GetExtendedList - ApiResponse GetListWithHttpInfo (long? listId); + /// ID of the message + /// ApiResponse of Object(void) + ApiResponse ConversationsPushedMessagesIdDeleteWithHttpInfo (string id); /// - /// Get all the lists + /// Get an automated message /// /// /// /// /// Thrown when fails to make API call - /// Number of documents per page (optional, default to 10) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// GetLists - GetLists GetLists (long? limit = null, long? offset = null, string sort = null); + /// ID of the message sent previously + /// ConversationsMessage + ConversationsMessage ConversationsPushedMessagesIdGet (string id); /// - /// Get all the lists + /// Get an automated message /// /// /// /// /// Thrown when fails to make API call - /// Number of documents per page (optional, default to 10) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// ApiResponse of GetLists - ApiResponse GetListsWithHttpInfo (long? limit = null, long? offset = null, string sort = null); + /// ID of the message sent previously + /// ApiResponse of ConversationsMessage + ApiResponse ConversationsPushedMessagesIdGetWithHttpInfo (string id); /// - /// Delete a contact from a list + /// Update an automated message /// /// /// /// /// Thrown when fails to make API call - /// Id of the list - /// Emails addresses OR IDs of the contacts - /// PostContactInfo - PostContactInfo RemoveContactFromList (long? listId, RemoveContactFromList contactEmails); + /// ID of the message + /// + /// ConversationsMessage + ConversationsMessage ConversationsPushedMessagesIdPut (string id, Body11 body); /// - /// Delete a contact from a list + /// Update an automated message /// /// /// /// /// Thrown when fails to make API call - /// Id of the list - /// Emails addresses OR IDs of the contacts - /// ApiResponse of PostContactInfo - ApiResponse RemoveContactFromListWithHttpInfo (long? listId, RemoveContactFromList contactEmails); + /// ID of the message + /// + /// ApiResponse of ConversationsMessage + ApiResponse ConversationsPushedMessagesIdPutWithHttpInfo (string id, Body11 body); /// - /// Update a list + /// Send an automated message to a visitor /// /// - /// + /// Example of automated messages: order status, announce new features in your web app, etc. /// /// Thrown when fails to make API call - /// Id of the list - /// Values to update a list - /// - void UpdateList (long? listId, UpdateList updateList); + /// + /// ConversationsMessage + ConversationsMessage ConversationsPushedMessagesPost (Body10 body); /// - /// Update a list + /// Send an automated message to a visitor /// /// - /// + /// Example of automated messages: order status, announce new features in your web app, etc. /// /// Thrown when fails to make API call - /// Id of the list - /// Values to update a list - /// ApiResponse of Object(void) - ApiResponse UpdateListWithHttpInfo (long? listId, UpdateList updateList); + /// + /// ApiResponse of ConversationsMessage + ApiResponse ConversationsPushedMessagesPostWithHttpInfo (Body10 body); #endregion Synchronous Operations #region Asynchronous Operations /// - /// Add existing contacts to a list + /// Sets agent’s status to online for 2-3 minutes /// /// - /// + /// We recommend pinging this endpoint every minute for as long as the agent has to be considered online. /// /// Thrown when fails to make API call - /// Id of the list - /// Emails addresses OR IDs of the contacts - /// Task of PostContactInfo - System.Threading.Tasks.Task AddContactToListAsync (long? listId, AddContactToList contactEmails); + /// Agent fields. + /// Task of void + System.Threading.Tasks.Task ConversationsAgentOnlinePingPostAsync (Body12 body); /// - /// Add existing contacts to a list + /// Sets agent’s status to online for 2-3 minutes /// /// - /// + /// We recommend pinging this endpoint every minute for as long as the agent has to be considered online. /// /// Thrown when fails to make API call - /// Id of the list - /// Emails addresses OR IDs of the contacts - /// Task of ApiResponse (PostContactInfo) - System.Threading.Tasks.Task> AddContactToListAsyncWithHttpInfo (long? listId, AddContactToList contactEmails); + /// Agent fields. + /// Task of ApiResponse + System.Threading.Tasks.Task> ConversationsAgentOnlinePingPostAsyncWithHttpInfo (Body12 body); /// - /// Create a list + /// Delete a message sent by an agent /// /// - /// + /// Only agents’ messages can be deleted. /// /// Thrown when fails to make API call - /// Values to create a list - /// Task of CreateModel - System.Threading.Tasks.Task CreateListAsync (CreateList createList); + /// ID of the message + /// Task of void + System.Threading.Tasks.Task ConversationsMessagesIdDeleteAsync (string id); /// - /// Create a list + /// Delete a message sent by an agent /// /// - /// + /// Only agents’ messages can be deleted. /// /// Thrown when fails to make API call - /// Values to create a list - /// Task of ApiResponse (CreateModel) - System.Threading.Tasks.Task> CreateListAsyncWithHttpInfo (CreateList createList); + /// ID of the message + /// Task of ApiResponse + System.Threading.Tasks.Task> ConversationsMessagesIdDeleteAsyncWithHttpInfo (string id); /// - /// Delete a list + /// Get a message /// /// /// /// /// Thrown when fails to make API call - /// Id of the list - /// Task of void - System.Threading.Tasks.Task DeleteListAsync (long? listId); + /// ID of the message + /// Task of ConversationsMessage + System.Threading.Tasks.Task ConversationsMessagesIdGetAsync (string id); /// - /// Delete a list + /// Get a message /// /// /// /// /// Thrown when fails to make API call - /// Id of the list - /// Task of ApiResponse - System.Threading.Tasks.Task> DeleteListAsyncWithHttpInfo (long? listId); + /// ID of the message + /// Task of ApiResponse (ConversationsMessage) + System.Threading.Tasks.Task> ConversationsMessagesIdGetAsyncWithHttpInfo (string id); /// - /// Get contacts in a list + /// Update a message sent by an agent /// /// - /// + /// Only agents’ messages can be edited. /// /// Thrown when fails to make API call - /// Id of the list - /// Filter (urlencoded) the contacts modified after a given UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ). Prefer to pass your timezone in date-time format for accurate result. (optional) - /// Number of documents per page (optional, default to 50) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// Task of GetContacts - System.Threading.Tasks.Task GetContactsFromListAsync (long? listId, string modifiedSince = null, long? limit = null, long? offset = null, string sort = null); + /// ID of the message + /// (optional) + /// Task of ConversationsMessage + System.Threading.Tasks.Task ConversationsMessagesIdPutAsync (string id, Body9 body = null); /// - /// Get contacts in a list + /// Update a message sent by an agent /// /// - /// + /// Only agents’ messages can be edited. /// /// Thrown when fails to make API call - /// Id of the list - /// Filter (urlencoded) the contacts modified after a given UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ). Prefer to pass your timezone in date-time format for accurate result. (optional) - /// Number of documents per page (optional, default to 50) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// Task of ApiResponse (GetContacts) - System.Threading.Tasks.Task> GetContactsFromListAsyncWithHttpInfo (long? listId, string modifiedSince = null, long? limit = null, long? offset = null, string sort = null); + /// ID of the message + /// (optional) + /// Task of ApiResponse (ConversationsMessage) + System.Threading.Tasks.Task> ConversationsMessagesIdPutAsyncWithHttpInfo (string id, Body9 body = null); /// - /// Get lists in a folder + /// Send a message as an agent /// /// /// /// /// Thrown when fails to make API call - /// Id of the folder - /// Number of documents per page (optional, default to 10) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// Task of GetFolderLists - System.Threading.Tasks.Task GetFolderListsAsync (long? folderId, long? limit = null, long? offset = null, string sort = null); + /// Message fields. + /// Task of ConversationsMessage + System.Threading.Tasks.Task ConversationsMessagesPostAsync (Body8 body); /// - /// Get lists in a folder + /// Send a message as an agent /// /// /// /// /// Thrown when fails to make API call - /// Id of the folder - /// Number of documents per page (optional, default to 10) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// Task of ApiResponse (GetFolderLists) - System.Threading.Tasks.Task> GetFolderListsAsyncWithHttpInfo (long? folderId, long? limit = null, long? offset = null, string sort = null); + /// Message fields. + /// Task of ApiResponse (ConversationsMessage) + System.Threading.Tasks.Task> ConversationsMessagesPostAsyncWithHttpInfo (Body8 body); /// - /// Get a list's details + /// Delete an automated message /// /// /// /// /// Thrown when fails to make API call - /// Id of the list - /// Task of GetExtendedList - System.Threading.Tasks.Task GetListAsync (long? listId); + /// ID of the message + /// Task of void + System.Threading.Tasks.Task ConversationsPushedMessagesIdDeleteAsync (string id); /// - /// Get a list's details + /// Delete an automated message /// /// /// /// /// Thrown when fails to make API call - /// Id of the list - /// Task of ApiResponse (GetExtendedList) - System.Threading.Tasks.Task> GetListAsyncWithHttpInfo (long? listId); + /// ID of the message + /// Task of ApiResponse + System.Threading.Tasks.Task> ConversationsPushedMessagesIdDeleteAsyncWithHttpInfo (string id); /// - /// Get all the lists + /// Get an automated message /// /// /// /// /// Thrown when fails to make API call - /// Number of documents per page (optional, default to 10) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// Task of GetLists - System.Threading.Tasks.Task GetListsAsync (long? limit = null, long? offset = null, string sort = null); + /// ID of the message sent previously + /// Task of ConversationsMessage + System.Threading.Tasks.Task ConversationsPushedMessagesIdGetAsync (string id); /// - /// Get all the lists + /// Get an automated message /// /// /// /// /// Thrown when fails to make API call - /// Number of documents per page (optional, default to 10) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// Task of ApiResponse (GetLists) - System.Threading.Tasks.Task> GetListsAsyncWithHttpInfo (long? limit = null, long? offset = null, string sort = null); + /// ID of the message sent previously + /// Task of ApiResponse (ConversationsMessage) + System.Threading.Tasks.Task> ConversationsPushedMessagesIdGetAsyncWithHttpInfo (string id); /// - /// Delete a contact from a list + /// Update an automated message /// /// /// /// /// Thrown when fails to make API call - /// Id of the list - /// Emails addresses OR IDs of the contacts - /// Task of PostContactInfo - System.Threading.Tasks.Task RemoveContactFromListAsync (long? listId, RemoveContactFromList contactEmails); + /// ID of the message + /// + /// Task of ConversationsMessage + System.Threading.Tasks.Task ConversationsPushedMessagesIdPutAsync (string id, Body11 body); /// - /// Delete a contact from a list + /// Update an automated message /// /// /// /// /// Thrown when fails to make API call - /// Id of the list - /// Emails addresses OR IDs of the contacts - /// Task of ApiResponse (PostContactInfo) - System.Threading.Tasks.Task> RemoveContactFromListAsyncWithHttpInfo (long? listId, RemoveContactFromList contactEmails); + /// ID of the message + /// + /// Task of ApiResponse (ConversationsMessage) + System.Threading.Tasks.Task> ConversationsPushedMessagesIdPutAsyncWithHttpInfo (string id, Body11 body); /// - /// Update a list + /// Send an automated message to a visitor /// /// - /// + /// Example of automated messages: order status, announce new features in your web app, etc. /// /// Thrown when fails to make API call - /// Id of the list - /// Values to update a list - /// Task of void - System.Threading.Tasks.Task UpdateListAsync (long? listId, UpdateList updateList); + /// + /// Task of ConversationsMessage + System.Threading.Tasks.Task ConversationsPushedMessagesPostAsync (Body10 body); /// - /// Update a list + /// Send an automated message to a visitor /// /// - /// + /// Example of automated messages: order status, announce new features in your web app, etc. /// /// Thrown when fails to make API call - /// Id of the list - /// Values to update a list - /// Task of ApiResponse - System.Threading.Tasks.Task> UpdateListAsyncWithHttpInfo (long? listId, UpdateList updateList); + /// + /// Task of ApiResponse (ConversationsMessage) + System.Threading.Tasks.Task> ConversationsPushedMessagesPostAsyncWithHttpInfo (Body10 body); #endregion Asynchronous Operations } /// /// Represents a collection of functions to interact with the API endpoints /// - public partial class ListsApi : IListsApi + public partial class ConversationsApi : IConversationsApi { private sib_api_v3_sdk.Client.ExceptionFactory _exceptionFactory = (name, response) => null; /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// /// - public ListsApi(String basePath) + public ConversationsApi(String basePath) { this.Configuration = new sib_api_v3_sdk.Client.Configuration { BasePath = basePath }; @@ -474,12 +434,12 @@ public ListsApi(String basePath) } /// - /// Initializes a new instance of the class + /// Initializes a new instance of the class /// using Configuration object /// /// An instance of Configuration /// - public ListsApi(sib_api_v3_sdk.Client.Configuration configuration = null) + public ConversationsApi(sib_api_v3_sdk.Client.Configuration configuration = null) { if (configuration == null) // use the default one in Configuration this.Configuration = sib_api_v3_sdk.Client.Configuration.Default; @@ -553,35 +513,29 @@ public void AddDefaultHeader(string key, string value) } /// - /// Add existing contacts to a list + /// Sets agent’s status to online for 2-3 minutes We recommend pinging this endpoint every minute for as long as the agent has to be considered online. /// /// Thrown when fails to make API call - /// Id of the list - /// Emails addresses OR IDs of the contacts - /// PostContactInfo - public PostContactInfo AddContactToList (long? listId, AddContactToList contactEmails) + /// Agent fields. + /// + public void ConversationsAgentOnlinePingPost (Body12 body) { - ApiResponse localVarResponse = AddContactToListWithHttpInfo(listId, contactEmails); - return localVarResponse.Data; + ConversationsAgentOnlinePingPostWithHttpInfo(body); } /// - /// Add existing contacts to a list + /// Sets agent’s status to online for 2-3 minutes We recommend pinging this endpoint every minute for as long as the agent has to be considered online. /// /// Thrown when fails to make API call - /// Id of the list - /// Emails addresses OR IDs of the contacts - /// ApiResponse of PostContactInfo - public ApiResponse< PostContactInfo > AddContactToListWithHttpInfo (long? listId, AddContactToList contactEmails) + /// Agent fields. + /// ApiResponse of Object(void) + public ApiResponse ConversationsAgentOnlinePingPostWithHttpInfo (Body12 body) { - // verify the required parameter 'listId' is set - if (listId == null) - throw new ApiException(400, "Missing required parameter 'listId' when calling ListsApi->AddContactToList"); - // verify the required parameter 'contactEmails' is set - if (contactEmails == null) - throw new ApiException(400, "Missing required parameter 'contactEmails' when calling ListsApi->AddContactToList"); - - var localVarPath = "./contacts/lists/{listId}/contacts/add"; + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling ConversationsApi->ConversationsAgentOnlinePingPost"); + + var localVarPath = "./conversations/agentOnlinePing"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -603,14 +557,13 @@ public ApiResponse< PostContactInfo > AddContactToListWithHttpInfo (long? listId if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (listId != null) localVarPathParams.Add("listId", this.Configuration.ApiClient.ParameterToString(listId)); // path parameter - if (contactEmails != null && contactEmails.GetType() != typeof(byte[])) + if (body != null && body.GetType() != typeof(byte[])) { - localVarPostBody = this.Configuration.ApiClient.Serialize(contactEmails); // http body (model) parameter + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter } else { - localVarPostBody = contactEmails; // byte array + localVarPostBody = body; // byte array } // authentication (api-key) required @@ -633,46 +586,40 @@ public ApiResponse< PostContactInfo > AddContactToListWithHttpInfo (long? listId if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("AddContactToList", localVarResponse); + Exception exception = ExceptionFactory("ConversationsAgentOnlinePingPost", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (PostContactInfo) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(PostContactInfo))); + null); } /// - /// Add existing contacts to a list + /// Sets agent’s status to online for 2-3 minutes We recommend pinging this endpoint every minute for as long as the agent has to be considered online. /// /// Thrown when fails to make API call - /// Id of the list - /// Emails addresses OR IDs of the contacts - /// Task of PostContactInfo - public async System.Threading.Tasks.Task AddContactToListAsync (long? listId, AddContactToList contactEmails) + /// Agent fields. + /// Task of void + public async System.Threading.Tasks.Task ConversationsAgentOnlinePingPostAsync (Body12 body) { - ApiResponse localVarResponse = await AddContactToListAsyncWithHttpInfo(listId, contactEmails); - return localVarResponse.Data; + await ConversationsAgentOnlinePingPostAsyncWithHttpInfo(body); } /// - /// Add existing contacts to a list + /// Sets agent’s status to online for 2-3 minutes We recommend pinging this endpoint every minute for as long as the agent has to be considered online. /// /// Thrown when fails to make API call - /// Id of the list - /// Emails addresses OR IDs of the contacts - /// Task of ApiResponse (PostContactInfo) - public async System.Threading.Tasks.Task> AddContactToListAsyncWithHttpInfo (long? listId, AddContactToList contactEmails) + /// Agent fields. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> ConversationsAgentOnlinePingPostAsyncWithHttpInfo (Body12 body) { - // verify the required parameter 'listId' is set - if (listId == null) - throw new ApiException(400, "Missing required parameter 'listId' when calling ListsApi->AddContactToList"); - // verify the required parameter 'contactEmails' is set - if (contactEmails == null) - throw new ApiException(400, "Missing required parameter 'contactEmails' when calling ListsApi->AddContactToList"); - - var localVarPath = "./contacts/lists/{listId}/contacts/add"; + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling ConversationsApi->ConversationsAgentOnlinePingPost"); + + var localVarPath = "./conversations/agentOnlinePing"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -694,14 +641,13 @@ public async System.Threading.Tasks.Task> AddContac if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (listId != null) localVarPathParams.Add("listId", this.Configuration.ApiClient.ParameterToString(listId)); // path parameter - if (contactEmails != null && contactEmails.GetType() != typeof(byte[])) + if (body != null && body.GetType() != typeof(byte[])) { - localVarPostBody = this.Configuration.ApiClient.Serialize(contactEmails); // http body (model) parameter + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter } else { - localVarPostBody = contactEmails; // byte array + localVarPostBody = body; // byte array } // authentication (api-key) required @@ -724,40 +670,39 @@ public async System.Threading.Tasks.Task> AddContac if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("AddContactToList", localVarResponse); + Exception exception = ExceptionFactory("ConversationsAgentOnlinePingPost", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (PostContactInfo) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(PostContactInfo))); + null); } /// - /// Create a list + /// Delete a message sent by an agent Only agents’ messages can be deleted. /// /// Thrown when fails to make API call - /// Values to create a list - /// CreateModel - public CreateModel CreateList (CreateList createList) + /// ID of the message + /// + public void ConversationsMessagesIdDelete (string id) { - ApiResponse localVarResponse = CreateListWithHttpInfo(createList); - return localVarResponse.Data; + ConversationsMessagesIdDeleteWithHttpInfo(id); } /// - /// Create a list + /// Delete a message sent by an agent Only agents’ messages can be deleted. /// /// Thrown when fails to make API call - /// Values to create a list - /// ApiResponse of CreateModel - public ApiResponse< CreateModel > CreateListWithHttpInfo (CreateList createList) + /// ID of the message + /// ApiResponse of Object(void) + public ApiResponse ConversationsMessagesIdDeleteWithHttpInfo (string id) { - // verify the required parameter 'createList' is set - if (createList == null) - throw new ApiException(400, "Missing required parameter 'createList' when calling ListsApi->CreateList"); + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling ConversationsApi->ConversationsMessagesIdDelete"); - var localVarPath = "./contacts/lists"; + var localVarPath = "./conversations/messages/{id}"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -779,14 +724,7 @@ public ApiResponse< CreateModel > CreateListWithHttpInfo (CreateList createList) if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (createList != null && createList.GetType() != typeof(byte[])) - { - localVarPostBody = this.Configuration.ApiClient.Serialize(createList); // http body (model) parameter - } - else - { - localVarPostBody = createList; // byte array - } + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -801,48 +739,47 @@ public ApiResponse< CreateModel > CreateListWithHttpInfo (CreateList createList) // make the HTTP request IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, - Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.DELETE, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("CreateList", localVarResponse); + Exception exception = ExceptionFactory("ConversationsMessagesIdDelete", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (CreateModel) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(CreateModel))); + null); } /// - /// Create a list + /// Delete a message sent by an agent Only agents’ messages can be deleted. /// /// Thrown when fails to make API call - /// Values to create a list - /// Task of CreateModel - public async System.Threading.Tasks.Task CreateListAsync (CreateList createList) + /// ID of the message + /// Task of void + public async System.Threading.Tasks.Task ConversationsMessagesIdDeleteAsync (string id) { - ApiResponse localVarResponse = await CreateListAsyncWithHttpInfo(createList); - return localVarResponse.Data; + await ConversationsMessagesIdDeleteAsyncWithHttpInfo(id); } /// - /// Create a list + /// Delete a message sent by an agent Only agents’ messages can be deleted. /// /// Thrown when fails to make API call - /// Values to create a list - /// Task of ApiResponse (CreateModel) - public async System.Threading.Tasks.Task> CreateListAsyncWithHttpInfo (CreateList createList) + /// ID of the message + /// Task of ApiResponse + public async System.Threading.Tasks.Task> ConversationsMessagesIdDeleteAsyncWithHttpInfo (string id) { - // verify the required parameter 'createList' is set - if (createList == null) - throw new ApiException(400, "Missing required parameter 'createList' when calling ListsApi->CreateList"); + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling ConversationsApi->ConversationsMessagesIdDelete"); - var localVarPath = "./contacts/lists"; + var localVarPath = "./conversations/messages/{id}"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -864,14 +801,7 @@ public async System.Threading.Tasks.Task> CreateListAsy if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (createList != null && createList.GetType() != typeof(byte[])) - { - localVarPostBody = this.Configuration.ApiClient.Serialize(createList); // http body (model) parameter - } - else - { - localVarPostBody = createList; // byte array - } + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -886,46 +816,47 @@ public async System.Threading.Tasks.Task> CreateListAsy // make the HTTP request IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, - Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.DELETE, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("CreateList", localVarResponse); + Exception exception = ExceptionFactory("ConversationsMessagesIdDelete", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (CreateModel) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(CreateModel))); + null); } /// - /// Delete a list + /// Get a message /// /// Thrown when fails to make API call - /// Id of the list - /// - public void DeleteList (long? listId) + /// ID of the message + /// ConversationsMessage + public ConversationsMessage ConversationsMessagesIdGet (string id) { - DeleteListWithHttpInfo(listId); + ApiResponse localVarResponse = ConversationsMessagesIdGetWithHttpInfo(id); + return localVarResponse.Data; } /// - /// Delete a list + /// Get a message /// /// Thrown when fails to make API call - /// Id of the list - /// ApiResponse of Object(void) - public ApiResponse DeleteListWithHttpInfo (long? listId) + /// ID of the message + /// ApiResponse of ConversationsMessage + public ApiResponse< ConversationsMessage > ConversationsMessagesIdGetWithHttpInfo (string id) { - // verify the required parameter 'listId' is set - if (listId == null) - throw new ApiException(400, "Missing required parameter 'listId' when calling ListsApi->DeleteList"); + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling ConversationsApi->ConversationsMessagesIdGet"); - var localVarPath = "./contacts/lists/{listId}"; + var localVarPath = "./conversations/messages/{id}"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -947,7 +878,7 @@ public ApiResponse DeleteListWithHttpInfo (long? listId) if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (listId != null) localVarPathParams.Add("listId", this.Configuration.ApiClient.ParameterToString(listId)); // path parameter + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -962,47 +893,48 @@ public ApiResponse DeleteListWithHttpInfo (long? listId) // make the HTTP request IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, - Method.DELETE, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("DeleteList", localVarResponse); + Exception exception = ExceptionFactory("ConversationsMessagesIdGet", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - null); + (ConversationsMessage) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(ConversationsMessage))); } /// - /// Delete a list + /// Get a message /// /// Thrown when fails to make API call - /// Id of the list - /// Task of void - public async System.Threading.Tasks.Task DeleteListAsync (long? listId) + /// ID of the message + /// Task of ConversationsMessage + public async System.Threading.Tasks.Task ConversationsMessagesIdGetAsync (string id) { - await DeleteListAsyncWithHttpInfo(listId); + ApiResponse localVarResponse = await ConversationsMessagesIdGetAsyncWithHttpInfo(id); + return localVarResponse.Data; } /// - /// Delete a list + /// Get a message /// /// Thrown when fails to make API call - /// Id of the list - /// Task of ApiResponse - public async System.Threading.Tasks.Task> DeleteListAsyncWithHttpInfo (long? listId) + /// ID of the message + /// Task of ApiResponse (ConversationsMessage) + public async System.Threading.Tasks.Task> ConversationsMessagesIdGetAsyncWithHttpInfo (string id) { - // verify the required parameter 'listId' is set - if (listId == null) - throw new ApiException(400, "Missing required parameter 'listId' when calling ListsApi->DeleteList"); + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling ConversationsApi->ConversationsMessagesIdGet"); - var localVarPath = "./contacts/lists/{listId}"; + var localVarPath = "./conversations/messages/{id}"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -1024,7 +956,7 @@ public async System.Threading.Tasks.Task> DeleteListAsyncWit if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (listId != null) localVarPathParams.Add("listId", this.Configuration.ApiClient.ParameterToString(listId)); // path parameter + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -1039,55 +971,49 @@ public async System.Threading.Tasks.Task> DeleteListAsyncWit // make the HTTP request IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, - Method.DELETE, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("DeleteList", localVarResponse); + Exception exception = ExceptionFactory("ConversationsMessagesIdGet", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - null); + (ConversationsMessage) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(ConversationsMessage))); } /// - /// Get contacts in a list + /// Update a message sent by an agent Only agents’ messages can be edited. /// /// Thrown when fails to make API call - /// Id of the list - /// Filter (urlencoded) the contacts modified after a given UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ). Prefer to pass your timezone in date-time format for accurate result. (optional) - /// Number of documents per page (optional, default to 50) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// GetContacts - public GetContacts GetContactsFromList (long? listId, string modifiedSince = null, long? limit = null, long? offset = null, string sort = null) + /// ID of the message + /// (optional) + /// ConversationsMessage + public ConversationsMessage ConversationsMessagesIdPut (string id, Body9 body = null) { - ApiResponse localVarResponse = GetContactsFromListWithHttpInfo(listId, modifiedSince, limit, offset, sort); + ApiResponse localVarResponse = ConversationsMessagesIdPutWithHttpInfo(id, body); return localVarResponse.Data; } /// - /// Get contacts in a list + /// Update a message sent by an agent Only agents’ messages can be edited. /// /// Thrown when fails to make API call - /// Id of the list - /// Filter (urlencoded) the contacts modified after a given UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ). Prefer to pass your timezone in date-time format for accurate result. (optional) - /// Number of documents per page (optional, default to 50) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// ApiResponse of GetContacts - public ApiResponse< GetContacts > GetContactsFromListWithHttpInfo (long? listId, string modifiedSince = null, long? limit = null, long? offset = null, string sort = null) + /// ID of the message + /// (optional) + /// ApiResponse of ConversationsMessage + public ApiResponse< ConversationsMessage > ConversationsMessagesIdPutWithHttpInfo (string id, Body9 body = null) { - // verify the required parameter 'listId' is set - if (listId == null) - throw new ApiException(400, "Missing required parameter 'listId' when calling ListsApi->GetContactsFromList"); + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling ConversationsApi->ConversationsMessagesIdPut"); - var localVarPath = "./contacts/lists/{listId}/contacts"; + var localVarPath = "./conversations/messages/{id}"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -1109,11 +1035,15 @@ public ApiResponse< GetContacts > GetContactsFromListWithHttpInfo (long? listId, if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (listId != null) localVarPathParams.Add("listId", this.Configuration.ApiClient.ParameterToString(listId)); // path parameter - if (modifiedSince != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "modifiedSince", modifiedSince)); // query parameter - if (limit != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "limit", limit)); // query parameter - if (offset != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "offset", offset)); // query parameter - if (sort != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sort", sort)); // query parameter + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + if (body != null && body.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter + } + else + { + localVarPostBody = body; // byte array + } // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -1128,56 +1058,50 @@ public ApiResponse< GetContacts > GetContactsFromListWithHttpInfo (long? listId, // make the HTTP request IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, - Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.PUT, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("GetContactsFromList", localVarResponse); + Exception exception = ExceptionFactory("ConversationsMessagesIdPut", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (GetContacts) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetContacts))); + (ConversationsMessage) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(ConversationsMessage))); } /// - /// Get contacts in a list + /// Update a message sent by an agent Only agents’ messages can be edited. /// /// Thrown when fails to make API call - /// Id of the list - /// Filter (urlencoded) the contacts modified after a given UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ). Prefer to pass your timezone in date-time format for accurate result. (optional) - /// Number of documents per page (optional, default to 50) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// Task of GetContacts - public async System.Threading.Tasks.Task GetContactsFromListAsync (long? listId, string modifiedSince = null, long? limit = null, long? offset = null, string sort = null) + /// ID of the message + /// (optional) + /// Task of ConversationsMessage + public async System.Threading.Tasks.Task ConversationsMessagesIdPutAsync (string id, Body9 body = null) { - ApiResponse localVarResponse = await GetContactsFromListAsyncWithHttpInfo(listId, modifiedSince, limit, offset, sort); + ApiResponse localVarResponse = await ConversationsMessagesIdPutAsyncWithHttpInfo(id, body); return localVarResponse.Data; } /// - /// Get contacts in a list + /// Update a message sent by an agent Only agents’ messages can be edited. /// /// Thrown when fails to make API call - /// Id of the list - /// Filter (urlencoded) the contacts modified after a given UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ). Prefer to pass your timezone in date-time format for accurate result. (optional) - /// Number of documents per page (optional, default to 50) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// Task of ApiResponse (GetContacts) - public async System.Threading.Tasks.Task> GetContactsFromListAsyncWithHttpInfo (long? listId, string modifiedSince = null, long? limit = null, long? offset = null, string sort = null) + /// ID of the message + /// (optional) + /// Task of ApiResponse (ConversationsMessage) + public async System.Threading.Tasks.Task> ConversationsMessagesIdPutAsyncWithHttpInfo (string id, Body9 body = null) { - // verify the required parameter 'listId' is set - if (listId == null) - throw new ApiException(400, "Missing required parameter 'listId' when calling ListsApi->GetContactsFromList"); + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling ConversationsApi->ConversationsMessagesIdPut"); - var localVarPath = "./contacts/lists/{listId}/contacts"; + var localVarPath = "./conversations/messages/{id}"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -1199,11 +1123,15 @@ public async System.Threading.Tasks.Task> GetContactsFr if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (listId != null) localVarPathParams.Add("listId", this.Configuration.ApiClient.ParameterToString(listId)); // path parameter - if (modifiedSince != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "modifiedSince", modifiedSince)); // query parameter - if (limit != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "limit", limit)); // query parameter - if (offset != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "offset", offset)); // query parameter - if (sort != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sort", sort)); // query parameter + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + if (body != null && body.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter + } + else + { + localVarPostBody = body; // byte array + } // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -1218,53 +1146,47 @@ public async System.Threading.Tasks.Task> GetContactsFr // make the HTTP request IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, - Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.PUT, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("GetContactsFromList", localVarResponse); + Exception exception = ExceptionFactory("ConversationsMessagesIdPut", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (GetContacts) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetContacts))); + (ConversationsMessage) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(ConversationsMessage))); } /// - /// Get lists in a folder + /// Send a message as an agent /// /// Thrown when fails to make API call - /// Id of the folder - /// Number of documents per page (optional, default to 10) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// GetFolderLists - public GetFolderLists GetFolderLists (long? folderId, long? limit = null, long? offset = null, string sort = null) + /// Message fields. + /// ConversationsMessage + public ConversationsMessage ConversationsMessagesPost (Body8 body) { - ApiResponse localVarResponse = GetFolderListsWithHttpInfo(folderId, limit, offset, sort); + ApiResponse localVarResponse = ConversationsMessagesPostWithHttpInfo(body); return localVarResponse.Data; } /// - /// Get lists in a folder + /// Send a message as an agent /// /// Thrown when fails to make API call - /// Id of the folder - /// Number of documents per page (optional, default to 10) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// ApiResponse of GetFolderLists - public ApiResponse< GetFolderLists > GetFolderListsWithHttpInfo (long? folderId, long? limit = null, long? offset = null, string sort = null) + /// Message fields. + /// ApiResponse of ConversationsMessage + public ApiResponse< ConversationsMessage > ConversationsMessagesPostWithHttpInfo (Body8 body) { - // verify the required parameter 'folderId' is set - if (folderId == null) - throw new ApiException(400, "Missing required parameter 'folderId' when calling ListsApi->GetFolderLists"); + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling ConversationsApi->ConversationsMessagesPost"); - var localVarPath = "./contacts/folders/{folderId}/lists"; + var localVarPath = "./conversations/messages"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -1286,10 +1208,14 @@ public ApiResponse< GetFolderLists > GetFolderListsWithHttpInfo (long? folderId, if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (folderId != null) localVarPathParams.Add("folderId", this.Configuration.ApiClient.ParameterToString(folderId)); // path parameter - if (limit != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "limit", limit)); // query parameter - if (offset != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "offset", offset)); // query parameter - if (sort != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sort", sort)); // query parameter + if (body != null && body.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter + } + else + { + localVarPostBody = body; // byte array + } // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -1304,54 +1230,48 @@ public ApiResponse< GetFolderLists > GetFolderListsWithHttpInfo (long? folderId, // make the HTTP request IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, - Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("GetFolderLists", localVarResponse); + Exception exception = ExceptionFactory("ConversationsMessagesPost", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (GetFolderLists) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetFolderLists))); + (ConversationsMessage) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(ConversationsMessage))); } /// - /// Get lists in a folder + /// Send a message as an agent /// /// Thrown when fails to make API call - /// Id of the folder - /// Number of documents per page (optional, default to 10) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// Task of GetFolderLists - public async System.Threading.Tasks.Task GetFolderListsAsync (long? folderId, long? limit = null, long? offset = null, string sort = null) + /// Message fields. + /// Task of ConversationsMessage + public async System.Threading.Tasks.Task ConversationsMessagesPostAsync (Body8 body) { - ApiResponse localVarResponse = await GetFolderListsAsyncWithHttpInfo(folderId, limit, offset, sort); + ApiResponse localVarResponse = await ConversationsMessagesPostAsyncWithHttpInfo(body); return localVarResponse.Data; } /// - /// Get lists in a folder + /// Send a message as an agent /// /// Thrown when fails to make API call - /// Id of the folder - /// Number of documents per page (optional, default to 10) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// Task of ApiResponse (GetFolderLists) - public async System.Threading.Tasks.Task> GetFolderListsAsyncWithHttpInfo (long? folderId, long? limit = null, long? offset = null, string sort = null) + /// Message fields. + /// Task of ApiResponse (ConversationsMessage) + public async System.Threading.Tasks.Task> ConversationsMessagesPostAsyncWithHttpInfo (Body8 body) { - // verify the required parameter 'folderId' is set - if (folderId == null) - throw new ApiException(400, "Missing required parameter 'folderId' when calling ListsApi->GetFolderLists"); + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling ConversationsApi->ConversationsMessagesPost"); - var localVarPath = "./contacts/folders/{folderId}/lists"; + var localVarPath = "./conversations/messages"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -1373,10 +1293,14 @@ public async System.Threading.Tasks.Task> GetFolderL if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (folderId != null) localVarPathParams.Add("folderId", this.Configuration.ApiClient.ParameterToString(folderId)); // path parameter - if (limit != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "limit", limit)); // query parameter - if (offset != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "offset", offset)); // query parameter - if (sort != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sort", sort)); // query parameter + if (body != null && body.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter + } + else + { + localVarPostBody = body; // byte array + } // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -1391,47 +1315,46 @@ public async System.Threading.Tasks.Task> GetFolderL // make the HTTP request IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, - Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("GetFolderLists", localVarResponse); + Exception exception = ExceptionFactory("ConversationsMessagesPost", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (GetFolderLists) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetFolderLists))); + (ConversationsMessage) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(ConversationsMessage))); } /// - /// Get a list's details + /// Delete an automated message /// /// Thrown when fails to make API call - /// Id of the list - /// GetExtendedList - public GetExtendedList GetList (long? listId) + /// ID of the message + /// + public void ConversationsPushedMessagesIdDelete (string id) { - ApiResponse localVarResponse = GetListWithHttpInfo(listId); - return localVarResponse.Data; + ConversationsPushedMessagesIdDeleteWithHttpInfo(id); } /// - /// Get a list's details + /// Delete an automated message /// /// Thrown when fails to make API call - /// Id of the list - /// ApiResponse of GetExtendedList - public ApiResponse< GetExtendedList > GetListWithHttpInfo (long? listId) + /// ID of the message + /// ApiResponse of Object(void) + public ApiResponse ConversationsPushedMessagesIdDeleteWithHttpInfo (string id) { - // verify the required parameter 'listId' is set - if (listId == null) - throw new ApiException(400, "Missing required parameter 'listId' when calling ListsApi->GetList"); + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling ConversationsApi->ConversationsPushedMessagesIdDelete"); - var localVarPath = "./contacts/lists/{listId}"; + var localVarPath = "./conversations/pushedMessages/{id}"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -1453,7 +1376,7 @@ public ApiResponse< GetExtendedList > GetListWithHttpInfo (long? listId) if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (listId != null) localVarPathParams.Add("listId", this.Configuration.ApiClient.ParameterToString(listId)); // path parameter + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -1468,48 +1391,47 @@ public ApiResponse< GetExtendedList > GetListWithHttpInfo (long? listId) // make the HTTP request IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, - Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.DELETE, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("GetList", localVarResponse); + Exception exception = ExceptionFactory("ConversationsPushedMessagesIdDelete", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (GetExtendedList) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetExtendedList))); + null); } /// - /// Get a list's details + /// Delete an automated message /// /// Thrown when fails to make API call - /// Id of the list - /// Task of GetExtendedList - public async System.Threading.Tasks.Task GetListAsync (long? listId) + /// ID of the message + /// Task of void + public async System.Threading.Tasks.Task ConversationsPushedMessagesIdDeleteAsync (string id) { - ApiResponse localVarResponse = await GetListAsyncWithHttpInfo(listId); - return localVarResponse.Data; + await ConversationsPushedMessagesIdDeleteAsyncWithHttpInfo(id); } /// - /// Get a list's details + /// Delete an automated message /// /// Thrown when fails to make API call - /// Id of the list - /// Task of ApiResponse (GetExtendedList) - public async System.Threading.Tasks.Task> GetListAsyncWithHttpInfo (long? listId) + /// ID of the message + /// Task of ApiResponse + public async System.Threading.Tasks.Task> ConversationsPushedMessagesIdDeleteAsyncWithHttpInfo (string id) { - // verify the required parameter 'listId' is set - if (listId == null) - throw new ApiException(400, "Missing required parameter 'listId' when calling ListsApi->GetList"); + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling ConversationsApi->ConversationsPushedMessagesIdDelete"); - var localVarPath = "./contacts/lists/{listId}"; + var localVarPath = "./conversations/pushedMessages/{id}"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -1531,7 +1453,7 @@ public async System.Threading.Tasks.Task> GetListAs if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (listId != null) localVarPathParams.Add("listId", this.Configuration.ApiClient.ParameterToString(listId)); // path parameter + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -1546,48 +1468,47 @@ public async System.Threading.Tasks.Task> GetListAs // make the HTTP request IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, - Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.DELETE, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("GetList", localVarResponse); + Exception exception = ExceptionFactory("ConversationsPushedMessagesIdDelete", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (GetExtendedList) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetExtendedList))); + null); } /// - /// Get all the lists + /// Get an automated message /// /// Thrown when fails to make API call - /// Number of documents per page (optional, default to 10) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// GetLists - public GetLists GetLists (long? limit = null, long? offset = null, string sort = null) + /// ID of the message sent previously + /// ConversationsMessage + public ConversationsMessage ConversationsPushedMessagesIdGet (string id) { - ApiResponse localVarResponse = GetListsWithHttpInfo(limit, offset, sort); + ApiResponse localVarResponse = ConversationsPushedMessagesIdGetWithHttpInfo(id); return localVarResponse.Data; } /// - /// Get all the lists + /// Get an automated message /// /// Thrown when fails to make API call - /// Number of documents per page (optional, default to 10) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// ApiResponse of GetLists - public ApiResponse< GetLists > GetListsWithHttpInfo (long? limit = null, long? offset = null, string sort = null) + /// ID of the message sent previously + /// ApiResponse of ConversationsMessage + public ApiResponse< ConversationsMessage > ConversationsPushedMessagesIdGetWithHttpInfo (string id) { + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling ConversationsApi->ConversationsPushedMessagesIdGet"); - var localVarPath = "./contacts/lists"; + var localVarPath = "./conversations/pushedMessages/{id}"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -1609,9 +1530,7 @@ public ApiResponse< GetLists > GetListsWithHttpInfo (long? limit = null, long? o if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (limit != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "limit", limit)); // query parameter - if (offset != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "offset", offset)); // query parameter - if (sort != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sort", sort)); // query parameter + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -1633,42 +1552,41 @@ public ApiResponse< GetLists > GetListsWithHttpInfo (long? limit = null, long? o if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("GetLists", localVarResponse); + Exception exception = ExceptionFactory("ConversationsPushedMessagesIdGet", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (GetLists) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetLists))); + (ConversationsMessage) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(ConversationsMessage))); } /// - /// Get all the lists + /// Get an automated message /// /// Thrown when fails to make API call - /// Number of documents per page (optional, default to 10) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// Task of GetLists - public async System.Threading.Tasks.Task GetListsAsync (long? limit = null, long? offset = null, string sort = null) + /// ID of the message sent previously + /// Task of ConversationsMessage + public async System.Threading.Tasks.Task ConversationsPushedMessagesIdGetAsync (string id) { - ApiResponse localVarResponse = await GetListsAsyncWithHttpInfo(limit, offset, sort); + ApiResponse localVarResponse = await ConversationsPushedMessagesIdGetAsyncWithHttpInfo(id); return localVarResponse.Data; } /// - /// Get all the lists + /// Get an automated message /// /// Thrown when fails to make API call - /// Number of documents per page (optional, default to 10) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// Task of ApiResponse (GetLists) - public async System.Threading.Tasks.Task> GetListsAsyncWithHttpInfo (long? limit = null, long? offset = null, string sort = null) + /// ID of the message sent previously + /// Task of ApiResponse (ConversationsMessage) + public async System.Threading.Tasks.Task> ConversationsPushedMessagesIdGetAsyncWithHttpInfo (string id) { + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling ConversationsApi->ConversationsPushedMessagesIdGet"); - var localVarPath = "./contacts/lists"; + var localVarPath = "./conversations/pushedMessages/{id}"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -1690,9 +1608,7 @@ public async System.Threading.Tasks.Task> GetListsAsyncWit if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (limit != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "limit", limit)); // query parameter - if (offset != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "offset", offset)); // query parameter - if (sort != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sort", sort)); // query parameter + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -1714,45 +1630,45 @@ public async System.Threading.Tasks.Task> GetListsAsyncWit if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("GetLists", localVarResponse); + Exception exception = ExceptionFactory("ConversationsPushedMessagesIdGet", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (GetLists) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetLists))); + (ConversationsMessage) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(ConversationsMessage))); } /// - /// Delete a contact from a list + /// Update an automated message /// /// Thrown when fails to make API call - /// Id of the list - /// Emails addresses OR IDs of the contacts - /// PostContactInfo - public PostContactInfo RemoveContactFromList (long? listId, RemoveContactFromList contactEmails) + /// ID of the message + /// + /// ConversationsMessage + public ConversationsMessage ConversationsPushedMessagesIdPut (string id, Body11 body) { - ApiResponse localVarResponse = RemoveContactFromListWithHttpInfo(listId, contactEmails); + ApiResponse localVarResponse = ConversationsPushedMessagesIdPutWithHttpInfo(id, body); return localVarResponse.Data; } /// - /// Delete a contact from a list + /// Update an automated message /// /// Thrown when fails to make API call - /// Id of the list - /// Emails addresses OR IDs of the contacts - /// ApiResponse of PostContactInfo - public ApiResponse< PostContactInfo > RemoveContactFromListWithHttpInfo (long? listId, RemoveContactFromList contactEmails) + /// ID of the message + /// + /// ApiResponse of ConversationsMessage + public ApiResponse< ConversationsMessage > ConversationsPushedMessagesIdPutWithHttpInfo (string id, Body11 body) { - // verify the required parameter 'listId' is set - if (listId == null) - throw new ApiException(400, "Missing required parameter 'listId' when calling ListsApi->RemoveContactFromList"); - // verify the required parameter 'contactEmails' is set - if (contactEmails == null) - throw new ApiException(400, "Missing required parameter 'contactEmails' when calling ListsApi->RemoveContactFromList"); - - var localVarPath = "./contacts/lists/{listId}/contacts/remove"; + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling ConversationsApi->ConversationsPushedMessagesIdPut"); + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling ConversationsApi->ConversationsPushedMessagesIdPut"); + + var localVarPath = "./conversations/pushedMessages/{id}"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -1774,14 +1690,14 @@ public ApiResponse< PostContactInfo > RemoveContactFromListWithHttpInfo (long? l if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (listId != null) localVarPathParams.Add("listId", this.Configuration.ApiClient.ParameterToString(listId)); // path parameter - if (contactEmails != null && contactEmails.GetType() != typeof(byte[])) + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + if (body != null && body.GetType() != typeof(byte[])) { - localVarPostBody = this.Configuration.ApiClient.Serialize(contactEmails); // http body (model) parameter + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter } else { - localVarPostBody = contactEmails; // byte array + localVarPostBody = body; // byte array } // authentication (api-key) required @@ -1797,53 +1713,53 @@ public ApiResponse< PostContactInfo > RemoveContactFromListWithHttpInfo (long? l // make the HTTP request IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, - Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.PUT, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("RemoveContactFromList", localVarResponse); + Exception exception = ExceptionFactory("ConversationsPushedMessagesIdPut", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (PostContactInfo) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(PostContactInfo))); + (ConversationsMessage) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(ConversationsMessage))); } /// - /// Delete a contact from a list + /// Update an automated message /// /// Thrown when fails to make API call - /// Id of the list - /// Emails addresses OR IDs of the contacts - /// Task of PostContactInfo - public async System.Threading.Tasks.Task RemoveContactFromListAsync (long? listId, RemoveContactFromList contactEmails) + /// ID of the message + /// + /// Task of ConversationsMessage + public async System.Threading.Tasks.Task ConversationsPushedMessagesIdPutAsync (string id, Body11 body) { - ApiResponse localVarResponse = await RemoveContactFromListAsyncWithHttpInfo(listId, contactEmails); + ApiResponse localVarResponse = await ConversationsPushedMessagesIdPutAsyncWithHttpInfo(id, body); return localVarResponse.Data; } /// - /// Delete a contact from a list + /// Update an automated message /// /// Thrown when fails to make API call - /// Id of the list - /// Emails addresses OR IDs of the contacts - /// Task of ApiResponse (PostContactInfo) - public async System.Threading.Tasks.Task> RemoveContactFromListAsyncWithHttpInfo (long? listId, RemoveContactFromList contactEmails) + /// ID of the message + /// + /// Task of ApiResponse (ConversationsMessage) + public async System.Threading.Tasks.Task> ConversationsPushedMessagesIdPutAsyncWithHttpInfo (string id, Body11 body) { - // verify the required parameter 'listId' is set - if (listId == null) - throw new ApiException(400, "Missing required parameter 'listId' when calling ListsApi->RemoveContactFromList"); - // verify the required parameter 'contactEmails' is set - if (contactEmails == null) - throw new ApiException(400, "Missing required parameter 'contactEmails' when calling ListsApi->RemoveContactFromList"); - - var localVarPath = "./contacts/lists/{listId}/contacts/remove"; + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling ConversationsApi->ConversationsPushedMessagesIdPut"); + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling ConversationsApi->ConversationsPushedMessagesIdPut"); + + var localVarPath = "./conversations/pushedMessages/{id}"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -1865,14 +1781,14 @@ public async System.Threading.Tasks.Task> RemoveCon if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (listId != null) localVarPathParams.Add("listId", this.Configuration.ApiClient.ParameterToString(listId)); // path parameter - if (contactEmails != null && contactEmails.GetType() != typeof(byte[])) + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + if (body != null && body.GetType() != typeof(byte[])) { - localVarPostBody = this.Configuration.ApiClient.Serialize(contactEmails); // http body (model) parameter + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter } else { - localVarPostBody = contactEmails; // byte array + localVarPostBody = body; // byte array } // authentication (api-key) required @@ -1888,51 +1804,47 @@ public async System.Threading.Tasks.Task> RemoveCon // make the HTTP request IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, - Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.PUT, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("RemoveContactFromList", localVarResponse); + Exception exception = ExceptionFactory("ConversationsPushedMessagesIdPut", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (PostContactInfo) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(PostContactInfo))); + (ConversationsMessage) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(ConversationsMessage))); } /// - /// Update a list + /// Send an automated message to a visitor Example of automated messages: order status, announce new features in your web app, etc. /// /// Thrown when fails to make API call - /// Id of the list - /// Values to update a list - /// - public void UpdateList (long? listId, UpdateList updateList) + /// + /// ConversationsMessage + public ConversationsMessage ConversationsPushedMessagesPost (Body10 body) { - UpdateListWithHttpInfo(listId, updateList); + ApiResponse localVarResponse = ConversationsPushedMessagesPostWithHttpInfo(body); + return localVarResponse.Data; } /// - /// Update a list + /// Send an automated message to a visitor Example of automated messages: order status, announce new features in your web app, etc. /// /// Thrown when fails to make API call - /// Id of the list - /// Values to update a list - /// ApiResponse of Object(void) - public ApiResponse UpdateListWithHttpInfo (long? listId, UpdateList updateList) + /// + /// ApiResponse of ConversationsMessage + public ApiResponse< ConversationsMessage > ConversationsPushedMessagesPostWithHttpInfo (Body10 body) { - // verify the required parameter 'listId' is set - if (listId == null) - throw new ApiException(400, "Missing required parameter 'listId' when calling ListsApi->UpdateList"); - // verify the required parameter 'updateList' is set - if (updateList == null) - throw new ApiException(400, "Missing required parameter 'updateList' when calling ListsApi->UpdateList"); - - var localVarPath = "./contacts/lists/{listId}"; + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling ConversationsApi->ConversationsPushedMessagesPost"); + + var localVarPath = "./conversations/pushedMessages"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -1954,14 +1866,13 @@ public ApiResponse UpdateListWithHttpInfo (long? listId, UpdateList upda if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (listId != null) localVarPathParams.Add("listId", this.Configuration.ApiClient.ParameterToString(listId)); // path parameter - if (updateList != null && updateList.GetType() != typeof(byte[])) + if (body != null && body.GetType() != typeof(byte[])) { - localVarPostBody = this.Configuration.ApiClient.Serialize(updateList); // http body (model) parameter + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter } else { - localVarPostBody = updateList; // byte array + localVarPostBody = body; // byte array } // authentication (api-key) required @@ -1977,52 +1888,48 @@ public ApiResponse UpdateListWithHttpInfo (long? listId, UpdateList upda // make the HTTP request IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, - Method.PUT, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("UpdateList", localVarResponse); + Exception exception = ExceptionFactory("ConversationsPushedMessagesPost", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - null); + (ConversationsMessage) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(ConversationsMessage))); } /// - /// Update a list + /// Send an automated message to a visitor Example of automated messages: order status, announce new features in your web app, etc. /// /// Thrown when fails to make API call - /// Id of the list - /// Values to update a list - /// Task of void - public async System.Threading.Tasks.Task UpdateListAsync (long? listId, UpdateList updateList) + /// + /// Task of ConversationsMessage + public async System.Threading.Tasks.Task ConversationsPushedMessagesPostAsync (Body10 body) { - await UpdateListAsyncWithHttpInfo(listId, updateList); + ApiResponse localVarResponse = await ConversationsPushedMessagesPostAsyncWithHttpInfo(body); + return localVarResponse.Data; } /// - /// Update a list + /// Send an automated message to a visitor Example of automated messages: order status, announce new features in your web app, etc. /// /// Thrown when fails to make API call - /// Id of the list - /// Values to update a list - /// Task of ApiResponse - public async System.Threading.Tasks.Task> UpdateListAsyncWithHttpInfo (long? listId, UpdateList updateList) + /// + /// Task of ApiResponse (ConversationsMessage) + public async System.Threading.Tasks.Task> ConversationsPushedMessagesPostAsyncWithHttpInfo (Body10 body) { - // verify the required parameter 'listId' is set - if (listId == null) - throw new ApiException(400, "Missing required parameter 'listId' when calling ListsApi->UpdateList"); - // verify the required parameter 'updateList' is set - if (updateList == null) - throw new ApiException(400, "Missing required parameter 'updateList' when calling ListsApi->UpdateList"); - - var localVarPath = "./contacts/lists/{listId}"; + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling ConversationsApi->ConversationsPushedMessagesPost"); + + var localVarPath = "./conversations/pushedMessages"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -2044,14 +1951,13 @@ public async System.Threading.Tasks.Task> UpdateListAsyncWit if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (listId != null) localVarPathParams.Add("listId", this.Configuration.ApiClient.ParameterToString(listId)); // path parameter - if (updateList != null && updateList.GetType() != typeof(byte[])) + if (body != null && body.GetType() != typeof(byte[])) { - localVarPostBody = this.Configuration.ApiClient.Serialize(updateList); // http body (model) parameter + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter } else { - localVarPostBody = updateList; // byte array + localVarPostBody = body; // byte array } // authentication (api-key) required @@ -2067,20 +1973,20 @@ public async System.Threading.Tasks.Task> UpdateListAsyncWit // make the HTTP request IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, - Method.PUT, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("UpdateList", localVarResponse); + Exception exception = ExceptionFactory("ConversationsPushedMessagesPost", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - null); + (ConversationsMessage) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(ConversationsMessage))); } } diff --git a/src/sib_api_v3_sdk/Api/DealsApi.cs b/src/sib_api_v3_sdk/Api/DealsApi.cs new file mode 100644 index 0000000..5af8683 --- /dev/null +++ b/src/sib_api_v3_sdk/Api/DealsApi.cs @@ -0,0 +1,1796 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using RestSharp.Portable; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace sib_api_v3_sdk.Api +{ + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IDealsApi : IApiAccessor + { + #region Synchronous Operations + /// + /// Get deal attributes + /// + /// + /// + /// + /// Thrown when fails to make API call + /// DealAttributes + DealAttributes CrmAttributesDealsGet (); + + /// + /// Get deal attributes + /// + /// + /// + /// + /// Thrown when fails to make API call + /// ApiResponse of DealAttributes + ApiResponse CrmAttributesDealsGetWithHttpInfo (); + /// + /// Get all deals + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Filter by attrbutes. If you have filter for owner on your side please send it as `attributes.owner`." (optional) + /// Filter by linked companies ids (optional) + /// Filter by linked companies ids (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// The field used to sort field names. (optional) + /// DealsList + DealsList CrmDealsGet (string filtersAttributes = null, string filtersLinkedCompaniesIds = null, string filtersLinkedContactsIds = null, long? offset = null, long? limit = null, string sort = null, string sortBy = null); + + /// + /// Get all deals + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Filter by attrbutes. If you have filter for owner on your side please send it as `attributes.owner`." (optional) + /// Filter by linked companies ids (optional) + /// Filter by linked companies ids (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// The field used to sort field names. (optional) + /// ApiResponse of DealsList + ApiResponse CrmDealsGetWithHttpInfo (string filtersAttributes = null, string filtersLinkedCompaniesIds = null, string filtersLinkedContactsIds = null, long? offset = null, long? limit = null, string sort = null, string sortBy = null); + /// + /// Delete a deal + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// + void CrmDealsIdDelete (string id); + + /// + /// Delete a deal + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// ApiResponse of Object(void) + ApiResponse CrmDealsIdDeleteWithHttpInfo (string id); + /// + /// Get a deal + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// Deal + Deal CrmDealsIdGet (string id); + + /// + /// Get a deal + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// ApiResponse of Deal + ApiResponse CrmDealsIdGetWithHttpInfo (string id); + /// + /// Update a deal + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// Updated deal details. + /// + void CrmDealsIdPatch (string id, Body4 body); + + /// + /// Update a deal + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// Updated deal details. + /// ApiResponse of Object(void) + ApiResponse CrmDealsIdPatchWithHttpInfo (string id, Body4 body); + /// + /// Link and Unlink a deal with contacts and companies + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// Linked / Unlinked contacts and companies ids. + /// + void CrmDealsLinkUnlinkIdPatch (string id, Body5 body); + + /// + /// Link and Unlink a deal with contacts and companies + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// Linked / Unlinked contacts and companies ids. + /// ApiResponse of Object(void) + ApiResponse CrmDealsLinkUnlinkIdPatchWithHttpInfo (string id, Body5 body); + /// + /// Create a deal + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Deal create data. + /// InlineResponse201 + InlineResponse201 CrmDealsPost (Body3 body); + + /// + /// Create a deal + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Deal create data. + /// ApiResponse of InlineResponse201 + ApiResponse CrmDealsPostWithHttpInfo (Body3 body); + /// + /// Get pipeline stages + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Pipeline + Pipeline CrmPipelineDetailsGet (); + + /// + /// Get pipeline stages + /// + /// + /// + /// + /// Thrown when fails to make API call + /// ApiResponse of Pipeline + ApiResponse CrmPipelineDetailsGetWithHttpInfo (); + #endregion Synchronous Operations + #region Asynchronous Operations + /// + /// Get deal attributes + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Task of DealAttributes + System.Threading.Tasks.Task CrmAttributesDealsGetAsync (); + + /// + /// Get deal attributes + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Task of ApiResponse (DealAttributes) + System.Threading.Tasks.Task> CrmAttributesDealsGetAsyncWithHttpInfo (); + /// + /// Get all deals + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Filter by attrbutes. If you have filter for owner on your side please send it as `attributes.owner`." (optional) + /// Filter by linked companies ids (optional) + /// Filter by linked companies ids (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// The field used to sort field names. (optional) + /// Task of DealsList + System.Threading.Tasks.Task CrmDealsGetAsync (string filtersAttributes = null, string filtersLinkedCompaniesIds = null, string filtersLinkedContactsIds = null, long? offset = null, long? limit = null, string sort = null, string sortBy = null); + + /// + /// Get all deals + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Filter by attrbutes. If you have filter for owner on your side please send it as `attributes.owner`." (optional) + /// Filter by linked companies ids (optional) + /// Filter by linked companies ids (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// The field used to sort field names. (optional) + /// Task of ApiResponse (DealsList) + System.Threading.Tasks.Task> CrmDealsGetAsyncWithHttpInfo (string filtersAttributes = null, string filtersLinkedCompaniesIds = null, string filtersLinkedContactsIds = null, long? offset = null, long? limit = null, string sort = null, string sortBy = null); + /// + /// Delete a deal + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// Task of void + System.Threading.Tasks.Task CrmDealsIdDeleteAsync (string id); + + /// + /// Delete a deal + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// Task of ApiResponse + System.Threading.Tasks.Task> CrmDealsIdDeleteAsyncWithHttpInfo (string id); + /// + /// Get a deal + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// Task of Deal + System.Threading.Tasks.Task CrmDealsIdGetAsync (string id); + + /// + /// Get a deal + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// Task of ApiResponse (Deal) + System.Threading.Tasks.Task> CrmDealsIdGetAsyncWithHttpInfo (string id); + /// + /// Update a deal + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// Updated deal details. + /// Task of void + System.Threading.Tasks.Task CrmDealsIdPatchAsync (string id, Body4 body); + + /// + /// Update a deal + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// Updated deal details. + /// Task of ApiResponse + System.Threading.Tasks.Task> CrmDealsIdPatchAsyncWithHttpInfo (string id, Body4 body); + /// + /// Link and Unlink a deal with contacts and companies + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// Linked / Unlinked contacts and companies ids. + /// Task of void + System.Threading.Tasks.Task CrmDealsLinkUnlinkIdPatchAsync (string id, Body5 body); + + /// + /// Link and Unlink a deal with contacts and companies + /// + /// + /// + /// + /// Thrown when fails to make API call + /// + /// Linked / Unlinked contacts and companies ids. + /// Task of ApiResponse + System.Threading.Tasks.Task> CrmDealsLinkUnlinkIdPatchAsyncWithHttpInfo (string id, Body5 body); + /// + /// Create a deal + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Deal create data. + /// Task of InlineResponse201 + System.Threading.Tasks.Task CrmDealsPostAsync (Body3 body); + + /// + /// Create a deal + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Deal create data. + /// Task of ApiResponse (InlineResponse201) + System.Threading.Tasks.Task> CrmDealsPostAsyncWithHttpInfo (Body3 body); + /// + /// Get pipeline stages + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Task of Pipeline + System.Threading.Tasks.Task CrmPipelineDetailsGetAsync (); + + /// + /// Get pipeline stages + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Task of ApiResponse (Pipeline) + System.Threading.Tasks.Task> CrmPipelineDetailsGetAsyncWithHttpInfo (); + #endregion Asynchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public partial class DealsApi : IDealsApi + { + private sib_api_v3_sdk.Client.ExceptionFactory _exceptionFactory = (name, response) => null; + + /// + /// Initializes a new instance of the class. + /// + /// + public DealsApi(String basePath) + { + this.Configuration = new sib_api_v3_sdk.Client.Configuration { BasePath = basePath }; + + ExceptionFactory = sib_api_v3_sdk.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using Configuration object + /// + /// An instance of Configuration + /// + public DealsApi(sib_api_v3_sdk.Client.Configuration configuration = null) + { + if (configuration == null) // use the default one in Configuration + this.Configuration = sib_api_v3_sdk.Client.Configuration.Default; + else + this.Configuration = configuration; + + ExceptionFactory = sib_api_v3_sdk.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Gets the base path of the API client. + /// + /// The base path + public String GetBasePath() + { + return this.Configuration.ApiClient.RestClient.BaseUrl.ToString(); + } + + /// + /// Sets the base path of the API client. + /// + /// The base path + [Obsolete("SetBasePath is deprecated, please do 'Configuration.ApiClient = new ApiClient(\"http://new-path\")' instead.")] + public void SetBasePath(String basePath) + { + // do nothing + } + + /// + /// Gets or sets the configuration object + /// + /// An instance of the Configuration + public sib_api_v3_sdk.Client.Configuration Configuration {get; set;} + + /// + /// Provides a factory method hook for the creation of exceptions. + /// + public sib_api_v3_sdk.Client.ExceptionFactory ExceptionFactory + { + get + { + if (_exceptionFactory != null && _exceptionFactory.GetInvocationList().Length > 1) + { + throw new InvalidOperationException("Multicast delegate for ExceptionFactory is unsupported."); + } + return _exceptionFactory; + } + set { _exceptionFactory = value; } + } + + /// + /// Gets the default header. + /// + /// Dictionary of HTTP header + [Obsolete("DefaultHeader is deprecated, please use Configuration.DefaultHeader instead.")] + public IDictionary DefaultHeader() + { + return new ReadOnlyDictionary(this.Configuration.DefaultHeader); + } + + /// + /// Add default header. + /// + /// Header field name. + /// Header field value. + /// + [Obsolete("AddDefaultHeader is deprecated, please use Configuration.AddDefaultHeader instead.")] + public void AddDefaultHeader(string key, string value) + { + this.Configuration.AddDefaultHeader(key, value); + } + + /// + /// Get deal attributes + /// + /// Thrown when fails to make API call + /// DealAttributes + public DealAttributes CrmAttributesDealsGet () + { + ApiResponse localVarResponse = CrmAttributesDealsGetWithHttpInfo(); + return localVarResponse.Data; + } + + /// + /// Get deal attributes + /// + /// Thrown when fails to make API call + /// ApiResponse of DealAttributes + public ApiResponse< DealAttributes > CrmAttributesDealsGetWithHttpInfo () + { + + var localVarPath = "./crm/attributes/deals"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CrmAttributesDealsGet", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (DealAttributes) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(DealAttributes))); + } + + /// + /// Get deal attributes + /// + /// Thrown when fails to make API call + /// Task of DealAttributes + public async System.Threading.Tasks.Task CrmAttributesDealsGetAsync () + { + ApiResponse localVarResponse = await CrmAttributesDealsGetAsyncWithHttpInfo(); + return localVarResponse.Data; + + } + + /// + /// Get deal attributes + /// + /// Thrown when fails to make API call + /// Task of ApiResponse (DealAttributes) + public async System.Threading.Tasks.Task> CrmAttributesDealsGetAsyncWithHttpInfo () + { + + var localVarPath = "./crm/attributes/deals"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CrmAttributesDealsGet", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (DealAttributes) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(DealAttributes))); + } + + /// + /// Get all deals + /// + /// Thrown when fails to make API call + /// Filter by attrbutes. If you have filter for owner on your side please send it as `attributes.owner`." (optional) + /// Filter by linked companies ids (optional) + /// Filter by linked companies ids (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// The field used to sort field names. (optional) + /// DealsList + public DealsList CrmDealsGet (string filtersAttributes = null, string filtersLinkedCompaniesIds = null, string filtersLinkedContactsIds = null, long? offset = null, long? limit = null, string sort = null, string sortBy = null) + { + ApiResponse localVarResponse = CrmDealsGetWithHttpInfo(filtersAttributes, filtersLinkedCompaniesIds, filtersLinkedContactsIds, offset, limit, sort, sortBy); + return localVarResponse.Data; + } + + /// + /// Get all deals + /// + /// Thrown when fails to make API call + /// Filter by attrbutes. If you have filter for owner on your side please send it as `attributes.owner`." (optional) + /// Filter by linked companies ids (optional) + /// Filter by linked companies ids (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// The field used to sort field names. (optional) + /// ApiResponse of DealsList + public ApiResponse< DealsList > CrmDealsGetWithHttpInfo (string filtersAttributes = null, string filtersLinkedCompaniesIds = null, string filtersLinkedContactsIds = null, long? offset = null, long? limit = null, string sort = null, string sortBy = null) + { + + var localVarPath = "./crm/deals"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (filtersAttributes != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "filters[attributes]", filtersAttributes)); // query parameter + if (filtersLinkedCompaniesIds != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "filters[linkedCompaniesIds]", filtersLinkedCompaniesIds)); // query parameter + if (filtersLinkedContactsIds != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "filters[linkedContactsIds]", filtersLinkedContactsIds)); // query parameter + if (offset != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "offset", offset)); // query parameter + if (limit != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "limit", limit)); // query parameter + if (sort != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sort", sort)); // query parameter + if (sortBy != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sortBy", sortBy)); // query parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CrmDealsGet", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (DealsList) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(DealsList))); + } + + /// + /// Get all deals + /// + /// Thrown when fails to make API call + /// Filter by attrbutes. If you have filter for owner on your side please send it as `attributes.owner`." (optional) + /// Filter by linked companies ids (optional) + /// Filter by linked companies ids (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// The field used to sort field names. (optional) + /// Task of DealsList + public async System.Threading.Tasks.Task CrmDealsGetAsync (string filtersAttributes = null, string filtersLinkedCompaniesIds = null, string filtersLinkedContactsIds = null, long? offset = null, long? limit = null, string sort = null, string sortBy = null) + { + ApiResponse localVarResponse = await CrmDealsGetAsyncWithHttpInfo(filtersAttributes, filtersLinkedCompaniesIds, filtersLinkedContactsIds, offset, limit, sort, sortBy); + return localVarResponse.Data; + + } + + /// + /// Get all deals + /// + /// Thrown when fails to make API call + /// Filter by attrbutes. If you have filter for owner on your side please send it as `attributes.owner`." (optional) + /// Filter by linked companies ids (optional) + /// Filter by linked companies ids (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// The field used to sort field names. (optional) + /// Task of ApiResponse (DealsList) + public async System.Threading.Tasks.Task> CrmDealsGetAsyncWithHttpInfo (string filtersAttributes = null, string filtersLinkedCompaniesIds = null, string filtersLinkedContactsIds = null, long? offset = null, long? limit = null, string sort = null, string sortBy = null) + { + + var localVarPath = "./crm/deals"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (filtersAttributes != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "filters[attributes]", filtersAttributes)); // query parameter + if (filtersLinkedCompaniesIds != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "filters[linkedCompaniesIds]", filtersLinkedCompaniesIds)); // query parameter + if (filtersLinkedContactsIds != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "filters[linkedContactsIds]", filtersLinkedContactsIds)); // query parameter + if (offset != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "offset", offset)); // query parameter + if (limit != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "limit", limit)); // query parameter + if (sort != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sort", sort)); // query parameter + if (sortBy != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sortBy", sortBy)); // query parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CrmDealsGet", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (DealsList) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(DealsList))); + } + + /// + /// Delete a deal + /// + /// Thrown when fails to make API call + /// + /// + public void CrmDealsIdDelete (string id) + { + CrmDealsIdDeleteWithHttpInfo(id); + } + + /// + /// Delete a deal + /// + /// Thrown when fails to make API call + /// + /// ApiResponse of Object(void) + public ApiResponse CrmDealsIdDeleteWithHttpInfo (string id) + { + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling DealsApi->CrmDealsIdDelete"); + + var localVarPath = "./crm/deals/{id}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, + Method.DELETE, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CrmDealsIdDelete", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + null); + } + + /// + /// Delete a deal + /// + /// Thrown when fails to make API call + /// + /// Task of void + public async System.Threading.Tasks.Task CrmDealsIdDeleteAsync (string id) + { + await CrmDealsIdDeleteAsyncWithHttpInfo(id); + + } + + /// + /// Delete a deal + /// + /// Thrown when fails to make API call + /// + /// Task of ApiResponse + public async System.Threading.Tasks.Task> CrmDealsIdDeleteAsyncWithHttpInfo (string id) + { + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling DealsApi->CrmDealsIdDelete"); + + var localVarPath = "./crm/deals/{id}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + Method.DELETE, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CrmDealsIdDelete", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + null); + } + + /// + /// Get a deal + /// + /// Thrown when fails to make API call + /// + /// Deal + public Deal CrmDealsIdGet (string id) + { + ApiResponse localVarResponse = CrmDealsIdGetWithHttpInfo(id); + return localVarResponse.Data; + } + + /// + /// Get a deal + /// + /// Thrown when fails to make API call + /// + /// ApiResponse of Deal + public ApiResponse< Deal > CrmDealsIdGetWithHttpInfo (string id) + { + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling DealsApi->CrmDealsIdGet"); + + var localVarPath = "./crm/deals/{id}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CrmDealsIdGet", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (Deal) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(Deal))); + } + + /// + /// Get a deal + /// + /// Thrown when fails to make API call + /// + /// Task of Deal + public async System.Threading.Tasks.Task CrmDealsIdGetAsync (string id) + { + ApiResponse localVarResponse = await CrmDealsIdGetAsyncWithHttpInfo(id); + return localVarResponse.Data; + + } + + /// + /// Get a deal + /// + /// Thrown when fails to make API call + /// + /// Task of ApiResponse (Deal) + public async System.Threading.Tasks.Task> CrmDealsIdGetAsyncWithHttpInfo (string id) + { + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling DealsApi->CrmDealsIdGet"); + + var localVarPath = "./crm/deals/{id}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CrmDealsIdGet", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (Deal) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(Deal))); + } + + /// + /// Update a deal + /// + /// Thrown when fails to make API call + /// + /// Updated deal details. + /// + public void CrmDealsIdPatch (string id, Body4 body) + { + CrmDealsIdPatchWithHttpInfo(id, body); + } + + /// + /// Update a deal + /// + /// Thrown when fails to make API call + /// + /// Updated deal details. + /// ApiResponse of Object(void) + public ApiResponse CrmDealsIdPatchWithHttpInfo (string id, Body4 body) + { + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling DealsApi->CrmDealsIdPatch"); + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling DealsApi->CrmDealsIdPatch"); + + var localVarPath = "./crm/deals/{id}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + if (body != null && body.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter + } + else + { + localVarPostBody = body; // byte array + } + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, + Method.PATCH, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CrmDealsIdPatch", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + null); + } + + /// + /// Update a deal + /// + /// Thrown when fails to make API call + /// + /// Updated deal details. + /// Task of void + public async System.Threading.Tasks.Task CrmDealsIdPatchAsync (string id, Body4 body) + { + await CrmDealsIdPatchAsyncWithHttpInfo(id, body); + + } + + /// + /// Update a deal + /// + /// Thrown when fails to make API call + /// + /// Updated deal details. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> CrmDealsIdPatchAsyncWithHttpInfo (string id, Body4 body) + { + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling DealsApi->CrmDealsIdPatch"); + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling DealsApi->CrmDealsIdPatch"); + + var localVarPath = "./crm/deals/{id}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + if (body != null && body.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter + } + else + { + localVarPostBody = body; // byte array + } + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + Method.PATCH, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CrmDealsIdPatch", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + null); + } + + /// + /// Link and Unlink a deal with contacts and companies + /// + /// Thrown when fails to make API call + /// + /// Linked / Unlinked contacts and companies ids. + /// + public void CrmDealsLinkUnlinkIdPatch (string id, Body5 body) + { + CrmDealsLinkUnlinkIdPatchWithHttpInfo(id, body); + } + + /// + /// Link and Unlink a deal with contacts and companies + /// + /// Thrown when fails to make API call + /// + /// Linked / Unlinked contacts and companies ids. + /// ApiResponse of Object(void) + public ApiResponse CrmDealsLinkUnlinkIdPatchWithHttpInfo (string id, Body5 body) + { + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling DealsApi->CrmDealsLinkUnlinkIdPatch"); + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling DealsApi->CrmDealsLinkUnlinkIdPatch"); + + var localVarPath = "./crm/deals/link-unlink/{id}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + if (body != null && body.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter + } + else + { + localVarPostBody = body; // byte array + } + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, + Method.PATCH, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CrmDealsLinkUnlinkIdPatch", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + null); + } + + /// + /// Link and Unlink a deal with contacts and companies + /// + /// Thrown when fails to make API call + /// + /// Linked / Unlinked contacts and companies ids. + /// Task of void + public async System.Threading.Tasks.Task CrmDealsLinkUnlinkIdPatchAsync (string id, Body5 body) + { + await CrmDealsLinkUnlinkIdPatchAsyncWithHttpInfo(id, body); + + } + + /// + /// Link and Unlink a deal with contacts and companies + /// + /// Thrown when fails to make API call + /// + /// Linked / Unlinked contacts and companies ids. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> CrmDealsLinkUnlinkIdPatchAsyncWithHttpInfo (string id, Body5 body) + { + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling DealsApi->CrmDealsLinkUnlinkIdPatch"); + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling DealsApi->CrmDealsLinkUnlinkIdPatch"); + + var localVarPath = "./crm/deals/link-unlink/{id}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + if (body != null && body.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter + } + else + { + localVarPostBody = body; // byte array + } + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + Method.PATCH, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CrmDealsLinkUnlinkIdPatch", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + null); + } + + /// + /// Create a deal + /// + /// Thrown when fails to make API call + /// Deal create data. + /// InlineResponse201 + public InlineResponse201 CrmDealsPost (Body3 body) + { + ApiResponse localVarResponse = CrmDealsPostWithHttpInfo(body); + return localVarResponse.Data; + } + + /// + /// Create a deal + /// + /// Thrown when fails to make API call + /// Deal create data. + /// ApiResponse of InlineResponse201 + public ApiResponse< InlineResponse201 > CrmDealsPostWithHttpInfo (Body3 body) + { + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling DealsApi->CrmDealsPost"); + + var localVarPath = "./crm/deals"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (body != null && body.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter + } + else + { + localVarPostBody = body; // byte array + } + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, + Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CrmDealsPost", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (InlineResponse201) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(InlineResponse201))); + } + + /// + /// Create a deal + /// + /// Thrown when fails to make API call + /// Deal create data. + /// Task of InlineResponse201 + public async System.Threading.Tasks.Task CrmDealsPostAsync (Body3 body) + { + ApiResponse localVarResponse = await CrmDealsPostAsyncWithHttpInfo(body); + return localVarResponse.Data; + + } + + /// + /// Create a deal + /// + /// Thrown when fails to make API call + /// Deal create data. + /// Task of ApiResponse (InlineResponse201) + public async System.Threading.Tasks.Task> CrmDealsPostAsyncWithHttpInfo (Body3 body) + { + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling DealsApi->CrmDealsPost"); + + var localVarPath = "./crm/deals"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (body != null && body.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter + } + else + { + localVarPostBody = body; // byte array + } + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CrmDealsPost", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (InlineResponse201) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(InlineResponse201))); + } + + /// + /// Get pipeline stages + /// + /// Thrown when fails to make API call + /// Pipeline + public Pipeline CrmPipelineDetailsGet () + { + ApiResponse localVarResponse = CrmPipelineDetailsGetWithHttpInfo(); + return localVarResponse.Data; + } + + /// + /// Get pipeline stages + /// + /// Thrown when fails to make API call + /// ApiResponse of Pipeline + public ApiResponse< Pipeline > CrmPipelineDetailsGetWithHttpInfo () + { + + var localVarPath = "./crm/pipeline/details"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CrmPipelineDetailsGet", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (Pipeline) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(Pipeline))); + } + + /// + /// Get pipeline stages + /// + /// Thrown when fails to make API call + /// Task of Pipeline + public async System.Threading.Tasks.Task CrmPipelineDetailsGetAsync () + { + ApiResponse localVarResponse = await CrmPipelineDetailsGetAsyncWithHttpInfo(); + return localVarResponse.Data; + + } + + /// + /// Get pipeline stages + /// + /// Thrown when fails to make API call + /// Task of ApiResponse (Pipeline) + public async System.Threading.Tasks.Task> CrmPipelineDetailsGetAsyncWithHttpInfo () + { + + var localVarPath = "./crm/pipeline/details"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CrmPipelineDetailsGet", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (Pipeline) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(Pipeline))); + } + + } +} diff --git a/src/sib_api_v3_sdk/Api/CRMApi.cs b/src/sib_api_v3_sdk/Api/EcommerceApi.cs similarity index 60% rename from src/sib_api_v3_sdk/Api/CRMApi.cs rename to src/sib_api_v3_sdk/Api/EcommerceApi.cs index b48befc..9a9c2fa 100644 --- a/src/sib_api_v3_sdk/Api/CRMApi.cs +++ b/src/sib_api_v3_sdk/Api/EcommerceApi.cs @@ -21,580 +21,508 @@ namespace sib_api_v3_sdk.Api /// /// Represents a collection of functions to interact with the API endpoints /// - public interface ICRMApi : IApiAccessor + public interface IEcommerceApi : IApiAccessor { #region Synchronous Operations /// - /// Get file details + /// Maintains a batch of orders /// /// /// /// /// Thrown when fails to make API call - /// File id to get file data. - /// FileData - FileData CrmFilesIdDataGet (string id); - - /// - /// Get file details - /// - /// - /// - /// - /// Thrown when fails to make API call - /// File id to get file data. - /// ApiResponse of FileData - ApiResponse CrmFilesIdDataGetWithHttpInfo (string id); - /// - /// Delete a file - /// - /// - /// - /// - /// Thrown when fails to make API call - /// File id to delete. + /// /// - void CrmFilesIdDelete (string id); + void CreateBatchOrder (OrderBatch orderBatch); /// - /// Delete a file + /// Maintains a batch of orders /// /// /// /// /// Thrown when fails to make API call - /// File id to delete. + /// /// ApiResponse of Object(void) - ApiResponse CrmFilesIdDeleteWithHttpInfo (string id); + ApiResponse CreateBatchOrderWithHttpInfo (OrderBatch orderBatch); /// - /// Download a file + /// Maintains every transactional status of the order /// /// /// /// /// Thrown when fails to make API call - /// File id to download. + /// /// - void CrmFilesIdGet (string id); + void CreateOrder (Order order); /// - /// Download a file + /// Maintains every transactional status of the order /// /// /// /// /// Thrown when fails to make API call - /// File id to download. + /// /// ApiResponse of Object(void) - ApiResponse CrmFilesIdGetWithHttpInfo (string id); + ApiResponse CreateOrderWithHttpInfo (Order order); /// - /// Upload a file + /// Create the categories in a batch /// /// /// /// /// Thrown when fails to make API call - /// File data to create a file. - /// Deal ids linked to a file (optional) - /// FileData - FileData CrmFilesPost (System.IO.Stream file, List dealsIds = null); + /// Values to create a batch of categories + /// CreateUpdateBatchCategoryModel + CreateUpdateBatchCategoryModel CreateUpdateBatchCategory (CreateUpdateBatchCategory createUpdateBatchCategory); /// - /// Upload a file + /// Create the categories in a batch /// /// /// /// /// Thrown when fails to make API call - /// File data to create a file. - /// Deal ids linked to a file (optional) - /// ApiResponse of FileData - ApiResponse CrmFilesPostWithHttpInfo (System.IO.Stream file, List dealsIds = null); + /// Values to create a batch of categories + /// ApiResponse of CreateUpdateBatchCategoryModel + ApiResponse CreateUpdateBatchCategoryWithHttpInfo (CreateUpdateBatchCategory createUpdateBatchCategory); /// - /// Delete a note + /// Creates the products in a batch /// /// /// /// /// Thrown when fails to make API call - /// Note ID to delete - /// - void CrmNotesIdDelete (string id); + /// Values to create a batch of products + /// CreateUpdateBatchProductsModel + CreateUpdateBatchProductsModel CreateUpdateBatchProducts (CreateUpdateBatchProducts createUpdateBatchProducts); /// - /// Delete a note + /// Creates the products in a batch /// /// /// /// /// Thrown when fails to make API call - /// Note ID to delete - /// ApiResponse of Object(void) - ApiResponse CrmNotesIdDeleteWithHttpInfo (string id); + /// Values to create a batch of products + /// ApiResponse of CreateUpdateBatchProductsModel + ApiResponse CreateUpdateBatchProductsWithHttpInfo (CreateUpdateBatchProducts createUpdateBatchProducts); /// - /// Get a note + /// Create/Update a category /// /// /// /// /// Thrown when fails to make API call - /// Note ID to get - /// Note - Note CrmNotesIdGet (string id); + /// Values to create/update a category + /// CreateCategoryModel + CreateCategoryModel CreateUpdateCategory (CreateUpdateCategory createUpdateCategory); /// - /// Get a note + /// Create/Update a category /// /// /// /// /// Thrown when fails to make API call - /// Note ID to get - /// ApiResponse of Note - ApiResponse CrmNotesIdGetWithHttpInfo (string id); + /// Values to create/update a category + /// ApiResponse of CreateCategoryModel + ApiResponse CreateUpdateCategoryWithHttpInfo (CreateUpdateCategory createUpdateCategory); /// - /// Update a note + /// Create/Update a product /// /// /// /// /// Thrown when fails to make API call - /// Note ID to update - /// Note data to update a note - /// Note - Note CrmNotesIdPatch (string id, NoteData body); + /// Values to create/update a product + /// CreateProductModel + CreateProductModel CreateUpdateProduct (CreateUpdateProduct createUpdateProduct); /// - /// Update a note + /// Create/Update a product /// /// /// /// /// Thrown when fails to make API call - /// Note ID to update - /// Note data to update a note - /// ApiResponse of Note - ApiResponse CrmNotesIdPatchWithHttpInfo (string id, NoteData body); + /// Values to create/update a product + /// ApiResponse of CreateProductModel + ApiResponse CreateUpdateProductWithHttpInfo (CreateUpdateProduct createUpdateProduct); /// - /// Create a note + /// **Fulfills the eCommerce pre-requisites** /// /// /// /// /// Thrown when fails to make API call - /// Note data to create a note. - /// Note - Note CrmNotesPost (NoteData body); - - /// - /// Create a note - /// - /// - /// - /// - /// Thrown when fails to make API call - /// Note data to create a note. - /// ApiResponse of Note - ApiResponse CrmNotesPostWithHttpInfo (NoteData body); - /// - /// Delete a task - /// - /// - /// - /// - /// Thrown when fails to make API call - /// /// - void CrmTasksIdDelete (string id); + void EcommerceActivatePost (); /// - /// Delete a task + /// **Fulfills the eCommerce pre-requisites** /// /// /// /// /// Thrown when fails to make API call - /// /// ApiResponse of Object(void) - ApiResponse CrmTasksIdDeleteWithHttpInfo (string id); + ApiResponse EcommerceActivatePostWithHttpInfo (); /// - /// Get a task + /// Return all your categories /// /// /// /// /// Thrown when fails to make API call - /// - /// Task - Task CrmTasksIdGet (string id); + /// Number of documents per page (optional, default to 50) + /// Index of the first document in the page (optional, default to 0) + /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) + /// Filter by category ids (optional) + /// GetCategories + GetCategories GetCategories (long? limit = null, long? offset = null, string sort = null, List ids = null); /// - /// Get a task + /// Return all your categories /// /// /// /// /// Thrown when fails to make API call - /// - /// ApiResponse of Task - ApiResponse CrmTasksIdGetWithHttpInfo (string id); + /// Number of documents per page (optional, default to 50) + /// Index of the first document in the page (optional, default to 0) + /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) + /// Filter by category ids (optional) + /// ApiResponse of GetCategories + ApiResponse GetCategoriesWithHttpInfo (long? limit = null, long? offset = null, string sort = null, List ids = null); /// - /// Update a task + /// Get a category details /// /// /// /// /// Thrown when fails to make API call - /// - /// Updated task details. - /// Task - Task CrmTasksIdPatch (string id, Body1 body); + /// Category ID + /// GetCategoryDetails + GetCategoryDetails GetCategoryInfo (string id); /// - /// Update a task + /// Get a category details /// /// /// /// /// Thrown when fails to make API call - /// - /// Updated task details. - /// ApiResponse of Task - ApiResponse CrmTasksIdPatchWithHttpInfo (string id, Body1 body); + /// Category ID + /// ApiResponse of GetCategoryDetails + ApiResponse GetCategoryInfoWithHttpInfo (string id); /// - /// Create a task + /// Get a product's details /// /// /// /// /// Thrown when fails to make API call - /// Task name. - /// Task - Task CrmTasksPost (Body body); + /// Product ID + /// GetProductDetails + GetProductDetails GetProductInfo (string id); /// - /// Create a task + /// Get a product's details /// /// /// /// /// Thrown when fails to make API call - /// Task name. - /// ApiResponse of Task - ApiResponse CrmTasksPostWithHttpInfo (Body body); + /// Product ID + /// ApiResponse of GetProductDetails + ApiResponse GetProductInfoWithHttpInfo (string id); /// - /// Get all task types + /// Return all your products /// /// /// /// /// Thrown when fails to make API call - /// TaskTypes - TaskTypes CrmTasktypesGet (); + /// Number of documents per page (optional, default to 50) + /// Index of the first document in the page (optional, default to 0) + /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) + /// Filter by product ids (optional) + /// GetProducts + GetProducts GetProducts (long? limit = null, long? offset = null, string sort = null, List ids = null); /// - /// Get all task types + /// Return all your products /// /// /// /// /// Thrown when fails to make API call - /// ApiResponse of TaskTypes - ApiResponse CrmTasktypesGetWithHttpInfo (); + /// Number of documents per page (optional, default to 50) + /// Index of the first document in the page (optional, default to 0) + /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) + /// Filter by product ids (optional) + /// ApiResponse of GetProducts + ApiResponse GetProductsWithHttpInfo (long? limit = null, long? offset = null, string sort = null, List ids = null); #endregion Synchronous Operations #region Asynchronous Operations /// - /// Get file details - /// - /// - /// - /// - /// Thrown when fails to make API call - /// File id to get file data. - /// Task of FileData - System.Threading.Tasks.Task CrmFilesIdDataGetAsync (string id); - - /// - /// Get file details - /// - /// - /// - /// - /// Thrown when fails to make API call - /// File id to get file data. - /// Task of ApiResponse (FileData) - System.Threading.Tasks.Task> CrmFilesIdDataGetAsyncWithHttpInfo (string id); - /// - /// Delete a file + /// Maintains a batch of orders /// /// /// /// /// Thrown when fails to make API call - /// File id to delete. + /// /// Task of void - System.Threading.Tasks.Task CrmFilesIdDeleteAsync (string id); + System.Threading.Tasks.Task CreateBatchOrderAsync (OrderBatch orderBatch); /// - /// Delete a file + /// Maintains a batch of orders /// /// /// /// /// Thrown when fails to make API call - /// File id to delete. + /// /// Task of ApiResponse - System.Threading.Tasks.Task> CrmFilesIdDeleteAsyncWithHttpInfo (string id); + System.Threading.Tasks.Task> CreateBatchOrderAsyncWithHttpInfo (OrderBatch orderBatch); /// - /// Download a file + /// Maintains every transactional status of the order /// /// /// /// /// Thrown when fails to make API call - /// File id to download. + /// /// Task of void - System.Threading.Tasks.Task CrmFilesIdGetAsync (string id); + System.Threading.Tasks.Task CreateOrderAsync (Order order); /// - /// Download a file + /// Maintains every transactional status of the order /// /// /// /// /// Thrown when fails to make API call - /// File id to download. + /// /// Task of ApiResponse - System.Threading.Tasks.Task> CrmFilesIdGetAsyncWithHttpInfo (string id); - /// - /// Upload a file - /// - /// - /// - /// - /// Thrown when fails to make API call - /// File data to create a file. - /// Deal ids linked to a file (optional) - /// Task of FileData - System.Threading.Tasks.Task CrmFilesPostAsync (System.IO.Stream file, List dealsIds = null); - - /// - /// Upload a file - /// - /// - /// - /// - /// Thrown when fails to make API call - /// File data to create a file. - /// Deal ids linked to a file (optional) - /// Task of ApiResponse (FileData) - System.Threading.Tasks.Task> CrmFilesPostAsyncWithHttpInfo (System.IO.Stream file, List dealsIds = null); + System.Threading.Tasks.Task> CreateOrderAsyncWithHttpInfo (Order order); /// - /// Delete a note + /// Create the categories in a batch /// /// /// /// /// Thrown when fails to make API call - /// Note ID to delete - /// Task of void - System.Threading.Tasks.Task CrmNotesIdDeleteAsync (string id); + /// Values to create a batch of categories + /// Task of CreateUpdateBatchCategoryModel + System.Threading.Tasks.Task CreateUpdateBatchCategoryAsync (CreateUpdateBatchCategory createUpdateBatchCategory); /// - /// Delete a note + /// Create the categories in a batch /// /// /// /// /// Thrown when fails to make API call - /// Note ID to delete - /// Task of ApiResponse - System.Threading.Tasks.Task> CrmNotesIdDeleteAsyncWithHttpInfo (string id); + /// Values to create a batch of categories + /// Task of ApiResponse (CreateUpdateBatchCategoryModel) + System.Threading.Tasks.Task> CreateUpdateBatchCategoryAsyncWithHttpInfo (CreateUpdateBatchCategory createUpdateBatchCategory); /// - /// Get a note + /// Creates the products in a batch /// /// /// /// /// Thrown when fails to make API call - /// Note ID to get - /// Task of Note - System.Threading.Tasks.Task CrmNotesIdGetAsync (string id); + /// Values to create a batch of products + /// Task of CreateUpdateBatchProductsModel + System.Threading.Tasks.Task CreateUpdateBatchProductsAsync (CreateUpdateBatchProducts createUpdateBatchProducts); /// - /// Get a note + /// Creates the products in a batch /// /// /// /// /// Thrown when fails to make API call - /// Note ID to get - /// Task of ApiResponse (Note) - System.Threading.Tasks.Task> CrmNotesIdGetAsyncWithHttpInfo (string id); + /// Values to create a batch of products + /// Task of ApiResponse (CreateUpdateBatchProductsModel) + System.Threading.Tasks.Task> CreateUpdateBatchProductsAsyncWithHttpInfo (CreateUpdateBatchProducts createUpdateBatchProducts); /// - /// Update a note + /// Create/Update a category /// /// /// /// /// Thrown when fails to make API call - /// Note ID to update - /// Note data to update a note - /// Task of Note - System.Threading.Tasks.Task CrmNotesIdPatchAsync (string id, NoteData body); + /// Values to create/update a category + /// Task of CreateCategoryModel + System.Threading.Tasks.Task CreateUpdateCategoryAsync (CreateUpdateCategory createUpdateCategory); /// - /// Update a note + /// Create/Update a category /// /// /// /// /// Thrown when fails to make API call - /// Note ID to update - /// Note data to update a note - /// Task of ApiResponse (Note) - System.Threading.Tasks.Task> CrmNotesIdPatchAsyncWithHttpInfo (string id, NoteData body); + /// Values to create/update a category + /// Task of ApiResponse (CreateCategoryModel) + System.Threading.Tasks.Task> CreateUpdateCategoryAsyncWithHttpInfo (CreateUpdateCategory createUpdateCategory); /// - /// Create a note + /// Create/Update a product /// /// /// /// /// Thrown when fails to make API call - /// Note data to create a note. - /// Task of Note - System.Threading.Tasks.Task CrmNotesPostAsync (NoteData body); + /// Values to create/update a product + /// Task of CreateProductModel + System.Threading.Tasks.Task CreateUpdateProductAsync (CreateUpdateProduct createUpdateProduct); /// - /// Create a note + /// Create/Update a product /// /// /// /// /// Thrown when fails to make API call - /// Note data to create a note. - /// Task of ApiResponse (Note) - System.Threading.Tasks.Task> CrmNotesPostAsyncWithHttpInfo (NoteData body); + /// Values to create/update a product + /// Task of ApiResponse (CreateProductModel) + System.Threading.Tasks.Task> CreateUpdateProductAsyncWithHttpInfo (CreateUpdateProduct createUpdateProduct); /// - /// Delete a task + /// **Fulfills the eCommerce pre-requisites** /// /// /// /// /// Thrown when fails to make API call - /// /// Task of void - System.Threading.Tasks.Task CrmTasksIdDeleteAsync (string id); + System.Threading.Tasks.Task EcommerceActivatePostAsync (); /// - /// Delete a task + /// **Fulfills the eCommerce pre-requisites** /// /// /// /// /// Thrown when fails to make API call - /// /// Task of ApiResponse - System.Threading.Tasks.Task> CrmTasksIdDeleteAsyncWithHttpInfo (string id); + System.Threading.Tasks.Task> EcommerceActivatePostAsyncWithHttpInfo (); /// - /// Get a task + /// Return all your categories /// /// /// /// /// Thrown when fails to make API call - /// - /// Task of Task - System.Threading.Tasks.Task CrmTasksIdGetAsync (string id); + /// Number of documents per page (optional, default to 50) + /// Index of the first document in the page (optional, default to 0) + /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) + /// Filter by category ids (optional) + /// Task of GetCategories + System.Threading.Tasks.Task GetCategoriesAsync (long? limit = null, long? offset = null, string sort = null, List ids = null); /// - /// Get a task + /// Return all your categories /// /// /// /// /// Thrown when fails to make API call - /// - /// Task of ApiResponse (Task) - System.Threading.Tasks.Task> CrmTasksIdGetAsyncWithHttpInfo (string id); + /// Number of documents per page (optional, default to 50) + /// Index of the first document in the page (optional, default to 0) + /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) + /// Filter by category ids (optional) + /// Task of ApiResponse (GetCategories) + System.Threading.Tasks.Task> GetCategoriesAsyncWithHttpInfo (long? limit = null, long? offset = null, string sort = null, List ids = null); /// - /// Update a task + /// Get a category details /// /// /// /// /// Thrown when fails to make API call - /// - /// Updated task details. - /// Task of Task - System.Threading.Tasks.Task CrmTasksIdPatchAsync (string id, Body1 body); + /// Category ID + /// Task of GetCategoryDetails + System.Threading.Tasks.Task GetCategoryInfoAsync (string id); /// - /// Update a task + /// Get a category details /// /// /// /// /// Thrown when fails to make API call - /// - /// Updated task details. - /// Task of ApiResponse (Task) - System.Threading.Tasks.Task> CrmTasksIdPatchAsyncWithHttpInfo (string id, Body1 body); + /// Category ID + /// Task of ApiResponse (GetCategoryDetails) + System.Threading.Tasks.Task> GetCategoryInfoAsyncWithHttpInfo (string id); /// - /// Create a task + /// Get a product's details /// /// /// /// /// Thrown when fails to make API call - /// Task name. - /// Task of Task - System.Threading.Tasks.Task CrmTasksPostAsync (Body body); + /// Product ID + /// Task of GetProductDetails + System.Threading.Tasks.Task GetProductInfoAsync (string id); /// - /// Create a task + /// Get a product's details /// /// /// /// /// Thrown when fails to make API call - /// Task name. - /// Task of ApiResponse (Task) - System.Threading.Tasks.Task> CrmTasksPostAsyncWithHttpInfo (Body body); + /// Product ID + /// Task of ApiResponse (GetProductDetails) + System.Threading.Tasks.Task> GetProductInfoAsyncWithHttpInfo (string id); /// - /// Get all task types + /// Return all your products /// /// /// /// /// Thrown when fails to make API call - /// Task of TaskTypes - System.Threading.Tasks.Task CrmTasktypesGetAsync (); + /// Number of documents per page (optional, default to 50) + /// Index of the first document in the page (optional, default to 0) + /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) + /// Filter by product ids (optional) + /// Task of GetProducts + System.Threading.Tasks.Task GetProductsAsync (long? limit = null, long? offset = null, string sort = null, List ids = null); /// - /// Get all task types + /// Return all your products /// /// /// /// /// Thrown when fails to make API call - /// Task of ApiResponse (TaskTypes) - System.Threading.Tasks.Task> CrmTasktypesGetAsyncWithHttpInfo (); + /// Number of documents per page (optional, default to 50) + /// Index of the first document in the page (optional, default to 0) + /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) + /// Filter by product ids (optional) + /// Task of ApiResponse (GetProducts) + System.Threading.Tasks.Task> GetProductsAsyncWithHttpInfo (long? limit = null, long? offset = null, string sort = null, List ids = null); #endregion Asynchronous Operations } /// /// Represents a collection of functions to interact with the API endpoints /// - public partial class CRMApi : ICRMApi + public partial class EcommerceApi : IEcommerceApi { private sib_api_v3_sdk.Client.ExceptionFactory _exceptionFactory = (name, response) => null; /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// /// - public CRMApi(String basePath) + public EcommerceApi(String basePath) { this.Configuration = new sib_api_v3_sdk.Client.Configuration { BasePath = basePath }; @@ -602,12 +530,12 @@ public CRMApi(String basePath) } /// - /// Initializes a new instance of the class + /// Initializes a new instance of the class /// using Configuration object /// /// An instance of Configuration /// - public CRMApi(sib_api_v3_sdk.Client.Configuration configuration = null) + public EcommerceApi(sib_api_v3_sdk.Client.Configuration configuration = null) { if (configuration == null) // use the default one in Configuration this.Configuration = sib_api_v3_sdk.Client.Configuration.Default; @@ -681,108 +609,29 @@ public void AddDefaultHeader(string key, string value) } /// - /// Get file details - /// - /// Thrown when fails to make API call - /// File id to get file data. - /// FileData - public FileData CrmFilesIdDataGet (string id) - { - ApiResponse localVarResponse = CrmFilesIdDataGetWithHttpInfo(id); - return localVarResponse.Data; - } - - /// - /// Get file details - /// - /// Thrown when fails to make API call - /// File id to get file data. - /// ApiResponse of FileData - public ApiResponse< FileData > CrmFilesIdDataGetWithHttpInfo (string id) - { - // verify the required parameter 'id' is set - if (id == null) - throw new ApiException(400, "Missing required parameter 'id' when calling CRMApi->CrmFilesIdDataGet"); - - var localVarPath = "./crm/files/{id}/data"; - var localVarPathParams = new Dictionary(); - var localVarQueryParams = new List>(); - var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); - var localVarFormParams = new Dictionary(); - var localVarFileParams = new Dictionary(); - Object localVarPostBody = null; - - // to determine the Content-Type header - String[] localVarHttpContentTypes = new String[] { - "application/json" - }; - String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); - - // to determine the Accept header - String[] localVarHttpHeaderAccepts = new String[] { - "application/json" - }; - String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); - if (localVarHttpHeaderAccept != null) - localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - - if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter - - // authentication (api-key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) - { - localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); - } - // authentication (partner-key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) - { - localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); - } - - // make the HTTP request - IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, - Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, - localVarPathParams, localVarHttpContentType); - - int localVarStatusCode = (int) localVarResponse.StatusCode; - - if (ExceptionFactory != null) - { - Exception exception = ExceptionFactory("CrmFilesIdDataGet", localVarResponse); - if (exception != null) throw exception; - } - - return new ApiResponse(localVarStatusCode, - localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (FileData) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(FileData))); - } - - /// - /// Get file details + /// Maintains a batch of orders /// /// Thrown when fails to make API call - /// File id to get file data. - /// Task of FileData - public async System.Threading.Tasks.Task CrmFilesIdDataGetAsync (string id) + /// + /// + public void CreateBatchOrder (OrderBatch orderBatch) { - ApiResponse localVarResponse = await CrmFilesIdDataGetAsyncWithHttpInfo(id); - return localVarResponse.Data; - + CreateBatchOrderWithHttpInfo(orderBatch); } /// - /// Get file details + /// Maintains a batch of orders /// /// Thrown when fails to make API call - /// File id to get file data. - /// Task of ApiResponse (FileData) - public async System.Threading.Tasks.Task> CrmFilesIdDataGetAsyncWithHttpInfo (string id) + /// + /// ApiResponse of Object(void) + public ApiResponse CreateBatchOrderWithHttpInfo (OrderBatch orderBatch) { - // verify the required parameter 'id' is set - if (id == null) - throw new ApiException(400, "Missing required parameter 'id' when calling CRMApi->CrmFilesIdDataGet"); + // verify the required parameter 'orderBatch' is set + if (orderBatch == null) + throw new ApiException(400, "Missing required parameter 'orderBatch' when calling EcommerceApi->CreateBatchOrder"); - var localVarPath = "./crm/files/{id}/data"; + var localVarPath = "./orders/status/batch"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -804,84 +653,15 @@ public async System.Threading.Tasks.Task> CrmFilesIdDataGe if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter - - // authentication (api-key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + if (orderBatch != null && orderBatch.GetType() != typeof(byte[])) { - localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + localVarPostBody = this.Configuration.ApiClient.Serialize(orderBatch); // http body (model) parameter } - // authentication (partner-key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) - { - localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); - } - - // make the HTTP request - IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, - Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, - localVarPathParams, localVarHttpContentType); - - int localVarStatusCode = (int) localVarResponse.StatusCode; - - if (ExceptionFactory != null) + else { - Exception exception = ExceptionFactory("CrmFilesIdDataGet", localVarResponse); - if (exception != null) throw exception; + localVarPostBody = orderBatch; // byte array } - return new ApiResponse(localVarStatusCode, - localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (FileData) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(FileData))); - } - - /// - /// Delete a file - /// - /// Thrown when fails to make API call - /// File id to delete. - /// - public void CrmFilesIdDelete (string id) - { - CrmFilesIdDeleteWithHttpInfo(id); - } - - /// - /// Delete a file - /// - /// Thrown when fails to make API call - /// File id to delete. - /// ApiResponse of Object(void) - public ApiResponse CrmFilesIdDeleteWithHttpInfo (string id) - { - // verify the required parameter 'id' is set - if (id == null) - throw new ApiException(400, "Missing required parameter 'id' when calling CRMApi->CrmFilesIdDelete"); - - var localVarPath = "./crm/files/{id}"; - var localVarPathParams = new Dictionary(); - var localVarQueryParams = new List>(); - var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); - var localVarFormParams = new Dictionary(); - var localVarFileParams = new Dictionary(); - Object localVarPostBody = null; - - // to determine the Content-Type header - String[] localVarHttpContentTypes = new String[] { - "application/json" - }; - String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); - - // to determine the Accept header - String[] localVarHttpHeaderAccepts = new String[] { - "application/json" - }; - String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); - if (localVarHttpHeaderAccept != null) - localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - - if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter - // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) { @@ -895,14 +675,14 @@ public ApiResponse CrmFilesIdDeleteWithHttpInfo (string id) // make the HTTP request IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, - Method.DELETE, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("CrmFilesIdDelete", localVarResponse); + Exception exception = ExceptionFactory("CreateBatchOrder", localVarResponse); if (exception != null) throw exception; } @@ -912,30 +692,30 @@ public ApiResponse CrmFilesIdDeleteWithHttpInfo (string id) } /// - /// Delete a file + /// Maintains a batch of orders /// /// Thrown when fails to make API call - /// File id to delete. + /// /// Task of void - public async System.Threading.Tasks.Task CrmFilesIdDeleteAsync (string id) + public async System.Threading.Tasks.Task CreateBatchOrderAsync (OrderBatch orderBatch) { - await CrmFilesIdDeleteAsyncWithHttpInfo(id); + await CreateBatchOrderAsyncWithHttpInfo(orderBatch); } /// - /// Delete a file + /// Maintains a batch of orders /// /// Thrown when fails to make API call - /// File id to delete. + /// /// Task of ApiResponse - public async System.Threading.Tasks.Task> CrmFilesIdDeleteAsyncWithHttpInfo (string id) + public async System.Threading.Tasks.Task> CreateBatchOrderAsyncWithHttpInfo (OrderBatch orderBatch) { - // verify the required parameter 'id' is set - if (id == null) - throw new ApiException(400, "Missing required parameter 'id' when calling CRMApi->CrmFilesIdDelete"); + // verify the required parameter 'orderBatch' is set + if (orderBatch == null) + throw new ApiException(400, "Missing required parameter 'orderBatch' when calling EcommerceApi->CreateBatchOrder"); - var localVarPath = "./crm/files/{id}"; + var localVarPath = "./orders/status/batch"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -957,7 +737,14 @@ public async System.Threading.Tasks.Task> CrmFilesIdDeleteAs if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + if (orderBatch != null && orderBatch.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(orderBatch); // http body (model) parameter + } + else + { + localVarPostBody = orderBatch; // byte array + } // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -972,14 +759,14 @@ public async System.Threading.Tasks.Task> CrmFilesIdDeleteAs // make the HTTP request IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, - Method.DELETE, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("CrmFilesIdDelete", localVarResponse); + Exception exception = ExceptionFactory("CreateBatchOrder", localVarResponse); if (exception != null) throw exception; } @@ -989,29 +776,29 @@ public async System.Threading.Tasks.Task> CrmFilesIdDeleteAs } /// - /// Download a file + /// Maintains every transactional status of the order /// /// Thrown when fails to make API call - /// File id to download. + /// /// - public void CrmFilesIdGet (string id) + public void CreateOrder (Order order) { - CrmFilesIdGetWithHttpInfo(id); + CreateOrderWithHttpInfo(order); } /// - /// Download a file + /// Maintains every transactional status of the order /// /// Thrown when fails to make API call - /// File id to download. + /// /// ApiResponse of Object(void) - public ApiResponse CrmFilesIdGetWithHttpInfo (string id) + public ApiResponse CreateOrderWithHttpInfo (Order order) { - // verify the required parameter 'id' is set - if (id == null) - throw new ApiException(400, "Missing required parameter 'id' when calling CRMApi->CrmFilesIdGet"); + // verify the required parameter 'order' is set + if (order == null) + throw new ApiException(400, "Missing required parameter 'order' when calling EcommerceApi->CreateOrder"); - var localVarPath = "./crm/files/{id}"; + var localVarPath = "./orders/status"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -1033,7 +820,14 @@ public ApiResponse CrmFilesIdGetWithHttpInfo (string id) if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + if (order != null && order.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(order); // http body (model) parameter + } + else + { + localVarPostBody = order; // byte array + } // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -1048,14 +842,14 @@ public ApiResponse CrmFilesIdGetWithHttpInfo (string id) // make the HTTP request IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, - Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("CrmFilesIdGet", localVarResponse); + Exception exception = ExceptionFactory("CreateOrder", localVarResponse); if (exception != null) throw exception; } @@ -1065,30 +859,30 @@ public ApiResponse CrmFilesIdGetWithHttpInfo (string id) } /// - /// Download a file + /// Maintains every transactional status of the order /// /// Thrown when fails to make API call - /// File id to download. + /// /// Task of void - public async System.Threading.Tasks.Task CrmFilesIdGetAsync (string id) + public async System.Threading.Tasks.Task CreateOrderAsync (Order order) { - await CrmFilesIdGetAsyncWithHttpInfo(id); + await CreateOrderAsyncWithHttpInfo(order); } /// - /// Download a file + /// Maintains every transactional status of the order /// /// Thrown when fails to make API call - /// File id to download. + /// /// Task of ApiResponse - public async System.Threading.Tasks.Task> CrmFilesIdGetAsyncWithHttpInfo (string id) + public async System.Threading.Tasks.Task> CreateOrderAsyncWithHttpInfo (Order order) { - // verify the required parameter 'id' is set - if (id == null) - throw new ApiException(400, "Missing required parameter 'id' when calling CRMApi->CrmFilesIdGet"); + // verify the required parameter 'order' is set + if (order == null) + throw new ApiException(400, "Missing required parameter 'order' when calling EcommerceApi->CreateOrder"); - var localVarPath = "./crm/files/{id}"; + var localVarPath = "./orders/status"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -1110,7 +904,14 @@ public async System.Threading.Tasks.Task> CrmFilesIdGetAsync if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + if (order != null && order.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(order); // http body (model) parameter + } + else + { + localVarPostBody = order; // byte array + } // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -1125,14 +926,14 @@ public async System.Threading.Tasks.Task> CrmFilesIdGetAsync // make the HTTP request IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, - Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("CrmFilesIdGet", localVarResponse); + Exception exception = ExceptionFactory("CreateOrder", localVarResponse); if (exception != null) throw exception; } @@ -1142,32 +943,30 @@ public async System.Threading.Tasks.Task> CrmFilesIdGetAsync } /// - /// Upload a file + /// Create the categories in a batch /// /// Thrown when fails to make API call - /// File data to create a file. - /// Deal ids linked to a file (optional) - /// FileData - public FileData CrmFilesPost (System.IO.Stream file, List dealsIds = null) + /// Values to create a batch of categories + /// CreateUpdateBatchCategoryModel + public CreateUpdateBatchCategoryModel CreateUpdateBatchCategory (CreateUpdateBatchCategory createUpdateBatchCategory) { - ApiResponse localVarResponse = CrmFilesPostWithHttpInfo(file, dealsIds); + ApiResponse localVarResponse = CreateUpdateBatchCategoryWithHttpInfo(createUpdateBatchCategory); return localVarResponse.Data; } /// - /// Upload a file + /// Create the categories in a batch /// /// Thrown when fails to make API call - /// File data to create a file. - /// Deal ids linked to a file (optional) - /// ApiResponse of FileData - public ApiResponse< FileData > CrmFilesPostWithHttpInfo (System.IO.Stream file, List dealsIds = null) + /// Values to create a batch of categories + /// ApiResponse of CreateUpdateBatchCategoryModel + public ApiResponse< CreateUpdateBatchCategoryModel > CreateUpdateBatchCategoryWithHttpInfo (CreateUpdateBatchCategory createUpdateBatchCategory) { - // verify the required parameter 'file' is set - if (file == null) - throw new ApiException(400, "Missing required parameter 'file' when calling CRMApi->CrmFilesPost"); + // verify the required parameter 'createUpdateBatchCategory' is set + if (createUpdateBatchCategory == null) + throw new ApiException(400, "Missing required parameter 'createUpdateBatchCategory' when calling EcommerceApi->CreateUpdateBatchCategory"); - var localVarPath = "./crm/files"; + var localVarPath = "./categories/batch"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -1177,7 +976,7 @@ public ApiResponse< FileData > CrmFilesPostWithHttpInfo (System.IO.Stream file, // to determine the Content-Type header String[] localVarHttpContentTypes = new String[] { - "multipart/form-data" + "application/json" }; String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); @@ -1189,90 +988,15 @@ public ApiResponse< FileData > CrmFilesPostWithHttpInfo (System.IO.Stream file, if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (file != null) localVarFileParams.Add("file", this.Configuration.ApiClient.ParameterToFile("file", file)); - if (dealsIds != null) localVarFormParams.Add("dealsIds", this.Configuration.ApiClient.ParameterToString(dealsIds)); // form parameter - - // authentication (api-key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + if (createUpdateBatchCategory != null && createUpdateBatchCategory.GetType() != typeof(byte[])) { - localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + localVarPostBody = this.Configuration.ApiClient.Serialize(createUpdateBatchCategory); // http body (model) parameter } - // authentication (partner-key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) - { - localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); - } - - // make the HTTP request - IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, - Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, - localVarPathParams, localVarHttpContentType); - - int localVarStatusCode = (int) localVarResponse.StatusCode; - - if (ExceptionFactory != null) + else { - Exception exception = ExceptionFactory("CrmFilesPost", localVarResponse); - if (exception != null) throw exception; + localVarPostBody = createUpdateBatchCategory; // byte array } - return new ApiResponse(localVarStatusCode, - localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (FileData) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(FileData))); - } - - /// - /// Upload a file - /// - /// Thrown when fails to make API call - /// File data to create a file. - /// Deal ids linked to a file (optional) - /// Task of FileData - public async System.Threading.Tasks.Task CrmFilesPostAsync (System.IO.Stream file, List dealsIds = null) - { - ApiResponse localVarResponse = await CrmFilesPostAsyncWithHttpInfo(file, dealsIds); - return localVarResponse.Data; - - } - - /// - /// Upload a file - /// - /// Thrown when fails to make API call - /// File data to create a file. - /// Deal ids linked to a file (optional) - /// Task of ApiResponse (FileData) - public async System.Threading.Tasks.Task> CrmFilesPostAsyncWithHttpInfo (System.IO.Stream file, List dealsIds = null) - { - // verify the required parameter 'file' is set - if (file == null) - throw new ApiException(400, "Missing required parameter 'file' when calling CRMApi->CrmFilesPost"); - - var localVarPath = "./crm/files"; - var localVarPathParams = new Dictionary(); - var localVarQueryParams = new List>(); - var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); - var localVarFormParams = new Dictionary(); - var localVarFileParams = new Dictionary(); - Object localVarPostBody = null; - - // to determine the Content-Type header - String[] localVarHttpContentTypes = new String[] { - "multipart/form-data" - }; - String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); - - // to determine the Accept header - String[] localVarHttpHeaderAccepts = new String[] { - "application/json" - }; - String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); - if (localVarHttpHeaderAccept != null) - localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - - if (file != null) localVarFileParams.Add("file", this.Configuration.ApiClient.ParameterToFile("file", file)); - if (dealsIds != null) localVarFormParams.Add("dealsIds", this.Configuration.ApiClient.ParameterToString(dealsIds)); // form parameter - // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) { @@ -1285,7 +1009,7 @@ public async System.Threading.Tasks.Task> CrmFilesPostAsyn } // make the HTTP request - IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); @@ -1293,39 +1017,41 @@ public async System.Threading.Tasks.Task> CrmFilesPostAsyn if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("CrmFilesPost", localVarResponse); + Exception exception = ExceptionFactory("CreateUpdateBatchCategory", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (FileData) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(FileData))); + (CreateUpdateBatchCategoryModel) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(CreateUpdateBatchCategoryModel))); } /// - /// Delete a note + /// Create the categories in a batch /// /// Thrown when fails to make API call - /// Note ID to delete - /// - public void CrmNotesIdDelete (string id) + /// Values to create a batch of categories + /// Task of CreateUpdateBatchCategoryModel + public async System.Threading.Tasks.Task CreateUpdateBatchCategoryAsync (CreateUpdateBatchCategory createUpdateBatchCategory) { - CrmNotesIdDeleteWithHttpInfo(id); + ApiResponse localVarResponse = await CreateUpdateBatchCategoryAsyncWithHttpInfo(createUpdateBatchCategory); + return localVarResponse.Data; + } /// - /// Delete a note + /// Create the categories in a batch /// /// Thrown when fails to make API call - /// Note ID to delete - /// ApiResponse of Object(void) - public ApiResponse CrmNotesIdDeleteWithHttpInfo (string id) + /// Values to create a batch of categories + /// Task of ApiResponse (CreateUpdateBatchCategoryModel) + public async System.Threading.Tasks.Task> CreateUpdateBatchCategoryAsyncWithHttpInfo (CreateUpdateBatchCategory createUpdateBatchCategory) { - // verify the required parameter 'id' is set - if (id == null) - throw new ApiException(400, "Missing required parameter 'id' when calling CRMApi->CrmNotesIdDelete"); + // verify the required parameter 'createUpdateBatchCategory' is set + if (createUpdateBatchCategory == null) + throw new ApiException(400, "Missing required parameter 'createUpdateBatchCategory' when calling EcommerceApi->CreateUpdateBatchCategory"); - var localVarPath = "./crm/notes/{id}"; + var localVarPath = "./categories/batch"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -1347,85 +1073,15 @@ public ApiResponse CrmNotesIdDeleteWithHttpInfo (string id) if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter - - // authentication (api-key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + if (createUpdateBatchCategory != null && createUpdateBatchCategory.GetType() != typeof(byte[])) { - localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + localVarPostBody = this.Configuration.ApiClient.Serialize(createUpdateBatchCategory); // http body (model) parameter } - // authentication (partner-key) required - if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) - { - localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); - } - - // make the HTTP request - IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, - Method.DELETE, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, - localVarPathParams, localVarHttpContentType); - - int localVarStatusCode = (int) localVarResponse.StatusCode; - - if (ExceptionFactory != null) + else { - Exception exception = ExceptionFactory("CrmNotesIdDelete", localVarResponse); - if (exception != null) throw exception; + localVarPostBody = createUpdateBatchCategory; // byte array } - return new ApiResponse(localVarStatusCode, - localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - null); - } - - /// - /// Delete a note - /// - /// Thrown when fails to make API call - /// Note ID to delete - /// Task of void - public async System.Threading.Tasks.Task CrmNotesIdDeleteAsync (string id) - { - await CrmNotesIdDeleteAsyncWithHttpInfo(id); - - } - - /// - /// Delete a note - /// - /// Thrown when fails to make API call - /// Note ID to delete - /// Task of ApiResponse - public async System.Threading.Tasks.Task> CrmNotesIdDeleteAsyncWithHttpInfo (string id) - { - // verify the required parameter 'id' is set - if (id == null) - throw new ApiException(400, "Missing required parameter 'id' when calling CRMApi->CrmNotesIdDelete"); - - var localVarPath = "./crm/notes/{id}"; - var localVarPathParams = new Dictionary(); - var localVarQueryParams = new List>(); - var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); - var localVarFormParams = new Dictionary(); - var localVarFileParams = new Dictionary(); - Object localVarPostBody = null; - - // to determine the Content-Type header - String[] localVarHttpContentTypes = new String[] { - "application/json" - }; - String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); - - // to determine the Accept header - String[] localVarHttpHeaderAccepts = new String[] { - "application/json" - }; - String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); - if (localVarHttpHeaderAccept != null) - localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - - if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter - // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) { @@ -1439,47 +1095,47 @@ public async System.Threading.Tasks.Task> CrmNotesIdDeleteAs // make the HTTP request IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, - Method.DELETE, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("CrmNotesIdDelete", localVarResponse); + Exception exception = ExceptionFactory("CreateUpdateBatchCategory", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - null); + (CreateUpdateBatchCategoryModel) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(CreateUpdateBatchCategoryModel))); } /// - /// Get a note + /// Creates the products in a batch /// /// Thrown when fails to make API call - /// Note ID to get - /// Note - public Note CrmNotesIdGet (string id) + /// Values to create a batch of products + /// CreateUpdateBatchProductsModel + public CreateUpdateBatchProductsModel CreateUpdateBatchProducts (CreateUpdateBatchProducts createUpdateBatchProducts) { - ApiResponse localVarResponse = CrmNotesIdGetWithHttpInfo(id); + ApiResponse localVarResponse = CreateUpdateBatchProductsWithHttpInfo(createUpdateBatchProducts); return localVarResponse.Data; } /// - /// Get a note + /// Creates the products in a batch /// /// Thrown when fails to make API call - /// Note ID to get - /// ApiResponse of Note - public ApiResponse< Note > CrmNotesIdGetWithHttpInfo (string id) + /// Values to create a batch of products + /// ApiResponse of CreateUpdateBatchProductsModel + public ApiResponse< CreateUpdateBatchProductsModel > CreateUpdateBatchProductsWithHttpInfo (CreateUpdateBatchProducts createUpdateBatchProducts) { - // verify the required parameter 'id' is set - if (id == null) - throw new ApiException(400, "Missing required parameter 'id' when calling CRMApi->CrmNotesIdGet"); + // verify the required parameter 'createUpdateBatchProducts' is set + if (createUpdateBatchProducts == null) + throw new ApiException(400, "Missing required parameter 'createUpdateBatchProducts' when calling EcommerceApi->CreateUpdateBatchProducts"); - var localVarPath = "./crm/notes/{id}"; + var localVarPath = "./products/batch"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -1501,7 +1157,14 @@ public ApiResponse< Note > CrmNotesIdGetWithHttpInfo (string id) if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + if (createUpdateBatchProducts != null && createUpdateBatchProducts.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(createUpdateBatchProducts); // http body (model) parameter + } + else + { + localVarPostBody = createUpdateBatchProducts; // byte array + } // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -1516,48 +1179,48 @@ public ApiResponse< Note > CrmNotesIdGetWithHttpInfo (string id) // make the HTTP request IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, - Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("CrmNotesIdGet", localVarResponse); + Exception exception = ExceptionFactory("CreateUpdateBatchProducts", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (Note) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(Note))); + (CreateUpdateBatchProductsModel) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(CreateUpdateBatchProductsModel))); } /// - /// Get a note + /// Creates the products in a batch /// /// Thrown when fails to make API call - /// Note ID to get - /// Task of Note - public async System.Threading.Tasks.Task CrmNotesIdGetAsync (string id) + /// Values to create a batch of products + /// Task of CreateUpdateBatchProductsModel + public async System.Threading.Tasks.Task CreateUpdateBatchProductsAsync (CreateUpdateBatchProducts createUpdateBatchProducts) { - ApiResponse localVarResponse = await CrmNotesIdGetAsyncWithHttpInfo(id); + ApiResponse localVarResponse = await CreateUpdateBatchProductsAsyncWithHttpInfo(createUpdateBatchProducts); return localVarResponse.Data; } /// - /// Get a note + /// Creates the products in a batch /// /// Thrown when fails to make API call - /// Note ID to get - /// Task of ApiResponse (Note) - public async System.Threading.Tasks.Task> CrmNotesIdGetAsyncWithHttpInfo (string id) + /// Values to create a batch of products + /// Task of ApiResponse (CreateUpdateBatchProductsModel) + public async System.Threading.Tasks.Task> CreateUpdateBatchProductsAsyncWithHttpInfo (CreateUpdateBatchProducts createUpdateBatchProducts) { - // verify the required parameter 'id' is set - if (id == null) - throw new ApiException(400, "Missing required parameter 'id' when calling CRMApi->CrmNotesIdGet"); + // verify the required parameter 'createUpdateBatchProducts' is set + if (createUpdateBatchProducts == null) + throw new ApiException(400, "Missing required parameter 'createUpdateBatchProducts' when calling EcommerceApi->CreateUpdateBatchProducts"); - var localVarPath = "./crm/notes/{id}"; + var localVarPath = "./products/batch"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -1579,7 +1242,14 @@ public async System.Threading.Tasks.Task> CrmNotesIdGetAsyncWi if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + if (createUpdateBatchProducts != null && createUpdateBatchProducts.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(createUpdateBatchProducts); // http body (model) parameter + } + else + { + localVarPostBody = createUpdateBatchProducts; // byte array + } // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -1594,52 +1264,47 @@ public async System.Threading.Tasks.Task> CrmNotesIdGetAsyncWi // make the HTTP request IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, - Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("CrmNotesIdGet", localVarResponse); + Exception exception = ExceptionFactory("CreateUpdateBatchProducts", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (Note) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(Note))); + (CreateUpdateBatchProductsModel) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(CreateUpdateBatchProductsModel))); } /// - /// Update a note + /// Create/Update a category /// /// Thrown when fails to make API call - /// Note ID to update - /// Note data to update a note - /// Note - public Note CrmNotesIdPatch (string id, NoteData body) + /// Values to create/update a category + /// CreateCategoryModel + public CreateCategoryModel CreateUpdateCategory (CreateUpdateCategory createUpdateCategory) { - ApiResponse localVarResponse = CrmNotesIdPatchWithHttpInfo(id, body); + ApiResponse localVarResponse = CreateUpdateCategoryWithHttpInfo(createUpdateCategory); return localVarResponse.Data; } /// - /// Update a note + /// Create/Update a category /// /// Thrown when fails to make API call - /// Note ID to update - /// Note data to update a note - /// ApiResponse of Note - public ApiResponse< Note > CrmNotesIdPatchWithHttpInfo (string id, NoteData body) + /// Values to create/update a category + /// ApiResponse of CreateCategoryModel + public ApiResponse< CreateCategoryModel > CreateUpdateCategoryWithHttpInfo (CreateUpdateCategory createUpdateCategory) { - // verify the required parameter 'id' is set - if (id == null) - throw new ApiException(400, "Missing required parameter 'id' when calling CRMApi->CrmNotesIdPatch"); - // verify the required parameter 'body' is set - if (body == null) - throw new ApiException(400, "Missing required parameter 'body' when calling CRMApi->CrmNotesIdPatch"); + // verify the required parameter 'createUpdateCategory' is set + if (createUpdateCategory == null) + throw new ApiException(400, "Missing required parameter 'createUpdateCategory' when calling EcommerceApi->CreateUpdateCategory"); - var localVarPath = "./crm/notes/{id}"; + var localVarPath = "./categories"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -1661,14 +1326,13 @@ public ApiResponse< Note > CrmNotesIdPatchWithHttpInfo (string id, NoteData body if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter - if (body != null && body.GetType() != typeof(byte[])) + if (createUpdateCategory != null && createUpdateCategory.GetType() != typeof(byte[])) { - localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter + localVarPostBody = this.Configuration.ApiClient.Serialize(createUpdateCategory); // http body (model) parameter } else { - localVarPostBody = body; // byte array + localVarPostBody = createUpdateCategory; // byte array } // authentication (api-key) required @@ -1684,53 +1348,48 @@ public ApiResponse< Note > CrmNotesIdPatchWithHttpInfo (string id, NoteData body // make the HTTP request IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, - Method.PATCH, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("CrmNotesIdPatch", localVarResponse); + Exception exception = ExceptionFactory("CreateUpdateCategory", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (Note) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(Note))); + (CreateCategoryModel) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(CreateCategoryModel))); } /// - /// Update a note + /// Create/Update a category /// /// Thrown when fails to make API call - /// Note ID to update - /// Note data to update a note - /// Task of Note - public async System.Threading.Tasks.Task CrmNotesIdPatchAsync (string id, NoteData body) + /// Values to create/update a category + /// Task of CreateCategoryModel + public async System.Threading.Tasks.Task CreateUpdateCategoryAsync (CreateUpdateCategory createUpdateCategory) { - ApiResponse localVarResponse = await CrmNotesIdPatchAsyncWithHttpInfo(id, body); + ApiResponse localVarResponse = await CreateUpdateCategoryAsyncWithHttpInfo(createUpdateCategory); return localVarResponse.Data; } /// - /// Update a note + /// Create/Update a category /// /// Thrown when fails to make API call - /// Note ID to update - /// Note data to update a note - /// Task of ApiResponse (Note) - public async System.Threading.Tasks.Task> CrmNotesIdPatchAsyncWithHttpInfo (string id, NoteData body) + /// Values to create/update a category + /// Task of ApiResponse (CreateCategoryModel) + public async System.Threading.Tasks.Task> CreateUpdateCategoryAsyncWithHttpInfo (CreateUpdateCategory createUpdateCategory) { - // verify the required parameter 'id' is set - if (id == null) - throw new ApiException(400, "Missing required parameter 'id' when calling CRMApi->CrmNotesIdPatch"); - // verify the required parameter 'body' is set - if (body == null) - throw new ApiException(400, "Missing required parameter 'body' when calling CRMApi->CrmNotesIdPatch"); + // verify the required parameter 'createUpdateCategory' is set + if (createUpdateCategory == null) + throw new ApiException(400, "Missing required parameter 'createUpdateCategory' when calling EcommerceApi->CreateUpdateCategory"); - var localVarPath = "./crm/notes/{id}"; + var localVarPath = "./categories"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -1752,14 +1411,13 @@ public async System.Threading.Tasks.Task> CrmNotesIdPatchAsync if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter - if (body != null && body.GetType() != typeof(byte[])) + if (createUpdateCategory != null && createUpdateCategory.GetType() != typeof(byte[])) { - localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter + localVarPostBody = this.Configuration.ApiClient.Serialize(createUpdateCategory); // http body (model) parameter } else { - localVarPostBody = body; // byte array + localVarPostBody = createUpdateCategory; // byte array } // authentication (api-key) required @@ -1775,47 +1433,47 @@ public async System.Threading.Tasks.Task> CrmNotesIdPatchAsync // make the HTTP request IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, - Method.PATCH, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("CrmNotesIdPatch", localVarResponse); + Exception exception = ExceptionFactory("CreateUpdateCategory", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (Note) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(Note))); + (CreateCategoryModel) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(CreateCategoryModel))); } /// - /// Create a note + /// Create/Update a product /// /// Thrown when fails to make API call - /// Note data to create a note. - /// Note - public Note CrmNotesPost (NoteData body) + /// Values to create/update a product + /// CreateProductModel + public CreateProductModel CreateUpdateProduct (CreateUpdateProduct createUpdateProduct) { - ApiResponse localVarResponse = CrmNotesPostWithHttpInfo(body); + ApiResponse localVarResponse = CreateUpdateProductWithHttpInfo(createUpdateProduct); return localVarResponse.Data; } /// - /// Create a note + /// Create/Update a product /// /// Thrown when fails to make API call - /// Note data to create a note. - /// ApiResponse of Note - public ApiResponse< Note > CrmNotesPostWithHttpInfo (NoteData body) + /// Values to create/update a product + /// ApiResponse of CreateProductModel + public ApiResponse< CreateProductModel > CreateUpdateProductWithHttpInfo (CreateUpdateProduct createUpdateProduct) { - // verify the required parameter 'body' is set - if (body == null) - throw new ApiException(400, "Missing required parameter 'body' when calling CRMApi->CrmNotesPost"); + // verify the required parameter 'createUpdateProduct' is set + if (createUpdateProduct == null) + throw new ApiException(400, "Missing required parameter 'createUpdateProduct' when calling EcommerceApi->CreateUpdateProduct"); - var localVarPath = "./crm/notes"; + var localVarPath = "./products"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -1837,13 +1495,13 @@ public ApiResponse< Note > CrmNotesPostWithHttpInfo (NoteData body) if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (body != null && body.GetType() != typeof(byte[])) + if (createUpdateProduct != null && createUpdateProduct.GetType() != typeof(byte[])) { - localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter + localVarPostBody = this.Configuration.ApiClient.Serialize(createUpdateProduct); // http body (model) parameter } else { - localVarPostBody = body; // byte array + localVarPostBody = createUpdateProduct; // byte array } // authentication (api-key) required @@ -1866,41 +1524,41 @@ public ApiResponse< Note > CrmNotesPostWithHttpInfo (NoteData body) if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("CrmNotesPost", localVarResponse); + Exception exception = ExceptionFactory("CreateUpdateProduct", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (Note) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(Note))); + (CreateProductModel) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(CreateProductModel))); } /// - /// Create a note + /// Create/Update a product /// /// Thrown when fails to make API call - /// Note data to create a note. - /// Task of Note - public async System.Threading.Tasks.Task CrmNotesPostAsync (NoteData body) + /// Values to create/update a product + /// Task of CreateProductModel + public async System.Threading.Tasks.Task CreateUpdateProductAsync (CreateUpdateProduct createUpdateProduct) { - ApiResponse localVarResponse = await CrmNotesPostAsyncWithHttpInfo(body); + ApiResponse localVarResponse = await CreateUpdateProductAsyncWithHttpInfo(createUpdateProduct); return localVarResponse.Data; } /// - /// Create a note + /// Create/Update a product /// /// Thrown when fails to make API call - /// Note data to create a note. - /// Task of ApiResponse (Note) - public async System.Threading.Tasks.Task> CrmNotesPostAsyncWithHttpInfo (NoteData body) + /// Values to create/update a product + /// Task of ApiResponse (CreateProductModel) + public async System.Threading.Tasks.Task> CreateUpdateProductAsyncWithHttpInfo (CreateUpdateProduct createUpdateProduct) { - // verify the required parameter 'body' is set - if (body == null) - throw new ApiException(400, "Missing required parameter 'body' when calling CRMApi->CrmNotesPost"); + // verify the required parameter 'createUpdateProduct' is set + if (createUpdateProduct == null) + throw new ApiException(400, "Missing required parameter 'createUpdateProduct' when calling EcommerceApi->CreateUpdateProduct"); - var localVarPath = "./crm/notes"; + var localVarPath = "./products"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -1922,13 +1580,13 @@ public async System.Threading.Tasks.Task> CrmNotesPostAsyncWit if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (body != null && body.GetType() != typeof(byte[])) + if (createUpdateProduct != null && createUpdateProduct.GetType() != typeof(byte[])) { - localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter + localVarPostBody = this.Configuration.ApiClient.Serialize(createUpdateProduct); // http body (model) parameter } else { - localVarPostBody = body; // byte array + localVarPostBody = createUpdateProduct; // byte array } // authentication (api-key) required @@ -1951,39 +1609,34 @@ public async System.Threading.Tasks.Task> CrmNotesPostAsyncWit if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("CrmNotesPost", localVarResponse); + Exception exception = ExceptionFactory("CreateUpdateProduct", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (Note) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(Note))); + (CreateProductModel) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(CreateProductModel))); } /// - /// Delete a task + /// **Fulfills the eCommerce pre-requisites** /// /// Thrown when fails to make API call - /// /// - public void CrmTasksIdDelete (string id) + public void EcommerceActivatePost () { - CrmTasksIdDeleteWithHttpInfo(id); + EcommerceActivatePostWithHttpInfo(); } /// - /// Delete a task + /// **Fulfills the eCommerce pre-requisites** /// /// Thrown when fails to make API call - /// /// ApiResponse of Object(void) - public ApiResponse CrmTasksIdDeleteWithHttpInfo (string id) + public ApiResponse EcommerceActivatePostWithHttpInfo () { - // verify the required parameter 'id' is set - if (id == null) - throw new ApiException(400, "Missing required parameter 'id' when calling CRMApi->CrmTasksIdDelete"); - var localVarPath = "./crm/tasks/{id}"; + var localVarPath = "./ecommerce/activate"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -2005,7 +1658,6 @@ public ApiResponse CrmTasksIdDeleteWithHttpInfo (string id) if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -2020,14 +1672,14 @@ public ApiResponse CrmTasksIdDeleteWithHttpInfo (string id) // make the HTTP request IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, - Method.DELETE, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("CrmTasksIdDelete", localVarResponse); + Exception exception = ExceptionFactory("EcommerceActivatePost", localVarResponse); if (exception != null) throw exception; } @@ -2037,30 +1689,25 @@ public ApiResponse CrmTasksIdDeleteWithHttpInfo (string id) } /// - /// Delete a task + /// **Fulfills the eCommerce pre-requisites** /// /// Thrown when fails to make API call - /// /// Task of void - public async System.Threading.Tasks.Task CrmTasksIdDeleteAsync (string id) + public async System.Threading.Tasks.Task EcommerceActivatePostAsync () { - await CrmTasksIdDeleteAsyncWithHttpInfo(id); + await EcommerceActivatePostAsyncWithHttpInfo(); } /// - /// Delete a task + /// **Fulfills the eCommerce pre-requisites** /// /// Thrown when fails to make API call - /// /// Task of ApiResponse - public async System.Threading.Tasks.Task> CrmTasksIdDeleteAsyncWithHttpInfo (string id) + public async System.Threading.Tasks.Task> EcommerceActivatePostAsyncWithHttpInfo () { - // verify the required parameter 'id' is set - if (id == null) - throw new ApiException(400, "Missing required parameter 'id' when calling CRMApi->CrmTasksIdDelete"); - var localVarPath = "./crm/tasks/{id}"; + var localVarPath = "./ecommerce/activate"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -2082,7 +1729,6 @@ public async System.Threading.Tasks.Task> CrmTasksIdDeleteAs if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -2097,14 +1743,14 @@ public async System.Threading.Tasks.Task> CrmTasksIdDeleteAs // make the HTTP request IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, - Method.DELETE, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("CrmTasksIdDelete", localVarResponse); + Exception exception = ExceptionFactory("EcommerceActivatePost", localVarResponse); if (exception != null) throw exception; } @@ -2114,30 +1760,33 @@ public async System.Threading.Tasks.Task> CrmTasksIdDeleteAs } /// - /// Get a task + /// Return all your categories /// /// Thrown when fails to make API call - /// - /// Task - public Task CrmTasksIdGet (string id) + /// Number of documents per page (optional, default to 50) + /// Index of the first document in the page (optional, default to 0) + /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) + /// Filter by category ids (optional) + /// GetCategories + public GetCategories GetCategories (long? limit = null, long? offset = null, string sort = null, List ids = null) { - ApiResponse localVarResponse = CrmTasksIdGetWithHttpInfo(id); + ApiResponse localVarResponse = GetCategoriesWithHttpInfo(limit, offset, sort, ids); return localVarResponse.Data; } /// - /// Get a task + /// Return all your categories /// /// Thrown when fails to make API call - /// - /// ApiResponse of Task - public ApiResponse< Task > CrmTasksIdGetWithHttpInfo (string id) + /// Number of documents per page (optional, default to 50) + /// Index of the first document in the page (optional, default to 0) + /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) + /// Filter by category ids (optional) + /// ApiResponse of GetCategories + public ApiResponse< GetCategories > GetCategoriesWithHttpInfo (long? limit = null, long? offset = null, string sort = null, List ids = null) { - // verify the required parameter 'id' is set - if (id == null) - throw new ApiException(400, "Missing required parameter 'id' when calling CRMApi->CrmTasksIdGet"); - var localVarPath = "./crm/tasks/{id}"; + var localVarPath = "./categories"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -2159,7 +1808,10 @@ public ApiResponse< Task > CrmTasksIdGetWithHttpInfo (string id) if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + if (limit != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "limit", limit)); // query parameter + if (offset != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "offset", offset)); // query parameter + if (sort != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sort", sort)); // query parameter + if (ids != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("csv", "ids", ids)); // query parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -2181,41 +1833,44 @@ public ApiResponse< Task > CrmTasksIdGetWithHttpInfo (string id) if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("CrmTasksIdGet", localVarResponse); + Exception exception = ExceptionFactory("GetCategories", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (Task) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(Task))); + (GetCategories) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetCategories))); } /// - /// Get a task + /// Return all your categories /// /// Thrown when fails to make API call - /// - /// Task of Task - public async System.Threading.Tasks.Task CrmTasksIdGetAsync (string id) + /// Number of documents per page (optional, default to 50) + /// Index of the first document in the page (optional, default to 0) + /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) + /// Filter by category ids (optional) + /// Task of GetCategories + public async System.Threading.Tasks.Task GetCategoriesAsync (long? limit = null, long? offset = null, string sort = null, List ids = null) { - ApiResponse localVarResponse = await CrmTasksIdGetAsyncWithHttpInfo(id); + ApiResponse localVarResponse = await GetCategoriesAsyncWithHttpInfo(limit, offset, sort, ids); return localVarResponse.Data; } /// - /// Get a task + /// Return all your categories /// /// Thrown when fails to make API call - /// - /// Task of ApiResponse (Task) - public async System.Threading.Tasks.Task> CrmTasksIdGetAsyncWithHttpInfo (string id) + /// Number of documents per page (optional, default to 50) + /// Index of the first document in the page (optional, default to 0) + /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) + /// Filter by category ids (optional) + /// Task of ApiResponse (GetCategories) + public async System.Threading.Tasks.Task> GetCategoriesAsyncWithHttpInfo (long? limit = null, long? offset = null, string sort = null, List ids = null) { - // verify the required parameter 'id' is set - if (id == null) - throw new ApiException(400, "Missing required parameter 'id' when calling CRMApi->CrmTasksIdGet"); - var localVarPath = "./crm/tasks/{id}"; + var localVarPath = "./categories"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -2237,7 +1892,10 @@ public async System.Threading.Tasks.Task> CrmTasksIdGetAsyncWi if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + if (limit != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "limit", limit)); // query parameter + if (offset != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "offset", offset)); // query parameter + if (sort != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sort", sort)); // query parameter + if (ids != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("csv", "ids", ids)); // query parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -2259,45 +1917,40 @@ public async System.Threading.Tasks.Task> CrmTasksIdGetAsyncWi if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("CrmTasksIdGet", localVarResponse); + Exception exception = ExceptionFactory("GetCategories", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (Task) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(Task))); + (GetCategories) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetCategories))); } /// - /// Update a task + /// Get a category details /// /// Thrown when fails to make API call - /// - /// Updated task details. - /// Task - public Task CrmTasksIdPatch (string id, Body1 body) + /// Category ID + /// GetCategoryDetails + public GetCategoryDetails GetCategoryInfo (string id) { - ApiResponse localVarResponse = CrmTasksIdPatchWithHttpInfo(id, body); + ApiResponse localVarResponse = GetCategoryInfoWithHttpInfo(id); return localVarResponse.Data; } /// - /// Update a task + /// Get a category details /// /// Thrown when fails to make API call - /// - /// Updated task details. - /// ApiResponse of Task - public ApiResponse< Task > CrmTasksIdPatchWithHttpInfo (string id, Body1 body) + /// Category ID + /// ApiResponse of GetCategoryDetails + public ApiResponse< GetCategoryDetails > GetCategoryInfoWithHttpInfo (string id) { // verify the required parameter 'id' is set if (id == null) - throw new ApiException(400, "Missing required parameter 'id' when calling CRMApi->CrmTasksIdPatch"); - // verify the required parameter 'body' is set - if (body == null) - throw new ApiException(400, "Missing required parameter 'body' when calling CRMApi->CrmTasksIdPatch"); + throw new ApiException(400, "Missing required parameter 'id' when calling EcommerceApi->GetCategoryInfo"); - var localVarPath = "./crm/tasks/{id}"; + var localVarPath = "./categories/{id}"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -2320,14 +1973,6 @@ public ApiResponse< Task > CrmTasksIdPatchWithHttpInfo (string id, Body1 body) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter - if (body != null && body.GetType() != typeof(byte[])) - { - localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter - } - else - { - localVarPostBody = body; // byte array - } // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -2342,53 +1987,48 @@ public ApiResponse< Task > CrmTasksIdPatchWithHttpInfo (string id, Body1 body) // make the HTTP request IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, - Method.PATCH, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("CrmTasksIdPatch", localVarResponse); + Exception exception = ExceptionFactory("GetCategoryInfo", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (Task) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(Task))); + (GetCategoryDetails) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetCategoryDetails))); } /// - /// Update a task + /// Get a category details /// /// Thrown when fails to make API call - /// - /// Updated task details. - /// Task of Task - public async System.Threading.Tasks.Task CrmTasksIdPatchAsync (string id, Body1 body) + /// Category ID + /// Task of GetCategoryDetails + public async System.Threading.Tasks.Task GetCategoryInfoAsync (string id) { - ApiResponse localVarResponse = await CrmTasksIdPatchAsyncWithHttpInfo(id, body); + ApiResponse localVarResponse = await GetCategoryInfoAsyncWithHttpInfo(id); return localVarResponse.Data; } /// - /// Update a task + /// Get a category details /// /// Thrown when fails to make API call - /// - /// Updated task details. - /// Task of ApiResponse (Task) - public async System.Threading.Tasks.Task> CrmTasksIdPatchAsyncWithHttpInfo (string id, Body1 body) + /// Category ID + /// Task of ApiResponse (GetCategoryDetails) + public async System.Threading.Tasks.Task> GetCategoryInfoAsyncWithHttpInfo (string id) { // verify the required parameter 'id' is set if (id == null) - throw new ApiException(400, "Missing required parameter 'id' when calling CRMApi->CrmTasksIdPatch"); - // verify the required parameter 'body' is set - if (body == null) - throw new ApiException(400, "Missing required parameter 'body' when calling CRMApi->CrmTasksIdPatch"); + throw new ApiException(400, "Missing required parameter 'id' when calling EcommerceApi->GetCategoryInfo"); - var localVarPath = "./crm/tasks/{id}"; + var localVarPath = "./categories/{id}"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -2411,14 +2051,6 @@ public async System.Threading.Tasks.Task> CrmTasksIdPatchAsync localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter - if (body != null && body.GetType() != typeof(byte[])) - { - localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter - } - else - { - localVarPostBody = body; // byte array - } // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -2433,47 +2065,47 @@ public async System.Threading.Tasks.Task> CrmTasksIdPatchAsync // make the HTTP request IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, - Method.PATCH, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("CrmTasksIdPatch", localVarResponse); + Exception exception = ExceptionFactory("GetCategoryInfo", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (Task) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(Task))); + (GetCategoryDetails) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetCategoryDetails))); } /// - /// Create a task + /// Get a product's details /// /// Thrown when fails to make API call - /// Task name. - /// Task - public Task CrmTasksPost (Body body) + /// Product ID + /// GetProductDetails + public GetProductDetails GetProductInfo (string id) { - ApiResponse localVarResponse = CrmTasksPostWithHttpInfo(body); + ApiResponse localVarResponse = GetProductInfoWithHttpInfo(id); return localVarResponse.Data; } /// - /// Create a task + /// Get a product's details /// /// Thrown when fails to make API call - /// Task name. - /// ApiResponse of Task - public ApiResponse< Task > CrmTasksPostWithHttpInfo (Body body) + /// Product ID + /// ApiResponse of GetProductDetails + public ApiResponse< GetProductDetails > GetProductInfoWithHttpInfo (string id) { - // verify the required parameter 'body' is set - if (body == null) - throw new ApiException(400, "Missing required parameter 'body' when calling CRMApi->CrmTasksPost"); + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling EcommerceApi->GetProductInfo"); - var localVarPath = "./crm/tasks"; + var localVarPath = "./products/{id}"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -2495,14 +2127,7 @@ public ApiResponse< Task > CrmTasksPostWithHttpInfo (Body body) if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (body != null && body.GetType() != typeof(byte[])) - { - localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter - } - else - { - localVarPostBody = body; // byte array - } + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -2517,48 +2142,48 @@ public ApiResponse< Task > CrmTasksPostWithHttpInfo (Body body) // make the HTTP request IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, - Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("CrmTasksPost", localVarResponse); + Exception exception = ExceptionFactory("GetProductInfo", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (Task) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(Task))); + (GetProductDetails) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetProductDetails))); } /// - /// Create a task + /// Get a product's details /// /// Thrown when fails to make API call - /// Task name. - /// Task of Task - public async System.Threading.Tasks.Task CrmTasksPostAsync (Body body) + /// Product ID + /// Task of GetProductDetails + public async System.Threading.Tasks.Task GetProductInfoAsync (string id) { - ApiResponse localVarResponse = await CrmTasksPostAsyncWithHttpInfo(body); + ApiResponse localVarResponse = await GetProductInfoAsyncWithHttpInfo(id); return localVarResponse.Data; } /// - /// Create a task + /// Get a product's details /// /// Thrown when fails to make API call - /// Task name. - /// Task of ApiResponse (Task) - public async System.Threading.Tasks.Task> CrmTasksPostAsyncWithHttpInfo (Body body) + /// Product ID + /// Task of ApiResponse (GetProductDetails) + public async System.Threading.Tasks.Task> GetProductInfoAsyncWithHttpInfo (string id) { - // verify the required parameter 'body' is set - if (body == null) - throw new ApiException(400, "Missing required parameter 'body' when calling CRMApi->CrmTasksPost"); + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling EcommerceApi->GetProductInfo"); - var localVarPath = "./crm/tasks"; + var localVarPath = "./products/{id}"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -2580,14 +2205,7 @@ public async System.Threading.Tasks.Task> CrmTasksPostAsyncWit if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (body != null && body.GetType() != typeof(byte[])) - { - localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter - } - else - { - localVarPostBody = body; // byte array - } + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -2602,42 +2220,50 @@ public async System.Threading.Tasks.Task> CrmTasksPostAsyncWit // make the HTTP request IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, - Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("CrmTasksPost", localVarResponse); + Exception exception = ExceptionFactory("GetProductInfo", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (Task) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(Task))); + (GetProductDetails) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetProductDetails))); } /// - /// Get all task types + /// Return all your products /// /// Thrown when fails to make API call - /// TaskTypes - public TaskTypes CrmTasktypesGet () + /// Number of documents per page (optional, default to 50) + /// Index of the first document in the page (optional, default to 0) + /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) + /// Filter by product ids (optional) + /// GetProducts + public GetProducts GetProducts (long? limit = null, long? offset = null, string sort = null, List ids = null) { - ApiResponse localVarResponse = CrmTasktypesGetWithHttpInfo(); + ApiResponse localVarResponse = GetProductsWithHttpInfo(limit, offset, sort, ids); return localVarResponse.Data; } /// - /// Get all task types + /// Return all your products /// /// Thrown when fails to make API call - /// ApiResponse of TaskTypes - public ApiResponse< TaskTypes > CrmTasktypesGetWithHttpInfo () + /// Number of documents per page (optional, default to 50) + /// Index of the first document in the page (optional, default to 0) + /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) + /// Filter by product ids (optional) + /// ApiResponse of GetProducts + public ApiResponse< GetProducts > GetProductsWithHttpInfo (long? limit = null, long? offset = null, string sort = null, List ids = null) { - var localVarPath = "./crm/tasktypes"; + var localVarPath = "./products"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -2659,6 +2285,10 @@ public ApiResponse< TaskTypes > CrmTasktypesGetWithHttpInfo () if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + if (limit != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "limit", limit)); // query parameter + if (offset != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "offset", offset)); // query parameter + if (sort != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sort", sort)); // query parameter + if (ids != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("csv", "ids", ids)); // query parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -2680,36 +2310,44 @@ public ApiResponse< TaskTypes > CrmTasktypesGetWithHttpInfo () if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("CrmTasktypesGet", localVarResponse); + Exception exception = ExceptionFactory("GetProducts", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (TaskTypes) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(TaskTypes))); + (GetProducts) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetProducts))); } /// - /// Get all task types + /// Return all your products /// /// Thrown when fails to make API call - /// Task of TaskTypes - public async System.Threading.Tasks.Task CrmTasktypesGetAsync () + /// Number of documents per page (optional, default to 50) + /// Index of the first document in the page (optional, default to 0) + /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) + /// Filter by product ids (optional) + /// Task of GetProducts + public async System.Threading.Tasks.Task GetProductsAsync (long? limit = null, long? offset = null, string sort = null, List ids = null) { - ApiResponse localVarResponse = await CrmTasktypesGetAsyncWithHttpInfo(); + ApiResponse localVarResponse = await GetProductsAsyncWithHttpInfo(limit, offset, sort, ids); return localVarResponse.Data; } /// - /// Get all task types + /// Return all your products /// /// Thrown when fails to make API call - /// Task of ApiResponse (TaskTypes) - public async System.Threading.Tasks.Task> CrmTasktypesGetAsyncWithHttpInfo () + /// Number of documents per page (optional, default to 50) + /// Index of the first document in the page (optional, default to 0) + /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) + /// Filter by product ids (optional) + /// Task of ApiResponse (GetProducts) + public async System.Threading.Tasks.Task> GetProductsAsyncWithHttpInfo (long? limit = null, long? offset = null, string sort = null, List ids = null) { - var localVarPath = "./crm/tasktypes"; + var localVarPath = "./products"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -2731,6 +2369,10 @@ public async System.Threading.Tasks.Task> CrmTasktypesGet if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + if (limit != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "limit", limit)); // query parameter + if (offset != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "offset", offset)); // query parameter + if (sort != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sort", sort)); // query parameter + if (ids != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("csv", "ids", ids)); // query parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -2752,13 +2394,13 @@ public async System.Threading.Tasks.Task> CrmTasktypesGet if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("CrmTasktypesGet", localVarResponse); + Exception exception = ExceptionFactory("GetProducts", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (TaskTypes) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(TaskTypes))); + (GetProducts) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetProducts))); } } diff --git a/src/sib_api_v3_sdk/Api/EmailCampaignsApi.cs b/src/sib_api_v3_sdk/Api/EmailCampaignsApi.cs index 6f9c6ca..497bea9 100644 --- a/src/sib_api_v3_sdk/Api/EmailCampaignsApi.cs +++ b/src/sib_api_v3_sdk/Api/EmailCampaignsApi.cs @@ -142,7 +142,7 @@ public interface IEmailCampaignsApi : IApiAccessor /// Filter on the status of the campaign (optional) /// Mandatory if endDate is used. Starting (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) /// Mandatory if startDate is used. Ending (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) - /// Number of documents per page (optional, default to 500) + /// Number of documents per page (optional, default to 50) /// Index of the first document in the page (optional, default to 0) /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) /// GetEmailCampaigns @@ -159,7 +159,7 @@ public interface IEmailCampaignsApi : IApiAccessor /// Filter on the status of the campaign (optional) /// Mandatory if endDate is used. Starting (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) /// Mandatory if startDate is used. Ending (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) - /// Number of documents per page (optional, default to 500) + /// Number of documents per page (optional, default to 50) /// Index of the first document in the page (optional, default to 0) /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) /// ApiResponse of GetEmailCampaigns @@ -306,8 +306,8 @@ public interface IEmailCampaignsApi : IApiAccessor /// /// Thrown when fails to make API call /// Parameters to upload an image - /// - void UploadImageToGallery (UploadImageToGallery uploadImage); + /// UploadImageModel + UploadImageModel UploadImageToGallery (UploadImageToGallery uploadImage); /// /// Upload an image to your account's image gallery @@ -317,8 +317,8 @@ public interface IEmailCampaignsApi : IApiAccessor /// /// Thrown when fails to make API call /// Parameters to upload an image - /// ApiResponse of Object(void) - ApiResponse UploadImageToGalleryWithHttpInfo (UploadImageToGallery uploadImage); + /// ApiResponse of UploadImageModel + ApiResponse UploadImageToGalleryWithHttpInfo (UploadImageToGallery uploadImage); #endregion Synchronous Operations #region Asynchronous Operations /// @@ -439,7 +439,7 @@ public interface IEmailCampaignsApi : IApiAccessor /// Filter on the status of the campaign (optional) /// Mandatory if endDate is used. Starting (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) /// Mandatory if startDate is used. Ending (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) - /// Number of documents per page (optional, default to 500) + /// Number of documents per page (optional, default to 50) /// Index of the first document in the page (optional, default to 0) /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) /// Task of GetEmailCampaigns @@ -456,7 +456,7 @@ public interface IEmailCampaignsApi : IApiAccessor /// Filter on the status of the campaign (optional) /// Mandatory if endDate is used. Starting (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) /// Mandatory if startDate is used. Ending (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) - /// Number of documents per page (optional, default to 500) + /// Number of documents per page (optional, default to 50) /// Index of the first document in the page (optional, default to 0) /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) /// Task of ApiResponse (GetEmailCampaigns) @@ -603,8 +603,8 @@ public interface IEmailCampaignsApi : IApiAccessor /// /// Thrown when fails to make API call /// Parameters to upload an image - /// Task of void - System.Threading.Tasks.Task UploadImageToGalleryAsync (UploadImageToGallery uploadImage); + /// Task of UploadImageModel + System.Threading.Tasks.Task UploadImageToGalleryAsync (UploadImageToGallery uploadImage); /// /// Upload an image to your account's image gallery @@ -614,8 +614,8 @@ public interface IEmailCampaignsApi : IApiAccessor /// /// Thrown when fails to make API call /// Parameters to upload an image - /// Task of ApiResponse - System.Threading.Tasks.Task> UploadImageToGalleryAsyncWithHttpInfo (UploadImageToGallery uploadImage); + /// Task of ApiResponse (UploadImageModel) + System.Threading.Tasks.Task> UploadImageToGalleryAsyncWithHttpInfo (UploadImageToGallery uploadImage); #endregion Asynchronous Operations } @@ -1531,7 +1531,7 @@ public async System.Threading.Tasks.Task> GetEmail /// Filter on the status of the campaign (optional) /// Mandatory if endDate is used. Starting (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) /// Mandatory if startDate is used. Ending (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) - /// Number of documents per page (optional, default to 500) + /// Number of documents per page (optional, default to 50) /// Index of the first document in the page (optional, default to 0) /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) /// GetEmailCampaigns @@ -1549,7 +1549,7 @@ public GetEmailCampaigns GetEmailCampaigns (string type = null, string status = /// Filter on the status of the campaign (optional) /// Mandatory if endDate is used. Starting (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) /// Mandatory if startDate is used. Ending (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) - /// Number of documents per page (optional, default to 500) + /// Number of documents per page (optional, default to 50) /// Index of the first document in the page (optional, default to 0) /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) /// ApiResponse of GetEmailCampaigns @@ -1623,7 +1623,7 @@ public ApiResponse< GetEmailCampaigns > GetEmailCampaignsWithHttpInfo (string ty /// Filter on the status of the campaign (optional) /// Mandatory if endDate is used. Starting (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) /// Mandatory if startDate is used. Ending (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) - /// Number of documents per page (optional, default to 500) + /// Number of documents per page (optional, default to 50) /// Index of the first document in the page (optional, default to 0) /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) /// Task of GetEmailCampaigns @@ -1642,7 +1642,7 @@ public async System.Threading.Tasks.Task GetEmailCampaignsAsy /// Filter on the status of the campaign (optional) /// Mandatory if endDate is used. Starting (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) /// Mandatory if startDate is used. Ending (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) - /// Number of documents per page (optional, default to 500) + /// Number of documents per page (optional, default to 50) /// Index of the first document in the page (optional, default to 0) /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) /// Task of ApiResponse (GetEmailCampaigns) @@ -2737,10 +2737,11 @@ public async System.Threading.Tasks.Task> UpdateEmailCampaig /// /// Thrown when fails to make API call /// Parameters to upload an image - /// - public void UploadImageToGallery (UploadImageToGallery uploadImage) + /// UploadImageModel + public UploadImageModel UploadImageToGallery (UploadImageToGallery uploadImage) { - UploadImageToGalleryWithHttpInfo(uploadImage); + ApiResponse localVarResponse = UploadImageToGalleryWithHttpInfo(uploadImage); + return localVarResponse.Data; } /// @@ -2748,8 +2749,8 @@ public void UploadImageToGallery (UploadImageToGallery uploadImage) /// /// Thrown when fails to make API call /// Parameters to upload an image - /// ApiResponse of Object(void) - public ApiResponse UploadImageToGalleryWithHttpInfo (UploadImageToGallery uploadImage) + /// ApiResponse of UploadImageModel + public ApiResponse< UploadImageModel > UploadImageToGalleryWithHttpInfo (UploadImageToGallery uploadImage) { // verify the required parameter 'uploadImage' is set if (uploadImage == null) @@ -2810,9 +2811,9 @@ public ApiResponse UploadImageToGalleryWithHttpInfo (UploadImageToGaller if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - null); + (UploadImageModel) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(UploadImageModel))); } /// @@ -2820,10 +2821,11 @@ public ApiResponse UploadImageToGalleryWithHttpInfo (UploadImageToGaller /// /// Thrown when fails to make API call /// Parameters to upload an image - /// Task of void - public async System.Threading.Tasks.Task UploadImageToGalleryAsync (UploadImageToGallery uploadImage) + /// Task of UploadImageModel + public async System.Threading.Tasks.Task UploadImageToGalleryAsync (UploadImageToGallery uploadImage) { - await UploadImageToGalleryAsyncWithHttpInfo(uploadImage); + ApiResponse localVarResponse = await UploadImageToGalleryAsyncWithHttpInfo(uploadImage); + return localVarResponse.Data; } @@ -2832,8 +2834,8 @@ public async System.Threading.Tasks.Task UploadImageToGalleryAsync (UploadImageT /// /// Thrown when fails to make API call /// Parameters to upload an image - /// Task of ApiResponse - public async System.Threading.Tasks.Task> UploadImageToGalleryAsyncWithHttpInfo (UploadImageToGallery uploadImage) + /// Task of ApiResponse (UploadImageModel) + public async System.Threading.Tasks.Task> UploadImageToGalleryAsyncWithHttpInfo (UploadImageToGallery uploadImage) { // verify the required parameter 'uploadImage' is set if (uploadImage == null) @@ -2894,9 +2896,9 @@ public async System.Threading.Tasks.Task> UploadImageToGalle if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - null); + (UploadImageModel) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(UploadImageModel))); } } diff --git a/src/sib_api_v3_sdk/Api/FilesApi.cs b/src/sib_api_v3_sdk/Api/FilesApi.cs new file mode 100644 index 0000000..97fb2f5 --- /dev/null +++ b/src/sib_api_v3_sdk/Api/FilesApi.cs @@ -0,0 +1,1197 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using RestSharp.Portable; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace sib_api_v3_sdk.Api +{ + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IFilesApi : IApiAccessor + { + #region Synchronous Operations + /// + /// Get all files + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Filter by file entity type (optional) + /// Filter by file entity IDs (optional) + /// dateFrom to date range filter type (timestamp in milliseconds) (optional) + /// dateTo to date range filter type (timestamp in milliseconds) (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// FileList + FileList CrmFilesGet (string entity = null, string entityIds = null, int? dateFrom = null, int? dateTo = null, long? offset = null, long? limit = null, string sort = null); + + /// + /// Get all files + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Filter by file entity type (optional) + /// Filter by file entity IDs (optional) + /// dateFrom to date range filter type (timestamp in milliseconds) (optional) + /// dateTo to date range filter type (timestamp in milliseconds) (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// ApiResponse of FileList + ApiResponse CrmFilesGetWithHttpInfo (string entity = null, string entityIds = null, int? dateFrom = null, int? dateTo = null, long? offset = null, long? limit = null, string sort = null); + /// + /// Get file details + /// + /// + /// + /// + /// Thrown when fails to make API call + /// File id to get file data. + /// FileData + FileData CrmFilesIdDataGet (string id); + + /// + /// Get file details + /// + /// + /// + /// + /// Thrown when fails to make API call + /// File id to get file data. + /// ApiResponse of FileData + ApiResponse CrmFilesIdDataGetWithHttpInfo (string id); + /// + /// Delete a file + /// + /// + /// + /// + /// Thrown when fails to make API call + /// File id to delete. + /// + void CrmFilesIdDelete (string id); + + /// + /// Delete a file + /// + /// + /// + /// + /// Thrown when fails to make API call + /// File id to delete. + /// ApiResponse of Object(void) + ApiResponse CrmFilesIdDeleteWithHttpInfo (string id); + /// + /// Download a file + /// + /// + /// + /// + /// Thrown when fails to make API call + /// File id to download. + /// FileDownloadableLink + FileDownloadableLink CrmFilesIdGet (string id); + + /// + /// Download a file + /// + /// + /// + /// + /// Thrown when fails to make API call + /// File id to download. + /// ApiResponse of FileDownloadableLink + ApiResponse CrmFilesIdGetWithHttpInfo (string id); + /// + /// Upload a file + /// + /// + /// + /// + /// Thrown when fails to make API call + /// File data to create a file. + /// Deal id linked to a file (optional) + /// Contact id linked to a file (optional) + /// Company id linked to a file (optional) + /// FileData + FileData CrmFilesPost (System.IO.Stream file, string dealId = null, long? contactId = null, string companyId = null); + + /// + /// Upload a file + /// + /// + /// + /// + /// Thrown when fails to make API call + /// File data to create a file. + /// Deal id linked to a file (optional) + /// Contact id linked to a file (optional) + /// Company id linked to a file (optional) + /// ApiResponse of FileData + ApiResponse CrmFilesPostWithHttpInfo (System.IO.Stream file, string dealId = null, long? contactId = null, string companyId = null); + #endregion Synchronous Operations + #region Asynchronous Operations + /// + /// Get all files + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Filter by file entity type (optional) + /// Filter by file entity IDs (optional) + /// dateFrom to date range filter type (timestamp in milliseconds) (optional) + /// dateTo to date range filter type (timestamp in milliseconds) (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// Task of FileList + System.Threading.Tasks.Task CrmFilesGetAsync (string entity = null, string entityIds = null, int? dateFrom = null, int? dateTo = null, long? offset = null, long? limit = null, string sort = null); + + /// + /// Get all files + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Filter by file entity type (optional) + /// Filter by file entity IDs (optional) + /// dateFrom to date range filter type (timestamp in milliseconds) (optional) + /// dateTo to date range filter type (timestamp in milliseconds) (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// Task of ApiResponse (FileList) + System.Threading.Tasks.Task> CrmFilesGetAsyncWithHttpInfo (string entity = null, string entityIds = null, int? dateFrom = null, int? dateTo = null, long? offset = null, long? limit = null, string sort = null); + /// + /// Get file details + /// + /// + /// + /// + /// Thrown when fails to make API call + /// File id to get file data. + /// Task of FileData + System.Threading.Tasks.Task CrmFilesIdDataGetAsync (string id); + + /// + /// Get file details + /// + /// + /// + /// + /// Thrown when fails to make API call + /// File id to get file data. + /// Task of ApiResponse (FileData) + System.Threading.Tasks.Task> CrmFilesIdDataGetAsyncWithHttpInfo (string id); + /// + /// Delete a file + /// + /// + /// + /// + /// Thrown when fails to make API call + /// File id to delete. + /// Task of void + System.Threading.Tasks.Task CrmFilesIdDeleteAsync (string id); + + /// + /// Delete a file + /// + /// + /// + /// + /// Thrown when fails to make API call + /// File id to delete. + /// Task of ApiResponse + System.Threading.Tasks.Task> CrmFilesIdDeleteAsyncWithHttpInfo (string id); + /// + /// Download a file + /// + /// + /// + /// + /// Thrown when fails to make API call + /// File id to download. + /// Task of FileDownloadableLink + System.Threading.Tasks.Task CrmFilesIdGetAsync (string id); + + /// + /// Download a file + /// + /// + /// + /// + /// Thrown when fails to make API call + /// File id to download. + /// Task of ApiResponse (FileDownloadableLink) + System.Threading.Tasks.Task> CrmFilesIdGetAsyncWithHttpInfo (string id); + /// + /// Upload a file + /// + /// + /// + /// + /// Thrown when fails to make API call + /// File data to create a file. + /// Deal id linked to a file (optional) + /// Contact id linked to a file (optional) + /// Company id linked to a file (optional) + /// Task of FileData + System.Threading.Tasks.Task CrmFilesPostAsync (System.IO.Stream file, string dealId = null, long? contactId = null, string companyId = null); + + /// + /// Upload a file + /// + /// + /// + /// + /// Thrown when fails to make API call + /// File data to create a file. + /// Deal id linked to a file (optional) + /// Contact id linked to a file (optional) + /// Company id linked to a file (optional) + /// Task of ApiResponse (FileData) + System.Threading.Tasks.Task> CrmFilesPostAsyncWithHttpInfo (System.IO.Stream file, string dealId = null, long? contactId = null, string companyId = null); + #endregion Asynchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public partial class FilesApi : IFilesApi + { + private sib_api_v3_sdk.Client.ExceptionFactory _exceptionFactory = (name, response) => null; + + /// + /// Initializes a new instance of the class. + /// + /// + public FilesApi(String basePath) + { + this.Configuration = new sib_api_v3_sdk.Client.Configuration { BasePath = basePath }; + + ExceptionFactory = sib_api_v3_sdk.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using Configuration object + /// + /// An instance of Configuration + /// + public FilesApi(sib_api_v3_sdk.Client.Configuration configuration = null) + { + if (configuration == null) // use the default one in Configuration + this.Configuration = sib_api_v3_sdk.Client.Configuration.Default; + else + this.Configuration = configuration; + + ExceptionFactory = sib_api_v3_sdk.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Gets the base path of the API client. + /// + /// The base path + public String GetBasePath() + { + return this.Configuration.ApiClient.RestClient.BaseUrl.ToString(); + } + + /// + /// Sets the base path of the API client. + /// + /// The base path + [Obsolete("SetBasePath is deprecated, please do 'Configuration.ApiClient = new ApiClient(\"http://new-path\")' instead.")] + public void SetBasePath(String basePath) + { + // do nothing + } + + /// + /// Gets or sets the configuration object + /// + /// An instance of the Configuration + public sib_api_v3_sdk.Client.Configuration Configuration {get; set;} + + /// + /// Provides a factory method hook for the creation of exceptions. + /// + public sib_api_v3_sdk.Client.ExceptionFactory ExceptionFactory + { + get + { + if (_exceptionFactory != null && _exceptionFactory.GetInvocationList().Length > 1) + { + throw new InvalidOperationException("Multicast delegate for ExceptionFactory is unsupported."); + } + return _exceptionFactory; + } + set { _exceptionFactory = value; } + } + + /// + /// Gets the default header. + /// + /// Dictionary of HTTP header + [Obsolete("DefaultHeader is deprecated, please use Configuration.DefaultHeader instead.")] + public IDictionary DefaultHeader() + { + return new ReadOnlyDictionary(this.Configuration.DefaultHeader); + } + + /// + /// Add default header. + /// + /// Header field name. + /// Header field value. + /// + [Obsolete("AddDefaultHeader is deprecated, please use Configuration.AddDefaultHeader instead.")] + public void AddDefaultHeader(string key, string value) + { + this.Configuration.AddDefaultHeader(key, value); + } + + /// + /// Get all files + /// + /// Thrown when fails to make API call + /// Filter by file entity type (optional) + /// Filter by file entity IDs (optional) + /// dateFrom to date range filter type (timestamp in milliseconds) (optional) + /// dateTo to date range filter type (timestamp in milliseconds) (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// FileList + public FileList CrmFilesGet (string entity = null, string entityIds = null, int? dateFrom = null, int? dateTo = null, long? offset = null, long? limit = null, string sort = null) + { + ApiResponse localVarResponse = CrmFilesGetWithHttpInfo(entity, entityIds, dateFrom, dateTo, offset, limit, sort); + return localVarResponse.Data; + } + + /// + /// Get all files + /// + /// Thrown when fails to make API call + /// Filter by file entity type (optional) + /// Filter by file entity IDs (optional) + /// dateFrom to date range filter type (timestamp in milliseconds) (optional) + /// dateTo to date range filter type (timestamp in milliseconds) (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// ApiResponse of FileList + public ApiResponse< FileList > CrmFilesGetWithHttpInfo (string entity = null, string entityIds = null, int? dateFrom = null, int? dateTo = null, long? offset = null, long? limit = null, string sort = null) + { + + var localVarPath = "./crm/files"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (entity != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "entity", entity)); // query parameter + if (entityIds != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "entityIds", entityIds)); // query parameter + if (dateFrom != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "dateFrom", dateFrom)); // query parameter + if (dateTo != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "dateTo", dateTo)); // query parameter + if (offset != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "offset", offset)); // query parameter + if (limit != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "limit", limit)); // query parameter + if (sort != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sort", sort)); // query parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CrmFilesGet", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (FileList) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(FileList))); + } + + /// + /// Get all files + /// + /// Thrown when fails to make API call + /// Filter by file entity type (optional) + /// Filter by file entity IDs (optional) + /// dateFrom to date range filter type (timestamp in milliseconds) (optional) + /// dateTo to date range filter type (timestamp in milliseconds) (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// Task of FileList + public async System.Threading.Tasks.Task CrmFilesGetAsync (string entity = null, string entityIds = null, int? dateFrom = null, int? dateTo = null, long? offset = null, long? limit = null, string sort = null) + { + ApiResponse localVarResponse = await CrmFilesGetAsyncWithHttpInfo(entity, entityIds, dateFrom, dateTo, offset, limit, sort); + return localVarResponse.Data; + + } + + /// + /// Get all files + /// + /// Thrown when fails to make API call + /// Filter by file entity type (optional) + /// Filter by file entity IDs (optional) + /// dateFrom to date range filter type (timestamp in milliseconds) (optional) + /// dateTo to date range filter type (timestamp in milliseconds) (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// Task of ApiResponse (FileList) + public async System.Threading.Tasks.Task> CrmFilesGetAsyncWithHttpInfo (string entity = null, string entityIds = null, int? dateFrom = null, int? dateTo = null, long? offset = null, long? limit = null, string sort = null) + { + + var localVarPath = "./crm/files"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (entity != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "entity", entity)); // query parameter + if (entityIds != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "entityIds", entityIds)); // query parameter + if (dateFrom != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "dateFrom", dateFrom)); // query parameter + if (dateTo != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "dateTo", dateTo)); // query parameter + if (offset != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "offset", offset)); // query parameter + if (limit != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "limit", limit)); // query parameter + if (sort != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sort", sort)); // query parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CrmFilesGet", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (FileList) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(FileList))); + } + + /// + /// Get file details + /// + /// Thrown when fails to make API call + /// File id to get file data. + /// FileData + public FileData CrmFilesIdDataGet (string id) + { + ApiResponse localVarResponse = CrmFilesIdDataGetWithHttpInfo(id); + return localVarResponse.Data; + } + + /// + /// Get file details + /// + /// Thrown when fails to make API call + /// File id to get file data. + /// ApiResponse of FileData + public ApiResponse< FileData > CrmFilesIdDataGetWithHttpInfo (string id) + { + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling FilesApi->CrmFilesIdDataGet"); + + var localVarPath = "./crm/files/{id}/data"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CrmFilesIdDataGet", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (FileData) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(FileData))); + } + + /// + /// Get file details + /// + /// Thrown when fails to make API call + /// File id to get file data. + /// Task of FileData + public async System.Threading.Tasks.Task CrmFilesIdDataGetAsync (string id) + { + ApiResponse localVarResponse = await CrmFilesIdDataGetAsyncWithHttpInfo(id); + return localVarResponse.Data; + + } + + /// + /// Get file details + /// + /// Thrown when fails to make API call + /// File id to get file data. + /// Task of ApiResponse (FileData) + public async System.Threading.Tasks.Task> CrmFilesIdDataGetAsyncWithHttpInfo (string id) + { + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling FilesApi->CrmFilesIdDataGet"); + + var localVarPath = "./crm/files/{id}/data"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CrmFilesIdDataGet", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (FileData) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(FileData))); + } + + /// + /// Delete a file + /// + /// Thrown when fails to make API call + /// File id to delete. + /// + public void CrmFilesIdDelete (string id) + { + CrmFilesIdDeleteWithHttpInfo(id); + } + + /// + /// Delete a file + /// + /// Thrown when fails to make API call + /// File id to delete. + /// ApiResponse of Object(void) + public ApiResponse CrmFilesIdDeleteWithHttpInfo (string id) + { + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling FilesApi->CrmFilesIdDelete"); + + var localVarPath = "./crm/files/{id}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, + Method.DELETE, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CrmFilesIdDelete", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + null); + } + + /// + /// Delete a file + /// + /// Thrown when fails to make API call + /// File id to delete. + /// Task of void + public async System.Threading.Tasks.Task CrmFilesIdDeleteAsync (string id) + { + await CrmFilesIdDeleteAsyncWithHttpInfo(id); + + } + + /// + /// Delete a file + /// + /// Thrown when fails to make API call + /// File id to delete. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> CrmFilesIdDeleteAsyncWithHttpInfo (string id) + { + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling FilesApi->CrmFilesIdDelete"); + + var localVarPath = "./crm/files/{id}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + Method.DELETE, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CrmFilesIdDelete", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + null); + } + + /// + /// Download a file + /// + /// Thrown when fails to make API call + /// File id to download. + /// FileDownloadableLink + public FileDownloadableLink CrmFilesIdGet (string id) + { + ApiResponse localVarResponse = CrmFilesIdGetWithHttpInfo(id); + return localVarResponse.Data; + } + + /// + /// Download a file + /// + /// Thrown when fails to make API call + /// File id to download. + /// ApiResponse of FileDownloadableLink + public ApiResponse< FileDownloadableLink > CrmFilesIdGetWithHttpInfo (string id) + { + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling FilesApi->CrmFilesIdGet"); + + var localVarPath = "./crm/files/{id}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CrmFilesIdGet", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (FileDownloadableLink) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(FileDownloadableLink))); + } + + /// + /// Download a file + /// + /// Thrown when fails to make API call + /// File id to download. + /// Task of FileDownloadableLink + public async System.Threading.Tasks.Task CrmFilesIdGetAsync (string id) + { + ApiResponse localVarResponse = await CrmFilesIdGetAsyncWithHttpInfo(id); + return localVarResponse.Data; + + } + + /// + /// Download a file + /// + /// Thrown when fails to make API call + /// File id to download. + /// Task of ApiResponse (FileDownloadableLink) + public async System.Threading.Tasks.Task> CrmFilesIdGetAsyncWithHttpInfo (string id) + { + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling FilesApi->CrmFilesIdGet"); + + var localVarPath = "./crm/files/{id}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CrmFilesIdGet", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (FileDownloadableLink) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(FileDownloadableLink))); + } + + /// + /// Upload a file + /// + /// Thrown when fails to make API call + /// File data to create a file. + /// Deal id linked to a file (optional) + /// Contact id linked to a file (optional) + /// Company id linked to a file (optional) + /// FileData + public FileData CrmFilesPost (System.IO.Stream file, string dealId = null, long? contactId = null, string companyId = null) + { + ApiResponse localVarResponse = CrmFilesPostWithHttpInfo(file, dealId, contactId, companyId); + return localVarResponse.Data; + } + + /// + /// Upload a file + /// + /// Thrown when fails to make API call + /// File data to create a file. + /// Deal id linked to a file (optional) + /// Contact id linked to a file (optional) + /// Company id linked to a file (optional) + /// ApiResponse of FileData + public ApiResponse< FileData > CrmFilesPostWithHttpInfo (System.IO.Stream file, string dealId = null, long? contactId = null, string companyId = null) + { + // verify the required parameter 'file' is set + if (file == null) + throw new ApiException(400, "Missing required parameter 'file' when calling FilesApi->CrmFilesPost"); + + var localVarPath = "./crm/files"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "multipart/form-data" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (file != null) localVarFileParams.Add("file", this.Configuration.ApiClient.ParameterToFile("file", file)); + if (dealId != null) localVarFormParams.Add("dealId", this.Configuration.ApiClient.ParameterToString(dealId)); // form parameter + if (contactId != null) localVarFormParams.Add("contactId", this.Configuration.ApiClient.ParameterToString(contactId)); // form parameter + if (companyId != null) localVarFormParams.Add("companyId", this.Configuration.ApiClient.ParameterToString(companyId)); // form parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, + Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CrmFilesPost", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (FileData) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(FileData))); + } + + /// + /// Upload a file + /// + /// Thrown when fails to make API call + /// File data to create a file. + /// Deal id linked to a file (optional) + /// Contact id linked to a file (optional) + /// Company id linked to a file (optional) + /// Task of FileData + public async System.Threading.Tasks.Task CrmFilesPostAsync (System.IO.Stream file, string dealId = null, long? contactId = null, string companyId = null) + { + ApiResponse localVarResponse = await CrmFilesPostAsyncWithHttpInfo(file, dealId, contactId, companyId); + return localVarResponse.Data; + + } + + /// + /// Upload a file + /// + /// Thrown when fails to make API call + /// File data to create a file. + /// Deal id linked to a file (optional) + /// Contact id linked to a file (optional) + /// Company id linked to a file (optional) + /// Task of ApiResponse (FileData) + public async System.Threading.Tasks.Task> CrmFilesPostAsyncWithHttpInfo (System.IO.Stream file, string dealId = null, long? contactId = null, string companyId = null) + { + // verify the required parameter 'file' is set + if (file == null) + throw new ApiException(400, "Missing required parameter 'file' when calling FilesApi->CrmFilesPost"); + + var localVarPath = "./crm/files"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "multipart/form-data" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (file != null) localVarFileParams.Add("file", this.Configuration.ApiClient.ParameterToFile("file", file)); + if (dealId != null) localVarFormParams.Add("dealId", this.Configuration.ApiClient.ParameterToString(dealId)); // form parameter + if (contactId != null) localVarFormParams.Add("contactId", this.Configuration.ApiClient.ParameterToString(contactId)); // form parameter + if (companyId != null) localVarFormParams.Add("companyId", this.Configuration.ApiClient.ParameterToString(companyId)); // form parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CrmFilesPost", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (FileData) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(FileData))); + } + + } +} diff --git a/src/sib_api_v3_sdk/Api/InboundParsingApi.cs b/src/sib_api_v3_sdk/Api/InboundParsingApi.cs index 2b599bc..a1ca2be 100644 --- a/src/sib_api_v3_sdk/Api/InboundParsingApi.cs +++ b/src/sib_api_v3_sdk/Api/InboundParsingApi.cs @@ -25,6 +25,27 @@ public interface IInboundParsingApi : IApiAccessor { #region Synchronous Operations /// + /// Retrieve inbound attachment with download token. + /// + /// + /// This endpoint will retrieve inbound attachment with download token. + /// + /// Thrown when fails to make API call + /// Token to fetch a particular attachment + /// System.IO.Stream + System.IO.Stream GetInboundEmailAttachment (string downloadToken); + + /// + /// Retrieve inbound attachment with download token. + /// + /// + /// This endpoint will retrieve inbound attachment with download token. + /// + /// Thrown when fails to make API call + /// Token to fetch a particular attachment + /// ApiResponse of System.IO.Stream + ApiResponse GetInboundEmailAttachmentWithHttpInfo (string downloadToken); + /// /// Get the list of all the events for the received emails. /// /// @@ -79,6 +100,27 @@ public interface IInboundParsingApi : IApiAccessor #endregion Synchronous Operations #region Asynchronous Operations /// + /// Retrieve inbound attachment with download token. + /// + /// + /// This endpoint will retrieve inbound attachment with download token. + /// + /// Thrown when fails to make API call + /// Token to fetch a particular attachment + /// Task of System.IO.Stream + System.Threading.Tasks.Task GetInboundEmailAttachmentAsync (string downloadToken); + + /// + /// Retrieve inbound attachment with download token. + /// + /// + /// This endpoint will retrieve inbound attachment with download token. + /// + /// Thrown when fails to make API call + /// Token to fetch a particular attachment + /// Task of ApiResponse (System.IO.Stream) + System.Threading.Tasks.Task> GetInboundEmailAttachmentAsyncWithHttpInfo (string downloadToken); + /// /// Get the list of all the events for the received emails. /// /// @@ -230,6 +272,161 @@ public void AddDefaultHeader(string key, string value) this.Configuration.AddDefaultHeader(key, value); } + /// + /// Retrieve inbound attachment with download token. This endpoint will retrieve inbound attachment with download token. + /// + /// Thrown when fails to make API call + /// Token to fetch a particular attachment + /// System.IO.Stream + public System.IO.Stream GetInboundEmailAttachment (string downloadToken) + { + ApiResponse localVarResponse = GetInboundEmailAttachmentWithHttpInfo(downloadToken); + return localVarResponse.Data; + } + + /// + /// Retrieve inbound attachment with download token. This endpoint will retrieve inbound attachment with download token. + /// + /// Thrown when fails to make API call + /// Token to fetch a particular attachment + /// ApiResponse of System.IO.Stream + public ApiResponse< System.IO.Stream > GetInboundEmailAttachmentWithHttpInfo (string downloadToken) + { + // verify the required parameter 'downloadToken' is set + if (downloadToken == null) + throw new ApiException(400, "Missing required parameter 'downloadToken' when calling InboundParsingApi->GetInboundEmailAttachment"); + + var localVarPath = "./inbound/attachments/{downloadToken}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (downloadToken != null) localVarPathParams.Add("downloadToken", this.Configuration.ApiClient.ParameterToString(downloadToken)); // path parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("GetInboundEmailAttachment", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (System.IO.Stream) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(System.IO.Stream))); + } + + /// + /// Retrieve inbound attachment with download token. This endpoint will retrieve inbound attachment with download token. + /// + /// Thrown when fails to make API call + /// Token to fetch a particular attachment + /// Task of System.IO.Stream + public async System.Threading.Tasks.Task GetInboundEmailAttachmentAsync (string downloadToken) + { + ApiResponse localVarResponse = await GetInboundEmailAttachmentAsyncWithHttpInfo(downloadToken); + return localVarResponse.Data; + + } + + /// + /// Retrieve inbound attachment with download token. This endpoint will retrieve inbound attachment with download token. + /// + /// Thrown when fails to make API call + /// Token to fetch a particular attachment + /// Task of ApiResponse (System.IO.Stream) + public async System.Threading.Tasks.Task> GetInboundEmailAttachmentAsyncWithHttpInfo (string downloadToken) + { + // verify the required parameter 'downloadToken' is set + if (downloadToken == null) + throw new ApiException(400, "Missing required parameter 'downloadToken' when calling InboundParsingApi->GetInboundEmailAttachment"); + + var localVarPath = "./inbound/attachments/{downloadToken}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (downloadToken != null) localVarPathParams.Add("downloadToken", this.Configuration.ApiClient.ParameterToString(downloadToken)); // path parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("GetInboundEmailAttachment", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (System.IO.Stream) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(System.IO.Stream))); + } + /// /// Get the list of all the events for the received emails. This endpoint will show the list of all the events for the received emails. /// diff --git a/src/sib_api_v3_sdk/Api/MasterAccountApi.cs b/src/sib_api_v3_sdk/Api/MasterAccountApi.cs index 45fdbb0..215d805 100644 --- a/src/sib_api_v3_sdk/Api/MasterAccountApi.cs +++ b/src/sib_api_v3_sdk/Api/MasterAccountApi.cs @@ -50,7 +50,7 @@ public interface IMasterAccountApi : IApiAccessor /// This endpoint will provide the list all the sub-accounts of the master account. /// /// Thrown when fails to make API call - /// Page number of sub-accounts listing + /// Index of the first sub-account in the page /// Number of sub-accounts to be displayed on each page /// SubAccountsResponse SubAccountsResponse CorporateSubAccountGet (int? offset, int? limit); @@ -62,7 +62,7 @@ public interface IMasterAccountApi : IApiAccessor /// This endpoint will provide the list all the sub-accounts of the master account. /// /// Thrown when fails to make API call - /// Page number of sub-accounts listing + /// Index of the first sub-account in the page /// Number of sub-accounts to be displayed on each page /// ApiResponse of SubAccountsResponse ApiResponse CorporateSubAccountGetWithHttpInfo (int? offset, int? limit); @@ -91,7 +91,7 @@ public interface IMasterAccountApi : IApiAccessor /// Get sub-account details /// /// - /// This endpoint will provide the details of specified sub-account organization + /// This endpoint will provide the details for the specified sub-account company /// /// Thrown when fails to make API call /// Id of the sub-account organization @@ -102,7 +102,7 @@ public interface IMasterAccountApi : IApiAccessor /// Get sub-account details /// /// - /// This endpoint will provide the details of specified sub-account organization + /// This endpoint will provide the details for the specified sub-account company /// /// Thrown when fails to make API call /// Id of the sub-account organization @@ -132,6 +132,27 @@ public interface IMasterAccountApi : IApiAccessor /// ApiResponse of Object(void) ApiResponse CorporateSubAccountIdPlanPutWithHttpInfo (long? id, SubAccountUpdatePlanRequest updatePlanDetails); /// + /// Create an API key for a sub-account + /// + /// + /// This endpoint will generate an API v3 key for a sub account + /// + /// Thrown when fails to make API call + /// Values to generate API key for sub-account + /// CreateApiKeyResponse + CreateApiKeyResponse CorporateSubAccountKeyPost (CreateApiKeyRequest createApiKeyRequest); + + /// + /// Create an API key for a sub-account + /// + /// + /// This endpoint will generate an API v3 key for a sub account + /// + /// Thrown when fails to make API call + /// Values to generate API key for sub-account + /// ApiResponse of CreateApiKeyResponse + ApiResponse CorporateSubAccountKeyPostWithHttpInfo (CreateApiKeyRequest createApiKeyRequest); + /// /// Create a new sub-account under a master account. /// /// @@ -139,8 +160,8 @@ public interface IMasterAccountApi : IApiAccessor /// /// Thrown when fails to make API call /// values to create new sub-account - /// CreateModel - CreateModel CorporateSubAccountPost (CreateSubAccount subAccountCreate); + /// CreateSubAccountResponse + CreateSubAccountResponse CorporateSubAccountPost (CreateSubAccount subAccountCreate); /// /// Create a new sub-account under a master account. @@ -150,13 +171,13 @@ public interface IMasterAccountApi : IApiAccessor /// /// Thrown when fails to make API call /// values to create new sub-account - /// ApiResponse of CreateModel - ApiResponse CorporateSubAccountPostWithHttpInfo (CreateSubAccount subAccountCreate); + /// ApiResponse of CreateSubAccountResponse + ApiResponse CorporateSubAccountPostWithHttpInfo (CreateSubAccount subAccountCreate); /// /// Generate SSO token to access Sendinblue /// /// - /// This endpoint generates an sso token to authenticate and access a sub-account of the master using the account endpoint https://app.sendinblue.com/account/login/sub-account/sso/[token], where [token] will be replaced with actual token. + /// This endpoint generates an sso token to authenticate and access a sub-account of the master using the account endpoint https://account-app.sendinblue.com/account/login/sub-account/sso/[token], where [token] will be replaced by the actual token. /// /// Thrown when fails to make API call /// Values to generate SSO token for sub-account @@ -167,7 +188,7 @@ public interface IMasterAccountApi : IApiAccessor /// Generate SSO token to access Sendinblue /// /// - /// This endpoint generates an sso token to authenticate and access a sub-account of the master using the account endpoint https://app.sendinblue.com/account/login/sub-account/sso/[token], where [token] will be replaced with actual token. + /// This endpoint generates an sso token to authenticate and access a sub-account of the master using the account endpoint https://account-app.sendinblue.com/account/login/sub-account/sso/[token], where [token] will be replaced by the actual token. /// /// Thrown when fails to make API call /// Values to generate SSO token for sub-account @@ -201,7 +222,7 @@ public interface IMasterAccountApi : IApiAccessor /// This endpoint will provide the list all the sub-accounts of the master account. /// /// Thrown when fails to make API call - /// Page number of sub-accounts listing + /// Index of the first sub-account in the page /// Number of sub-accounts to be displayed on each page /// Task of SubAccountsResponse System.Threading.Tasks.Task CorporateSubAccountGetAsync (int? offset, int? limit); @@ -213,7 +234,7 @@ public interface IMasterAccountApi : IApiAccessor /// This endpoint will provide the list all the sub-accounts of the master account. /// /// Thrown when fails to make API call - /// Page number of sub-accounts listing + /// Index of the first sub-account in the page /// Number of sub-accounts to be displayed on each page /// Task of ApiResponse (SubAccountsResponse) System.Threading.Tasks.Task> CorporateSubAccountGetAsyncWithHttpInfo (int? offset, int? limit); @@ -242,7 +263,7 @@ public interface IMasterAccountApi : IApiAccessor /// Get sub-account details /// /// - /// This endpoint will provide the details of specified sub-account organization + /// This endpoint will provide the details for the specified sub-account company /// /// Thrown when fails to make API call /// Id of the sub-account organization @@ -253,7 +274,7 @@ public interface IMasterAccountApi : IApiAccessor /// Get sub-account details /// /// - /// This endpoint will provide the details of specified sub-account organization + /// This endpoint will provide the details for the specified sub-account company /// /// Thrown when fails to make API call /// Id of the sub-account organization @@ -283,6 +304,27 @@ public interface IMasterAccountApi : IApiAccessor /// Task of ApiResponse System.Threading.Tasks.Task> CorporateSubAccountIdPlanPutAsyncWithHttpInfo (long? id, SubAccountUpdatePlanRequest updatePlanDetails); /// + /// Create an API key for a sub-account + /// + /// + /// This endpoint will generate an API v3 key for a sub account + /// + /// Thrown when fails to make API call + /// Values to generate API key for sub-account + /// Task of CreateApiKeyResponse + System.Threading.Tasks.Task CorporateSubAccountKeyPostAsync (CreateApiKeyRequest createApiKeyRequest); + + /// + /// Create an API key for a sub-account + /// + /// + /// This endpoint will generate an API v3 key for a sub account + /// + /// Thrown when fails to make API call + /// Values to generate API key for sub-account + /// Task of ApiResponse (CreateApiKeyResponse) + System.Threading.Tasks.Task> CorporateSubAccountKeyPostAsyncWithHttpInfo (CreateApiKeyRequest createApiKeyRequest); + /// /// Create a new sub-account under a master account. /// /// @@ -290,8 +332,8 @@ public interface IMasterAccountApi : IApiAccessor /// /// Thrown when fails to make API call /// values to create new sub-account - /// Task of CreateModel - System.Threading.Tasks.Task CorporateSubAccountPostAsync (CreateSubAccount subAccountCreate); + /// Task of CreateSubAccountResponse + System.Threading.Tasks.Task CorporateSubAccountPostAsync (CreateSubAccount subAccountCreate); /// /// Create a new sub-account under a master account. @@ -301,13 +343,13 @@ public interface IMasterAccountApi : IApiAccessor /// /// Thrown when fails to make API call /// values to create new sub-account - /// Task of ApiResponse (CreateModel) - System.Threading.Tasks.Task> CorporateSubAccountPostAsyncWithHttpInfo (CreateSubAccount subAccountCreate); + /// Task of ApiResponse (CreateSubAccountResponse) + System.Threading.Tasks.Task> CorporateSubAccountPostAsyncWithHttpInfo (CreateSubAccount subAccountCreate); /// /// Generate SSO token to access Sendinblue /// /// - /// This endpoint generates an sso token to authenticate and access a sub-account of the master using the account endpoint https://app.sendinblue.com/account/login/sub-account/sso/[token], where [token] will be replaced with actual token. + /// This endpoint generates an sso token to authenticate and access a sub-account of the master using the account endpoint https://account-app.sendinblue.com/account/login/sub-account/sso/[token], where [token] will be replaced by the actual token. /// /// Thrown when fails to make API call /// Values to generate SSO token for sub-account @@ -318,7 +360,7 @@ public interface IMasterAccountApi : IApiAccessor /// Generate SSO token to access Sendinblue /// /// - /// This endpoint generates an sso token to authenticate and access a sub-account of the master using the account endpoint https://app.sendinblue.com/account/login/sub-account/sso/[token], where [token] will be replaced with actual token. + /// This endpoint generates an sso token to authenticate and access a sub-account of the master using the account endpoint https://account-app.sendinblue.com/account/login/sub-account/sso/[token], where [token] will be replaced by the actual token. /// /// Thrown when fails to make API call /// Values to generate SSO token for sub-account @@ -571,7 +613,7 @@ public async System.Threading.Tasks.Task> Cor /// Get the list of all the sub-accounts of the master account. This endpoint will provide the list all the sub-accounts of the master account. /// /// Thrown when fails to make API call - /// Page number of sub-accounts listing + /// Index of the first sub-account in the page /// Number of sub-accounts to be displayed on each page /// SubAccountsResponse public SubAccountsResponse CorporateSubAccountGet (int? offset, int? limit) @@ -584,7 +626,7 @@ public SubAccountsResponse CorporateSubAccountGet (int? offset, int? limit) /// Get the list of all the sub-accounts of the master account. This endpoint will provide the list all the sub-accounts of the master account. /// /// Thrown when fails to make API call - /// Page number of sub-accounts listing + /// Index of the first sub-account in the page /// Number of sub-accounts to be displayed on each page /// ApiResponse of SubAccountsResponse public ApiResponse< SubAccountsResponse > CorporateSubAccountGetWithHttpInfo (int? offset, int? limit) @@ -654,7 +696,7 @@ public ApiResponse< SubAccountsResponse > CorporateSubAccountGetWithHttpInfo (in /// Get the list of all the sub-accounts of the master account. This endpoint will provide the list all the sub-accounts of the master account. /// /// Thrown when fails to make API call - /// Page number of sub-accounts listing + /// Index of the first sub-account in the page /// Number of sub-accounts to be displayed on each page /// Task of SubAccountsResponse public async System.Threading.Tasks.Task CorporateSubAccountGetAsync (int? offset, int? limit) @@ -668,7 +710,7 @@ public async System.Threading.Tasks.Task CorporateSubAccoun /// Get the list of all the sub-accounts of the master account. This endpoint will provide the list all the sub-accounts of the master account. /// /// Thrown when fails to make API call - /// Page number of sub-accounts listing + /// Index of the first sub-account in the page /// Number of sub-accounts to be displayed on each page /// Task of ApiResponse (SubAccountsResponse) public async System.Threading.Tasks.Task> CorporateSubAccountGetAsyncWithHttpInfo (int? offset, int? limit) @@ -888,7 +930,7 @@ public async System.Threading.Tasks.Task> CorporateSubAccoun } /// - /// Get sub-account details This endpoint will provide the details of specified sub-account organization + /// Get sub-account details This endpoint will provide the details for the specified sub-account company /// /// Thrown when fails to make API call /// Id of the sub-account organization @@ -900,7 +942,7 @@ public SubAccountDetailsResponse CorporateSubAccountIdGet (long? id) } /// - /// Get sub-account details This endpoint will provide the details of specified sub-account organization + /// Get sub-account details This endpoint will provide the details for the specified sub-account company /// /// Thrown when fails to make API call /// Id of the sub-account organization @@ -965,7 +1007,7 @@ public ApiResponse< SubAccountDetailsResponse > CorporateSubAccountIdGetWithHttp } /// - /// Get sub-account details This endpoint will provide the details of specified sub-account organization + /// Get sub-account details This endpoint will provide the details for the specified sub-account company /// /// Thrown when fails to make API call /// Id of the sub-account organization @@ -978,7 +1020,7 @@ public async System.Threading.Tasks.Task CorporateSub } /// - /// Get sub-account details This endpoint will provide the details of specified sub-account organization + /// Get sub-account details This endpoint will provide the details for the specified sub-account company /// /// Thrown when fails to make API call /// Id of the sub-account organization @@ -1221,15 +1263,184 @@ public async System.Threading.Tasks.Task> CorporateSubAccoun null); } + /// + /// Create an API key for a sub-account This endpoint will generate an API v3 key for a sub account + /// + /// Thrown when fails to make API call + /// Values to generate API key for sub-account + /// CreateApiKeyResponse + public CreateApiKeyResponse CorporateSubAccountKeyPost (CreateApiKeyRequest createApiKeyRequest) + { + ApiResponse localVarResponse = CorporateSubAccountKeyPostWithHttpInfo(createApiKeyRequest); + return localVarResponse.Data; + } + + /// + /// Create an API key for a sub-account This endpoint will generate an API v3 key for a sub account + /// + /// Thrown when fails to make API call + /// Values to generate API key for sub-account + /// ApiResponse of CreateApiKeyResponse + public ApiResponse< CreateApiKeyResponse > CorporateSubAccountKeyPostWithHttpInfo (CreateApiKeyRequest createApiKeyRequest) + { + // verify the required parameter 'createApiKeyRequest' is set + if (createApiKeyRequest == null) + throw new ApiException(400, "Missing required parameter 'createApiKeyRequest' when calling MasterAccountApi->CorporateSubAccountKeyPost"); + + var localVarPath = "./corporate/subAccount/key"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (createApiKeyRequest != null && createApiKeyRequest.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(createApiKeyRequest); // http body (model) parameter + } + else + { + localVarPostBody = createApiKeyRequest; // byte array + } + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, + Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CorporateSubAccountKeyPost", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (CreateApiKeyResponse) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(CreateApiKeyResponse))); + } + + /// + /// Create an API key for a sub-account This endpoint will generate an API v3 key for a sub account + /// + /// Thrown when fails to make API call + /// Values to generate API key for sub-account + /// Task of CreateApiKeyResponse + public async System.Threading.Tasks.Task CorporateSubAccountKeyPostAsync (CreateApiKeyRequest createApiKeyRequest) + { + ApiResponse localVarResponse = await CorporateSubAccountKeyPostAsyncWithHttpInfo(createApiKeyRequest); + return localVarResponse.Data; + + } + + /// + /// Create an API key for a sub-account This endpoint will generate an API v3 key for a sub account + /// + /// Thrown when fails to make API call + /// Values to generate API key for sub-account + /// Task of ApiResponse (CreateApiKeyResponse) + public async System.Threading.Tasks.Task> CorporateSubAccountKeyPostAsyncWithHttpInfo (CreateApiKeyRequest createApiKeyRequest) + { + // verify the required parameter 'createApiKeyRequest' is set + if (createApiKeyRequest == null) + throw new ApiException(400, "Missing required parameter 'createApiKeyRequest' when calling MasterAccountApi->CorporateSubAccountKeyPost"); + + var localVarPath = "./corporate/subAccount/key"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (createApiKeyRequest != null && createApiKeyRequest.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(createApiKeyRequest); // http body (model) parameter + } + else + { + localVarPostBody = createApiKeyRequest; // byte array + } + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CorporateSubAccountKeyPost", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (CreateApiKeyResponse) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(CreateApiKeyResponse))); + } + /// /// Create a new sub-account under a master account. This endpoint will create a new sub-account under a master account /// /// Thrown when fails to make API call /// values to create new sub-account - /// CreateModel - public CreateModel CorporateSubAccountPost (CreateSubAccount subAccountCreate) + /// CreateSubAccountResponse + public CreateSubAccountResponse CorporateSubAccountPost (CreateSubAccount subAccountCreate) { - ApiResponse localVarResponse = CorporateSubAccountPostWithHttpInfo(subAccountCreate); + ApiResponse localVarResponse = CorporateSubAccountPostWithHttpInfo(subAccountCreate); return localVarResponse.Data; } @@ -1238,8 +1449,8 @@ public CreateModel CorporateSubAccountPost (CreateSubAccount subAccountCreate) /// /// Thrown when fails to make API call /// values to create new sub-account - /// ApiResponse of CreateModel - public ApiResponse< CreateModel > CorporateSubAccountPostWithHttpInfo (CreateSubAccount subAccountCreate) + /// ApiResponse of CreateSubAccountResponse + public ApiResponse< CreateSubAccountResponse > CorporateSubAccountPostWithHttpInfo (CreateSubAccount subAccountCreate) { // verify the required parameter 'subAccountCreate' is set if (subAccountCreate == null) @@ -1300,9 +1511,9 @@ public ApiResponse< CreateModel > CorporateSubAccountPostWithHttpInfo (CreateSub if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (CreateModel) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(CreateModel))); + (CreateSubAccountResponse) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(CreateSubAccountResponse))); } /// @@ -1310,10 +1521,10 @@ public ApiResponse< CreateModel > CorporateSubAccountPostWithHttpInfo (CreateSub /// /// Thrown when fails to make API call /// values to create new sub-account - /// Task of CreateModel - public async System.Threading.Tasks.Task CorporateSubAccountPostAsync (CreateSubAccount subAccountCreate) + /// Task of CreateSubAccountResponse + public async System.Threading.Tasks.Task CorporateSubAccountPostAsync (CreateSubAccount subAccountCreate) { - ApiResponse localVarResponse = await CorporateSubAccountPostAsyncWithHttpInfo(subAccountCreate); + ApiResponse localVarResponse = await CorporateSubAccountPostAsyncWithHttpInfo(subAccountCreate); return localVarResponse.Data; } @@ -1323,8 +1534,8 @@ public async System.Threading.Tasks.Task CorporateSubAccountPostAsy /// /// Thrown when fails to make API call /// values to create new sub-account - /// Task of ApiResponse (CreateModel) - public async System.Threading.Tasks.Task> CorporateSubAccountPostAsyncWithHttpInfo (CreateSubAccount subAccountCreate) + /// Task of ApiResponse (CreateSubAccountResponse) + public async System.Threading.Tasks.Task> CorporateSubAccountPostAsyncWithHttpInfo (CreateSubAccount subAccountCreate) { // verify the required parameter 'subAccountCreate' is set if (subAccountCreate == null) @@ -1385,13 +1596,13 @@ public async System.Threading.Tasks.Task> CorporateSubA if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (CreateModel) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(CreateModel))); + (CreateSubAccountResponse) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(CreateSubAccountResponse))); } /// - /// Generate SSO token to access Sendinblue This endpoint generates an sso token to authenticate and access a sub-account of the master using the account endpoint https://app.sendinblue.com/account/login/sub-account/sso/[token], where [token] will be replaced with actual token. + /// Generate SSO token to access Sendinblue This endpoint generates an sso token to authenticate and access a sub-account of the master using the account endpoint https://account-app.sendinblue.com/account/login/sub-account/sso/[token], where [token] will be replaced by the actual token. /// /// Thrown when fails to make API call /// Values to generate SSO token for sub-account @@ -1403,7 +1614,7 @@ public GetSsoToken CorporateSubAccountSsoTokenPost (SsoTokenRequest ssoTokenRequ } /// - /// Generate SSO token to access Sendinblue This endpoint generates an sso token to authenticate and access a sub-account of the master using the account endpoint https://app.sendinblue.com/account/login/sub-account/sso/[token], where [token] will be replaced with actual token. + /// Generate SSO token to access Sendinblue This endpoint generates an sso token to authenticate and access a sub-account of the master using the account endpoint https://account-app.sendinblue.com/account/login/sub-account/sso/[token], where [token] will be replaced by the actual token. /// /// Thrown when fails to make API call /// Values to generate SSO token for sub-account @@ -1475,7 +1686,7 @@ public ApiResponse< GetSsoToken > CorporateSubAccountSsoTokenPostWithHttpInfo (S } /// - /// Generate SSO token to access Sendinblue This endpoint generates an sso token to authenticate and access a sub-account of the master using the account endpoint https://app.sendinblue.com/account/login/sub-account/sso/[token], where [token] will be replaced with actual token. + /// Generate SSO token to access Sendinblue This endpoint generates an sso token to authenticate and access a sub-account of the master using the account endpoint https://account-app.sendinblue.com/account/login/sub-account/sso/[token], where [token] will be replaced by the actual token. /// /// Thrown when fails to make API call /// Values to generate SSO token for sub-account @@ -1488,7 +1699,7 @@ public async System.Threading.Tasks.Task CorporateSubAccountSsoToke } /// - /// Generate SSO token to access Sendinblue This endpoint generates an sso token to authenticate and access a sub-account of the master using the account endpoint https://app.sendinblue.com/account/login/sub-account/sso/[token], where [token] will be replaced with actual token. + /// Generate SSO token to access Sendinblue This endpoint generates an sso token to authenticate and access a sub-account of the master using the account endpoint https://account-app.sendinblue.com/account/login/sub-account/sso/[token], where [token] will be replaced by the actual token. /// /// Thrown when fails to make API call /// Values to generate SSO token for sub-account diff --git a/src/sib_api_v3_sdk/Api/AttributesApi.cs b/src/sib_api_v3_sdk/Api/NotesApi.cs similarity index 51% rename from src/sib_api_v3_sdk/Api/AttributesApi.cs rename to src/sib_api_v3_sdk/Api/NotesApi.cs index ffa4a8e..23c8782 100644 --- a/src/sib_api_v3_sdk/Api/AttributesApi.cs +++ b/src/sib_api_v3_sdk/Api/NotesApi.cs @@ -21,210 +21,264 @@ namespace sib_api_v3_sdk.Api /// /// Represents a collection of functions to interact with the API endpoints /// - public interface IAttributesApi : IApiAccessor + public interface INotesApi : IApiAccessor { #region Synchronous Operations /// - /// Create contact attribute + /// Get all notes /// /// /// /// /// Thrown when fails to make API call - /// Category of the attribute - /// Name of the attribute - /// Values to create an attribute - /// - void CreateAttribute (string attributeCategory, string attributeName, CreateAttribute createAttribute); + /// Filter by note entity type (optional) + /// Filter by note entity IDs (optional) + /// dateFrom to date range filter type (timestamp in milliseconds) (optional) + /// dateTo to date range filter type (timestamp in milliseconds) (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// NoteList + NoteList CrmNotesGet (string entity = null, string entityIds = null, int? dateFrom = null, int? dateTo = null, long? offset = null, long? limit = null, string sort = null); /// - /// Create contact attribute + /// Get all notes /// /// /// /// /// Thrown when fails to make API call - /// Category of the attribute - /// Name of the attribute - /// Values to create an attribute - /// ApiResponse of Object(void) - ApiResponse CreateAttributeWithHttpInfo (string attributeCategory, string attributeName, CreateAttribute createAttribute); + /// Filter by note entity type (optional) + /// Filter by note entity IDs (optional) + /// dateFrom to date range filter type (timestamp in milliseconds) (optional) + /// dateTo to date range filter type (timestamp in milliseconds) (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// ApiResponse of NoteList + ApiResponse CrmNotesGetWithHttpInfo (string entity = null, string entityIds = null, int? dateFrom = null, int? dateTo = null, long? offset = null, long? limit = null, string sort = null); /// - /// Delete an attribute + /// Delete a note /// /// /// /// /// Thrown when fails to make API call - /// Category of the attribute - /// Name of the existing attribute + /// Note ID to delete /// - void DeleteAttribute (string attributeCategory, string attributeName); + void CrmNotesIdDelete (string id); /// - /// Delete an attribute + /// Delete a note /// /// /// /// /// Thrown when fails to make API call - /// Category of the attribute - /// Name of the existing attribute + /// Note ID to delete /// ApiResponse of Object(void) - ApiResponse DeleteAttributeWithHttpInfo (string attributeCategory, string attributeName); + ApiResponse CrmNotesIdDeleteWithHttpInfo (string id); /// - /// List all attributes + /// Get a note /// /// /// /// /// Thrown when fails to make API call - /// GetAttributes - GetAttributes GetAttributes (); + /// Note ID to get + /// Note + Note CrmNotesIdGet (string id); /// - /// List all attributes + /// Get a note /// /// /// /// /// Thrown when fails to make API call - /// ApiResponse of GetAttributes - ApiResponse GetAttributesWithHttpInfo (); + /// Note ID to get + /// ApiResponse of Note + ApiResponse CrmNotesIdGetWithHttpInfo (string id); /// - /// Update contact attribute + /// Update a note /// /// /// /// /// Thrown when fails to make API call - /// Category of the attribute - /// Name of the existing attribute - /// Values to update an attribute + /// Note ID to update + /// Note data to update a note /// - void UpdateAttribute (string attributeCategory, string attributeName, UpdateAttribute updateAttribute); + void CrmNotesIdPatch (string id, NoteData body); /// - /// Update contact attribute + /// Update a note /// /// /// /// /// Thrown when fails to make API call - /// Category of the attribute - /// Name of the existing attribute - /// Values to update an attribute + /// Note ID to update + /// Note data to update a note /// ApiResponse of Object(void) - ApiResponse UpdateAttributeWithHttpInfo (string attributeCategory, string attributeName, UpdateAttribute updateAttribute); + ApiResponse CrmNotesIdPatchWithHttpInfo (string id, NoteData body); + /// + /// Create a note + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Note data to create a note. + /// NoteId + NoteId CrmNotesPost (NoteData body); + + /// + /// Create a note + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Note data to create a note. + /// ApiResponse of NoteId + ApiResponse CrmNotesPostWithHttpInfo (NoteData body); #endregion Synchronous Operations #region Asynchronous Operations /// - /// Create contact attribute + /// Get all notes /// /// /// /// /// Thrown when fails to make API call - /// Category of the attribute - /// Name of the attribute - /// Values to create an attribute - /// Task of void - System.Threading.Tasks.Task CreateAttributeAsync (string attributeCategory, string attributeName, CreateAttribute createAttribute); + /// Filter by note entity type (optional) + /// Filter by note entity IDs (optional) + /// dateFrom to date range filter type (timestamp in milliseconds) (optional) + /// dateTo to date range filter type (timestamp in milliseconds) (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// Task of NoteList + System.Threading.Tasks.Task CrmNotesGetAsync (string entity = null, string entityIds = null, int? dateFrom = null, int? dateTo = null, long? offset = null, long? limit = null, string sort = null); /// - /// Create contact attribute + /// Get all notes /// /// /// /// /// Thrown when fails to make API call - /// Category of the attribute - /// Name of the attribute - /// Values to create an attribute - /// Task of ApiResponse - System.Threading.Tasks.Task> CreateAttributeAsyncWithHttpInfo (string attributeCategory, string attributeName, CreateAttribute createAttribute); + /// Filter by note entity type (optional) + /// Filter by note entity IDs (optional) + /// dateFrom to date range filter type (timestamp in milliseconds) (optional) + /// dateTo to date range filter type (timestamp in milliseconds) (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// Task of ApiResponse (NoteList) + System.Threading.Tasks.Task> CrmNotesGetAsyncWithHttpInfo (string entity = null, string entityIds = null, int? dateFrom = null, int? dateTo = null, long? offset = null, long? limit = null, string sort = null); /// - /// Delete an attribute + /// Delete a note /// /// /// /// /// Thrown when fails to make API call - /// Category of the attribute - /// Name of the existing attribute + /// Note ID to delete /// Task of void - System.Threading.Tasks.Task DeleteAttributeAsync (string attributeCategory, string attributeName); + System.Threading.Tasks.Task CrmNotesIdDeleteAsync (string id); /// - /// Delete an attribute + /// Delete a note /// /// /// /// /// Thrown when fails to make API call - /// Category of the attribute - /// Name of the existing attribute + /// Note ID to delete /// Task of ApiResponse - System.Threading.Tasks.Task> DeleteAttributeAsyncWithHttpInfo (string attributeCategory, string attributeName); + System.Threading.Tasks.Task> CrmNotesIdDeleteAsyncWithHttpInfo (string id); /// - /// List all attributes + /// Get a note /// /// /// /// /// Thrown when fails to make API call - /// Task of GetAttributes - System.Threading.Tasks.Task GetAttributesAsync (); + /// Note ID to get + /// Task of Note + System.Threading.Tasks.Task CrmNotesIdGetAsync (string id); /// - /// List all attributes + /// Get a note /// /// /// /// /// Thrown when fails to make API call - /// Task of ApiResponse (GetAttributes) - System.Threading.Tasks.Task> GetAttributesAsyncWithHttpInfo (); + /// Note ID to get + /// Task of ApiResponse (Note) + System.Threading.Tasks.Task> CrmNotesIdGetAsyncWithHttpInfo (string id); /// - /// Update contact attribute + /// Update a note /// /// /// /// /// Thrown when fails to make API call - /// Category of the attribute - /// Name of the existing attribute - /// Values to update an attribute + /// Note ID to update + /// Note data to update a note /// Task of void - System.Threading.Tasks.Task UpdateAttributeAsync (string attributeCategory, string attributeName, UpdateAttribute updateAttribute); + System.Threading.Tasks.Task CrmNotesIdPatchAsync (string id, NoteData body); /// - /// Update contact attribute + /// Update a note /// /// /// /// /// Thrown when fails to make API call - /// Category of the attribute - /// Name of the existing attribute - /// Values to update an attribute + /// Note ID to update + /// Note data to update a note /// Task of ApiResponse - System.Threading.Tasks.Task> UpdateAttributeAsyncWithHttpInfo (string attributeCategory, string attributeName, UpdateAttribute updateAttribute); + System.Threading.Tasks.Task> CrmNotesIdPatchAsyncWithHttpInfo (string id, NoteData body); + /// + /// Create a note + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Note data to create a note. + /// Task of NoteId + System.Threading.Tasks.Task CrmNotesPostAsync (NoteData body); + + /// + /// Create a note + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Note data to create a note. + /// Task of ApiResponse (NoteId) + System.Threading.Tasks.Task> CrmNotesPostAsyncWithHttpInfo (NoteData body); #endregion Asynchronous Operations } /// /// Represents a collection of functions to interact with the API endpoints /// - public partial class AttributesApi : IAttributesApi + public partial class NotesApi : INotesApi { private sib_api_v3_sdk.Client.ExceptionFactory _exceptionFactory = (name, response) => null; /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// /// - public AttributesApi(String basePath) + public NotesApi(String basePath) { this.Configuration = new sib_api_v3_sdk.Client.Configuration { BasePath = basePath }; @@ -232,12 +286,12 @@ public AttributesApi(String basePath) } /// - /// Initializes a new instance of the class + /// Initializes a new instance of the class /// using Configuration object /// /// An instance of Configuration /// - public AttributesApi(sib_api_v3_sdk.Client.Configuration configuration = null) + public NotesApi(sib_api_v3_sdk.Client.Configuration configuration = null) { if (configuration == null) // use the default one in Configuration this.Configuration = sib_api_v3_sdk.Client.Configuration.Default; @@ -311,39 +365,39 @@ public void AddDefaultHeader(string key, string value) } /// - /// Create contact attribute + /// Get all notes /// /// Thrown when fails to make API call - /// Category of the attribute - /// Name of the attribute - /// Values to create an attribute - /// - public void CreateAttribute (string attributeCategory, string attributeName, CreateAttribute createAttribute) + /// Filter by note entity type (optional) + /// Filter by note entity IDs (optional) + /// dateFrom to date range filter type (timestamp in milliseconds) (optional) + /// dateTo to date range filter type (timestamp in milliseconds) (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// NoteList + public NoteList CrmNotesGet (string entity = null, string entityIds = null, int? dateFrom = null, int? dateTo = null, long? offset = null, long? limit = null, string sort = null) { - CreateAttributeWithHttpInfo(attributeCategory, attributeName, createAttribute); + ApiResponse localVarResponse = CrmNotesGetWithHttpInfo(entity, entityIds, dateFrom, dateTo, offset, limit, sort); + return localVarResponse.Data; } /// - /// Create contact attribute + /// Get all notes /// /// Thrown when fails to make API call - /// Category of the attribute - /// Name of the attribute - /// Values to create an attribute - /// ApiResponse of Object(void) - public ApiResponse CreateAttributeWithHttpInfo (string attributeCategory, string attributeName, CreateAttribute createAttribute) + /// Filter by note entity type (optional) + /// Filter by note entity IDs (optional) + /// dateFrom to date range filter type (timestamp in milliseconds) (optional) + /// dateTo to date range filter type (timestamp in milliseconds) (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// ApiResponse of NoteList + public ApiResponse< NoteList > CrmNotesGetWithHttpInfo (string entity = null, string entityIds = null, int? dateFrom = null, int? dateTo = null, long? offset = null, long? limit = null, string sort = null) { - // verify the required parameter 'attributeCategory' is set - if (attributeCategory == null) - throw new ApiException(400, "Missing required parameter 'attributeCategory' when calling AttributesApi->CreateAttribute"); - // verify the required parameter 'attributeName' is set - if (attributeName == null) - throw new ApiException(400, "Missing required parameter 'attributeName' when calling AttributesApi->CreateAttribute"); - // verify the required parameter 'createAttribute' is set - if (createAttribute == null) - throw new ApiException(400, "Missing required parameter 'createAttribute' when calling AttributesApi->CreateAttribute"); - - var localVarPath = "./contacts/attributes/{attributeCategory}/{attributeName}"; + + var localVarPath = "./crm/notes"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -365,16 +419,13 @@ public ApiResponse CreateAttributeWithHttpInfo (string attributeCategory if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (attributeCategory != null) localVarPathParams.Add("attributeCategory", this.Configuration.ApiClient.ParameterToString(attributeCategory)); // path parameter - if (attributeName != null) localVarPathParams.Add("attributeName", this.Configuration.ApiClient.ParameterToString(attributeName)); // path parameter - if (createAttribute != null && createAttribute.GetType() != typeof(byte[])) - { - localVarPostBody = this.Configuration.ApiClient.Serialize(createAttribute); // http body (model) parameter - } - else - { - localVarPostBody = createAttribute; // byte array - } + if (entity != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "entity", entity)); // query parameter + if (entityIds != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "entityIds", entityIds)); // query parameter + if (dateFrom != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "dateFrom", dateFrom)); // query parameter + if (dateTo != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "dateTo", dateTo)); // query parameter + if (offset != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "offset", offset)); // query parameter + if (limit != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "limit", limit)); // query parameter + if (sort != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sort", sort)); // query parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -389,57 +440,57 @@ public ApiResponse CreateAttributeWithHttpInfo (string attributeCategory // make the HTTP request IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, - Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("CreateAttribute", localVarResponse); + Exception exception = ExceptionFactory("CrmNotesGet", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - null); + (NoteList) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(NoteList))); } /// - /// Create contact attribute + /// Get all notes /// /// Thrown when fails to make API call - /// Category of the attribute - /// Name of the attribute - /// Values to create an attribute - /// Task of void - public async System.Threading.Tasks.Task CreateAttributeAsync (string attributeCategory, string attributeName, CreateAttribute createAttribute) + /// Filter by note entity type (optional) + /// Filter by note entity IDs (optional) + /// dateFrom to date range filter type (timestamp in milliseconds) (optional) + /// dateTo to date range filter type (timestamp in milliseconds) (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// Task of NoteList + public async System.Threading.Tasks.Task CrmNotesGetAsync (string entity = null, string entityIds = null, int? dateFrom = null, int? dateTo = null, long? offset = null, long? limit = null, string sort = null) { - await CreateAttributeAsyncWithHttpInfo(attributeCategory, attributeName, createAttribute); + ApiResponse localVarResponse = await CrmNotesGetAsyncWithHttpInfo(entity, entityIds, dateFrom, dateTo, offset, limit, sort); + return localVarResponse.Data; } /// - /// Create contact attribute + /// Get all notes /// /// Thrown when fails to make API call - /// Category of the attribute - /// Name of the attribute - /// Values to create an attribute - /// Task of ApiResponse - public async System.Threading.Tasks.Task> CreateAttributeAsyncWithHttpInfo (string attributeCategory, string attributeName, CreateAttribute createAttribute) + /// Filter by note entity type (optional) + /// Filter by note entity IDs (optional) + /// dateFrom to date range filter type (timestamp in milliseconds) (optional) + /// dateTo to date range filter type (timestamp in milliseconds) (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// Task of ApiResponse (NoteList) + public async System.Threading.Tasks.Task> CrmNotesGetAsyncWithHttpInfo (string entity = null, string entityIds = null, int? dateFrom = null, int? dateTo = null, long? offset = null, long? limit = null, string sort = null) { - // verify the required parameter 'attributeCategory' is set - if (attributeCategory == null) - throw new ApiException(400, "Missing required parameter 'attributeCategory' when calling AttributesApi->CreateAttribute"); - // verify the required parameter 'attributeName' is set - if (attributeName == null) - throw new ApiException(400, "Missing required parameter 'attributeName' when calling AttributesApi->CreateAttribute"); - // verify the required parameter 'createAttribute' is set - if (createAttribute == null) - throw new ApiException(400, "Missing required parameter 'createAttribute' when calling AttributesApi->CreateAttribute"); - - var localVarPath = "./contacts/attributes/{attributeCategory}/{attributeName}"; + + var localVarPath = "./crm/notes"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -461,16 +512,13 @@ public async System.Threading.Tasks.Task> CreateAttributeAsy if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (attributeCategory != null) localVarPathParams.Add("attributeCategory", this.Configuration.ApiClient.ParameterToString(attributeCategory)); // path parameter - if (attributeName != null) localVarPathParams.Add("attributeName", this.Configuration.ApiClient.ParameterToString(attributeName)); // path parameter - if (createAttribute != null && createAttribute.GetType() != typeof(byte[])) - { - localVarPostBody = this.Configuration.ApiClient.Serialize(createAttribute); // http body (model) parameter - } - else - { - localVarPostBody = createAttribute; // byte array - } + if (entity != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "entity", entity)); // query parameter + if (entityIds != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "entityIds", entityIds)); // query parameter + if (dateFrom != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "dateFrom", dateFrom)); // query parameter + if (dateTo != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "dateTo", dateTo)); // query parameter + if (offset != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "offset", offset)); // query parameter + if (limit != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "limit", limit)); // query parameter + if (sort != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sort", sort)); // query parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -485,51 +533,46 @@ public async System.Threading.Tasks.Task> CreateAttributeAsy // make the HTTP request IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, - Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("CreateAttribute", localVarResponse); + Exception exception = ExceptionFactory("CrmNotesGet", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - null); + (NoteList) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(NoteList))); } /// - /// Delete an attribute + /// Delete a note /// /// Thrown when fails to make API call - /// Category of the attribute - /// Name of the existing attribute + /// Note ID to delete /// - public void DeleteAttribute (string attributeCategory, string attributeName) + public void CrmNotesIdDelete (string id) { - DeleteAttributeWithHttpInfo(attributeCategory, attributeName); + CrmNotesIdDeleteWithHttpInfo(id); } /// - /// Delete an attribute + /// Delete a note /// /// Thrown when fails to make API call - /// Category of the attribute - /// Name of the existing attribute + /// Note ID to delete /// ApiResponse of Object(void) - public ApiResponse DeleteAttributeWithHttpInfo (string attributeCategory, string attributeName) + public ApiResponse CrmNotesIdDeleteWithHttpInfo (string id) { - // verify the required parameter 'attributeCategory' is set - if (attributeCategory == null) - throw new ApiException(400, "Missing required parameter 'attributeCategory' when calling AttributesApi->DeleteAttribute"); - // verify the required parameter 'attributeName' is set - if (attributeName == null) - throw new ApiException(400, "Missing required parameter 'attributeName' when calling AttributesApi->DeleteAttribute"); - - var localVarPath = "./contacts/attributes/{attributeCategory}/{attributeName}"; + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling NotesApi->CrmNotesIdDelete"); + + var localVarPath = "./crm/notes/{id}"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -551,8 +594,7 @@ public ApiResponse DeleteAttributeWithHttpInfo (string attributeCategory if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (attributeCategory != null) localVarPathParams.Add("attributeCategory", this.Configuration.ApiClient.ParameterToString(attributeCategory)); // path parameter - if (attributeName != null) localVarPathParams.Add("attributeName", this.Configuration.ApiClient.ParameterToString(attributeName)); // path parameter + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -574,7 +616,7 @@ public ApiResponse DeleteAttributeWithHttpInfo (string attributeCategory if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("DeleteAttribute", localVarResponse); + Exception exception = ExceptionFactory("CrmNotesIdDelete", localVarResponse); if (exception != null) throw exception; } @@ -584,35 +626,30 @@ public ApiResponse DeleteAttributeWithHttpInfo (string attributeCategory } /// - /// Delete an attribute + /// Delete a note /// /// Thrown when fails to make API call - /// Category of the attribute - /// Name of the existing attribute + /// Note ID to delete /// Task of void - public async System.Threading.Tasks.Task DeleteAttributeAsync (string attributeCategory, string attributeName) + public async System.Threading.Tasks.Task CrmNotesIdDeleteAsync (string id) { - await DeleteAttributeAsyncWithHttpInfo(attributeCategory, attributeName); + await CrmNotesIdDeleteAsyncWithHttpInfo(id); } /// - /// Delete an attribute + /// Delete a note /// /// Thrown when fails to make API call - /// Category of the attribute - /// Name of the existing attribute + /// Note ID to delete /// Task of ApiResponse - public async System.Threading.Tasks.Task> DeleteAttributeAsyncWithHttpInfo (string attributeCategory, string attributeName) + public async System.Threading.Tasks.Task> CrmNotesIdDeleteAsyncWithHttpInfo (string id) { - // verify the required parameter 'attributeCategory' is set - if (attributeCategory == null) - throw new ApiException(400, "Missing required parameter 'attributeCategory' when calling AttributesApi->DeleteAttribute"); - // verify the required parameter 'attributeName' is set - if (attributeName == null) - throw new ApiException(400, "Missing required parameter 'attributeName' when calling AttributesApi->DeleteAttribute"); - - var localVarPath = "./contacts/attributes/{attributeCategory}/{attributeName}"; + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling NotesApi->CrmNotesIdDelete"); + + var localVarPath = "./crm/notes/{id}"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -634,8 +671,7 @@ public async System.Threading.Tasks.Task> DeleteAttributeAsy if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (attributeCategory != null) localVarPathParams.Add("attributeCategory", this.Configuration.ApiClient.ParameterToString(attributeCategory)); // path parameter - if (attributeName != null) localVarPathParams.Add("attributeName", this.Configuration.ApiClient.ParameterToString(attributeName)); // path parameter + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -657,7 +693,7 @@ public async System.Threading.Tasks.Task> DeleteAttributeAsy if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("DeleteAttribute", localVarResponse); + Exception exception = ExceptionFactory("CrmNotesIdDelete", localVarResponse); if (exception != null) throw exception; } @@ -667,25 +703,30 @@ public async System.Threading.Tasks.Task> DeleteAttributeAsy } /// - /// List all attributes + /// Get a note /// /// Thrown when fails to make API call - /// GetAttributes - public GetAttributes GetAttributes () + /// Note ID to get + /// Note + public Note CrmNotesIdGet (string id) { - ApiResponse localVarResponse = GetAttributesWithHttpInfo(); + ApiResponse localVarResponse = CrmNotesIdGetWithHttpInfo(id); return localVarResponse.Data; } /// - /// List all attributes + /// Get a note /// /// Thrown when fails to make API call - /// ApiResponse of GetAttributes - public ApiResponse< GetAttributes > GetAttributesWithHttpInfo () + /// Note ID to get + /// ApiResponse of Note + public ApiResponse< Note > CrmNotesIdGetWithHttpInfo (string id) { + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling NotesApi->CrmNotesIdGet"); - var localVarPath = "./contacts/attributes"; + var localVarPath = "./crm/notes/{id}"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -707,6 +748,7 @@ public ApiResponse< GetAttributes > GetAttributesWithHttpInfo () if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -728,36 +770,41 @@ public ApiResponse< GetAttributes > GetAttributesWithHttpInfo () if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("GetAttributes", localVarResponse); + Exception exception = ExceptionFactory("CrmNotesIdGet", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (GetAttributes) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetAttributes))); + (Note) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(Note))); } /// - /// List all attributes + /// Get a note /// /// Thrown when fails to make API call - /// Task of GetAttributes - public async System.Threading.Tasks.Task GetAttributesAsync () + /// Note ID to get + /// Task of Note + public async System.Threading.Tasks.Task CrmNotesIdGetAsync (string id) { - ApiResponse localVarResponse = await GetAttributesAsyncWithHttpInfo(); + ApiResponse localVarResponse = await CrmNotesIdGetAsyncWithHttpInfo(id); return localVarResponse.Data; } /// - /// List all attributes + /// Get a note /// /// Thrown when fails to make API call - /// Task of ApiResponse (GetAttributes) - public async System.Threading.Tasks.Task> GetAttributesAsyncWithHttpInfo () + /// Note ID to get + /// Task of ApiResponse (Note) + public async System.Threading.Tasks.Task> CrmNotesIdGetAsyncWithHttpInfo (string id) { + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling NotesApi->CrmNotesIdGet"); - var localVarPath = "./contacts/attributes"; + var localVarPath = "./crm/notes/{id}"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -779,6 +826,7 @@ public async System.Threading.Tasks.Task> GetAttribut if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -800,49 +848,44 @@ public async System.Threading.Tasks.Task> GetAttribut if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("GetAttributes", localVarResponse); + Exception exception = ExceptionFactory("CrmNotesIdGet", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (GetAttributes) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetAttributes))); + (Note) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(Note))); } /// - /// Update contact attribute + /// Update a note /// /// Thrown when fails to make API call - /// Category of the attribute - /// Name of the existing attribute - /// Values to update an attribute + /// Note ID to update + /// Note data to update a note /// - public void UpdateAttribute (string attributeCategory, string attributeName, UpdateAttribute updateAttribute) + public void CrmNotesIdPatch (string id, NoteData body) { - UpdateAttributeWithHttpInfo(attributeCategory, attributeName, updateAttribute); + CrmNotesIdPatchWithHttpInfo(id, body); } /// - /// Update contact attribute + /// Update a note /// /// Thrown when fails to make API call - /// Category of the attribute - /// Name of the existing attribute - /// Values to update an attribute + /// Note ID to update + /// Note data to update a note /// ApiResponse of Object(void) - public ApiResponse UpdateAttributeWithHttpInfo (string attributeCategory, string attributeName, UpdateAttribute updateAttribute) + public ApiResponse CrmNotesIdPatchWithHttpInfo (string id, NoteData body) { - // verify the required parameter 'attributeCategory' is set - if (attributeCategory == null) - throw new ApiException(400, "Missing required parameter 'attributeCategory' when calling AttributesApi->UpdateAttribute"); - // verify the required parameter 'attributeName' is set - if (attributeName == null) - throw new ApiException(400, "Missing required parameter 'attributeName' when calling AttributesApi->UpdateAttribute"); - // verify the required parameter 'updateAttribute' is set - if (updateAttribute == null) - throw new ApiException(400, "Missing required parameter 'updateAttribute' when calling AttributesApi->UpdateAttribute"); - - var localVarPath = "./contacts/attributes/{attributeCategory}/{attributeName}"; + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling NotesApi->CrmNotesIdPatch"); + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling NotesApi->CrmNotesIdPatch"); + + var localVarPath = "./crm/notes/{id}"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -864,15 +907,14 @@ public ApiResponse UpdateAttributeWithHttpInfo (string attributeCategory if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (attributeCategory != null) localVarPathParams.Add("attributeCategory", this.Configuration.ApiClient.ParameterToString(attributeCategory)); // path parameter - if (attributeName != null) localVarPathParams.Add("attributeName", this.Configuration.ApiClient.ParameterToString(attributeName)); // path parameter - if (updateAttribute != null && updateAttribute.GetType() != typeof(byte[])) + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + if (body != null && body.GetType() != typeof(byte[])) { - localVarPostBody = this.Configuration.ApiClient.Serialize(updateAttribute); // http body (model) parameter + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter } else { - localVarPostBody = updateAttribute; // byte array + localVarPostBody = body; // byte array } // authentication (api-key) required @@ -888,14 +930,14 @@ public ApiResponse UpdateAttributeWithHttpInfo (string attributeCategory // make the HTTP request IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, - Method.PUT, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.PATCH, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("UpdateAttribute", localVarResponse); + Exception exception = ExceptionFactory("CrmNotesIdPatch", localVarResponse); if (exception != null) throw exception; } @@ -905,40 +947,35 @@ public ApiResponse UpdateAttributeWithHttpInfo (string attributeCategory } /// - /// Update contact attribute + /// Update a note /// /// Thrown when fails to make API call - /// Category of the attribute - /// Name of the existing attribute - /// Values to update an attribute + /// Note ID to update + /// Note data to update a note /// Task of void - public async System.Threading.Tasks.Task UpdateAttributeAsync (string attributeCategory, string attributeName, UpdateAttribute updateAttribute) + public async System.Threading.Tasks.Task CrmNotesIdPatchAsync (string id, NoteData body) { - await UpdateAttributeAsyncWithHttpInfo(attributeCategory, attributeName, updateAttribute); + await CrmNotesIdPatchAsyncWithHttpInfo(id, body); } /// - /// Update contact attribute + /// Update a note /// /// Thrown when fails to make API call - /// Category of the attribute - /// Name of the existing attribute - /// Values to update an attribute + /// Note ID to update + /// Note data to update a note /// Task of ApiResponse - public async System.Threading.Tasks.Task> UpdateAttributeAsyncWithHttpInfo (string attributeCategory, string attributeName, UpdateAttribute updateAttribute) + public async System.Threading.Tasks.Task> CrmNotesIdPatchAsyncWithHttpInfo (string id, NoteData body) { - // verify the required parameter 'attributeCategory' is set - if (attributeCategory == null) - throw new ApiException(400, "Missing required parameter 'attributeCategory' when calling AttributesApi->UpdateAttribute"); - // verify the required parameter 'attributeName' is set - if (attributeName == null) - throw new ApiException(400, "Missing required parameter 'attributeName' when calling AttributesApi->UpdateAttribute"); - // verify the required parameter 'updateAttribute' is set - if (updateAttribute == null) - throw new ApiException(400, "Missing required parameter 'updateAttribute' when calling AttributesApi->UpdateAttribute"); - - var localVarPath = "./contacts/attributes/{attributeCategory}/{attributeName}"; + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling NotesApi->CrmNotesIdPatch"); + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling NotesApi->CrmNotesIdPatch"); + + var localVarPath = "./crm/notes/{id}"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -960,15 +997,14 @@ public async System.Threading.Tasks.Task> UpdateAttributeAsy if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (attributeCategory != null) localVarPathParams.Add("attributeCategory", this.Configuration.ApiClient.ParameterToString(attributeCategory)); // path parameter - if (attributeName != null) localVarPathParams.Add("attributeName", this.Configuration.ApiClient.ParameterToString(attributeName)); // path parameter - if (updateAttribute != null && updateAttribute.GetType() != typeof(byte[])) + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + if (body != null && body.GetType() != typeof(byte[])) { - localVarPostBody = this.Configuration.ApiClient.Serialize(updateAttribute); // http body (model) parameter + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter } else { - localVarPostBody = updateAttribute; // byte array + localVarPostBody = body; // byte array } // authentication (api-key) required @@ -984,14 +1020,14 @@ public async System.Threading.Tasks.Task> UpdateAttributeAsy // make the HTTP request IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, - Method.PUT, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.PATCH, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("UpdateAttribute", localVarResponse); + Exception exception = ExceptionFactory("CrmNotesIdPatch", localVarResponse); if (exception != null) throw exception; } @@ -1000,5 +1036,174 @@ public async System.Threading.Tasks.Task> UpdateAttributeAsy null); } + /// + /// Create a note + /// + /// Thrown when fails to make API call + /// Note data to create a note. + /// NoteId + public NoteId CrmNotesPost (NoteData body) + { + ApiResponse localVarResponse = CrmNotesPostWithHttpInfo(body); + return localVarResponse.Data; + } + + /// + /// Create a note + /// + /// Thrown when fails to make API call + /// Note data to create a note. + /// ApiResponse of NoteId + public ApiResponse< NoteId > CrmNotesPostWithHttpInfo (NoteData body) + { + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling NotesApi->CrmNotesPost"); + + var localVarPath = "./crm/notes"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (body != null && body.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter + } + else + { + localVarPostBody = body; // byte array + } + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, + Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CrmNotesPost", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (NoteId) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(NoteId))); + } + + /// + /// Create a note + /// + /// Thrown when fails to make API call + /// Note data to create a note. + /// Task of NoteId + public async System.Threading.Tasks.Task CrmNotesPostAsync (NoteData body) + { + ApiResponse localVarResponse = await CrmNotesPostAsyncWithHttpInfo(body); + return localVarResponse.Data; + + } + + /// + /// Create a note + /// + /// Thrown when fails to make API call + /// Note data to create a note. + /// Task of ApiResponse (NoteId) + public async System.Threading.Tasks.Task> CrmNotesPostAsyncWithHttpInfo (NoteData body) + { + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling NotesApi->CrmNotesPost"); + + var localVarPath = "./crm/notes"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (body != null && body.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter + } + else + { + localVarPostBody = body; // byte array + } + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("CrmNotesPost", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (NoteId) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(NoteId))); + } + } } diff --git a/src/sib_api_v3_sdk/Api/FoldersApi.cs b/src/sib_api_v3_sdk/Api/TasksApi.cs similarity index 60% rename from src/sib_api_v3_sdk/Api/FoldersApi.cs rename to src/sib_api_v3_sdk/Api/TasksApi.cs index c13cae6..e3d6fb4 100644 --- a/src/sib_api_v3_sdk/Api/FoldersApi.cs +++ b/src/sib_api_v3_sdk/Api/TasksApi.cs @@ -21,302 +21,326 @@ namespace sib_api_v3_sdk.Api /// /// Represents a collection of functions to interact with the API endpoints /// - public interface IFoldersApi : IApiAccessor + public interface ITasksApi : IApiAccessor { #region Synchronous Operations /// - /// Create a folder + /// Get all tasks /// /// /// /// /// Thrown when fails to make API call - /// Name of the folder - /// CreateModel - CreateModel CreateFolder (CreateUpdateFolder createFolder); + /// Filter by task type (ID) (optional) + /// Filter by task status (optional) + /// Filter by date (optional) + /// Filter by assignTo id (optional) + /// Filter by contact ids (optional) + /// Filter by deals ids (optional) + /// Filter by companies ids (optional) + /// dateFrom to date range filter type (timestamp in milliseconds) (optional) + /// dateTo to date range filter type (timestamp in milliseconds) (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// The field used to sort field names. (optional) + /// TaskList + TaskList CrmTasksGet (string filterType = null, string filterStatus = null, string filterDate = null, string filterAssignTo = null, string filterContacts = null, string filterDeals = null, string filterCompanies = null, int? dateFrom = null, int? dateTo = null, long? offset = null, long? limit = null, string sort = null, string sortBy = null); /// - /// Create a folder + /// Get all tasks /// /// /// /// /// Thrown when fails to make API call - /// Name of the folder - /// ApiResponse of CreateModel - ApiResponse CreateFolderWithHttpInfo (CreateUpdateFolder createFolder); + /// Filter by task type (ID) (optional) + /// Filter by task status (optional) + /// Filter by date (optional) + /// Filter by assignTo id (optional) + /// Filter by contact ids (optional) + /// Filter by deals ids (optional) + /// Filter by companies ids (optional) + /// dateFrom to date range filter type (timestamp in milliseconds) (optional) + /// dateTo to date range filter type (timestamp in milliseconds) (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// The field used to sort field names. (optional) + /// ApiResponse of TaskList + ApiResponse CrmTasksGetWithHttpInfo (string filterType = null, string filterStatus = null, string filterDate = null, string filterAssignTo = null, string filterContacts = null, string filterDeals = null, string filterCompanies = null, int? dateFrom = null, int? dateTo = null, long? offset = null, long? limit = null, string sort = null, string sortBy = null); /// - /// Delete a folder (and all its lists) + /// Delete a task /// /// /// /// /// Thrown when fails to make API call - /// Id of the folder + /// /// - void DeleteFolder (long? folderId); + void CrmTasksIdDelete (string id); /// - /// Delete a folder (and all its lists) + /// Delete a task /// /// /// /// /// Thrown when fails to make API call - /// Id of the folder + /// /// ApiResponse of Object(void) - ApiResponse DeleteFolderWithHttpInfo (long? folderId); + ApiResponse CrmTasksIdDeleteWithHttpInfo (string id); /// - /// Returns a folder's details + /// Get a task /// /// /// /// /// Thrown when fails to make API call - /// id of the folder - /// GetFolder - GetFolder GetFolder (long? folderId); + /// + /// Task + Task CrmTasksIdGet (string id); /// - /// Returns a folder's details + /// Get a task /// /// /// /// /// Thrown when fails to make API call - /// id of the folder - /// ApiResponse of GetFolder - ApiResponse GetFolderWithHttpInfo (long? folderId); + /// + /// ApiResponse of Task + ApiResponse CrmTasksIdGetWithHttpInfo (string id); /// - /// Get lists in a folder + /// Update a task /// /// /// /// /// Thrown when fails to make API call - /// Id of the folder - /// Number of documents per page (optional, default to 10) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// GetFolderLists - GetFolderLists GetFolderLists (long? folderId, long? limit = null, long? offset = null, string sort = null); + /// + /// Updated task details. + /// + void CrmTasksIdPatch (string id, Body7 body); /// - /// Get lists in a folder + /// Update a task /// /// /// /// /// Thrown when fails to make API call - /// Id of the folder - /// Number of documents per page (optional, default to 10) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// ApiResponse of GetFolderLists - ApiResponse GetFolderListsWithHttpInfo (long? folderId, long? limit = null, long? offset = null, string sort = null); + /// + /// Updated task details. + /// ApiResponse of Object(void) + ApiResponse CrmTasksIdPatchWithHttpInfo (string id, Body7 body); /// - /// Get all folders + /// Create a task /// /// /// /// /// Thrown when fails to make API call - /// Number of documents per page - /// Index of the first document of the page - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// GetFolders - GetFolders GetFolders (long? limit, long? offset, string sort = null); + /// Task name. + /// InlineResponse2011 + InlineResponse2011 CrmTasksPost (Body6 body); /// - /// Get all folders + /// Create a task /// /// /// /// /// Thrown when fails to make API call - /// Number of documents per page - /// Index of the first document of the page - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// ApiResponse of GetFolders - ApiResponse GetFoldersWithHttpInfo (long? limit, long? offset, string sort = null); + /// Task name. + /// ApiResponse of InlineResponse2011 + ApiResponse CrmTasksPostWithHttpInfo (Body6 body); /// - /// Update a folder + /// Get all task types /// /// /// /// /// Thrown when fails to make API call - /// Id of the folder - /// Name of the folder - /// - void UpdateFolder (long? folderId, CreateUpdateFolder updateFolder); + /// TaskTypes + TaskTypes CrmTasktypesGet (); /// - /// Update a folder + /// Get all task types /// /// /// /// /// Thrown when fails to make API call - /// Id of the folder - /// Name of the folder - /// ApiResponse of Object(void) - ApiResponse UpdateFolderWithHttpInfo (long? folderId, CreateUpdateFolder updateFolder); + /// ApiResponse of TaskTypes + ApiResponse CrmTasktypesGetWithHttpInfo (); #endregion Synchronous Operations #region Asynchronous Operations /// - /// Create a folder + /// Get all tasks /// /// /// /// /// Thrown when fails to make API call - /// Name of the folder - /// Task of CreateModel - System.Threading.Tasks.Task CreateFolderAsync (CreateUpdateFolder createFolder); + /// Filter by task type (ID) (optional) + /// Filter by task status (optional) + /// Filter by date (optional) + /// Filter by assignTo id (optional) + /// Filter by contact ids (optional) + /// Filter by deals ids (optional) + /// Filter by companies ids (optional) + /// dateFrom to date range filter type (timestamp in milliseconds) (optional) + /// dateTo to date range filter type (timestamp in milliseconds) (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// The field used to sort field names. (optional) + /// Task of TaskList + System.Threading.Tasks.Task CrmTasksGetAsync (string filterType = null, string filterStatus = null, string filterDate = null, string filterAssignTo = null, string filterContacts = null, string filterDeals = null, string filterCompanies = null, int? dateFrom = null, int? dateTo = null, long? offset = null, long? limit = null, string sort = null, string sortBy = null); /// - /// Create a folder + /// Get all tasks /// /// /// /// /// Thrown when fails to make API call - /// Name of the folder - /// Task of ApiResponse (CreateModel) - System.Threading.Tasks.Task> CreateFolderAsyncWithHttpInfo (CreateUpdateFolder createFolder); + /// Filter by task type (ID) (optional) + /// Filter by task status (optional) + /// Filter by date (optional) + /// Filter by assignTo id (optional) + /// Filter by contact ids (optional) + /// Filter by deals ids (optional) + /// Filter by companies ids (optional) + /// dateFrom to date range filter type (timestamp in milliseconds) (optional) + /// dateTo to date range filter type (timestamp in milliseconds) (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// The field used to sort field names. (optional) + /// Task of ApiResponse (TaskList) + System.Threading.Tasks.Task> CrmTasksGetAsyncWithHttpInfo (string filterType = null, string filterStatus = null, string filterDate = null, string filterAssignTo = null, string filterContacts = null, string filterDeals = null, string filterCompanies = null, int? dateFrom = null, int? dateTo = null, long? offset = null, long? limit = null, string sort = null, string sortBy = null); /// - /// Delete a folder (and all its lists) + /// Delete a task /// /// /// /// /// Thrown when fails to make API call - /// Id of the folder + /// /// Task of void - System.Threading.Tasks.Task DeleteFolderAsync (long? folderId); + System.Threading.Tasks.Task CrmTasksIdDeleteAsync (string id); /// - /// Delete a folder (and all its lists) + /// Delete a task /// /// /// /// /// Thrown when fails to make API call - /// Id of the folder + /// /// Task of ApiResponse - System.Threading.Tasks.Task> DeleteFolderAsyncWithHttpInfo (long? folderId); + System.Threading.Tasks.Task> CrmTasksIdDeleteAsyncWithHttpInfo (string id); /// - /// Returns a folder's details + /// Get a task /// /// /// /// /// Thrown when fails to make API call - /// id of the folder - /// Task of GetFolder - System.Threading.Tasks.Task GetFolderAsync (long? folderId); + /// + /// Task of Task + System.Threading.Tasks.Task CrmTasksIdGetAsync (string id); /// - /// Returns a folder's details + /// Get a task /// /// /// /// /// Thrown when fails to make API call - /// id of the folder - /// Task of ApiResponse (GetFolder) - System.Threading.Tasks.Task> GetFolderAsyncWithHttpInfo (long? folderId); + /// + /// Task of ApiResponse (Task) + System.Threading.Tasks.Task> CrmTasksIdGetAsyncWithHttpInfo (string id); /// - /// Get lists in a folder + /// Update a task /// /// /// /// /// Thrown when fails to make API call - /// Id of the folder - /// Number of documents per page (optional, default to 10) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// Task of GetFolderLists - System.Threading.Tasks.Task GetFolderListsAsync (long? folderId, long? limit = null, long? offset = null, string sort = null); + /// + /// Updated task details. + /// Task of void + System.Threading.Tasks.Task CrmTasksIdPatchAsync (string id, Body7 body); /// - /// Get lists in a folder + /// Update a task /// /// /// /// /// Thrown when fails to make API call - /// Id of the folder - /// Number of documents per page (optional, default to 10) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// Task of ApiResponse (GetFolderLists) - System.Threading.Tasks.Task> GetFolderListsAsyncWithHttpInfo (long? folderId, long? limit = null, long? offset = null, string sort = null); + /// + /// Updated task details. + /// Task of ApiResponse + System.Threading.Tasks.Task> CrmTasksIdPatchAsyncWithHttpInfo (string id, Body7 body); /// - /// Get all folders + /// Create a task /// /// /// /// /// Thrown when fails to make API call - /// Number of documents per page - /// Index of the first document of the page - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// Task of GetFolders - System.Threading.Tasks.Task GetFoldersAsync (long? limit, long? offset, string sort = null); + /// Task name. + /// Task of InlineResponse2011 + System.Threading.Tasks.Task CrmTasksPostAsync (Body6 body); /// - /// Get all folders + /// Create a task /// /// /// /// /// Thrown when fails to make API call - /// Number of documents per page - /// Index of the first document of the page - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// Task of ApiResponse (GetFolders) - System.Threading.Tasks.Task> GetFoldersAsyncWithHttpInfo (long? limit, long? offset, string sort = null); + /// Task name. + /// Task of ApiResponse (InlineResponse2011) + System.Threading.Tasks.Task> CrmTasksPostAsyncWithHttpInfo (Body6 body); /// - /// Update a folder + /// Get all task types /// /// /// /// /// Thrown when fails to make API call - /// Id of the folder - /// Name of the folder - /// Task of void - System.Threading.Tasks.Task UpdateFolderAsync (long? folderId, CreateUpdateFolder updateFolder); + /// Task of TaskTypes + System.Threading.Tasks.Task CrmTasktypesGetAsync (); /// - /// Update a folder + /// Get all task types /// /// /// /// /// Thrown when fails to make API call - /// Id of the folder - /// Name of the folder - /// Task of ApiResponse - System.Threading.Tasks.Task> UpdateFolderAsyncWithHttpInfo (long? folderId, CreateUpdateFolder updateFolder); + /// Task of ApiResponse (TaskTypes) + System.Threading.Tasks.Task> CrmTasktypesGetAsyncWithHttpInfo (); #endregion Asynchronous Operations } /// /// Represents a collection of functions to interact with the API endpoints /// - public partial class FoldersApi : IFoldersApi + public partial class TasksApi : ITasksApi { private sib_api_v3_sdk.Client.ExceptionFactory _exceptionFactory = (name, response) => null; /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// /// - public FoldersApi(String basePath) + public TasksApi(String basePath) { this.Configuration = new sib_api_v3_sdk.Client.Configuration { BasePath = basePath }; @@ -324,12 +348,12 @@ public FoldersApi(String basePath) } /// - /// Initializes a new instance of the class + /// Initializes a new instance of the class /// using Configuration object /// /// An instance of Configuration /// - public FoldersApi(sib_api_v3_sdk.Client.Configuration configuration = null) + public TasksApi(sib_api_v3_sdk.Client.Configuration configuration = null) { if (configuration == null) // use the default one in Configuration this.Configuration = sib_api_v3_sdk.Client.Configuration.Default; @@ -403,30 +427,51 @@ public void AddDefaultHeader(string key, string value) } /// - /// Create a folder + /// Get all tasks /// /// Thrown when fails to make API call - /// Name of the folder - /// CreateModel - public CreateModel CreateFolder (CreateUpdateFolder createFolder) + /// Filter by task type (ID) (optional) + /// Filter by task status (optional) + /// Filter by date (optional) + /// Filter by assignTo id (optional) + /// Filter by contact ids (optional) + /// Filter by deals ids (optional) + /// Filter by companies ids (optional) + /// dateFrom to date range filter type (timestamp in milliseconds) (optional) + /// dateTo to date range filter type (timestamp in milliseconds) (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// The field used to sort field names. (optional) + /// TaskList + public TaskList CrmTasksGet (string filterType = null, string filterStatus = null, string filterDate = null, string filterAssignTo = null, string filterContacts = null, string filterDeals = null, string filterCompanies = null, int? dateFrom = null, int? dateTo = null, long? offset = null, long? limit = null, string sort = null, string sortBy = null) { - ApiResponse localVarResponse = CreateFolderWithHttpInfo(createFolder); + ApiResponse localVarResponse = CrmTasksGetWithHttpInfo(filterType, filterStatus, filterDate, filterAssignTo, filterContacts, filterDeals, filterCompanies, dateFrom, dateTo, offset, limit, sort, sortBy); return localVarResponse.Data; } /// - /// Create a folder + /// Get all tasks /// /// Thrown when fails to make API call - /// Name of the folder - /// ApiResponse of CreateModel - public ApiResponse< CreateModel > CreateFolderWithHttpInfo (CreateUpdateFolder createFolder) + /// Filter by task type (ID) (optional) + /// Filter by task status (optional) + /// Filter by date (optional) + /// Filter by assignTo id (optional) + /// Filter by contact ids (optional) + /// Filter by deals ids (optional) + /// Filter by companies ids (optional) + /// dateFrom to date range filter type (timestamp in milliseconds) (optional) + /// dateTo to date range filter type (timestamp in milliseconds) (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// The field used to sort field names. (optional) + /// ApiResponse of TaskList + public ApiResponse< TaskList > CrmTasksGetWithHttpInfo (string filterType = null, string filterStatus = null, string filterDate = null, string filterAssignTo = null, string filterContacts = null, string filterDeals = null, string filterCompanies = null, int? dateFrom = null, int? dateTo = null, long? offset = null, long? limit = null, string sort = null, string sortBy = null) { - // verify the required parameter 'createFolder' is set - if (createFolder == null) - throw new ApiException(400, "Missing required parameter 'createFolder' when calling FoldersApi->CreateFolder"); - var localVarPath = "./contacts/folders"; + var localVarPath = "./crm/tasks"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -448,14 +493,19 @@ public ApiResponse< CreateModel > CreateFolderWithHttpInfo (CreateUpdateFolder c if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (createFolder != null && createFolder.GetType() != typeof(byte[])) - { - localVarPostBody = this.Configuration.ApiClient.Serialize(createFolder); // http body (model) parameter - } - else - { - localVarPostBody = createFolder; // byte array - } + if (filterType != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "filter[type]", filterType)); // query parameter + if (filterStatus != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "filter[status]", filterStatus)); // query parameter + if (filterDate != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "filter[date]", filterDate)); // query parameter + if (filterAssignTo != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "filter[assignTo]", filterAssignTo)); // query parameter + if (filterContacts != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "filter[contacts]", filterContacts)); // query parameter + if (filterDeals != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "filter[deals]", filterDeals)); // query parameter + if (filterCompanies != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "filter[companies]", filterCompanies)); // query parameter + if (dateFrom != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "dateFrom", dateFrom)); // query parameter + if (dateTo != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "dateTo", dateTo)); // query parameter + if (offset != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "offset", offset)); // query parameter + if (limit != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "limit", limit)); // query parameter + if (sort != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sort", sort)); // query parameter + if (sortBy != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sortBy", sortBy)); // query parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -470,48 +520,69 @@ public ApiResponse< CreateModel > CreateFolderWithHttpInfo (CreateUpdateFolder c // make the HTTP request IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, - Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("CreateFolder", localVarResponse); + Exception exception = ExceptionFactory("CrmTasksGet", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (CreateModel) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(CreateModel))); + (TaskList) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(TaskList))); } /// - /// Create a folder + /// Get all tasks /// /// Thrown when fails to make API call - /// Name of the folder - /// Task of CreateModel - public async System.Threading.Tasks.Task CreateFolderAsync (CreateUpdateFolder createFolder) + /// Filter by task type (ID) (optional) + /// Filter by task status (optional) + /// Filter by date (optional) + /// Filter by assignTo id (optional) + /// Filter by contact ids (optional) + /// Filter by deals ids (optional) + /// Filter by companies ids (optional) + /// dateFrom to date range filter type (timestamp in milliseconds) (optional) + /// dateTo to date range filter type (timestamp in milliseconds) (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// The field used to sort field names. (optional) + /// Task of TaskList + public async System.Threading.Tasks.Task CrmTasksGetAsync (string filterType = null, string filterStatus = null, string filterDate = null, string filterAssignTo = null, string filterContacts = null, string filterDeals = null, string filterCompanies = null, int? dateFrom = null, int? dateTo = null, long? offset = null, long? limit = null, string sort = null, string sortBy = null) { - ApiResponse localVarResponse = await CreateFolderAsyncWithHttpInfo(createFolder); + ApiResponse localVarResponse = await CrmTasksGetAsyncWithHttpInfo(filterType, filterStatus, filterDate, filterAssignTo, filterContacts, filterDeals, filterCompanies, dateFrom, dateTo, offset, limit, sort, sortBy); return localVarResponse.Data; } /// - /// Create a folder + /// Get all tasks /// /// Thrown when fails to make API call - /// Name of the folder - /// Task of ApiResponse (CreateModel) - public async System.Threading.Tasks.Task> CreateFolderAsyncWithHttpInfo (CreateUpdateFolder createFolder) + /// Filter by task type (ID) (optional) + /// Filter by task status (optional) + /// Filter by date (optional) + /// Filter by assignTo id (optional) + /// Filter by contact ids (optional) + /// Filter by deals ids (optional) + /// Filter by companies ids (optional) + /// dateFrom to date range filter type (timestamp in milliseconds) (optional) + /// dateTo to date range filter type (timestamp in milliseconds) (optional) + /// Index of the first document of the page (optional) + /// Number of documents per page (optional, default to 50) + /// Sort the results in the ascending/descending order. Default order is **descending** by creation if `sort` is not passed (optional) + /// The field used to sort field names. (optional) + /// Task of ApiResponse (TaskList) + public async System.Threading.Tasks.Task> CrmTasksGetAsyncWithHttpInfo (string filterType = null, string filterStatus = null, string filterDate = null, string filterAssignTo = null, string filterContacts = null, string filterDeals = null, string filterCompanies = null, int? dateFrom = null, int? dateTo = null, long? offset = null, long? limit = null, string sort = null, string sortBy = null) { - // verify the required parameter 'createFolder' is set - if (createFolder == null) - throw new ApiException(400, "Missing required parameter 'createFolder' when calling FoldersApi->CreateFolder"); - var localVarPath = "./contacts/folders"; + var localVarPath = "./crm/tasks"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -533,14 +604,19 @@ public async System.Threading.Tasks.Task> CreateFolderA if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (createFolder != null && createFolder.GetType() != typeof(byte[])) - { - localVarPostBody = this.Configuration.ApiClient.Serialize(createFolder); // http body (model) parameter - } - else - { - localVarPostBody = createFolder; // byte array - } + if (filterType != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "filter[type]", filterType)); // query parameter + if (filterStatus != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "filter[status]", filterStatus)); // query parameter + if (filterDate != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "filter[date]", filterDate)); // query parameter + if (filterAssignTo != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "filter[assignTo]", filterAssignTo)); // query parameter + if (filterContacts != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "filter[contacts]", filterContacts)); // query parameter + if (filterDeals != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "filter[deals]", filterDeals)); // query parameter + if (filterCompanies != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "filter[companies]", filterCompanies)); // query parameter + if (dateFrom != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "dateFrom", dateFrom)); // query parameter + if (dateTo != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "dateTo", dateTo)); // query parameter + if (offset != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "offset", offset)); // query parameter + if (limit != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "limit", limit)); // query parameter + if (sort != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sort", sort)); // query parameter + if (sortBy != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sortBy", sortBy)); // query parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -555,46 +631,46 @@ public async System.Threading.Tasks.Task> CreateFolderA // make the HTTP request IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, - Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("CreateFolder", localVarResponse); + Exception exception = ExceptionFactory("CrmTasksGet", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (CreateModel) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(CreateModel))); + (TaskList) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(TaskList))); } /// - /// Delete a folder (and all its lists) + /// Delete a task /// /// Thrown when fails to make API call - /// Id of the folder + /// /// - public void DeleteFolder (long? folderId) + public void CrmTasksIdDelete (string id) { - DeleteFolderWithHttpInfo(folderId); + CrmTasksIdDeleteWithHttpInfo(id); } /// - /// Delete a folder (and all its lists) + /// Delete a task /// /// Thrown when fails to make API call - /// Id of the folder + /// /// ApiResponse of Object(void) - public ApiResponse DeleteFolderWithHttpInfo (long? folderId) + public ApiResponse CrmTasksIdDeleteWithHttpInfo (string id) { - // verify the required parameter 'folderId' is set - if (folderId == null) - throw new ApiException(400, "Missing required parameter 'folderId' when calling FoldersApi->DeleteFolder"); + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling TasksApi->CrmTasksIdDelete"); - var localVarPath = "./contacts/folders/{folderId}"; + var localVarPath = "./crm/tasks/{id}"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -616,7 +692,7 @@ public ApiResponse DeleteFolderWithHttpInfo (long? folderId) if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (folderId != null) localVarPathParams.Add("folderId", this.Configuration.ApiClient.ParameterToString(folderId)); // path parameter + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -638,7 +714,7 @@ public ApiResponse DeleteFolderWithHttpInfo (long? folderId) if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("DeleteFolder", localVarResponse); + Exception exception = ExceptionFactory("CrmTasksIdDelete", localVarResponse); if (exception != null) throw exception; } @@ -648,30 +724,30 @@ public ApiResponse DeleteFolderWithHttpInfo (long? folderId) } /// - /// Delete a folder (and all its lists) + /// Delete a task /// /// Thrown when fails to make API call - /// Id of the folder + /// /// Task of void - public async System.Threading.Tasks.Task DeleteFolderAsync (long? folderId) + public async System.Threading.Tasks.Task CrmTasksIdDeleteAsync (string id) { - await DeleteFolderAsyncWithHttpInfo(folderId); + await CrmTasksIdDeleteAsyncWithHttpInfo(id); } /// - /// Delete a folder (and all its lists) + /// Delete a task /// /// Thrown when fails to make API call - /// Id of the folder + /// /// Task of ApiResponse - public async System.Threading.Tasks.Task> DeleteFolderAsyncWithHttpInfo (long? folderId) + public async System.Threading.Tasks.Task> CrmTasksIdDeleteAsyncWithHttpInfo (string id) { - // verify the required parameter 'folderId' is set - if (folderId == null) - throw new ApiException(400, "Missing required parameter 'folderId' when calling FoldersApi->DeleteFolder"); + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling TasksApi->CrmTasksIdDelete"); - var localVarPath = "./contacts/folders/{folderId}"; + var localVarPath = "./crm/tasks/{id}"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -693,7 +769,7 @@ public async System.Threading.Tasks.Task> DeleteFolderAsyncW if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (folderId != null) localVarPathParams.Add("folderId", this.Configuration.ApiClient.ParameterToString(folderId)); // path parameter + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -715,7 +791,7 @@ public async System.Threading.Tasks.Task> DeleteFolderAsyncW if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("DeleteFolder", localVarResponse); + Exception exception = ExceptionFactory("CrmTasksIdDelete", localVarResponse); if (exception != null) throw exception; } @@ -725,30 +801,30 @@ public async System.Threading.Tasks.Task> DeleteFolderAsyncW } /// - /// Returns a folder's details + /// Get a task /// /// Thrown when fails to make API call - /// id of the folder - /// GetFolder - public GetFolder GetFolder (long? folderId) + /// + /// Task + public Task CrmTasksIdGet (string id) { - ApiResponse localVarResponse = GetFolderWithHttpInfo(folderId); + ApiResponse localVarResponse = CrmTasksIdGetWithHttpInfo(id); return localVarResponse.Data; } /// - /// Returns a folder's details + /// Get a task /// /// Thrown when fails to make API call - /// id of the folder - /// ApiResponse of GetFolder - public ApiResponse< GetFolder > GetFolderWithHttpInfo (long? folderId) + /// + /// ApiResponse of Task + public ApiResponse< Task > CrmTasksIdGetWithHttpInfo (string id) { - // verify the required parameter 'folderId' is set - if (folderId == null) - throw new ApiException(400, "Missing required parameter 'folderId' when calling FoldersApi->GetFolder"); + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling TasksApi->CrmTasksIdGet"); - var localVarPath = "./contacts/folders/{folderId}"; + var localVarPath = "./crm/tasks/{id}"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -770,7 +846,7 @@ public ApiResponse< GetFolder > GetFolderWithHttpInfo (long? folderId) if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (folderId != null) localVarPathParams.Add("folderId", this.Configuration.ApiClient.ParameterToString(folderId)); // path parameter + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -792,41 +868,41 @@ public ApiResponse< GetFolder > GetFolderWithHttpInfo (long? folderId) if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("GetFolder", localVarResponse); + Exception exception = ExceptionFactory("CrmTasksIdGet", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (GetFolder) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetFolder))); + (Task) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(Task))); } /// - /// Returns a folder's details + /// Get a task /// /// Thrown when fails to make API call - /// id of the folder - /// Task of GetFolder - public async System.Threading.Tasks.Task GetFolderAsync (long? folderId) + /// + /// Task of Task + public async System.Threading.Tasks.Task CrmTasksIdGetAsync (string id) { - ApiResponse localVarResponse = await GetFolderAsyncWithHttpInfo(folderId); + ApiResponse localVarResponse = await CrmTasksIdGetAsyncWithHttpInfo(id); return localVarResponse.Data; } /// - /// Returns a folder's details + /// Get a task /// /// Thrown when fails to make API call - /// id of the folder - /// Task of ApiResponse (GetFolder) - public async System.Threading.Tasks.Task> GetFolderAsyncWithHttpInfo (long? folderId) + /// + /// Task of ApiResponse (Task) + public async System.Threading.Tasks.Task> CrmTasksIdGetAsyncWithHttpInfo (string id) { - // verify the required parameter 'folderId' is set - if (folderId == null) - throw new ApiException(400, "Missing required parameter 'folderId' when calling FoldersApi->GetFolder"); + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling TasksApi->CrmTasksIdGet"); - var localVarPath = "./contacts/folders/{folderId}"; + var localVarPath = "./crm/tasks/{id}"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -848,7 +924,7 @@ public async System.Threading.Tasks.Task> GetFolderAsyncW if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (folderId != null) localVarPathParams.Add("folderId", this.Configuration.ApiClient.ParameterToString(folderId)); // path parameter + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -870,46 +946,44 @@ public async System.Threading.Tasks.Task> GetFolderAsyncW if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("GetFolder", localVarResponse); + Exception exception = ExceptionFactory("CrmTasksIdGet", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (GetFolder) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetFolder))); + (Task) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(Task))); } /// - /// Get lists in a folder + /// Update a task /// /// Thrown when fails to make API call - /// Id of the folder - /// Number of documents per page (optional, default to 10) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// GetFolderLists - public GetFolderLists GetFolderLists (long? folderId, long? limit = null, long? offset = null, string sort = null) + /// + /// Updated task details. + /// + public void CrmTasksIdPatch (string id, Body7 body) { - ApiResponse localVarResponse = GetFolderListsWithHttpInfo(folderId, limit, offset, sort); - return localVarResponse.Data; + CrmTasksIdPatchWithHttpInfo(id, body); } /// - /// Get lists in a folder + /// Update a task /// /// Thrown when fails to make API call - /// Id of the folder - /// Number of documents per page (optional, default to 10) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// ApiResponse of GetFolderLists - public ApiResponse< GetFolderLists > GetFolderListsWithHttpInfo (long? folderId, long? limit = null, long? offset = null, string sort = null) + /// + /// Updated task details. + /// ApiResponse of Object(void) + public ApiResponse CrmTasksIdPatchWithHttpInfo (string id, Body7 body) { - // verify the required parameter 'folderId' is set - if (folderId == null) - throw new ApiException(400, "Missing required parameter 'folderId' when calling FoldersApi->GetFolderLists"); - - var localVarPath = "./contacts/folders/{folderId}/lists"; + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling TasksApi->CrmTasksIdPatch"); + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling TasksApi->CrmTasksIdPatch"); + + var localVarPath = "./crm/tasks/{id}"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -931,10 +1005,15 @@ public ApiResponse< GetFolderLists > GetFolderListsWithHttpInfo (long? folderId, if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (folderId != null) localVarPathParams.Add("folderId", this.Configuration.ApiClient.ParameterToString(folderId)); // path parameter - if (limit != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "limit", limit)); // query parameter - if (offset != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "offset", offset)); // query parameter - if (sort != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sort", sort)); // query parameter + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + if (body != null && body.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter + } + else + { + localVarPostBody = body; // byte array + } // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -949,54 +1028,52 @@ public ApiResponse< GetFolderLists > GetFolderListsWithHttpInfo (long? folderId, // make the HTTP request IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, - Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.PATCH, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("GetFolderLists", localVarResponse); + Exception exception = ExceptionFactory("CrmTasksIdPatch", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (GetFolderLists) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetFolderLists))); + null); } /// - /// Get lists in a folder + /// Update a task /// /// Thrown when fails to make API call - /// Id of the folder - /// Number of documents per page (optional, default to 10) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// Task of GetFolderLists - public async System.Threading.Tasks.Task GetFolderListsAsync (long? folderId, long? limit = null, long? offset = null, string sort = null) + /// + /// Updated task details. + /// Task of void + public async System.Threading.Tasks.Task CrmTasksIdPatchAsync (string id, Body7 body) { - ApiResponse localVarResponse = await GetFolderListsAsyncWithHttpInfo(folderId, limit, offset, sort); - return localVarResponse.Data; + await CrmTasksIdPatchAsyncWithHttpInfo(id, body); } /// - /// Get lists in a folder + /// Update a task /// /// Thrown when fails to make API call - /// Id of the folder - /// Number of documents per page (optional, default to 10) - /// Index of the first document of the page (optional, default to 0) - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// Task of ApiResponse (GetFolderLists) - public async System.Threading.Tasks.Task> GetFolderListsAsyncWithHttpInfo (long? folderId, long? limit = null, long? offset = null, string sort = null) + /// + /// Updated task details. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> CrmTasksIdPatchAsyncWithHttpInfo (string id, Body7 body) { - // verify the required parameter 'folderId' is set - if (folderId == null) - throw new ApiException(400, "Missing required parameter 'folderId' when calling FoldersApi->GetFolderLists"); - - var localVarPath = "./contacts/folders/{folderId}/lists"; + // verify the required parameter 'id' is set + if (id == null) + throw new ApiException(400, "Missing required parameter 'id' when calling TasksApi->CrmTasksIdPatch"); + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling TasksApi->CrmTasksIdPatch"); + + var localVarPath = "./crm/tasks/{id}"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -1018,10 +1095,15 @@ public async System.Threading.Tasks.Task> GetFolderL if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (folderId != null) localVarPathParams.Add("folderId", this.Configuration.ApiClient.ParameterToString(folderId)); // path parameter - if (limit != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "limit", limit)); // query parameter - if (offset != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "offset", offset)); // query parameter - if (sort != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sort", sort)); // query parameter + if (id != null) localVarPathParams.Add("id", this.Configuration.ApiClient.ParameterToString(id)); // path parameter + if (body != null && body.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter + } + else + { + localVarPostBody = body; // byte array + } // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -1036,54 +1118,47 @@ public async System.Threading.Tasks.Task> GetFolderL // make the HTTP request IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, - Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.PATCH, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("GetFolderLists", localVarResponse); + Exception exception = ExceptionFactory("CrmTasksIdPatch", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (GetFolderLists) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetFolderLists))); + null); } /// - /// Get all folders + /// Create a task /// /// Thrown when fails to make API call - /// Number of documents per page - /// Index of the first document of the page - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// GetFolders - public GetFolders GetFolders (long? limit, long? offset, string sort = null) + /// Task name. + /// InlineResponse2011 + public InlineResponse2011 CrmTasksPost (Body6 body) { - ApiResponse localVarResponse = GetFoldersWithHttpInfo(limit, offset, sort); + ApiResponse localVarResponse = CrmTasksPostWithHttpInfo(body); return localVarResponse.Data; } /// - /// Get all folders + /// Create a task /// /// Thrown when fails to make API call - /// Number of documents per page - /// Index of the first document of the page - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// ApiResponse of GetFolders - public ApiResponse< GetFolders > GetFoldersWithHttpInfo (long? limit, long? offset, string sort = null) + /// Task name. + /// ApiResponse of InlineResponse2011 + public ApiResponse< InlineResponse2011 > CrmTasksPostWithHttpInfo (Body6 body) { - // verify the required parameter 'limit' is set - if (limit == null) - throw new ApiException(400, "Missing required parameter 'limit' when calling FoldersApi->GetFolders"); - // verify the required parameter 'offset' is set - if (offset == null) - throw new ApiException(400, "Missing required parameter 'offset' when calling FoldersApi->GetFolders"); - - var localVarPath = "./contacts/folders"; + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling TasksApi->CrmTasksPost"); + + var localVarPath = "./crm/tasks"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -1105,9 +1180,14 @@ public ApiResponse< GetFolders > GetFoldersWithHttpInfo (long? limit, long? offs if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (limit != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "limit", limit)); // query parameter - if (offset != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "offset", offset)); // query parameter - if (sort != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sort", sort)); // query parameter + if (body != null && body.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter + } + else + { + localVarPostBody = body; // byte array + } // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -1122,55 +1202,48 @@ public ApiResponse< GetFolders > GetFoldersWithHttpInfo (long? limit, long? offs // make the HTTP request IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, - Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("GetFolders", localVarResponse); + Exception exception = ExceptionFactory("CrmTasksPost", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (GetFolders) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetFolders))); + (InlineResponse2011) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(InlineResponse2011))); } /// - /// Get all folders + /// Create a task /// /// Thrown when fails to make API call - /// Number of documents per page - /// Index of the first document of the page - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// Task of GetFolders - public async System.Threading.Tasks.Task GetFoldersAsync (long? limit, long? offset, string sort = null) + /// Task name. + /// Task of InlineResponse2011 + public async System.Threading.Tasks.Task CrmTasksPostAsync (Body6 body) { - ApiResponse localVarResponse = await GetFoldersAsyncWithHttpInfo(limit, offset, sort); + ApiResponse localVarResponse = await CrmTasksPostAsyncWithHttpInfo(body); return localVarResponse.Data; } /// - /// Get all folders + /// Create a task /// /// Thrown when fails to make API call - /// Number of documents per page - /// Index of the first document of the page - /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) - /// Task of ApiResponse (GetFolders) - public async System.Threading.Tasks.Task> GetFoldersAsyncWithHttpInfo (long? limit, long? offset, string sort = null) + /// Task name. + /// Task of ApiResponse (InlineResponse2011) + public async System.Threading.Tasks.Task> CrmTasksPostAsyncWithHttpInfo (Body6 body) { - // verify the required parameter 'limit' is set - if (limit == null) - throw new ApiException(400, "Missing required parameter 'limit' when calling FoldersApi->GetFolders"); - // verify the required parameter 'offset' is set - if (offset == null) - throw new ApiException(400, "Missing required parameter 'offset' when calling FoldersApi->GetFolders"); - - var localVarPath = "./contacts/folders"; + // verify the required parameter 'body' is set + if (body == null) + throw new ApiException(400, "Missing required parameter 'body' when calling TasksApi->CrmTasksPost"); + + var localVarPath = "./crm/tasks"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -1192,9 +1265,14 @@ public async System.Threading.Tasks.Task> GetFoldersAsyn if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (limit != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "limit", limit)); // query parameter - if (offset != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "offset", offset)); // query parameter - if (sort != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sort", sort)); // query parameter + if (body != null && body.GetType() != typeof(byte[])) + { + localVarPostBody = this.Configuration.ApiClient.Serialize(body); // http body (model) parameter + } + else + { + localVarPostBody = body; // byte array + } // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -1209,51 +1287,42 @@ public async System.Threading.Tasks.Task> GetFoldersAsyn // make the HTTP request IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, - Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.POST, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("GetFolders", localVarResponse); + Exception exception = ExceptionFactory("CrmTasksPost", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - (GetFolders) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetFolders))); + (InlineResponse2011) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(InlineResponse2011))); } /// - /// Update a folder + /// Get all task types /// /// Thrown when fails to make API call - /// Id of the folder - /// Name of the folder - /// - public void UpdateFolder (long? folderId, CreateUpdateFolder updateFolder) + /// TaskTypes + public TaskTypes CrmTasktypesGet () { - UpdateFolderWithHttpInfo(folderId, updateFolder); + ApiResponse localVarResponse = CrmTasktypesGetWithHttpInfo(); + return localVarResponse.Data; } /// - /// Update a folder + /// Get all task types /// /// Thrown when fails to make API call - /// Id of the folder - /// Name of the folder - /// ApiResponse of Object(void) - public ApiResponse UpdateFolderWithHttpInfo (long? folderId, CreateUpdateFolder updateFolder) + /// ApiResponse of TaskTypes + public ApiResponse< TaskTypes > CrmTasktypesGetWithHttpInfo () { - // verify the required parameter 'folderId' is set - if (folderId == null) - throw new ApiException(400, "Missing required parameter 'folderId' when calling FoldersApi->UpdateFolder"); - // verify the required parameter 'updateFolder' is set - if (updateFolder == null) - throw new ApiException(400, "Missing required parameter 'updateFolder' when calling FoldersApi->UpdateFolder"); - - var localVarPath = "./contacts/folders/{folderId}"; + + var localVarPath = "./crm/tasktypes"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -1275,15 +1344,6 @@ public ApiResponse UpdateFolderWithHttpInfo (long? folderId, CreateUpdat if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (folderId != null) localVarPathParams.Add("folderId", this.Configuration.ApiClient.ParameterToString(folderId)); // path parameter - if (updateFolder != null && updateFolder.GetType() != typeof(byte[])) - { - localVarPostBody = this.Configuration.ApiClient.Serialize(updateFolder); // http body (model) parameter - } - else - { - localVarPostBody = updateFolder; // byte array - } // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -1298,52 +1358,43 @@ public ApiResponse UpdateFolderWithHttpInfo (long? folderId, CreateUpdat // make the HTTP request IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, - Method.PUT, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("UpdateFolder", localVarResponse); + Exception exception = ExceptionFactory("CrmTasktypesGet", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - null); + (TaskTypes) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(TaskTypes))); } /// - /// Update a folder + /// Get all task types /// /// Thrown when fails to make API call - /// Id of the folder - /// Name of the folder - /// Task of void - public async System.Threading.Tasks.Task UpdateFolderAsync (long? folderId, CreateUpdateFolder updateFolder) + /// Task of TaskTypes + public async System.Threading.Tasks.Task CrmTasktypesGetAsync () { - await UpdateFolderAsyncWithHttpInfo(folderId, updateFolder); + ApiResponse localVarResponse = await CrmTasktypesGetAsyncWithHttpInfo(); + return localVarResponse.Data; } /// - /// Update a folder + /// Get all task types /// /// Thrown when fails to make API call - /// Id of the folder - /// Name of the folder - /// Task of ApiResponse - public async System.Threading.Tasks.Task> UpdateFolderAsyncWithHttpInfo (long? folderId, CreateUpdateFolder updateFolder) + /// Task of ApiResponse (TaskTypes) + public async System.Threading.Tasks.Task> CrmTasktypesGetAsyncWithHttpInfo () { - // verify the required parameter 'folderId' is set - if (folderId == null) - throw new ApiException(400, "Missing required parameter 'folderId' when calling FoldersApi->UpdateFolder"); - // verify the required parameter 'updateFolder' is set - if (updateFolder == null) - throw new ApiException(400, "Missing required parameter 'updateFolder' when calling FoldersApi->UpdateFolder"); - - var localVarPath = "./contacts/folders/{folderId}"; + + var localVarPath = "./crm/tasktypes"; var localVarPathParams = new Dictionary(); var localVarQueryParams = new List>(); var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); @@ -1365,15 +1416,6 @@ public async System.Threading.Tasks.Task> UpdateFolderAsyncW if (localVarHttpHeaderAccept != null) localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); - if (folderId != null) localVarPathParams.Add("folderId", this.Configuration.ApiClient.ParameterToString(folderId)); // path parameter - if (updateFolder != null && updateFolder.GetType() != typeof(byte[])) - { - localVarPostBody = this.Configuration.ApiClient.Serialize(updateFolder); // http body (model) parameter - } - else - { - localVarPostBody = updateFolder; // byte array - } // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -1388,20 +1430,20 @@ public async System.Threading.Tasks.Task> UpdateFolderAsyncW // make the HTTP request IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, - Method.PUT, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, localVarPathParams, localVarHttpContentType); int localVarStatusCode = (int) localVarResponse.StatusCode; if (ExceptionFactory != null) { - Exception exception = ExceptionFactory("UpdateFolder", localVarResponse); + Exception exception = ExceptionFactory("CrmTasktypesGet", localVarResponse); if (exception != null) throw exception; } - return new ApiResponse(localVarStatusCode, + return new ApiResponse(localVarStatusCode, localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), - null); + (TaskTypes) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(TaskTypes))); } } diff --git a/src/sib_api_v3_sdk/Api/TransactionalEmailsApi.cs b/src/sib_api_v3_sdk/Api/TransactionalEmailsApi.cs index 7692f37..0bc85b0 100644 --- a/src/sib_api_v3_sdk/Api/TransactionalEmailsApi.cs +++ b/src/sib_api_v3_sdk/Api/TransactionalEmailsApi.cs @@ -109,6 +109,27 @@ public interface ITransactionalEmailsApi : IApiAccessor /// ApiResponse of Object(void) ApiResponse DeleteHardbouncesWithHttpInfo (DeleteHardbounces deleteHardbounces = null); /// + /// Delete scheduled emails by batchId or messageId + /// + /// + /// Delete scheduled batch of emails by batchId or single scheduled email by messageId + /// + /// Thrown when fails to make API call + /// The `batchId` of scheduled emails batch (Should be a valid UUIDv4) or the `messageId` of scheduled email. + /// + void DeleteScheduledEmailById (string identifier); + + /// + /// Delete scheduled emails by batchId or messageId + /// + /// + /// Delete scheduled batch of emails by batchId or single scheduled email by messageId + /// + /// Thrown when fails to make API call + /// The `batchId` of scheduled emails batch (Should be a valid UUIDv4) or the `messageId` of scheduled email. + /// ApiResponse of Object(void) + ApiResponse DeleteScheduledEmailByIdWithHttpInfo (string identifier); + /// /// Delete an inactive email template /// /// @@ -182,7 +203,7 @@ public interface ITransactionalEmailsApi : IApiAccessor /// This endpoint will show the aggregated stats for past 30 days by default if `startDate` and `endDate` OR `days` is not passed. The date range can not exceed 90 days /// /// Thrown when fails to make API call - /// Number limitation for the result returned (optional, default to 50) + /// Number limitation for the result returned (optional, default to 2500) /// Beginning point in the list to retrieve from. (optional, default to 0) /// Mandatory if endDate is used. Starting date of the report (YYYY-MM-DD). Must be lower than equal to endDate (optional) /// Mandatory if startDate is used. Ending date of the report (YYYY-MM-DD). Must be greater than equal to startDate (optional) @@ -203,7 +224,7 @@ public interface ITransactionalEmailsApi : IApiAccessor /// This endpoint will show the aggregated stats for past 30 days by default if `startDate` and `endDate` OR `days` is not passed. The date range can not exceed 90 days /// /// Thrown when fails to make API call - /// Number limitation for the result returned (optional, default to 50) + /// Number limitation for the result returned (optional, default to 2500) /// Beginning point in the list to retrieve from. (optional, default to 0) /// Mandatory if endDate is used. Starting date of the report (YYYY-MM-DD). Must be lower than equal to endDate (optional) /// Mandatory if startDate is used. Ending date of the report (YYYY-MM-DD). Must be greater than equal to startDate (optional) @@ -217,6 +238,64 @@ public interface ITransactionalEmailsApi : IApiAccessor /// ApiResponse of GetEmailEventReport ApiResponse GetEmailEventReportWithHttpInfo (long? limit = null, long? offset = null, string startDate = null, string endDate = null, long? days = null, string email = null, string _event = null, string tags = null, string messageId = null, long? templateId = null, string sort = null); /// + /// Fetch scheduled emails by batchId + /// + /// + /// Fetch scheduled batch of emails by batchId (Can retrieve data upto 30 days old) + /// + /// Thrown when fails to make API call + /// The batchId of scheduled emails batch (Should be a valid UUIDv4) + /// Mandatory if `endDate` is used. Starting date (YYYY-MM-DD) from which you want to fetch the list. Can be maximum 30 days older tha current date. (optional) + /// Mandatory if `startDate` is used. Ending date (YYYY-MM-DD) till which you want to fetch the list. Maximum time period that can be selected is one month. (optional) + /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) + /// Filter the records by `status` of the scheduled email batch or message. (optional) + /// Number of documents returned per page (optional, default to 100) + /// Index of the first document on the page (optional, default to 0) + /// GetScheduledEmailByBatchId + GetScheduledEmailByBatchId GetScheduledEmailByBatchId (string batchId, DateTime? startDate = null, DateTime? endDate = null, string sort = null, string status = null, long? limit = null, long? offset = null); + + /// + /// Fetch scheduled emails by batchId + /// + /// + /// Fetch scheduled batch of emails by batchId (Can retrieve data upto 30 days old) + /// + /// Thrown when fails to make API call + /// The batchId of scheduled emails batch (Should be a valid UUIDv4) + /// Mandatory if `endDate` is used. Starting date (YYYY-MM-DD) from which you want to fetch the list. Can be maximum 30 days older tha current date. (optional) + /// Mandatory if `startDate` is used. Ending date (YYYY-MM-DD) till which you want to fetch the list. Maximum time period that can be selected is one month. (optional) + /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) + /// Filter the records by `status` of the scheduled email batch or message. (optional) + /// Number of documents returned per page (optional, default to 100) + /// Index of the first document on the page (optional, default to 0) + /// ApiResponse of GetScheduledEmailByBatchId + ApiResponse GetScheduledEmailByBatchIdWithHttpInfo (string batchId, DateTime? startDate = null, DateTime? endDate = null, string sort = null, string status = null, long? limit = null, long? offset = null); + /// + /// Fetch scheduled email by messageId + /// + /// + /// Fetch scheduled email by messageId (Can retrieve data upto 30 days old) + /// + /// Thrown when fails to make API call + /// The messageId of scheduled email + /// Mandatory if endDate is used. Starting date (YYYY-MM-DD) from which you want to fetch the list. Can be maximum 30 days older tha current date. (optional) + /// Mandatory if startDate is used. Ending date (YYYY-MM-DD) till which you want to fetch the list. Maximum time period that can be selected is one month. (optional) + /// GetScheduledEmailByMessageId + GetScheduledEmailByMessageId GetScheduledEmailByMessageId (string messageId, DateTime? startDate = null, DateTime? endDate = null); + + /// + /// Fetch scheduled email by messageId + /// + /// + /// Fetch scheduled email by messageId (Can retrieve data upto 30 days old) + /// + /// Thrown when fails to make API call + /// The messageId of scheduled email + /// Mandatory if endDate is used. Starting date (YYYY-MM-DD) from which you want to fetch the list. Can be maximum 30 days older tha current date. (optional) + /// Mandatory if startDate is used. Ending date (YYYY-MM-DD) till which you want to fetch the list. Maximum time period that can be selected is one month. (optional) + /// ApiResponse of GetScheduledEmailByMessageId + ApiResponse GetScheduledEmailByMessageIdWithHttpInfo (string messageId, DateTime? startDate = null, DateTime? endDate = null); + /// /// Get your transactional email activity aggregated per day /// /// @@ -580,6 +659,27 @@ public interface ITransactionalEmailsApi : IApiAccessor /// Task of ApiResponse System.Threading.Tasks.Task> DeleteHardbouncesAsyncWithHttpInfo (DeleteHardbounces deleteHardbounces = null); /// + /// Delete scheduled emails by batchId or messageId + /// + /// + /// Delete scheduled batch of emails by batchId or single scheduled email by messageId + /// + /// Thrown when fails to make API call + /// The `batchId` of scheduled emails batch (Should be a valid UUIDv4) or the `messageId` of scheduled email. + /// Task of void + System.Threading.Tasks.Task DeleteScheduledEmailByIdAsync (string identifier); + + /// + /// Delete scheduled emails by batchId or messageId + /// + /// + /// Delete scheduled batch of emails by batchId or single scheduled email by messageId + /// + /// Thrown when fails to make API call + /// The `batchId` of scheduled emails batch (Should be a valid UUIDv4) or the `messageId` of scheduled email. + /// Task of ApiResponse + System.Threading.Tasks.Task> DeleteScheduledEmailByIdAsyncWithHttpInfo (string identifier); + /// /// Delete an inactive email template /// /// @@ -653,7 +753,7 @@ public interface ITransactionalEmailsApi : IApiAccessor /// This endpoint will show the aggregated stats for past 30 days by default if `startDate` and `endDate` OR `days` is not passed. The date range can not exceed 90 days /// /// Thrown when fails to make API call - /// Number limitation for the result returned (optional, default to 50) + /// Number limitation for the result returned (optional, default to 2500) /// Beginning point in the list to retrieve from. (optional, default to 0) /// Mandatory if endDate is used. Starting date of the report (YYYY-MM-DD). Must be lower than equal to endDate (optional) /// Mandatory if startDate is used. Ending date of the report (YYYY-MM-DD). Must be greater than equal to startDate (optional) @@ -674,7 +774,7 @@ public interface ITransactionalEmailsApi : IApiAccessor /// This endpoint will show the aggregated stats for past 30 days by default if `startDate` and `endDate` OR `days` is not passed. The date range can not exceed 90 days /// /// Thrown when fails to make API call - /// Number limitation for the result returned (optional, default to 50) + /// Number limitation for the result returned (optional, default to 2500) /// Beginning point in the list to retrieve from. (optional, default to 0) /// Mandatory if endDate is used. Starting date of the report (YYYY-MM-DD). Must be lower than equal to endDate (optional) /// Mandatory if startDate is used. Ending date of the report (YYYY-MM-DD). Must be greater than equal to startDate (optional) @@ -688,6 +788,64 @@ public interface ITransactionalEmailsApi : IApiAccessor /// Task of ApiResponse (GetEmailEventReport) System.Threading.Tasks.Task> GetEmailEventReportAsyncWithHttpInfo (long? limit = null, long? offset = null, string startDate = null, string endDate = null, long? days = null, string email = null, string _event = null, string tags = null, string messageId = null, long? templateId = null, string sort = null); /// + /// Fetch scheduled emails by batchId + /// + /// + /// Fetch scheduled batch of emails by batchId (Can retrieve data upto 30 days old) + /// + /// Thrown when fails to make API call + /// The batchId of scheduled emails batch (Should be a valid UUIDv4) + /// Mandatory if `endDate` is used. Starting date (YYYY-MM-DD) from which you want to fetch the list. Can be maximum 30 days older tha current date. (optional) + /// Mandatory if `startDate` is used. Ending date (YYYY-MM-DD) till which you want to fetch the list. Maximum time period that can be selected is one month. (optional) + /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) + /// Filter the records by `status` of the scheduled email batch or message. (optional) + /// Number of documents returned per page (optional, default to 100) + /// Index of the first document on the page (optional, default to 0) + /// Task of GetScheduledEmailByBatchId + System.Threading.Tasks.Task GetScheduledEmailByBatchIdAsync (string batchId, DateTime? startDate = null, DateTime? endDate = null, string sort = null, string status = null, long? limit = null, long? offset = null); + + /// + /// Fetch scheduled emails by batchId + /// + /// + /// Fetch scheduled batch of emails by batchId (Can retrieve data upto 30 days old) + /// + /// Thrown when fails to make API call + /// The batchId of scheduled emails batch (Should be a valid UUIDv4) + /// Mandatory if `endDate` is used. Starting date (YYYY-MM-DD) from which you want to fetch the list. Can be maximum 30 days older tha current date. (optional) + /// Mandatory if `startDate` is used. Ending date (YYYY-MM-DD) till which you want to fetch the list. Maximum time period that can be selected is one month. (optional) + /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) + /// Filter the records by `status` of the scheduled email batch or message. (optional) + /// Number of documents returned per page (optional, default to 100) + /// Index of the first document on the page (optional, default to 0) + /// Task of ApiResponse (GetScheduledEmailByBatchId) + System.Threading.Tasks.Task> GetScheduledEmailByBatchIdAsyncWithHttpInfo (string batchId, DateTime? startDate = null, DateTime? endDate = null, string sort = null, string status = null, long? limit = null, long? offset = null); + /// + /// Fetch scheduled email by messageId + /// + /// + /// Fetch scheduled email by messageId (Can retrieve data upto 30 days old) + /// + /// Thrown when fails to make API call + /// The messageId of scheduled email + /// Mandatory if endDate is used. Starting date (YYYY-MM-DD) from which you want to fetch the list. Can be maximum 30 days older tha current date. (optional) + /// Mandatory if startDate is used. Ending date (YYYY-MM-DD) till which you want to fetch the list. Maximum time period that can be selected is one month. (optional) + /// Task of GetScheduledEmailByMessageId + System.Threading.Tasks.Task GetScheduledEmailByMessageIdAsync (string messageId, DateTime? startDate = null, DateTime? endDate = null); + + /// + /// Fetch scheduled email by messageId + /// + /// + /// Fetch scheduled email by messageId (Can retrieve data upto 30 days old) + /// + /// Thrown when fails to make API call + /// The messageId of scheduled email + /// Mandatory if endDate is used. Starting date (YYYY-MM-DD) from which you want to fetch the list. Can be maximum 30 days older tha current date. (optional) + /// Mandatory if startDate is used. Ending date (YYYY-MM-DD) till which you want to fetch the list. Maximum time period that can be selected is one month. (optional) + /// Task of ApiResponse (GetScheduledEmailByMessageId) + System.Threading.Tasks.Task> GetScheduledEmailByMessageIdAsyncWithHttpInfo (string messageId, DateTime? startDate = null, DateTime? endDate = null); + /// /// Get your transactional email activity aggregated per day /// /// @@ -1714,6 +1872,159 @@ public async System.Threading.Tasks.Task> DeleteHardbouncesA null); } + /// + /// Delete scheduled emails by batchId or messageId Delete scheduled batch of emails by batchId or single scheduled email by messageId + /// + /// Thrown when fails to make API call + /// The `batchId` of scheduled emails batch (Should be a valid UUIDv4) or the `messageId` of scheduled email. + /// + public void DeleteScheduledEmailById (string identifier) + { + DeleteScheduledEmailByIdWithHttpInfo(identifier); + } + + /// + /// Delete scheduled emails by batchId or messageId Delete scheduled batch of emails by batchId or single scheduled email by messageId + /// + /// Thrown when fails to make API call + /// The `batchId` of scheduled emails batch (Should be a valid UUIDv4) or the `messageId` of scheduled email. + /// ApiResponse of Object(void) + public ApiResponse DeleteScheduledEmailByIdWithHttpInfo (string identifier) + { + // verify the required parameter 'identifier' is set + if (identifier == null) + throw new ApiException(400, "Missing required parameter 'identifier' when calling TransactionalEmailsApi->DeleteScheduledEmailById"); + + var localVarPath = "./smtp/email/{identifier}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (identifier != null) localVarPathParams.Add("identifier", this.Configuration.ApiClient.ParameterToString(identifier)); // path parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, + Method.DELETE, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("DeleteScheduledEmailById", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + null); + } + + /// + /// Delete scheduled emails by batchId or messageId Delete scheduled batch of emails by batchId or single scheduled email by messageId + /// + /// Thrown when fails to make API call + /// The `batchId` of scheduled emails batch (Should be a valid UUIDv4) or the `messageId` of scheduled email. + /// Task of void + public async System.Threading.Tasks.Task DeleteScheduledEmailByIdAsync (string identifier) + { + await DeleteScheduledEmailByIdAsyncWithHttpInfo(identifier); + + } + + /// + /// Delete scheduled emails by batchId or messageId Delete scheduled batch of emails by batchId or single scheduled email by messageId + /// + /// Thrown when fails to make API call + /// The `batchId` of scheduled emails batch (Should be a valid UUIDv4) or the `messageId` of scheduled email. + /// Task of ApiResponse + public async System.Threading.Tasks.Task> DeleteScheduledEmailByIdAsyncWithHttpInfo (string identifier) + { + // verify the required parameter 'identifier' is set + if (identifier == null) + throw new ApiException(400, "Missing required parameter 'identifier' when calling TransactionalEmailsApi->DeleteScheduledEmailById"); + + var localVarPath = "./smtp/email/{identifier}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (identifier != null) localVarPathParams.Add("identifier", this.Configuration.ApiClient.ParameterToString(identifier)); // path parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + Method.DELETE, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("DeleteScheduledEmailById", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + null); + } + /// /// Delete an inactive email template /// @@ -2181,7 +2492,7 @@ public async System.Threading.Tasks.Task> GetBloc /// Get all your transactional email activity (unaggregated events) This endpoint will show the aggregated stats for past 30 days by default if `startDate` and `endDate` OR `days` is not passed. The date range can not exceed 90 days /// /// Thrown when fails to make API call - /// Number limitation for the result returned (optional, default to 50) + /// Number limitation for the result returned (optional, default to 2500) /// Beginning point in the list to retrieve from. (optional, default to 0) /// Mandatory if endDate is used. Starting date of the report (YYYY-MM-DD). Must be lower than equal to endDate (optional) /// Mandatory if startDate is used. Ending date of the report (YYYY-MM-DD). Must be greater than equal to startDate (optional) @@ -2203,7 +2514,7 @@ public GetEmailEventReport GetEmailEventReport (long? limit = null, long? offset /// Get all your transactional email activity (unaggregated events) This endpoint will show the aggregated stats for past 30 days by default if `startDate` and `endDate` OR `days` is not passed. The date range can not exceed 90 days /// /// Thrown when fails to make API call - /// Number limitation for the result returned (optional, default to 50) + /// Number limitation for the result returned (optional, default to 2500) /// Beginning point in the list to retrieve from. (optional, default to 0) /// Mandatory if endDate is used. Starting date of the report (YYYY-MM-DD). Must be lower than equal to endDate (optional) /// Mandatory if startDate is used. Ending date of the report (YYYY-MM-DD). Must be greater than equal to startDate (optional) @@ -2285,7 +2596,7 @@ public ApiResponse< GetEmailEventReport > GetEmailEventReportWithHttpInfo (long? /// Get all your transactional email activity (unaggregated events) This endpoint will show the aggregated stats for past 30 days by default if `startDate` and `endDate` OR `days` is not passed. The date range can not exceed 90 days /// /// Thrown when fails to make API call - /// Number limitation for the result returned (optional, default to 50) + /// Number limitation for the result returned (optional, default to 2500) /// Beginning point in the list to retrieve from. (optional, default to 0) /// Mandatory if endDate is used. Starting date of the report (YYYY-MM-DD). Must be lower than equal to endDate (optional) /// Mandatory if startDate is used. Ending date of the report (YYYY-MM-DD). Must be greater than equal to startDate (optional) @@ -2308,7 +2619,7 @@ public async System.Threading.Tasks.Task GetEmailEventRepor /// Get all your transactional email activity (unaggregated events) This endpoint will show the aggregated stats for past 30 days by default if `startDate` and `endDate` OR `days` is not passed. The date range can not exceed 90 days /// /// Thrown when fails to make API call - /// Number limitation for the result returned (optional, default to 50) + /// Number limitation for the result returned (optional, default to 2500) /// Beginning point in the list to retrieve from. (optional, default to 0) /// Mandatory if endDate is used. Starting date of the report (YYYY-MM-DD). Must be lower than equal to endDate (optional) /// Mandatory if startDate is used. Ending date of the report (YYYY-MM-DD). Must be greater than equal to startDate (optional) @@ -2386,6 +2697,364 @@ public async System.Threading.Tasks.Task> GetEm (GetEmailEventReport) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetEmailEventReport))); } + /// + /// Fetch scheduled emails by batchId Fetch scheduled batch of emails by batchId (Can retrieve data upto 30 days old) + /// + /// Thrown when fails to make API call + /// The batchId of scheduled emails batch (Should be a valid UUIDv4) + /// Mandatory if `endDate` is used. Starting date (YYYY-MM-DD) from which you want to fetch the list. Can be maximum 30 days older tha current date. (optional) + /// Mandatory if `startDate` is used. Ending date (YYYY-MM-DD) till which you want to fetch the list. Maximum time period that can be selected is one month. (optional) + /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) + /// Filter the records by `status` of the scheduled email batch or message. (optional) + /// Number of documents returned per page (optional, default to 100) + /// Index of the first document on the page (optional, default to 0) + /// GetScheduledEmailByBatchId + public GetScheduledEmailByBatchId GetScheduledEmailByBatchId (string batchId, DateTime? startDate = null, DateTime? endDate = null, string sort = null, string status = null, long? limit = null, long? offset = null) + { + ApiResponse localVarResponse = GetScheduledEmailByBatchIdWithHttpInfo(batchId, startDate, endDate, sort, status, limit, offset); + return localVarResponse.Data; + } + + /// + /// Fetch scheduled emails by batchId Fetch scheduled batch of emails by batchId (Can retrieve data upto 30 days old) + /// + /// Thrown when fails to make API call + /// The batchId of scheduled emails batch (Should be a valid UUIDv4) + /// Mandatory if `endDate` is used. Starting date (YYYY-MM-DD) from which you want to fetch the list. Can be maximum 30 days older tha current date. (optional) + /// Mandatory if `startDate` is used. Ending date (YYYY-MM-DD) till which you want to fetch the list. Maximum time period that can be selected is one month. (optional) + /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) + /// Filter the records by `status` of the scheduled email batch or message. (optional) + /// Number of documents returned per page (optional, default to 100) + /// Index of the first document on the page (optional, default to 0) + /// ApiResponse of GetScheduledEmailByBatchId + public ApiResponse< GetScheduledEmailByBatchId > GetScheduledEmailByBatchIdWithHttpInfo (string batchId, DateTime? startDate = null, DateTime? endDate = null, string sort = null, string status = null, long? limit = null, long? offset = null) + { + // verify the required parameter 'batchId' is set + if (batchId == null) + throw new ApiException(400, "Missing required parameter 'batchId' when calling TransactionalEmailsApi->GetScheduledEmailByBatchId"); + + var localVarPath = "./smtp/emailStatus/{batchId}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (batchId != null) localVarPathParams.Add("batchId", this.Configuration.ApiClient.ParameterToString(batchId)); // path parameter + if (startDate != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "startDate", startDate)); // query parameter + if (endDate != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "endDate", endDate)); // query parameter + if (sort != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sort", sort)); // query parameter + if (status != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "status", status)); // query parameter + if (limit != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "limit", limit)); // query parameter + if (offset != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "offset", offset)); // query parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("GetScheduledEmailByBatchId", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (GetScheduledEmailByBatchId) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetScheduledEmailByBatchId))); + } + + /// + /// Fetch scheduled emails by batchId Fetch scheduled batch of emails by batchId (Can retrieve data upto 30 days old) + /// + /// Thrown when fails to make API call + /// The batchId of scheduled emails batch (Should be a valid UUIDv4) + /// Mandatory if `endDate` is used. Starting date (YYYY-MM-DD) from which you want to fetch the list. Can be maximum 30 days older tha current date. (optional) + /// Mandatory if `startDate` is used. Ending date (YYYY-MM-DD) till which you want to fetch the list. Maximum time period that can be selected is one month. (optional) + /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) + /// Filter the records by `status` of the scheduled email batch or message. (optional) + /// Number of documents returned per page (optional, default to 100) + /// Index of the first document on the page (optional, default to 0) + /// Task of GetScheduledEmailByBatchId + public async System.Threading.Tasks.Task GetScheduledEmailByBatchIdAsync (string batchId, DateTime? startDate = null, DateTime? endDate = null, string sort = null, string status = null, long? limit = null, long? offset = null) + { + ApiResponse localVarResponse = await GetScheduledEmailByBatchIdAsyncWithHttpInfo(batchId, startDate, endDate, sort, status, limit, offset); + return localVarResponse.Data; + + } + + /// + /// Fetch scheduled emails by batchId Fetch scheduled batch of emails by batchId (Can retrieve data upto 30 days old) + /// + /// Thrown when fails to make API call + /// The batchId of scheduled emails batch (Should be a valid UUIDv4) + /// Mandatory if `endDate` is used. Starting date (YYYY-MM-DD) from which you want to fetch the list. Can be maximum 30 days older tha current date. (optional) + /// Mandatory if `startDate` is used. Ending date (YYYY-MM-DD) till which you want to fetch the list. Maximum time period that can be selected is one month. (optional) + /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) + /// Filter the records by `status` of the scheduled email batch or message. (optional) + /// Number of documents returned per page (optional, default to 100) + /// Index of the first document on the page (optional, default to 0) + /// Task of ApiResponse (GetScheduledEmailByBatchId) + public async System.Threading.Tasks.Task> GetScheduledEmailByBatchIdAsyncWithHttpInfo (string batchId, DateTime? startDate = null, DateTime? endDate = null, string sort = null, string status = null, long? limit = null, long? offset = null) + { + // verify the required parameter 'batchId' is set + if (batchId == null) + throw new ApiException(400, "Missing required parameter 'batchId' when calling TransactionalEmailsApi->GetScheduledEmailByBatchId"); + + var localVarPath = "./smtp/emailStatus/{batchId}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (batchId != null) localVarPathParams.Add("batchId", this.Configuration.ApiClient.ParameterToString(batchId)); // path parameter + if (startDate != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "startDate", startDate)); // query parameter + if (endDate != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "endDate", endDate)); // query parameter + if (sort != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "sort", sort)); // query parameter + if (status != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "status", status)); // query parameter + if (limit != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "limit", limit)); // query parameter + if (offset != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "offset", offset)); // query parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("GetScheduledEmailByBatchId", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (GetScheduledEmailByBatchId) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetScheduledEmailByBatchId))); + } + + /// + /// Fetch scheduled email by messageId Fetch scheduled email by messageId (Can retrieve data upto 30 days old) + /// + /// Thrown when fails to make API call + /// The messageId of scheduled email + /// Mandatory if endDate is used. Starting date (YYYY-MM-DD) from which you want to fetch the list. Can be maximum 30 days older tha current date. (optional) + /// Mandatory if startDate is used. Ending date (YYYY-MM-DD) till which you want to fetch the list. Maximum time period that can be selected is one month. (optional) + /// GetScheduledEmailByMessageId + public GetScheduledEmailByMessageId GetScheduledEmailByMessageId (string messageId, DateTime? startDate = null, DateTime? endDate = null) + { + ApiResponse localVarResponse = GetScheduledEmailByMessageIdWithHttpInfo(messageId, startDate, endDate); + return localVarResponse.Data; + } + + /// + /// Fetch scheduled email by messageId Fetch scheduled email by messageId (Can retrieve data upto 30 days old) + /// + /// Thrown when fails to make API call + /// The messageId of scheduled email + /// Mandatory if endDate is used. Starting date (YYYY-MM-DD) from which you want to fetch the list. Can be maximum 30 days older tha current date. (optional) + /// Mandatory if startDate is used. Ending date (YYYY-MM-DD) till which you want to fetch the list. Maximum time period that can be selected is one month. (optional) + /// ApiResponse of GetScheduledEmailByMessageId + public ApiResponse< GetScheduledEmailByMessageId > GetScheduledEmailByMessageIdWithHttpInfo (string messageId, DateTime? startDate = null, DateTime? endDate = null) + { + // verify the required parameter 'messageId' is set + if (messageId == null) + throw new ApiException(400, "Missing required parameter 'messageId' when calling TransactionalEmailsApi->GetScheduledEmailByMessageId"); + + var localVarPath = "./smtp/emailStatus/{messageId}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (messageId != null) localVarPathParams.Add("messageId", this.Configuration.ApiClient.ParameterToString(messageId)); // path parameter + if (startDate != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "startDate", startDate)); // query parameter + if (endDate != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "endDate", endDate)); // query parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("GetScheduledEmailByMessageId", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (GetScheduledEmailByMessageId) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetScheduledEmailByMessageId))); + } + + /// + /// Fetch scheduled email by messageId Fetch scheduled email by messageId (Can retrieve data upto 30 days old) + /// + /// Thrown when fails to make API call + /// The messageId of scheduled email + /// Mandatory if endDate is used. Starting date (YYYY-MM-DD) from which you want to fetch the list. Can be maximum 30 days older tha current date. (optional) + /// Mandatory if startDate is used. Ending date (YYYY-MM-DD) till which you want to fetch the list. Maximum time period that can be selected is one month. (optional) + /// Task of GetScheduledEmailByMessageId + public async System.Threading.Tasks.Task GetScheduledEmailByMessageIdAsync (string messageId, DateTime? startDate = null, DateTime? endDate = null) + { + ApiResponse localVarResponse = await GetScheduledEmailByMessageIdAsyncWithHttpInfo(messageId, startDate, endDate); + return localVarResponse.Data; + + } + + /// + /// Fetch scheduled email by messageId Fetch scheduled email by messageId (Can retrieve data upto 30 days old) + /// + /// Thrown when fails to make API call + /// The messageId of scheduled email + /// Mandatory if endDate is used. Starting date (YYYY-MM-DD) from which you want to fetch the list. Can be maximum 30 days older tha current date. (optional) + /// Mandatory if startDate is used. Ending date (YYYY-MM-DD) till which you want to fetch the list. Maximum time period that can be selected is one month. (optional) + /// Task of ApiResponse (GetScheduledEmailByMessageId) + public async System.Threading.Tasks.Task> GetScheduledEmailByMessageIdAsyncWithHttpInfo (string messageId, DateTime? startDate = null, DateTime? endDate = null) + { + // verify the required parameter 'messageId' is set + if (messageId == null) + throw new ApiException(400, "Missing required parameter 'messageId' when calling TransactionalEmailsApi->GetScheduledEmailByMessageId"); + + var localVarPath = "./smtp/emailStatus/{messageId}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (messageId != null) localVarPathParams.Add("messageId", this.Configuration.ApiClient.ParameterToString(messageId)); // path parameter + if (startDate != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "startDate", startDate)); // query parameter + if (endDate != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "endDate", endDate)); // query parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("GetScheduledEmailByMessageId", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (GetScheduledEmailByMessageId) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetScheduledEmailByMessageId))); + } + /// /// Get your transactional email activity aggregated per day /// diff --git a/src/sib_api_v3_sdk/Api/WhatsappCampaignsApi.cs b/src/sib_api_v3_sdk/Api/WhatsappCampaignsApi.cs new file mode 100644 index 0000000..44d82ae --- /dev/null +++ b/src/sib_api_v3_sdk/Api/WhatsappCampaignsApi.cs @@ -0,0 +1,522 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using RestSharp.Portable; +using sib_api_v3_sdk.Client; +using sib_api_v3_sdk.Model; + +namespace sib_api_v3_sdk.Api +{ + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public interface IWhatsappCampaignsApi : IApiAccessor + { + #region Synchronous Operations + /// + /// Delete a whatsapp campaign + /// + /// + /// + /// + /// Thrown when fails to make API call + /// id of the campaign + /// + void DeleteWhatsappCampaign (Object campaignId); + + /// + /// Delete a whatsapp campaign + /// + /// + /// + /// + /// Thrown when fails to make API call + /// id of the campaign + /// ApiResponse of Object(void) + ApiResponse DeleteWhatsappCampaignWithHttpInfo (Object campaignId); + /// + /// Get Whatsapp campaign Overview + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Id of the campaign + /// GetWhatsappCampaignOverview + GetWhatsappCampaignOverview GetWhatsappCampaign (Object campaignId); + + /// + /// Get Whatsapp campaign Overview + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Id of the campaign + /// ApiResponse of GetWhatsappCampaignOverview + ApiResponse GetWhatsappCampaignWithHttpInfo (Object campaignId); + #endregion Synchronous Operations + #region Asynchronous Operations + /// + /// Delete a whatsapp campaign + /// + /// + /// + /// + /// Thrown when fails to make API call + /// id of the campaign + /// Task of void + System.Threading.Tasks.Task DeleteWhatsappCampaignAsync (Object campaignId); + + /// + /// Delete a whatsapp campaign + /// + /// + /// + /// + /// Thrown when fails to make API call + /// id of the campaign + /// Task of ApiResponse + System.Threading.Tasks.Task> DeleteWhatsappCampaignAsyncWithHttpInfo (Object campaignId); + /// + /// Get Whatsapp campaign Overview + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Id of the campaign + /// Task of GetWhatsappCampaignOverview + System.Threading.Tasks.Task GetWhatsappCampaignAsync (Object campaignId); + + /// + /// Get Whatsapp campaign Overview + /// + /// + /// + /// + /// Thrown when fails to make API call + /// Id of the campaign + /// Task of ApiResponse (GetWhatsappCampaignOverview) + System.Threading.Tasks.Task> GetWhatsappCampaignAsyncWithHttpInfo (Object campaignId); + #endregion Asynchronous Operations + } + + /// + /// Represents a collection of functions to interact with the API endpoints + /// + public partial class WhatsappCampaignsApi : IWhatsappCampaignsApi + { + private sib_api_v3_sdk.Client.ExceptionFactory _exceptionFactory = (name, response) => null; + + /// + /// Initializes a new instance of the class. + /// + /// + public WhatsappCampaignsApi(String basePath) + { + this.Configuration = new sib_api_v3_sdk.Client.Configuration { BasePath = basePath }; + + ExceptionFactory = sib_api_v3_sdk.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Initializes a new instance of the class + /// using Configuration object + /// + /// An instance of Configuration + /// + public WhatsappCampaignsApi(sib_api_v3_sdk.Client.Configuration configuration = null) + { + if (configuration == null) // use the default one in Configuration + this.Configuration = sib_api_v3_sdk.Client.Configuration.Default; + else + this.Configuration = configuration; + + ExceptionFactory = sib_api_v3_sdk.Client.Configuration.DefaultExceptionFactory; + } + + /// + /// Gets the base path of the API client. + /// + /// The base path + public String GetBasePath() + { + return this.Configuration.ApiClient.RestClient.BaseUrl.ToString(); + } + + /// + /// Sets the base path of the API client. + /// + /// The base path + [Obsolete("SetBasePath is deprecated, please do 'Configuration.ApiClient = new ApiClient(\"http://new-path\")' instead.")] + public void SetBasePath(String basePath) + { + // do nothing + } + + /// + /// Gets or sets the configuration object + /// + /// An instance of the Configuration + public sib_api_v3_sdk.Client.Configuration Configuration {get; set;} + + /// + /// Provides a factory method hook for the creation of exceptions. + /// + public sib_api_v3_sdk.Client.ExceptionFactory ExceptionFactory + { + get + { + if (_exceptionFactory != null && _exceptionFactory.GetInvocationList().Length > 1) + { + throw new InvalidOperationException("Multicast delegate for ExceptionFactory is unsupported."); + } + return _exceptionFactory; + } + set { _exceptionFactory = value; } + } + + /// + /// Gets the default header. + /// + /// Dictionary of HTTP header + [Obsolete("DefaultHeader is deprecated, please use Configuration.DefaultHeader instead.")] + public IDictionary DefaultHeader() + { + return new ReadOnlyDictionary(this.Configuration.DefaultHeader); + } + + /// + /// Add default header. + /// + /// Header field name. + /// Header field value. + /// + [Obsolete("AddDefaultHeader is deprecated, please use Configuration.AddDefaultHeader instead.")] + public void AddDefaultHeader(string key, string value) + { + this.Configuration.AddDefaultHeader(key, value); + } + + /// + /// Delete a whatsapp campaign + /// + /// Thrown when fails to make API call + /// id of the campaign + /// + public void DeleteWhatsappCampaign (Object campaignId) + { + DeleteWhatsappCampaignWithHttpInfo(campaignId); + } + + /// + /// Delete a whatsapp campaign + /// + /// Thrown when fails to make API call + /// id of the campaign + /// ApiResponse of Object(void) + public ApiResponse DeleteWhatsappCampaignWithHttpInfo (Object campaignId) + { + // verify the required parameter 'campaignId' is set + if (campaignId == null) + throw new ApiException(400, "Missing required parameter 'campaignId' when calling WhatsappCampaignsApi->DeleteWhatsappCampaign"); + + var localVarPath = "./whatsappCampaigns/{campaignId}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (campaignId != null) localVarPathParams.Add("campaignId", this.Configuration.ApiClient.ParameterToString(campaignId)); // path parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, + Method.DELETE, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("DeleteWhatsappCampaign", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + null); + } + + /// + /// Delete a whatsapp campaign + /// + /// Thrown when fails to make API call + /// id of the campaign + /// Task of void + public async System.Threading.Tasks.Task DeleteWhatsappCampaignAsync (Object campaignId) + { + await DeleteWhatsappCampaignAsyncWithHttpInfo(campaignId); + + } + + /// + /// Delete a whatsapp campaign + /// + /// Thrown when fails to make API call + /// id of the campaign + /// Task of ApiResponse + public async System.Threading.Tasks.Task> DeleteWhatsappCampaignAsyncWithHttpInfo (Object campaignId) + { + // verify the required parameter 'campaignId' is set + if (campaignId == null) + throw new ApiException(400, "Missing required parameter 'campaignId' when calling WhatsappCampaignsApi->DeleteWhatsappCampaign"); + + var localVarPath = "./whatsappCampaigns/{campaignId}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (campaignId != null) localVarPathParams.Add("campaignId", this.Configuration.ApiClient.ParameterToString(campaignId)); // path parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + Method.DELETE, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("DeleteWhatsappCampaign", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + null); + } + + /// + /// Get Whatsapp campaign Overview + /// + /// Thrown when fails to make API call + /// Id of the campaign + /// GetWhatsappCampaignOverview + public GetWhatsappCampaignOverview GetWhatsappCampaign (Object campaignId) + { + ApiResponse localVarResponse = GetWhatsappCampaignWithHttpInfo(campaignId); + return localVarResponse.Data; + } + + /// + /// Get Whatsapp campaign Overview + /// + /// Thrown when fails to make API call + /// Id of the campaign + /// ApiResponse of GetWhatsappCampaignOverview + public ApiResponse< GetWhatsappCampaignOverview > GetWhatsappCampaignWithHttpInfo (Object campaignId) + { + // verify the required parameter 'campaignId' is set + if (campaignId == null) + throw new ApiException(400, "Missing required parameter 'campaignId' when calling WhatsappCampaignsApi->GetWhatsappCampaign"); + + var localVarPath = "./whatsappCampaigns/{campaignId}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (campaignId != null) localVarPathParams.Add("campaignId", this.Configuration.ApiClient.ParameterToString(campaignId)); // path parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) this.Configuration.ApiClient.CallApi(localVarPath, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("GetWhatsappCampaign", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (GetWhatsappCampaignOverview) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetWhatsappCampaignOverview))); + } + + /// + /// Get Whatsapp campaign Overview + /// + /// Thrown when fails to make API call + /// Id of the campaign + /// Task of GetWhatsappCampaignOverview + public async System.Threading.Tasks.Task GetWhatsappCampaignAsync (Object campaignId) + { + ApiResponse localVarResponse = await GetWhatsappCampaignAsyncWithHttpInfo(campaignId); + return localVarResponse.Data; + + } + + /// + /// Get Whatsapp campaign Overview + /// + /// Thrown when fails to make API call + /// Id of the campaign + /// Task of ApiResponse (GetWhatsappCampaignOverview) + public async System.Threading.Tasks.Task> GetWhatsappCampaignAsyncWithHttpInfo (Object campaignId) + { + // verify the required parameter 'campaignId' is set + if (campaignId == null) + throw new ApiException(400, "Missing required parameter 'campaignId' when calling WhatsappCampaignsApi->GetWhatsappCampaign"); + + var localVarPath = "./whatsappCampaigns/{campaignId}"; + var localVarPathParams = new Dictionary(); + var localVarQueryParams = new List>(); + var localVarHeaderParams = new Dictionary(this.Configuration.DefaultHeader); + var localVarFormParams = new Dictionary(); + var localVarFileParams = new Dictionary(); + Object localVarPostBody = null; + + // to determine the Content-Type header + String[] localVarHttpContentTypes = new String[] { + "application/json" + }; + String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes); + + // to determine the Accept header + String[] localVarHttpHeaderAccepts = new String[] { + "application/json" + }; + String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts); + if (localVarHttpHeaderAccept != null) + localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); + + if (campaignId != null) localVarPathParams.Add("campaignId", this.Configuration.ApiClient.ParameterToString(campaignId)); // path parameter + + // authentication (api-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) + { + localVarHeaderParams["api-key"] = this.Configuration.GetApiKeyWithPrefix("api-key"); + } + // authentication (partner-key) required + if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("partner-key"))) + { + localVarHeaderParams["partner-key"] = this.Configuration.GetApiKeyWithPrefix("partner-key"); + } + + // make the HTTP request + IRestResponse localVarResponse = (IRestResponse) await this.Configuration.ApiClient.CallApiAsync(localVarPath, + Method.GET, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams, + localVarPathParams, localVarHttpContentType); + + int localVarStatusCode = (int) localVarResponse.StatusCode; + + if (ExceptionFactory != null) + { + Exception exception = ExceptionFactory("GetWhatsappCampaign", localVarResponse); + if (exception != null) throw exception; + } + + return new ApiResponse(localVarStatusCode, + localVarResponse.Headers.ToDictionary(x => x.Key, x => x.Value.ToString()), + (GetWhatsappCampaignOverview) this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(GetWhatsappCampaignOverview))); + } + + } +} diff --git a/src/sib_api_v3_sdk/Client/ApiClient.cs b/src/sib_api_v3_sdk/Client/ApiClient.cs index 7c59f9d..70718b4 100644 --- a/src/sib_api_v3_sdk/Client/ApiClient.cs +++ b/src/sib_api_v3_sdk/Client/ApiClient.cs @@ -178,7 +178,7 @@ public Object CallApi( // set user agent if (!Configuration.UserAgent.ToLower().StartsWith("sendinblue_")) - Configuration.UserAgent = "sendinblue_clientAPI/v3.3.0/c#"; + Configuration.UserAgent = "sendinblue_clientAPI/v4.0.0/c#"; RestClient.UserAgent = Configuration.UserAgent; diff --git a/src/sib_api_v3_sdk/Client/Configuration.cs b/src/sib_api_v3_sdk/Client/Configuration.cs index 174366f..53a294e 100644 --- a/src/sib_api_v3_sdk/Client/Configuration.cs +++ b/src/sib_api_v3_sdk/Client/Configuration.cs @@ -29,7 +29,7 @@ public class Configuration : IReadableConfiguration /// Version of the package. /// /// Version of the package. - public const string Version = "3.3.0"; + public const string Version = "4.0.0"; /// /// Identifier for ISO 8601 DateTime Format diff --git a/src/sib_api_v3_sdk/Model/Body.cs b/src/sib_api_v3_sdk/Model/Body.cs index 4cb5155..1260ec9 100644 --- a/src/sib_api_v3_sdk/Model/Body.cs +++ b/src/sib_api_v3_sdk/Model/Body.cs @@ -36,18 +36,10 @@ protected Body() { } /// /// Initializes a new instance of the class. /// - /// Name of task (required). - /// Duration of task. - /// Id for type of task e.g Call / Email / Meeting etc. (required). - /// Task date/time (required). - /// Notes added to a task. - /// Task marked as done. - /// User id to whom task is assigned. - /// Contact ids for contacts linked to this task. - /// Deal ids for deals a task is linked to. - /// Companies ids for companies a task is linked to. - /// reminder. - public Body(string name = default(string), long? duration = default(long?), string taskTypeId = default(string), DateTime? date = default(DateTime?), string notes = default(string), bool? done = default(bool?), string assignToId = default(string), List contactsIds = default(List), List dealsIds = default(List), List companiesIds = default(List), TaskReminder reminder = default(TaskReminder)) + /// Name of company (required). + /// Attributes for company creation. + /// Country code if phone_number is passed in attributes.. + public Body(string name = default(string), Object attributes = default(Object), long? countryCode = default(long?)) { // to ensure "name" is required (not null) if (name == null) @@ -58,109 +50,30 @@ protected Body() { } { this.Name = name; } - // to ensure "taskTypeId" is required (not null) - if (taskTypeId == null) - { - throw new InvalidDataException("taskTypeId is a required property for Body and cannot be null"); - } - else - { - this.TaskTypeId = taskTypeId; - } - // to ensure "date" is required (not null) - if (date == null) - { - throw new InvalidDataException("date is a required property for Body and cannot be null"); - } - else - { - this.Date = date; - } - this.Duration = duration; - this.Notes = notes; - this.Done = done; - this.AssignToId = assignToId; - this.ContactsIds = contactsIds; - this.DealsIds = dealsIds; - this.CompaniesIds = companiesIds; - this.Reminder = reminder; + this.Attributes = attributes; + this.CountryCode = countryCode; } /// - /// Name of task + /// Name of company /// - /// Name of task + /// Name of company [DataMember(Name="name", EmitDefaultValue=false)] public string Name { get; set; } /// - /// Duration of task - /// - /// Duration of task - [DataMember(Name="duration", EmitDefaultValue=false)] - public long? Duration { get; set; } - - /// - /// Id for type of task e.g Call / Email / Meeting etc. - /// - /// Id for type of task e.g Call / Email / Meeting etc. - [DataMember(Name="taskTypeId", EmitDefaultValue=false)] - public string TaskTypeId { get; set; } - - /// - /// Task date/time - /// - /// Task date/time - [DataMember(Name="date", EmitDefaultValue=false)] - public DateTime? Date { get; set; } - - /// - /// Notes added to a task - /// - /// Notes added to a task - [DataMember(Name="notes", EmitDefaultValue=false)] - public string Notes { get; set; } - - /// - /// Task marked as done - /// - /// Task marked as done - [DataMember(Name="done", EmitDefaultValue=false)] - public bool? Done { get; set; } - - /// - /// User id to whom task is assigned + /// Attributes for company creation /// - /// User id to whom task is assigned - [DataMember(Name="assignToId", EmitDefaultValue=false)] - public string AssignToId { get; set; } + /// Attributes for company creation + [DataMember(Name="attributes", EmitDefaultValue=false)] + public Object Attributes { get; set; } /// - /// Contact ids for contacts linked to this task + /// Country code if phone_number is passed in attributes. /// - /// Contact ids for contacts linked to this task - [DataMember(Name="contactsIds", EmitDefaultValue=false)] - public List ContactsIds { get; set; } - - /// - /// Deal ids for deals a task is linked to - /// - /// Deal ids for deals a task is linked to - [DataMember(Name="dealsIds", EmitDefaultValue=false)] - public List DealsIds { get; set; } - - /// - /// Companies ids for companies a task is linked to - /// - /// Companies ids for companies a task is linked to - [DataMember(Name="companiesIds", EmitDefaultValue=false)] - public List CompaniesIds { get; set; } - - /// - /// Gets or Sets Reminder - /// - [DataMember(Name="reminder", EmitDefaultValue=false)] - public TaskReminder Reminder { get; set; } + /// Country code if phone_number is passed in attributes. + [DataMember(Name="countryCode", EmitDefaultValue=false)] + public long? CountryCode { get; set; } /// /// Returns the string presentation of the object @@ -171,16 +84,8 @@ public override string ToString() var sb = new StringBuilder(); sb.Append("class Body {\n"); sb.Append(" Name: ").Append(Name).Append("\n"); - sb.Append(" Duration: ").Append(Duration).Append("\n"); - sb.Append(" TaskTypeId: ").Append(TaskTypeId).Append("\n"); - sb.Append(" Date: ").Append(Date).Append("\n"); - sb.Append(" Notes: ").Append(Notes).Append("\n"); - sb.Append(" Done: ").Append(Done).Append("\n"); - sb.Append(" AssignToId: ").Append(AssignToId).Append("\n"); - sb.Append(" ContactsIds: ").Append(ContactsIds).Append("\n"); - sb.Append(" DealsIds: ").Append(DealsIds).Append("\n"); - sb.Append(" CompaniesIds: ").Append(CompaniesIds).Append("\n"); - sb.Append(" Reminder: ").Append(Reminder).Append("\n"); + sb.Append(" Attributes: ").Append(Attributes).Append("\n"); + sb.Append(" CountryCode: ").Append(CountryCode).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -221,54 +126,14 @@ public bool Equals(Body input) this.Name.Equals(input.Name)) ) && ( - this.Duration == input.Duration || - (this.Duration != null && - this.Duration.Equals(input.Duration)) - ) && - ( - this.TaskTypeId == input.TaskTypeId || - (this.TaskTypeId != null && - this.TaskTypeId.Equals(input.TaskTypeId)) - ) && - ( - this.Date == input.Date || - (this.Date != null && - this.Date.Equals(input.Date)) - ) && - ( - this.Notes == input.Notes || - (this.Notes != null && - this.Notes.Equals(input.Notes)) - ) && - ( - this.Done == input.Done || - (this.Done != null && - this.Done.Equals(input.Done)) - ) && - ( - this.AssignToId == input.AssignToId || - (this.AssignToId != null && - this.AssignToId.Equals(input.AssignToId)) - ) && - ( - this.ContactsIds == input.ContactsIds || - this.ContactsIds != null && - this.ContactsIds.SequenceEqual(input.ContactsIds) - ) && - ( - this.DealsIds == input.DealsIds || - this.DealsIds != null && - this.DealsIds.SequenceEqual(input.DealsIds) - ) && - ( - this.CompaniesIds == input.CompaniesIds || - this.CompaniesIds != null && - this.CompaniesIds.SequenceEqual(input.CompaniesIds) + this.Attributes == input.Attributes || + (this.Attributes != null && + this.Attributes.Equals(input.Attributes)) ) && ( - this.Reminder == input.Reminder || - (this.Reminder != null && - this.Reminder.Equals(input.Reminder)) + this.CountryCode == input.CountryCode || + (this.CountryCode != null && + this.CountryCode.Equals(input.CountryCode)) ); } @@ -283,26 +148,10 @@ public override int GetHashCode() int hashCode = 41; if (this.Name != null) hashCode = hashCode * 59 + this.Name.GetHashCode(); - if (this.Duration != null) - hashCode = hashCode * 59 + this.Duration.GetHashCode(); - if (this.TaskTypeId != null) - hashCode = hashCode * 59 + this.TaskTypeId.GetHashCode(); - if (this.Date != null) - hashCode = hashCode * 59 + this.Date.GetHashCode(); - if (this.Notes != null) - hashCode = hashCode * 59 + this.Notes.GetHashCode(); - if (this.Done != null) - hashCode = hashCode * 59 + this.Done.GetHashCode(); - if (this.AssignToId != null) - hashCode = hashCode * 59 + this.AssignToId.GetHashCode(); - if (this.ContactsIds != null) - hashCode = hashCode * 59 + this.ContactsIds.GetHashCode(); - if (this.DealsIds != null) - hashCode = hashCode * 59 + this.DealsIds.GetHashCode(); - if (this.CompaniesIds != null) - hashCode = hashCode * 59 + this.CompaniesIds.GetHashCode(); - if (this.Reminder != null) - hashCode = hashCode * 59 + this.Reminder.GetHashCode(); + if (this.Attributes != null) + hashCode = hashCode * 59 + this.Attributes.GetHashCode(); + if (this.CountryCode != null) + hashCode = hashCode * 59 + this.CountryCode.GetHashCode(); return hashCode; } } diff --git a/src/sib_api_v3_sdk/Model/Body1.cs b/src/sib_api_v3_sdk/Model/Body1.cs index a35971b..2311ccc 100644 --- a/src/sib_api_v3_sdk/Model/Body1.cs +++ b/src/sib_api_v3_sdk/Model/Body1.cs @@ -31,136 +31,36 @@ public partial class Body1 : IEquatable /// /// Initializes a new instance of the class. /// - [JsonConstructorAttribute] - protected Body1() { } - /// - /// Initializes a new instance of the class. - /// - /// Name of task (required). - /// Duration of task. - /// Id for type of task e.g Call / Email / Meeting etc. (required). - /// Task date/time (required). - /// Notes added to a task. - /// Task marked as done. - /// User id to whom task is assigned. - /// Contact ids for contacts linked to this task. - /// Deal ids for deals a task is linked to. - /// Companies ids for companies a task is linked to. - /// reminder. - public Body1(string name = default(string), int? duration = default(int?), string taskTypeId = default(string), DateTime? date = default(DateTime?), string notes = default(string), bool? done = default(bool?), string assignToId = default(string), List contactsIds = default(List), List dealsIds = default(List), List companiesIds = default(List), TaskReminder reminder = default(TaskReminder)) + /// Name of company. + /// Attributes for company update. + /// Country code if phone_number is passed in attributes.. + public Body1(string name = default(string), Object attributes = default(Object), long? countryCode = default(long?)) { - // to ensure "name" is required (not null) - if (name == null) - { - throw new InvalidDataException("name is a required property for Body1 and cannot be null"); - } - else - { - this.Name = name; - } - // to ensure "taskTypeId" is required (not null) - if (taskTypeId == null) - { - throw new InvalidDataException("taskTypeId is a required property for Body1 and cannot be null"); - } - else - { - this.TaskTypeId = taskTypeId; - } - // to ensure "date" is required (not null) - if (date == null) - { - throw new InvalidDataException("date is a required property for Body1 and cannot be null"); - } - else - { - this.Date = date; - } - this.Duration = duration; - this.Notes = notes; - this.Done = done; - this.AssignToId = assignToId; - this.ContactsIds = contactsIds; - this.DealsIds = dealsIds; - this.CompaniesIds = companiesIds; - this.Reminder = reminder; + this.Name = name; + this.Attributes = attributes; + this.CountryCode = countryCode; } /// - /// Name of task + /// Name of company /// - /// Name of task + /// Name of company [DataMember(Name="name", EmitDefaultValue=false)] public string Name { get; set; } /// - /// Duration of task - /// - /// Duration of task - [DataMember(Name="duration", EmitDefaultValue=false)] - public int? Duration { get; set; } - - /// - /// Id for type of task e.g Call / Email / Meeting etc. - /// - /// Id for type of task e.g Call / Email / Meeting etc. - [DataMember(Name="taskTypeId", EmitDefaultValue=false)] - public string TaskTypeId { get; set; } - - /// - /// Task date/time + /// Attributes for company update /// - /// Task date/time - [DataMember(Name="date", EmitDefaultValue=false)] - public DateTime? Date { get; set; } + /// Attributes for company update + [DataMember(Name="attributes", EmitDefaultValue=false)] + public Object Attributes { get; set; } /// - /// Notes added to a task + /// Country code if phone_number is passed in attributes. /// - /// Notes added to a task - [DataMember(Name="notes", EmitDefaultValue=false)] - public string Notes { get; set; } - - /// - /// Task marked as done - /// - /// Task marked as done - [DataMember(Name="done", EmitDefaultValue=false)] - public bool? Done { get; set; } - - /// - /// User id to whom task is assigned - /// - /// User id to whom task is assigned - [DataMember(Name="assignToId", EmitDefaultValue=false)] - public string AssignToId { get; set; } - - /// - /// Contact ids for contacts linked to this task - /// - /// Contact ids for contacts linked to this task - [DataMember(Name="contactsIds", EmitDefaultValue=false)] - public List ContactsIds { get; set; } - - /// - /// Deal ids for deals a task is linked to - /// - /// Deal ids for deals a task is linked to - [DataMember(Name="dealsIds", EmitDefaultValue=false)] - public List DealsIds { get; set; } - - /// - /// Companies ids for companies a task is linked to - /// - /// Companies ids for companies a task is linked to - [DataMember(Name="companiesIds", EmitDefaultValue=false)] - public List CompaniesIds { get; set; } - - /// - /// Gets or Sets Reminder - /// - [DataMember(Name="reminder", EmitDefaultValue=false)] - public TaskReminder Reminder { get; set; } + /// Country code if phone_number is passed in attributes. + [DataMember(Name="countryCode", EmitDefaultValue=false)] + public long? CountryCode { get; set; } /// /// Returns the string presentation of the object @@ -171,16 +71,8 @@ public override string ToString() var sb = new StringBuilder(); sb.Append("class Body1 {\n"); sb.Append(" Name: ").Append(Name).Append("\n"); - sb.Append(" Duration: ").Append(Duration).Append("\n"); - sb.Append(" TaskTypeId: ").Append(TaskTypeId).Append("\n"); - sb.Append(" Date: ").Append(Date).Append("\n"); - sb.Append(" Notes: ").Append(Notes).Append("\n"); - sb.Append(" Done: ").Append(Done).Append("\n"); - sb.Append(" AssignToId: ").Append(AssignToId).Append("\n"); - sb.Append(" ContactsIds: ").Append(ContactsIds).Append("\n"); - sb.Append(" DealsIds: ").Append(DealsIds).Append("\n"); - sb.Append(" CompaniesIds: ").Append(CompaniesIds).Append("\n"); - sb.Append(" Reminder: ").Append(Reminder).Append("\n"); + sb.Append(" Attributes: ").Append(Attributes).Append("\n"); + sb.Append(" CountryCode: ").Append(CountryCode).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -221,54 +113,14 @@ public bool Equals(Body1 input) this.Name.Equals(input.Name)) ) && ( - this.Duration == input.Duration || - (this.Duration != null && - this.Duration.Equals(input.Duration)) - ) && - ( - this.TaskTypeId == input.TaskTypeId || - (this.TaskTypeId != null && - this.TaskTypeId.Equals(input.TaskTypeId)) - ) && - ( - this.Date == input.Date || - (this.Date != null && - this.Date.Equals(input.Date)) - ) && - ( - this.Notes == input.Notes || - (this.Notes != null && - this.Notes.Equals(input.Notes)) - ) && - ( - this.Done == input.Done || - (this.Done != null && - this.Done.Equals(input.Done)) - ) && - ( - this.AssignToId == input.AssignToId || - (this.AssignToId != null && - this.AssignToId.Equals(input.AssignToId)) - ) && - ( - this.ContactsIds == input.ContactsIds || - this.ContactsIds != null && - this.ContactsIds.SequenceEqual(input.ContactsIds) - ) && - ( - this.DealsIds == input.DealsIds || - this.DealsIds != null && - this.DealsIds.SequenceEqual(input.DealsIds) - ) && - ( - this.CompaniesIds == input.CompaniesIds || - this.CompaniesIds != null && - this.CompaniesIds.SequenceEqual(input.CompaniesIds) + this.Attributes == input.Attributes || + (this.Attributes != null && + this.Attributes.Equals(input.Attributes)) ) && ( - this.Reminder == input.Reminder || - (this.Reminder != null && - this.Reminder.Equals(input.Reminder)) + this.CountryCode == input.CountryCode || + (this.CountryCode != null && + this.CountryCode.Equals(input.CountryCode)) ); } @@ -283,26 +135,10 @@ public override int GetHashCode() int hashCode = 41; if (this.Name != null) hashCode = hashCode * 59 + this.Name.GetHashCode(); - if (this.Duration != null) - hashCode = hashCode * 59 + this.Duration.GetHashCode(); - if (this.TaskTypeId != null) - hashCode = hashCode * 59 + this.TaskTypeId.GetHashCode(); - if (this.Date != null) - hashCode = hashCode * 59 + this.Date.GetHashCode(); - if (this.Notes != null) - hashCode = hashCode * 59 + this.Notes.GetHashCode(); - if (this.Done != null) - hashCode = hashCode * 59 + this.Done.GetHashCode(); - if (this.AssignToId != null) - hashCode = hashCode * 59 + this.AssignToId.GetHashCode(); - if (this.ContactsIds != null) - hashCode = hashCode * 59 + this.ContactsIds.GetHashCode(); - if (this.DealsIds != null) - hashCode = hashCode * 59 + this.DealsIds.GetHashCode(); - if (this.CompaniesIds != null) - hashCode = hashCode * 59 + this.CompaniesIds.GetHashCode(); - if (this.Reminder != null) - hashCode = hashCode * 59 + this.Reminder.GetHashCode(); + if (this.Attributes != null) + hashCode = hashCode * 59 + this.Attributes.GetHashCode(); + if (this.CountryCode != null) + hashCode = hashCode * 59 + this.CountryCode.GetHashCode(); return hashCode; } } diff --git a/src/sib_api_v3_sdk/Model/Body10.cs b/src/sib_api_v3_sdk/Model/Body10.cs new file mode 100644 index 0000000..b830cee --- /dev/null +++ b/src/sib_api_v3_sdk/Model/Body10.cs @@ -0,0 +1,185 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// Body10 + /// + [DataContract] + public partial class Body10 : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected Body10() { } + /// + /// Initializes a new instance of the class. + /// + /// visitor’s ID received <a href="https://developers.sendinblue.com/docs/conversations-webhooks">from a webhook</a> or generated by you to <a href="https://developers.sendinblue.com/docs/customize-the-widget#identifying-existing-users">bind existing user account to Conversations</a> (required). + /// message text (required). + /// agent ID. It can be found on agent’s page or received <a href="https://developers.sendinblue.com/docs/conversations-webhooks">from a webhook</a>. Optional if `groupId` is set.. + /// group ID. It can be found on group’s page. Optional if `agentId` is set.. + public Body10(string visitorId = default(string), string text = default(string), string agentId = default(string), string groupId = default(string)) + { + // to ensure "visitorId" is required (not null) + if (visitorId == null) + { + throw new InvalidDataException("visitorId is a required property for Body10 and cannot be null"); + } + else + { + this.VisitorId = visitorId; + } + // to ensure "text" is required (not null) + if (text == null) + { + throw new InvalidDataException("text is a required property for Body10 and cannot be null"); + } + else + { + this.Text = text; + } + this.AgentId = agentId; + this.GroupId = groupId; + } + + /// + /// visitor’s ID received <a href="https://developers.sendinblue.com/docs/conversations-webhooks">from a webhook</a> or generated by you to <a href="https://developers.sendinblue.com/docs/customize-the-widget#identifying-existing-users">bind existing user account to Conversations</a> + /// + /// visitor’s ID received <a href="https://developers.sendinblue.com/docs/conversations-webhooks">from a webhook</a> or generated by you to <a href="https://developers.sendinblue.com/docs/customize-the-widget#identifying-existing-users">bind existing user account to Conversations</a> + [DataMember(Name="visitorId", EmitDefaultValue=false)] + public string VisitorId { get; set; } + + /// + /// message text + /// + /// message text + [DataMember(Name="text", EmitDefaultValue=false)] + public string Text { get; set; } + + /// + /// agent ID. It can be found on agent’s page or received <a href="https://developers.sendinblue.com/docs/conversations-webhooks">from a webhook</a>. Optional if `groupId` is set. + /// + /// agent ID. It can be found on agent’s page or received <a href="https://developers.sendinblue.com/docs/conversations-webhooks">from a webhook</a>. Optional if `groupId` is set. + [DataMember(Name="agentId", EmitDefaultValue=false)] + public string AgentId { get; set; } + + /// + /// group ID. It can be found on group’s page. Optional if `agentId` is set. + /// + /// group ID. It can be found on group’s page. Optional if `agentId` is set. + [DataMember(Name="groupId", EmitDefaultValue=false)] + public string GroupId { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Body10 {\n"); + sb.Append(" VisitorId: ").Append(VisitorId).Append("\n"); + sb.Append(" Text: ").Append(Text).Append("\n"); + sb.Append(" AgentId: ").Append(AgentId).Append("\n"); + sb.Append(" GroupId: ").Append(GroupId).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as Body10); + } + + /// + /// Returns true if Body10 instances are equal + /// + /// Instance of Body10 to be compared + /// Boolean + public bool Equals(Body10 input) + { + if (input == null) + return false; + + return + ( + this.VisitorId == input.VisitorId || + (this.VisitorId != null && + this.VisitorId.Equals(input.VisitorId)) + ) && + ( + this.Text == input.Text || + (this.Text != null && + this.Text.Equals(input.Text)) + ) && + ( + this.AgentId == input.AgentId || + (this.AgentId != null && + this.AgentId.Equals(input.AgentId)) + ) && + ( + this.GroupId == input.GroupId || + (this.GroupId != null && + this.GroupId.Equals(input.GroupId)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.VisitorId != null) + hashCode = hashCode * 59 + this.VisitorId.GetHashCode(); + if (this.Text != null) + hashCode = hashCode * 59 + this.Text.GetHashCode(); + if (this.AgentId != null) + hashCode = hashCode * 59 + this.AgentId.GetHashCode(); + if (this.GroupId != null) + hashCode = hashCode * 59 + this.GroupId.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/Body11.cs b/src/sib_api_v3_sdk/Model/Body11.cs new file mode 100644 index 0000000..c59ef7f --- /dev/null +++ b/src/sib_api_v3_sdk/Model/Body11.cs @@ -0,0 +1,126 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// Body11 + /// + [DataContract] + public partial class Body11 : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected Body11() { } + /// + /// Initializes a new instance of the class. + /// + /// edited message text (required). + public Body11(string text = default(string)) + { + // to ensure "text" is required (not null) + if (text == null) + { + throw new InvalidDataException("text is a required property for Body11 and cannot be null"); + } + else + { + this.Text = text; + } + } + + /// + /// edited message text + /// + /// edited message text + [DataMember(Name="text", EmitDefaultValue=false)] + public string Text { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Body11 {\n"); + sb.Append(" Text: ").Append(Text).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as Body11); + } + + /// + /// Returns true if Body11 instances are equal + /// + /// Instance of Body11 to be compared + /// Boolean + public bool Equals(Body11 input) + { + if (input == null) + return false; + + return + ( + this.Text == input.Text || + (this.Text != null && + this.Text.Equals(input.Text)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Text != null) + hashCode = hashCode * 59 + this.Text.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/Body12.cs b/src/sib_api_v3_sdk/Model/Body12.cs new file mode 100644 index 0000000..cace881 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/Body12.cs @@ -0,0 +1,164 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// Body12 + /// + [DataContract] + public partial class Body12 : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + /// agent ID. It can be found on agent’s page or received <a href="https://developers.sendinblue.com/docs/conversations-webhooks">from a webhook</a>. Alternatively, you can use `agentEmail` + `agentName` + `receivedFrom` instead (all 3 fields required).. + /// mark your messages to distinguish messages created by you from the others.. + /// agent email. When sending online pings from a standalone system, it’s hard to maintain a 1-to-1 relationship between the users of both systems. In this case, an agent can be specified by their email address. If there’s no agent with the specified email address in your Sendinblue organization, a dummy agent will be created automatically.. + /// agent name.. + public Body12(string agentId = default(string), string receivedFrom = default(string), string agentEmail = default(string), string agentName = default(string)) + { + this.AgentId = agentId; + this.ReceivedFrom = receivedFrom; + this.AgentEmail = agentEmail; + this.AgentName = agentName; + } + + /// + /// agent ID. It can be found on agent’s page or received <a href="https://developers.sendinblue.com/docs/conversations-webhooks">from a webhook</a>. Alternatively, you can use `agentEmail` + `agentName` + `receivedFrom` instead (all 3 fields required). + /// + /// agent ID. It can be found on agent’s page or received <a href="https://developers.sendinblue.com/docs/conversations-webhooks">from a webhook</a>. Alternatively, you can use `agentEmail` + `agentName` + `receivedFrom` instead (all 3 fields required). + [DataMember(Name="agentId", EmitDefaultValue=false)] + public string AgentId { get; set; } + + /// + /// mark your messages to distinguish messages created by you from the others. + /// + /// mark your messages to distinguish messages created by you from the others. + [DataMember(Name="receivedFrom", EmitDefaultValue=false)] + public string ReceivedFrom { get; set; } + + /// + /// agent email. When sending online pings from a standalone system, it’s hard to maintain a 1-to-1 relationship between the users of both systems. In this case, an agent can be specified by their email address. If there’s no agent with the specified email address in your Sendinblue organization, a dummy agent will be created automatically. + /// + /// agent email. When sending online pings from a standalone system, it’s hard to maintain a 1-to-1 relationship between the users of both systems. In this case, an agent can be specified by their email address. If there’s no agent with the specified email address in your Sendinblue organization, a dummy agent will be created automatically. + [DataMember(Name="agentEmail", EmitDefaultValue=false)] + public string AgentEmail { get; set; } + + /// + /// agent name. + /// + /// agent name. + [DataMember(Name="agentName", EmitDefaultValue=false)] + public string AgentName { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Body12 {\n"); + sb.Append(" AgentId: ").Append(AgentId).Append("\n"); + sb.Append(" ReceivedFrom: ").Append(ReceivedFrom).Append("\n"); + sb.Append(" AgentEmail: ").Append(AgentEmail).Append("\n"); + sb.Append(" AgentName: ").Append(AgentName).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as Body12); + } + + /// + /// Returns true if Body12 instances are equal + /// + /// Instance of Body12 to be compared + /// Boolean + public bool Equals(Body12 input) + { + if (input == null) + return false; + + return + ( + this.AgentId == input.AgentId || + (this.AgentId != null && + this.AgentId.Equals(input.AgentId)) + ) && + ( + this.ReceivedFrom == input.ReceivedFrom || + (this.ReceivedFrom != null && + this.ReceivedFrom.Equals(input.ReceivedFrom)) + ) && + ( + this.AgentEmail == input.AgentEmail || + (this.AgentEmail != null && + this.AgentEmail.Equals(input.AgentEmail)) + ) && + ( + this.AgentName == input.AgentName || + (this.AgentName != null && + this.AgentName.Equals(input.AgentName)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.AgentId != null) + hashCode = hashCode * 59 + this.AgentId.GetHashCode(); + if (this.ReceivedFrom != null) + hashCode = hashCode * 59 + this.ReceivedFrom.GetHashCode(); + if (this.AgentEmail != null) + hashCode = hashCode * 59 + this.AgentEmail.GetHashCode(); + if (this.AgentName != null) + hashCode = hashCode * 59 + this.AgentName.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/Body2.cs b/src/sib_api_v3_sdk/Model/Body2.cs new file mode 100644 index 0000000..551333f --- /dev/null +++ b/src/sib_api_v3_sdk/Model/Body2.cs @@ -0,0 +1,164 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// Body2 + /// + [DataContract] + public partial class Body2 : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + /// Contact ids for contacts to be linked with company. + /// Contact ids for contacts to be unlinked from company. + /// Deals ids for deals to be linked with company. + /// Deals ids for deals to be unlinked from company. + public Body2(List linkContactIds = default(List), List unlinkContactIds = default(List), List linkDealsIds = default(List), List unlinkDealsIds = default(List)) + { + this.LinkContactIds = linkContactIds; + this.UnlinkContactIds = unlinkContactIds; + this.LinkDealsIds = linkDealsIds; + this.UnlinkDealsIds = unlinkDealsIds; + } + + /// + /// Contact ids for contacts to be linked with company + /// + /// Contact ids for contacts to be linked with company + [DataMember(Name="linkContactIds", EmitDefaultValue=false)] + public List LinkContactIds { get; set; } + + /// + /// Contact ids for contacts to be unlinked from company + /// + /// Contact ids for contacts to be unlinked from company + [DataMember(Name="unlinkContactIds", EmitDefaultValue=false)] + public List UnlinkContactIds { get; set; } + + /// + /// Deals ids for deals to be linked with company + /// + /// Deals ids for deals to be linked with company + [DataMember(Name="linkDealsIds", EmitDefaultValue=false)] + public List LinkDealsIds { get; set; } + + /// + /// Deals ids for deals to be unlinked from company + /// + /// Deals ids for deals to be unlinked from company + [DataMember(Name="unlinkDealsIds", EmitDefaultValue=false)] + public List UnlinkDealsIds { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Body2 {\n"); + sb.Append(" LinkContactIds: ").Append(LinkContactIds).Append("\n"); + sb.Append(" UnlinkContactIds: ").Append(UnlinkContactIds).Append("\n"); + sb.Append(" LinkDealsIds: ").Append(LinkDealsIds).Append("\n"); + sb.Append(" UnlinkDealsIds: ").Append(UnlinkDealsIds).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as Body2); + } + + /// + /// Returns true if Body2 instances are equal + /// + /// Instance of Body2 to be compared + /// Boolean + public bool Equals(Body2 input) + { + if (input == null) + return false; + + return + ( + this.LinkContactIds == input.LinkContactIds || + this.LinkContactIds != null && + this.LinkContactIds.SequenceEqual(input.LinkContactIds) + ) && + ( + this.UnlinkContactIds == input.UnlinkContactIds || + this.UnlinkContactIds != null && + this.UnlinkContactIds.SequenceEqual(input.UnlinkContactIds) + ) && + ( + this.LinkDealsIds == input.LinkDealsIds || + this.LinkDealsIds != null && + this.LinkDealsIds.SequenceEqual(input.LinkDealsIds) + ) && + ( + this.UnlinkDealsIds == input.UnlinkDealsIds || + this.UnlinkDealsIds != null && + this.UnlinkDealsIds.SequenceEqual(input.UnlinkDealsIds) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.LinkContactIds != null) + hashCode = hashCode * 59 + this.LinkContactIds.GetHashCode(); + if (this.UnlinkContactIds != null) + hashCode = hashCode * 59 + this.UnlinkContactIds.GetHashCode(); + if (this.LinkDealsIds != null) + hashCode = hashCode * 59 + this.LinkDealsIds.GetHashCode(); + if (this.UnlinkDealsIds != null) + hashCode = hashCode * 59 + this.UnlinkDealsIds.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/Body3.cs b/src/sib_api_v3_sdk/Model/Body3.cs new file mode 100644 index 0000000..22e3909 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/Body3.cs @@ -0,0 +1,143 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// Body3 + /// + [DataContract] + public partial class Body3 : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected Body3() { } + /// + /// Initializes a new instance of the class. + /// + /// Name of deal (required). + /// Attributes fo\\r deal creation. + public Body3(string name = default(string), Object attributes = default(Object)) + { + // to ensure "name" is required (not null) + if (name == null) + { + throw new InvalidDataException("name is a required property for Body3 and cannot be null"); + } + else + { + this.Name = name; + } + this.Attributes = attributes; + } + + /// + /// Name of deal + /// + /// Name of deal + [DataMember(Name="name", EmitDefaultValue=false)] + public string Name { get; set; } + + /// + /// Attributes fo\\r deal creation + /// + /// Attributes fo\\r deal creation + [DataMember(Name="attributes", EmitDefaultValue=false)] + public Object Attributes { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Body3 {\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" Attributes: ").Append(Attributes).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as Body3); + } + + /// + /// Returns true if Body3 instances are equal + /// + /// Instance of Body3 to be compared + /// Boolean + public bool Equals(Body3 input) + { + if (input == null) + return false; + + return + ( + this.Name == input.Name || + (this.Name != null && + this.Name.Equals(input.Name)) + ) && + ( + this.Attributes == input.Attributes || + (this.Attributes != null && + this.Attributes.Equals(input.Attributes)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Name != null) + hashCode = hashCode * 59 + this.Name.GetHashCode(); + if (this.Attributes != null) + hashCode = hashCode * 59 + this.Attributes.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/Body4.cs b/src/sib_api_v3_sdk/Model/Body4.cs new file mode 100644 index 0000000..62dff65 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/Body4.cs @@ -0,0 +1,130 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// Body4 + /// + [DataContract] + public partial class Body4 : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + /// Name of deal. + /// Attributes for deal update. + public Body4(string name = default(string), Object attributes = default(Object)) + { + this.Name = name; + this.Attributes = attributes; + } + + /// + /// Name of deal + /// + /// Name of deal + [DataMember(Name="name", EmitDefaultValue=false)] + public string Name { get; set; } + + /// + /// Attributes for deal update + /// + /// Attributes for deal update + [DataMember(Name="attributes", EmitDefaultValue=false)] + public Object Attributes { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Body4 {\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" Attributes: ").Append(Attributes).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as Body4); + } + + /// + /// Returns true if Body4 instances are equal + /// + /// Instance of Body4 to be compared + /// Boolean + public bool Equals(Body4 input) + { + if (input == null) + return false; + + return + ( + this.Name == input.Name || + (this.Name != null && + this.Name.Equals(input.Name)) + ) && + ( + this.Attributes == input.Attributes || + (this.Attributes != null && + this.Attributes.Equals(input.Attributes)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Name != null) + hashCode = hashCode * 59 + this.Name.GetHashCode(); + if (this.Attributes != null) + hashCode = hashCode * 59 + this.Attributes.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/Body5.cs b/src/sib_api_v3_sdk/Model/Body5.cs new file mode 100644 index 0000000..e13cb74 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/Body5.cs @@ -0,0 +1,164 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// Body5 + /// + [DataContract] + public partial class Body5 : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + /// Contact ids for contacts to be linked with deal. + /// Contact ids for contacts to be unlinked from deal. + /// Company ids to be linked with deal. + /// Company ids to be unlinked from deal. + public Body5(List linkContactIds = default(List), List unlinkContactIds = default(List), List linkCompanyIds = default(List), List unlinkCompanyIds = default(List)) + { + this.LinkContactIds = linkContactIds; + this.UnlinkContactIds = unlinkContactIds; + this.LinkCompanyIds = linkCompanyIds; + this.UnlinkCompanyIds = unlinkCompanyIds; + } + + /// + /// Contact ids for contacts to be linked with deal + /// + /// Contact ids for contacts to be linked with deal + [DataMember(Name="linkContactIds", EmitDefaultValue=false)] + public List LinkContactIds { get; set; } + + /// + /// Contact ids for contacts to be unlinked from deal + /// + /// Contact ids for contacts to be unlinked from deal + [DataMember(Name="unlinkContactIds", EmitDefaultValue=false)] + public List UnlinkContactIds { get; set; } + + /// + /// Company ids to be linked with deal + /// + /// Company ids to be linked with deal + [DataMember(Name="linkCompanyIds", EmitDefaultValue=false)] + public List LinkCompanyIds { get; set; } + + /// + /// Company ids to be unlinked from deal + /// + /// Company ids to be unlinked from deal + [DataMember(Name="unlinkCompanyIds", EmitDefaultValue=false)] + public List UnlinkCompanyIds { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Body5 {\n"); + sb.Append(" LinkContactIds: ").Append(LinkContactIds).Append("\n"); + sb.Append(" UnlinkContactIds: ").Append(UnlinkContactIds).Append("\n"); + sb.Append(" LinkCompanyIds: ").Append(LinkCompanyIds).Append("\n"); + sb.Append(" UnlinkCompanyIds: ").Append(UnlinkCompanyIds).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as Body5); + } + + /// + /// Returns true if Body5 instances are equal + /// + /// Instance of Body5 to be compared + /// Boolean + public bool Equals(Body5 input) + { + if (input == null) + return false; + + return + ( + this.LinkContactIds == input.LinkContactIds || + this.LinkContactIds != null && + this.LinkContactIds.SequenceEqual(input.LinkContactIds) + ) && + ( + this.UnlinkContactIds == input.UnlinkContactIds || + this.UnlinkContactIds != null && + this.UnlinkContactIds.SequenceEqual(input.UnlinkContactIds) + ) && + ( + this.LinkCompanyIds == input.LinkCompanyIds || + this.LinkCompanyIds != null && + this.LinkCompanyIds.SequenceEqual(input.LinkCompanyIds) + ) && + ( + this.UnlinkCompanyIds == input.UnlinkCompanyIds || + this.UnlinkCompanyIds != null && + this.UnlinkCompanyIds.SequenceEqual(input.UnlinkCompanyIds) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.LinkContactIds != null) + hashCode = hashCode * 59 + this.LinkContactIds.GetHashCode(); + if (this.UnlinkContactIds != null) + hashCode = hashCode * 59 + this.UnlinkContactIds.GetHashCode(); + if (this.LinkCompanyIds != null) + hashCode = hashCode * 59 + this.LinkCompanyIds.GetHashCode(); + if (this.UnlinkCompanyIds != null) + hashCode = hashCode * 59 + this.UnlinkCompanyIds.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/Body6.cs b/src/sib_api_v3_sdk/Model/Body6.cs new file mode 100644 index 0000000..b8b6153 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/Body6.cs @@ -0,0 +1,311 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// Body6 + /// + [DataContract] + public partial class Body6 : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected Body6() { } + /// + /// Initializes a new instance of the class. + /// + /// Name of task (required). + /// Duration of task in milliseconds [1 minute = 60000 ms]. + /// Id for type of task e.g Call / Email / Meeting etc. (required). + /// Task due date and time (required). + /// Notes added to a task. + /// Task marked as done. + /// User id to whom task is assigned. + /// Contact ids for contacts linked to this task. + /// Deal ids for deals a task is linked to. + /// Companies ids for companies a task is linked to. + /// reminder. + public Body6(string name = default(string), long? duration = default(long?), string taskTypeId = default(string), DateTime? date = default(DateTime?), string notes = default(string), bool? done = default(bool?), string assignToId = default(string), List contactsIds = default(List), List dealsIds = default(List), List companiesIds = default(List), TaskReminder reminder = default(TaskReminder)) + { + // to ensure "name" is required (not null) + if (name == null) + { + throw new InvalidDataException("name is a required property for Body6 and cannot be null"); + } + else + { + this.Name = name; + } + // to ensure "taskTypeId" is required (not null) + if (taskTypeId == null) + { + throw new InvalidDataException("taskTypeId is a required property for Body6 and cannot be null"); + } + else + { + this.TaskTypeId = taskTypeId; + } + // to ensure "date" is required (not null) + if (date == null) + { + throw new InvalidDataException("date is a required property for Body6 and cannot be null"); + } + else + { + this.Date = date; + } + this.Duration = duration; + this.Notes = notes; + this.Done = done; + this.AssignToId = assignToId; + this.ContactsIds = contactsIds; + this.DealsIds = dealsIds; + this.CompaniesIds = companiesIds; + this.Reminder = reminder; + } + + /// + /// Name of task + /// + /// Name of task + [DataMember(Name="name", EmitDefaultValue=false)] + public string Name { get; set; } + + /// + /// Duration of task in milliseconds [1 minute = 60000 ms] + /// + /// Duration of task in milliseconds [1 minute = 60000 ms] + [DataMember(Name="duration", EmitDefaultValue=false)] + public long? Duration { get; set; } + + /// + /// Id for type of task e.g Call / Email / Meeting etc. + /// + /// Id for type of task e.g Call / Email / Meeting etc. + [DataMember(Name="taskTypeId", EmitDefaultValue=false)] + public string TaskTypeId { get; set; } + + /// + /// Task due date and time + /// + /// Task due date and time + [DataMember(Name="date", EmitDefaultValue=false)] + public DateTime? Date { get; set; } + + /// + /// Notes added to a task + /// + /// Notes added to a task + [DataMember(Name="notes", EmitDefaultValue=false)] + public string Notes { get; set; } + + /// + /// Task marked as done + /// + /// Task marked as done + [DataMember(Name="done", EmitDefaultValue=false)] + public bool? Done { get; set; } + + /// + /// User id to whom task is assigned + /// + /// User id to whom task is assigned + [DataMember(Name="assignToId", EmitDefaultValue=false)] + public string AssignToId { get; set; } + + /// + /// Contact ids for contacts linked to this task + /// + /// Contact ids for contacts linked to this task + [DataMember(Name="contactsIds", EmitDefaultValue=false)] + public List ContactsIds { get; set; } + + /// + /// Deal ids for deals a task is linked to + /// + /// Deal ids for deals a task is linked to + [DataMember(Name="dealsIds", EmitDefaultValue=false)] + public List DealsIds { get; set; } + + /// + /// Companies ids for companies a task is linked to + /// + /// Companies ids for companies a task is linked to + [DataMember(Name="companiesIds", EmitDefaultValue=false)] + public List CompaniesIds { get; set; } + + /// + /// Gets or Sets Reminder + /// + [DataMember(Name="reminder", EmitDefaultValue=false)] + public TaskReminder Reminder { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Body6 {\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" Duration: ").Append(Duration).Append("\n"); + sb.Append(" TaskTypeId: ").Append(TaskTypeId).Append("\n"); + sb.Append(" Date: ").Append(Date).Append("\n"); + sb.Append(" Notes: ").Append(Notes).Append("\n"); + sb.Append(" Done: ").Append(Done).Append("\n"); + sb.Append(" AssignToId: ").Append(AssignToId).Append("\n"); + sb.Append(" ContactsIds: ").Append(ContactsIds).Append("\n"); + sb.Append(" DealsIds: ").Append(DealsIds).Append("\n"); + sb.Append(" CompaniesIds: ").Append(CompaniesIds).Append("\n"); + sb.Append(" Reminder: ").Append(Reminder).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as Body6); + } + + /// + /// Returns true if Body6 instances are equal + /// + /// Instance of Body6 to be compared + /// Boolean + public bool Equals(Body6 input) + { + if (input == null) + return false; + + return + ( + this.Name == input.Name || + (this.Name != null && + this.Name.Equals(input.Name)) + ) && + ( + this.Duration == input.Duration || + (this.Duration != null && + this.Duration.Equals(input.Duration)) + ) && + ( + this.TaskTypeId == input.TaskTypeId || + (this.TaskTypeId != null && + this.TaskTypeId.Equals(input.TaskTypeId)) + ) && + ( + this.Date == input.Date || + (this.Date != null && + this.Date.Equals(input.Date)) + ) && + ( + this.Notes == input.Notes || + (this.Notes != null && + this.Notes.Equals(input.Notes)) + ) && + ( + this.Done == input.Done || + (this.Done != null && + this.Done.Equals(input.Done)) + ) && + ( + this.AssignToId == input.AssignToId || + (this.AssignToId != null && + this.AssignToId.Equals(input.AssignToId)) + ) && + ( + this.ContactsIds == input.ContactsIds || + this.ContactsIds != null && + this.ContactsIds.SequenceEqual(input.ContactsIds) + ) && + ( + this.DealsIds == input.DealsIds || + this.DealsIds != null && + this.DealsIds.SequenceEqual(input.DealsIds) + ) && + ( + this.CompaniesIds == input.CompaniesIds || + this.CompaniesIds != null && + this.CompaniesIds.SequenceEqual(input.CompaniesIds) + ) && + ( + this.Reminder == input.Reminder || + (this.Reminder != null && + this.Reminder.Equals(input.Reminder)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Name != null) + hashCode = hashCode * 59 + this.Name.GetHashCode(); + if (this.Duration != null) + hashCode = hashCode * 59 + this.Duration.GetHashCode(); + if (this.TaskTypeId != null) + hashCode = hashCode * 59 + this.TaskTypeId.GetHashCode(); + if (this.Date != null) + hashCode = hashCode * 59 + this.Date.GetHashCode(); + if (this.Notes != null) + hashCode = hashCode * 59 + this.Notes.GetHashCode(); + if (this.Done != null) + hashCode = hashCode * 59 + this.Done.GetHashCode(); + if (this.AssignToId != null) + hashCode = hashCode * 59 + this.AssignToId.GetHashCode(); + if (this.ContactsIds != null) + hashCode = hashCode * 59 + this.ContactsIds.GetHashCode(); + if (this.DealsIds != null) + hashCode = hashCode * 59 + this.DealsIds.GetHashCode(); + if (this.CompaniesIds != null) + hashCode = hashCode * 59 + this.CompaniesIds.GetHashCode(); + if (this.Reminder != null) + hashCode = hashCode * 59 + this.Reminder.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/Body7.cs b/src/sib_api_v3_sdk/Model/Body7.cs new file mode 100644 index 0000000..5bc38bf --- /dev/null +++ b/src/sib_api_v3_sdk/Model/Body7.cs @@ -0,0 +1,266 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// Body7 + /// + [DataContract] + public partial class Body7 : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + /// Name of task. + /// Duration of task in milliseconds [1 minute = 60000 ms]. + /// Id for type of task e.g Call / Email / Meeting etc.. + /// Task date/time. + /// Notes added to a task. + /// Task marked as done. + /// User id to whom task is assigned. + /// Contact ids for contacts linked to this task. + /// Deal ids for deals a task is linked to. + /// Companies ids for companies a task is linked to. + public Body7(string name = default(string), int? duration = default(int?), string taskTypeId = default(string), DateTime? date = default(DateTime?), string notes = default(string), bool? done = default(bool?), string assignToId = default(string), List contactsIds = default(List), List dealsIds = default(List), List companiesIds = default(List)) + { + this.Name = name; + this.Duration = duration; + this.TaskTypeId = taskTypeId; + this.Date = date; + this.Notes = notes; + this.Done = done; + this.AssignToId = assignToId; + this.ContactsIds = contactsIds; + this.DealsIds = dealsIds; + this.CompaniesIds = companiesIds; + } + + /// + /// Name of task + /// + /// Name of task + [DataMember(Name="name", EmitDefaultValue=false)] + public string Name { get; set; } + + /// + /// Duration of task in milliseconds [1 minute = 60000 ms] + /// + /// Duration of task in milliseconds [1 minute = 60000 ms] + [DataMember(Name="duration", EmitDefaultValue=false)] + public int? Duration { get; set; } + + /// + /// Id for type of task e.g Call / Email / Meeting etc. + /// + /// Id for type of task e.g Call / Email / Meeting etc. + [DataMember(Name="taskTypeId", EmitDefaultValue=false)] + public string TaskTypeId { get; set; } + + /// + /// Task date/time + /// + /// Task date/time + [DataMember(Name="date", EmitDefaultValue=false)] + public DateTime? Date { get; set; } + + /// + /// Notes added to a task + /// + /// Notes added to a task + [DataMember(Name="notes", EmitDefaultValue=false)] + public string Notes { get; set; } + + /// + /// Task marked as done + /// + /// Task marked as done + [DataMember(Name="done", EmitDefaultValue=false)] + public bool? Done { get; set; } + + /// + /// User id to whom task is assigned + /// + /// User id to whom task is assigned + [DataMember(Name="assignToId", EmitDefaultValue=false)] + public string AssignToId { get; set; } + + /// + /// Contact ids for contacts linked to this task + /// + /// Contact ids for contacts linked to this task + [DataMember(Name="contactsIds", EmitDefaultValue=false)] + public List ContactsIds { get; set; } + + /// + /// Deal ids for deals a task is linked to + /// + /// Deal ids for deals a task is linked to + [DataMember(Name="dealsIds", EmitDefaultValue=false)] + public List DealsIds { get; set; } + + /// + /// Companies ids for companies a task is linked to + /// + /// Companies ids for companies a task is linked to + [DataMember(Name="companiesIds", EmitDefaultValue=false)] + public List CompaniesIds { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Body7 {\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" Duration: ").Append(Duration).Append("\n"); + sb.Append(" TaskTypeId: ").Append(TaskTypeId).Append("\n"); + sb.Append(" Date: ").Append(Date).Append("\n"); + sb.Append(" Notes: ").Append(Notes).Append("\n"); + sb.Append(" Done: ").Append(Done).Append("\n"); + sb.Append(" AssignToId: ").Append(AssignToId).Append("\n"); + sb.Append(" ContactsIds: ").Append(ContactsIds).Append("\n"); + sb.Append(" DealsIds: ").Append(DealsIds).Append("\n"); + sb.Append(" CompaniesIds: ").Append(CompaniesIds).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as Body7); + } + + /// + /// Returns true if Body7 instances are equal + /// + /// Instance of Body7 to be compared + /// Boolean + public bool Equals(Body7 input) + { + if (input == null) + return false; + + return + ( + this.Name == input.Name || + (this.Name != null && + this.Name.Equals(input.Name)) + ) && + ( + this.Duration == input.Duration || + (this.Duration != null && + this.Duration.Equals(input.Duration)) + ) && + ( + this.TaskTypeId == input.TaskTypeId || + (this.TaskTypeId != null && + this.TaskTypeId.Equals(input.TaskTypeId)) + ) && + ( + this.Date == input.Date || + (this.Date != null && + this.Date.Equals(input.Date)) + ) && + ( + this.Notes == input.Notes || + (this.Notes != null && + this.Notes.Equals(input.Notes)) + ) && + ( + this.Done == input.Done || + (this.Done != null && + this.Done.Equals(input.Done)) + ) && + ( + this.AssignToId == input.AssignToId || + (this.AssignToId != null && + this.AssignToId.Equals(input.AssignToId)) + ) && + ( + this.ContactsIds == input.ContactsIds || + this.ContactsIds != null && + this.ContactsIds.SequenceEqual(input.ContactsIds) + ) && + ( + this.DealsIds == input.DealsIds || + this.DealsIds != null && + this.DealsIds.SequenceEqual(input.DealsIds) + ) && + ( + this.CompaniesIds == input.CompaniesIds || + this.CompaniesIds != null && + this.CompaniesIds.SequenceEqual(input.CompaniesIds) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Name != null) + hashCode = hashCode * 59 + this.Name.GetHashCode(); + if (this.Duration != null) + hashCode = hashCode * 59 + this.Duration.GetHashCode(); + if (this.TaskTypeId != null) + hashCode = hashCode * 59 + this.TaskTypeId.GetHashCode(); + if (this.Date != null) + hashCode = hashCode * 59 + this.Date.GetHashCode(); + if (this.Notes != null) + hashCode = hashCode * 59 + this.Notes.GetHashCode(); + if (this.Done != null) + hashCode = hashCode * 59 + this.Done.GetHashCode(); + if (this.AssignToId != null) + hashCode = hashCode * 59 + this.AssignToId.GetHashCode(); + if (this.ContactsIds != null) + hashCode = hashCode * 59 + this.ContactsIds.GetHashCode(); + if (this.DealsIds != null) + hashCode = hashCode * 59 + this.DealsIds.GetHashCode(); + if (this.CompaniesIds != null) + hashCode = hashCode * 59 + this.CompaniesIds.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/Body8.cs b/src/sib_api_v3_sdk/Model/Body8.cs new file mode 100644 index 0000000..1cb5ab1 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/Body8.cs @@ -0,0 +1,219 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// Body8 + /// + [DataContract] + public partial class Body8 : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected Body8() { } + /// + /// Initializes a new instance of the class. + /// + /// visitor’s ID received <a href="https://developers.sendinblue.com/docs/conversations-webhooks">from a webhook</a> or generated by you to <a href="https://developers.sendinblue.com/docs/customize-the-widget#identifying-existing-users">bind existing user account to Conversations</a> (required). + /// message text (required). + /// agent ID. It can be found on agent’s page or received <a href="https://developers.sendinblue.com/docs/conversations-webhooks">from a webhook</a>. Alternatively, you can use `agentEmail` + `agentName` + `receivedFrom` instead (all 3 fields required).. + /// mark your messages to distinguish messages created by you from the others.. + /// agent email. When sending messages from a standalone system, it’s hard to maintain a 1-to-1 relationship between the users of both systems. In this case, an agent can be specified by their email address.. + /// agent name. + public Body8(string visitorId = default(string), string text = default(string), string agentId = default(string), string receivedFrom = default(string), string agentEmail = default(string), string agentName = default(string)) + { + // to ensure "visitorId" is required (not null) + if (visitorId == null) + { + throw new InvalidDataException("visitorId is a required property for Body8 and cannot be null"); + } + else + { + this.VisitorId = visitorId; + } + // to ensure "text" is required (not null) + if (text == null) + { + throw new InvalidDataException("text is a required property for Body8 and cannot be null"); + } + else + { + this.Text = text; + } + this.AgentId = agentId; + this.ReceivedFrom = receivedFrom; + this.AgentEmail = agentEmail; + this.AgentName = agentName; + } + + /// + /// visitor’s ID received <a href="https://developers.sendinblue.com/docs/conversations-webhooks">from a webhook</a> or generated by you to <a href="https://developers.sendinblue.com/docs/customize-the-widget#identifying-existing-users">bind existing user account to Conversations</a> + /// + /// visitor’s ID received <a href="https://developers.sendinblue.com/docs/conversations-webhooks">from a webhook</a> or generated by you to <a href="https://developers.sendinblue.com/docs/customize-the-widget#identifying-existing-users">bind existing user account to Conversations</a> + [DataMember(Name="visitorId", EmitDefaultValue=false)] + public string VisitorId { get; set; } + + /// + /// message text + /// + /// message text + [DataMember(Name="text", EmitDefaultValue=false)] + public string Text { get; set; } + + /// + /// agent ID. It can be found on agent’s page or received <a href="https://developers.sendinblue.com/docs/conversations-webhooks">from a webhook</a>. Alternatively, you can use `agentEmail` + `agentName` + `receivedFrom` instead (all 3 fields required). + /// + /// agent ID. It can be found on agent’s page or received <a href="https://developers.sendinblue.com/docs/conversations-webhooks">from a webhook</a>. Alternatively, you can use `agentEmail` + `agentName` + `receivedFrom` instead (all 3 fields required). + [DataMember(Name="agentId", EmitDefaultValue=false)] + public string AgentId { get; set; } + + /// + /// mark your messages to distinguish messages created by you from the others. + /// + /// mark your messages to distinguish messages created by you from the others. + [DataMember(Name="receivedFrom", EmitDefaultValue=false)] + public string ReceivedFrom { get; set; } + + /// + /// agent email. When sending messages from a standalone system, it’s hard to maintain a 1-to-1 relationship between the users of both systems. In this case, an agent can be specified by their email address. + /// + /// agent email. When sending messages from a standalone system, it’s hard to maintain a 1-to-1 relationship between the users of both systems. In this case, an agent can be specified by their email address. + [DataMember(Name="agentEmail", EmitDefaultValue=false)] + public string AgentEmail { get; set; } + + /// + /// agent name + /// + /// agent name + [DataMember(Name="agentName", EmitDefaultValue=false)] + public string AgentName { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Body8 {\n"); + sb.Append(" VisitorId: ").Append(VisitorId).Append("\n"); + sb.Append(" Text: ").Append(Text).Append("\n"); + sb.Append(" AgentId: ").Append(AgentId).Append("\n"); + sb.Append(" ReceivedFrom: ").Append(ReceivedFrom).Append("\n"); + sb.Append(" AgentEmail: ").Append(AgentEmail).Append("\n"); + sb.Append(" AgentName: ").Append(AgentName).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as Body8); + } + + /// + /// Returns true if Body8 instances are equal + /// + /// Instance of Body8 to be compared + /// Boolean + public bool Equals(Body8 input) + { + if (input == null) + return false; + + return + ( + this.VisitorId == input.VisitorId || + (this.VisitorId != null && + this.VisitorId.Equals(input.VisitorId)) + ) && + ( + this.Text == input.Text || + (this.Text != null && + this.Text.Equals(input.Text)) + ) && + ( + this.AgentId == input.AgentId || + (this.AgentId != null && + this.AgentId.Equals(input.AgentId)) + ) && + ( + this.ReceivedFrom == input.ReceivedFrom || + (this.ReceivedFrom != null && + this.ReceivedFrom.Equals(input.ReceivedFrom)) + ) && + ( + this.AgentEmail == input.AgentEmail || + (this.AgentEmail != null && + this.AgentEmail.Equals(input.AgentEmail)) + ) && + ( + this.AgentName == input.AgentName || + (this.AgentName != null && + this.AgentName.Equals(input.AgentName)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.VisitorId != null) + hashCode = hashCode * 59 + this.VisitorId.GetHashCode(); + if (this.Text != null) + hashCode = hashCode * 59 + this.Text.GetHashCode(); + if (this.AgentId != null) + hashCode = hashCode * 59 + this.AgentId.GetHashCode(); + if (this.ReceivedFrom != null) + hashCode = hashCode * 59 + this.ReceivedFrom.GetHashCode(); + if (this.AgentEmail != null) + hashCode = hashCode * 59 + this.AgentEmail.GetHashCode(); + if (this.AgentName != null) + hashCode = hashCode * 59 + this.AgentName.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/Body9.cs b/src/sib_api_v3_sdk/Model/Body9.cs new file mode 100644 index 0000000..365c754 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/Body9.cs @@ -0,0 +1,126 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// Body9 + /// + [DataContract] + public partial class Body9 : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected Body9() { } + /// + /// Initializes a new instance of the class. + /// + /// edited message text (required). + public Body9(string text = default(string)) + { + // to ensure "text" is required (not null) + if (text == null) + { + throw new InvalidDataException("text is a required property for Body9 and cannot be null"); + } + else + { + this.Text = text; + } + } + + /// + /// edited message text + /// + /// edited message text + [DataMember(Name="text", EmitDefaultValue=false)] + public string Text { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Body9 {\n"); + sb.Append(" Text: ").Append(Text).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as Body9); + } + + /// + /// Returns true if Body9 instances are equal + /// + /// Instance of Body9 to be compared + /// Boolean + public bool Equals(Body9 input) + { + if (input == null) + return false; + + return + ( + this.Text == input.Text || + (this.Text != null && + this.Text.Equals(input.Text)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Text != null) + hashCode = hashCode * 59 + this.Text.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/BodyVariablesItems.cs b/src/sib_api_v3_sdk/Model/BodyVariablesItems.cs new file mode 100644 index 0000000..e1d4eb0 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/BodyVariablesItems.cs @@ -0,0 +1,97 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// BodyVariablesItems + /// + [DataContract] + public partial class BodyVariablesItems : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + public BodyVariablesItems() + { + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class BodyVariablesItems {\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as BodyVariablesItems); + } + + /// + /// Returns true if BodyVariablesItems instances are equal + /// + /// Instance of BodyVariablesItems to be compared + /// Boolean + public bool Equals(BodyVariablesItems input) + { + if (input == null) + return false; + + return false; + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/CompaniesList.cs b/src/sib_api_v3_sdk/Model/CompaniesList.cs new file mode 100644 index 0000000..63fbada --- /dev/null +++ b/src/sib_api_v3_sdk/Model/CompaniesList.cs @@ -0,0 +1,113 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// List of companies + /// + [DataContract] + public partial class CompaniesList : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + /// List of compaies. + public CompaniesList(List items = default(List)) + { + this.Items = items; + } + + /// + /// List of compaies + /// + /// List of compaies + [DataMember(Name="items", EmitDefaultValue=false)] + public List Items { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class CompaniesList {\n"); + sb.Append(" Items: ").Append(Items).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as CompaniesList); + } + + /// + /// Returns true if CompaniesList instances are equal + /// + /// Instance of CompaniesList to be compared + /// Boolean + public bool Equals(CompaniesList input) + { + if (input == null) + return false; + + return + ( + this.Items == input.Items || + this.Items != null && + this.Items.SequenceEqual(input.Items) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Items != null) + hashCode = hashCode * 59 + this.Items.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/Company.cs b/src/sib_api_v3_sdk/Model/Company.cs new file mode 100644 index 0000000..f59714b --- /dev/null +++ b/src/sib_api_v3_sdk/Model/Company.cs @@ -0,0 +1,164 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// Company Details + /// + [DataContract] + public partial class Company : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + /// Unique company id. + /// Company attributes with values. + /// Contact ids for contacts linked to this company. + /// Deals ids for companies linked to this company. + public Company(string id = default(string), Object attributes = default(Object), List linkedContactsIds = default(List), List linkedDealsIds = default(List)) + { + this.Id = id; + this.Attributes = attributes; + this.LinkedContactsIds = linkedContactsIds; + this.LinkedDealsIds = linkedDealsIds; + } + + /// + /// Unique company id + /// + /// Unique company id + [DataMember(Name="id", EmitDefaultValue=false)] + public string Id { get; set; } + + /// + /// Company attributes with values + /// + /// Company attributes with values + [DataMember(Name="attributes", EmitDefaultValue=false)] + public Object Attributes { get; set; } + + /// + /// Contact ids for contacts linked to this company + /// + /// Contact ids for contacts linked to this company + [DataMember(Name="linkedContactsIds", EmitDefaultValue=false)] + public List LinkedContactsIds { get; set; } + + /// + /// Deals ids for companies linked to this company + /// + /// Deals ids for companies linked to this company + [DataMember(Name="linkedDealsIds", EmitDefaultValue=false)] + public List LinkedDealsIds { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Company {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" Attributes: ").Append(Attributes).Append("\n"); + sb.Append(" LinkedContactsIds: ").Append(LinkedContactsIds).Append("\n"); + sb.Append(" LinkedDealsIds: ").Append(LinkedDealsIds).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as Company); + } + + /// + /// Returns true if Company instances are equal + /// + /// Instance of Company to be compared + /// Boolean + public bool Equals(Company input) + { + if (input == null) + return false; + + return + ( + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) + ) && + ( + this.Attributes == input.Attributes || + (this.Attributes != null && + this.Attributes.Equals(input.Attributes)) + ) && + ( + this.LinkedContactsIds == input.LinkedContactsIds || + this.LinkedContactsIds != null && + this.LinkedContactsIds.SequenceEqual(input.LinkedContactsIds) + ) && + ( + this.LinkedDealsIds == input.LinkedDealsIds || + this.LinkedDealsIds != null && + this.LinkedDealsIds.SequenceEqual(input.LinkedDealsIds) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Id != null) + hashCode = hashCode * 59 + this.Id.GetHashCode(); + if (this.Attributes != null) + hashCode = hashCode * 59 + this.Attributes.GetHashCode(); + if (this.LinkedContactsIds != null) + hashCode = hashCode * 59 + this.LinkedContactsIds.GetHashCode(); + if (this.LinkedDealsIds != null) + hashCode = hashCode * 59 + this.LinkedDealsIds.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/CompanyAttributes.cs b/src/sib_api_v3_sdk/Model/CompanyAttributes.cs new file mode 100644 index 0000000..1063ad3 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/CompanyAttributes.cs @@ -0,0 +1,98 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// List of company attributes + /// + [DataContract] + public partial class CompanyAttributes : List, IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + public CompanyAttributes() : base() + { + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class CompanyAttributes {\n"); + sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as CompanyAttributes); + } + + /// + /// Returns true if CompanyAttributes instances are equal + /// + /// Instance of CompanyAttributes to be compared + /// Boolean + public bool Equals(CompanyAttributes input) + { + if (input == null) + return false; + + return base.Equals(input); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = base.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/CompanyAttributesInner.cs b/src/sib_api_v3_sdk/Model/CompanyAttributesInner.cs new file mode 100644 index 0000000..0bbd668 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/CompanyAttributesInner.cs @@ -0,0 +1,176 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// List of attributes + /// + [DataContract] + public partial class CompanyAttributesInner : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + /// internalName. + /// label. + /// attributeTypeName. + /// attributeOptions. + /// isRequired. + public CompanyAttributesInner(string internalName = default(string), string label = default(string), string attributeTypeName = default(string), List attributeOptions = default(List), bool? isRequired = default(bool?)) + { + this.InternalName = internalName; + this.Label = label; + this.AttributeTypeName = attributeTypeName; + this.AttributeOptions = attributeOptions; + this.IsRequired = isRequired; + } + + /// + /// Gets or Sets InternalName + /// + [DataMember(Name="internalName", EmitDefaultValue=false)] + public string InternalName { get; set; } + + /// + /// Gets or Sets Label + /// + [DataMember(Name="label", EmitDefaultValue=false)] + public string Label { get; set; } + + /// + /// Gets or Sets AttributeTypeName + /// + [DataMember(Name="attributeTypeName", EmitDefaultValue=false)] + public string AttributeTypeName { get; set; } + + /// + /// Gets or Sets AttributeOptions + /// + [DataMember(Name="attributeOptions", EmitDefaultValue=false)] + public List AttributeOptions { get; set; } + + /// + /// Gets or Sets IsRequired + /// + [DataMember(Name="isRequired", EmitDefaultValue=false)] + public bool? IsRequired { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class CompanyAttributesInner {\n"); + sb.Append(" InternalName: ").Append(InternalName).Append("\n"); + sb.Append(" Label: ").Append(Label).Append("\n"); + sb.Append(" AttributeTypeName: ").Append(AttributeTypeName).Append("\n"); + sb.Append(" AttributeOptions: ").Append(AttributeOptions).Append("\n"); + sb.Append(" IsRequired: ").Append(IsRequired).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as CompanyAttributesInner); + } + + /// + /// Returns true if CompanyAttributesInner instances are equal + /// + /// Instance of CompanyAttributesInner to be compared + /// Boolean + public bool Equals(CompanyAttributesInner input) + { + if (input == null) + return false; + + return + ( + this.InternalName == input.InternalName || + (this.InternalName != null && + this.InternalName.Equals(input.InternalName)) + ) && + ( + this.Label == input.Label || + (this.Label != null && + this.Label.Equals(input.Label)) + ) && + ( + this.AttributeTypeName == input.AttributeTypeName || + (this.AttributeTypeName != null && + this.AttributeTypeName.Equals(input.AttributeTypeName)) + ) && + ( + this.AttributeOptions == input.AttributeOptions || + this.AttributeOptions != null && + this.AttributeOptions.SequenceEqual(input.AttributeOptions) + ) && + ( + this.IsRequired == input.IsRequired || + (this.IsRequired != null && + this.IsRequired.Equals(input.IsRequired)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.InternalName != null) + hashCode = hashCode * 59 + this.InternalName.GetHashCode(); + if (this.Label != null) + hashCode = hashCode * 59 + this.Label.GetHashCode(); + if (this.AttributeTypeName != null) + hashCode = hashCode * 59 + this.AttributeTypeName.GetHashCode(); + if (this.AttributeOptions != null) + hashCode = hashCode * 59 + this.AttributeOptions.GetHashCode(); + if (this.IsRequired != null) + hashCode = hashCode * 59 + this.IsRequired.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/ComponentItems.cs b/src/sib_api_v3_sdk/Model/ComponentItems.cs new file mode 100644 index 0000000..b0ac308 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/ComponentItems.cs @@ -0,0 +1,128 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// ComponentItems + /// + [DataContract] + public partial class ComponentItems : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + /// type. + /// text. + public ComponentItems(string type = default(string), string text = default(string)) + { + this.Type = type; + this.Text = text; + } + + /// + /// Gets or Sets Type + /// + [DataMember(Name="type", EmitDefaultValue=false)] + public string Type { get; set; } + + /// + /// Gets or Sets Text + /// + [DataMember(Name="text", EmitDefaultValue=false)] + public string Text { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class ComponentItems {\n"); + sb.Append(" Type: ").Append(Type).Append("\n"); + sb.Append(" Text: ").Append(Text).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as ComponentItems); + } + + /// + /// Returns true if ComponentItems instances are equal + /// + /// Instance of ComponentItems to be compared + /// Boolean + public bool Equals(ComponentItems input) + { + if (input == null) + return false; + + return + ( + this.Type == input.Type || + (this.Type != null && + this.Type.Equals(input.Type)) + ) && + ( + this.Text == input.Text || + (this.Text != null && + this.Text.Equals(input.Text)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Type != null) + hashCode = hashCode * 59 + this.Type.GetHashCode(); + if (this.Text != null) + hashCode = hashCode * 59 + this.Text.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/Contact.cs b/src/sib_api_v3_sdk/Model/Contact.cs deleted file mode 100644 index da78cd8..0000000 --- a/src/sib_api_v3_sdk/Model/Contact.cs +++ /dev/null @@ -1,253 +0,0 @@ -/* - * SendinBlue API - * - * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | - * - * OpenAPI spec version: 3.0.0 - * Contact: contact@sendinblue.com - * Generated by: https://github.com/swagger-api/swagger-codegen.git - */ - -using System; -using System.Linq; -using System.IO; -using System.Text; -using System.Collections; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Runtime.Serialization; -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; -using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; - -namespace sib_api_v3_sdk.Model -{ - /// - /// Contact Details - /// - [DataContract] - public partial class Contact : IEquatable - { - /// - /// Initializes a new instance of the class. - /// - [JsonConstructorAttribute] - protected Contact() { } - /// - /// Initializes a new instance of the class. - /// - /// Next incomplete task of contact. - /// Contact email (required). - /// User id to whom contact is assigned. - /// Contact id. - /// CRM lists in which contact is added (required). - /// Contact attributes e.g firstname / lastname / SMS etc.. - /// Contact created date/time. - /// Contact updated date/time. - public Contact(Object virtualNextTask = default(Object), string email = default(string), string assignToId = default(string), int? contactsId = default(int?), Object crmLists = default(Object), Object attributes = default(Object), DateTime? createdAt = default(DateTime?), DateTime? updatedAt = default(DateTime?)) - { - // to ensure "email" is required (not null) - if (email == null) - { - throw new InvalidDataException("email is a required property for Contact and cannot be null"); - } - else - { - this.Email = email; - } - // to ensure "crmLists" is required (not null) - if (crmLists == null) - { - throw new InvalidDataException("crmLists is a required property for Contact and cannot be null"); - } - else - { - this.CrmLists = crmLists; - } - this.VirtualNextTask = virtualNextTask; - this.AssignToId = assignToId; - this.ContactsId = contactsId; - this.Attributes = attributes; - this.CreatedAt = createdAt; - this.UpdatedAt = updatedAt; - } - - /// - /// Next incomplete task of contact - /// - /// Next incomplete task of contact - [DataMember(Name="virtualNextTask", EmitDefaultValue=false)] - public Object VirtualNextTask { get; set; } - - /// - /// Contact email - /// - /// Contact email - [DataMember(Name="email", EmitDefaultValue=false)] - public string Email { get; set; } - - /// - /// User id to whom contact is assigned - /// - /// User id to whom contact is assigned - [DataMember(Name="assignToId", EmitDefaultValue=false)] - public string AssignToId { get; set; } - - /// - /// Contact id - /// - /// Contact id - [DataMember(Name="contactsId", EmitDefaultValue=false)] - public int? ContactsId { get; set; } - - /// - /// CRM lists in which contact is added - /// - /// CRM lists in which contact is added - [DataMember(Name="crmLists", EmitDefaultValue=false)] - public Object CrmLists { get; set; } - - /// - /// Contact attributes e.g firstname / lastname / SMS etc. - /// - /// Contact attributes e.g firstname / lastname / SMS etc. - [DataMember(Name="attributes", EmitDefaultValue=false)] - public Object Attributes { get; set; } - - /// - /// Contact created date/time - /// - /// Contact created date/time - [DataMember(Name="createdAt", EmitDefaultValue=false)] - public DateTime? CreatedAt { get; set; } - - /// - /// Contact updated date/time - /// - /// Contact updated date/time - [DataMember(Name="updatedAt", EmitDefaultValue=false)] - public DateTime? UpdatedAt { get; set; } - - /// - /// Returns the string presentation of the object - /// - /// String presentation of the object - public override string ToString() - { - var sb = new StringBuilder(); - sb.Append("class Contact {\n"); - sb.Append(" VirtualNextTask: ").Append(VirtualNextTask).Append("\n"); - sb.Append(" Email: ").Append(Email).Append("\n"); - sb.Append(" AssignToId: ").Append(AssignToId).Append("\n"); - sb.Append(" ContactsId: ").Append(ContactsId).Append("\n"); - sb.Append(" CrmLists: ").Append(CrmLists).Append("\n"); - sb.Append(" Attributes: ").Append(Attributes).Append("\n"); - sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); - sb.Append(" UpdatedAt: ").Append(UpdatedAt).Append("\n"); - sb.Append("}\n"); - return sb.ToString(); - } - - /// - /// Returns the JSON string presentation of the object - /// - /// JSON string presentation of the object - public virtual string ToJson() - { - return JsonConvert.SerializeObject(this, Formatting.Indented); - } - - /// - /// Returns true if objects are equal - /// - /// Object to be compared - /// Boolean - public override bool Equals(object input) - { - return this.Equals(input as Contact); - } - - /// - /// Returns true if Contact instances are equal - /// - /// Instance of Contact to be compared - /// Boolean - public bool Equals(Contact input) - { - if (input == null) - return false; - - return - ( - this.VirtualNextTask == input.VirtualNextTask || - (this.VirtualNextTask != null && - this.VirtualNextTask.Equals(input.VirtualNextTask)) - ) && - ( - this.Email == input.Email || - (this.Email != null && - this.Email.Equals(input.Email)) - ) && - ( - this.AssignToId == input.AssignToId || - (this.AssignToId != null && - this.AssignToId.Equals(input.AssignToId)) - ) && - ( - this.ContactsId == input.ContactsId || - (this.ContactsId != null && - this.ContactsId.Equals(input.ContactsId)) - ) && - ( - this.CrmLists == input.CrmLists || - (this.CrmLists != null && - this.CrmLists.Equals(input.CrmLists)) - ) && - ( - this.Attributes == input.Attributes || - (this.Attributes != null && - this.Attributes.Equals(input.Attributes)) - ) && - ( - this.CreatedAt == input.CreatedAt || - (this.CreatedAt != null && - this.CreatedAt.Equals(input.CreatedAt)) - ) && - ( - this.UpdatedAt == input.UpdatedAt || - (this.UpdatedAt != null && - this.UpdatedAt.Equals(input.UpdatedAt)) - ); - } - - /// - /// Gets the hash code - /// - /// Hash code - public override int GetHashCode() - { - unchecked // Overflow is fine, just wrap - { - int hashCode = 41; - if (this.VirtualNextTask != null) - hashCode = hashCode * 59 + this.VirtualNextTask.GetHashCode(); - if (this.Email != null) - hashCode = hashCode * 59 + this.Email.GetHashCode(); - if (this.AssignToId != null) - hashCode = hashCode * 59 + this.AssignToId.GetHashCode(); - if (this.ContactsId != null) - hashCode = hashCode * 59 + this.ContactsId.GetHashCode(); - if (this.CrmLists != null) - hashCode = hashCode * 59 + this.CrmLists.GetHashCode(); - if (this.Attributes != null) - hashCode = hashCode * 59 + this.Attributes.GetHashCode(); - if (this.CreatedAt != null) - hashCode = hashCode * 59 + this.CreatedAt.GetHashCode(); - if (this.UpdatedAt != null) - hashCode = hashCode * 59 + this.UpdatedAt.GetHashCode(); - return hashCode; - } - } - } - -} diff --git a/src/sib_api_v3_sdk/Model/ConversationsMessage.cs b/src/sib_api_v3_sdk/Model/ConversationsMessage.cs new file mode 100644 index 0000000..33406ac --- /dev/null +++ b/src/sib_api_v3_sdk/Model/ConversationsMessage.cs @@ -0,0 +1,286 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// a Conversations message + /// + [DataContract] + public partial class ConversationsMessage : IEquatable + { + /// + /// `"agent"` for agents’ messages, `"visitor"` for visitors’ messages. + /// + /// `"agent"` for agents’ messages, `"visitor"` for visitors’ messages. + [JsonConverter(typeof(StringEnumConverter))] + public enum TypeEnum + { + + /// + /// Enum Agent for value: agent + /// + [EnumMember(Value = "agent")] + Agent = 1, + + /// + /// Enum Visitor for value: visitor + /// + [EnumMember(Value = "visitor")] + Visitor = 2 + } + + /// + /// `"agent"` for agents’ messages, `"visitor"` for visitors’ messages. + /// + /// `"agent"` for agents’ messages, `"visitor"` for visitors’ messages. + [DataMember(Name="type", EmitDefaultValue=false)] + public TypeEnum? Type { get; set; } + /// + /// Initializes a new instance of the class. + /// + /// Message ID. It can be used for further manipulations with the message.. + /// `"agent"` for agents’ messages, `"visitor"` for visitors’ messages.. + /// Message text or name of the attached file. + /// visitor’s ID. + /// ID of the agent on whose behalf the message was sent (only in messages sent by an agent).. + /// Agent’s name as displayed to the visitor. Only in the messages sent by an agent.. + /// Timestamp in milliseconds.. + /// `true` for pushed messages. + /// In two-way integrations, messages sent via REST API can be marked with receivedFrom property and then filtered out when received in a webhook to avoid infinite loop.. + /// file. + public ConversationsMessage(string id = default(string), TypeEnum? type = default(TypeEnum?), string text = default(string), string visitorId = default(string), string agentId = default(string), string agentName = default(string), long? createdAt = default(long?), bool? isPushed = default(bool?), string receivedFrom = default(string), ConversationsMessageFile file = default(ConversationsMessageFile)) + { + this.Id = id; + this.Type = type; + this.Text = text; + this.VisitorId = visitorId; + this.AgentId = agentId; + this.AgentName = agentName; + this.CreatedAt = createdAt; + this.IsPushed = isPushed; + this.ReceivedFrom = receivedFrom; + this.File = file; + } + + /// + /// Message ID. It can be used for further manipulations with the message. + /// + /// Message ID. It can be used for further manipulations with the message. + [DataMember(Name="id", EmitDefaultValue=false)] + public string Id { get; set; } + + + /// + /// Message text or name of the attached file + /// + /// Message text or name of the attached file + [DataMember(Name="text", EmitDefaultValue=false)] + public string Text { get; set; } + + /// + /// visitor’s ID + /// + /// visitor’s ID + [DataMember(Name="visitorId", EmitDefaultValue=false)] + public string VisitorId { get; set; } + + /// + /// ID of the agent on whose behalf the message was sent (only in messages sent by an agent). + /// + /// ID of the agent on whose behalf the message was sent (only in messages sent by an agent). + [DataMember(Name="agentId", EmitDefaultValue=false)] + public string AgentId { get; set; } + + /// + /// Agent’s name as displayed to the visitor. Only in the messages sent by an agent. + /// + /// Agent’s name as displayed to the visitor. Only in the messages sent by an agent. + [DataMember(Name="agentName", EmitDefaultValue=false)] + public string AgentName { get; set; } + + /// + /// Timestamp in milliseconds. + /// + /// Timestamp in milliseconds. + [DataMember(Name="createdAt", EmitDefaultValue=false)] + public long? CreatedAt { get; set; } + + /// + /// `true` for pushed messages + /// + /// `true` for pushed messages + [DataMember(Name="isPushed", EmitDefaultValue=false)] + public bool? IsPushed { get; set; } + + /// + /// In two-way integrations, messages sent via REST API can be marked with receivedFrom property and then filtered out when received in a webhook to avoid infinite loop. + /// + /// In two-way integrations, messages sent via REST API can be marked with receivedFrom property and then filtered out when received in a webhook to avoid infinite loop. + [DataMember(Name="receivedFrom", EmitDefaultValue=false)] + public string ReceivedFrom { get; set; } + + /// + /// Gets or Sets File + /// + [DataMember(Name="file", EmitDefaultValue=false)] + public ConversationsMessageFile File { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class ConversationsMessage {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" Type: ").Append(Type).Append("\n"); + sb.Append(" Text: ").Append(Text).Append("\n"); + sb.Append(" VisitorId: ").Append(VisitorId).Append("\n"); + sb.Append(" AgentId: ").Append(AgentId).Append("\n"); + sb.Append(" AgentName: ").Append(AgentName).Append("\n"); + sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); + sb.Append(" IsPushed: ").Append(IsPushed).Append("\n"); + sb.Append(" ReceivedFrom: ").Append(ReceivedFrom).Append("\n"); + sb.Append(" File: ").Append(File).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as ConversationsMessage); + } + + /// + /// Returns true if ConversationsMessage instances are equal + /// + /// Instance of ConversationsMessage to be compared + /// Boolean + public bool Equals(ConversationsMessage input) + { + if (input == null) + return false; + + return + ( + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) + ) && + ( + this.Type == input.Type || + (this.Type != null && + this.Type.Equals(input.Type)) + ) && + ( + this.Text == input.Text || + (this.Text != null && + this.Text.Equals(input.Text)) + ) && + ( + this.VisitorId == input.VisitorId || + (this.VisitorId != null && + this.VisitorId.Equals(input.VisitorId)) + ) && + ( + this.AgentId == input.AgentId || + (this.AgentId != null && + this.AgentId.Equals(input.AgentId)) + ) && + ( + this.AgentName == input.AgentName || + (this.AgentName != null && + this.AgentName.Equals(input.AgentName)) + ) && + ( + this.CreatedAt == input.CreatedAt || + (this.CreatedAt != null && + this.CreatedAt.Equals(input.CreatedAt)) + ) && + ( + this.IsPushed == input.IsPushed || + (this.IsPushed != null && + this.IsPushed.Equals(input.IsPushed)) + ) && + ( + this.ReceivedFrom == input.ReceivedFrom || + (this.ReceivedFrom != null && + this.ReceivedFrom.Equals(input.ReceivedFrom)) + ) && + ( + this.File == input.File || + (this.File != null && + this.File.Equals(input.File)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Id != null) + hashCode = hashCode * 59 + this.Id.GetHashCode(); + if (this.Type != null) + hashCode = hashCode * 59 + this.Type.GetHashCode(); + if (this.Text != null) + hashCode = hashCode * 59 + this.Text.GetHashCode(); + if (this.VisitorId != null) + hashCode = hashCode * 59 + this.VisitorId.GetHashCode(); + if (this.AgentId != null) + hashCode = hashCode * 59 + this.AgentId.GetHashCode(); + if (this.AgentName != null) + hashCode = hashCode * 59 + this.AgentName.GetHashCode(); + if (this.CreatedAt != null) + hashCode = hashCode * 59 + this.CreatedAt.GetHashCode(); + if (this.IsPushed != null) + hashCode = hashCode * 59 + this.IsPushed.GetHashCode(); + if (this.ReceivedFrom != null) + hashCode = hashCode * 59 + this.ReceivedFrom.GetHashCode(); + if (this.File != null) + hashCode = hashCode * 59 + this.File.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/ConversationsMessageFile.cs b/src/sib_api_v3_sdk/Model/ConversationsMessageFile.cs new file mode 100644 index 0000000..aaa1cf5 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/ConversationsMessageFile.cs @@ -0,0 +1,180 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// ConversationsMessageFile + /// + [DataContract] + public partial class ConversationsMessageFile : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + /// Name of the file. + /// Size in bytes. + /// Whether the file is an image. + /// URL of the file. + /// imageInfo. + public ConversationsMessageFile(string filename = default(string), long? size = default(long?), bool? isImage = default(bool?), string url = default(string), ConversationsMessageFileImageInfo imageInfo = default(ConversationsMessageFileImageInfo)) + { + this.Filename = filename; + this.Size = size; + this.IsImage = isImage; + this.Url = url; + this.ImageInfo = imageInfo; + } + + /// + /// Name of the file + /// + /// Name of the file + [DataMember(Name="filename", EmitDefaultValue=false)] + public string Filename { get; set; } + + /// + /// Size in bytes + /// + /// Size in bytes + [DataMember(Name="size", EmitDefaultValue=false)] + public long? Size { get; set; } + + /// + /// Whether the file is an image + /// + /// Whether the file is an image + [DataMember(Name="isImage", EmitDefaultValue=false)] + public bool? IsImage { get; set; } + + /// + /// URL of the file + /// + /// URL of the file + [DataMember(Name="url", EmitDefaultValue=false)] + public string Url { get; set; } + + /// + /// Gets or Sets ImageInfo + /// + [DataMember(Name="imageInfo", EmitDefaultValue=false)] + public ConversationsMessageFileImageInfo ImageInfo { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class ConversationsMessageFile {\n"); + sb.Append(" Filename: ").Append(Filename).Append("\n"); + sb.Append(" Size: ").Append(Size).Append("\n"); + sb.Append(" IsImage: ").Append(IsImage).Append("\n"); + sb.Append(" Url: ").Append(Url).Append("\n"); + sb.Append(" ImageInfo: ").Append(ImageInfo).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as ConversationsMessageFile); + } + + /// + /// Returns true if ConversationsMessageFile instances are equal + /// + /// Instance of ConversationsMessageFile to be compared + /// Boolean + public bool Equals(ConversationsMessageFile input) + { + if (input == null) + return false; + + return + ( + this.Filename == input.Filename || + (this.Filename != null && + this.Filename.Equals(input.Filename)) + ) && + ( + this.Size == input.Size || + (this.Size != null && + this.Size.Equals(input.Size)) + ) && + ( + this.IsImage == input.IsImage || + (this.IsImage != null && + this.IsImage.Equals(input.IsImage)) + ) && + ( + this.Url == input.Url || + (this.Url != null && + this.Url.Equals(input.Url)) + ) && + ( + this.ImageInfo == input.ImageInfo || + (this.ImageInfo != null && + this.ImageInfo.Equals(input.ImageInfo)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Filename != null) + hashCode = hashCode * 59 + this.Filename.GetHashCode(); + if (this.Size != null) + hashCode = hashCode * 59 + this.Size.GetHashCode(); + if (this.IsImage != null) + hashCode = hashCode * 59 + this.IsImage.GetHashCode(); + if (this.Url != null) + hashCode = hashCode * 59 + this.Url.GetHashCode(); + if (this.ImageInfo != null) + hashCode = hashCode * 59 + this.ImageInfo.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/ConversationsMessageFileImageInfo.cs b/src/sib_api_v3_sdk/Model/ConversationsMessageFileImageInfo.cs new file mode 100644 index 0000000..67d5d06 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/ConversationsMessageFileImageInfo.cs @@ -0,0 +1,147 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// image info is passed in case the file is an image + /// + [DataContract] + public partial class ConversationsMessageFileImageInfo : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + /// Width of the image. + /// height of the image. + /// URL of the preview. + public ConversationsMessageFileImageInfo(long? width = default(long?), long? height = default(long?), string previewUrl = default(string)) + { + this.Width = width; + this.Height = height; + this.PreviewUrl = previewUrl; + } + + /// + /// Width of the image + /// + /// Width of the image + [DataMember(Name="width", EmitDefaultValue=false)] + public long? Width { get; set; } + + /// + /// height of the image + /// + /// height of the image + [DataMember(Name="height", EmitDefaultValue=false)] + public long? Height { get; set; } + + /// + /// URL of the preview + /// + /// URL of the preview + [DataMember(Name="previewUrl", EmitDefaultValue=false)] + public string PreviewUrl { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class ConversationsMessageFileImageInfo {\n"); + sb.Append(" Width: ").Append(Width).Append("\n"); + sb.Append(" Height: ").Append(Height).Append("\n"); + sb.Append(" PreviewUrl: ").Append(PreviewUrl).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as ConversationsMessageFileImageInfo); + } + + /// + /// Returns true if ConversationsMessageFileImageInfo instances are equal + /// + /// Instance of ConversationsMessageFileImageInfo to be compared + /// Boolean + public bool Equals(ConversationsMessageFileImageInfo input) + { + if (input == null) + return false; + + return + ( + this.Width == input.Width || + (this.Width != null && + this.Width.Equals(input.Width)) + ) && + ( + this.Height == input.Height || + (this.Height != null && + this.Height.Equals(input.Height)) + ) && + ( + this.PreviewUrl == input.PreviewUrl || + (this.PreviewUrl != null && + this.PreviewUrl.Equals(input.PreviewUrl)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Width != null) + hashCode = hashCode * 59 + this.Width.GetHashCode(); + if (this.Height != null) + hashCode = hashCode * 59 + this.Height.GetHashCode(); + if (this.PreviewUrl != null) + hashCode = hashCode * 59 + this.PreviewUrl.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/CreateApiKeyRequest.cs b/src/sib_api_v3_sdk/Model/CreateApiKeyRequest.cs new file mode 100644 index 0000000..16cbedb --- /dev/null +++ b/src/sib_api_v3_sdk/Model/CreateApiKeyRequest.cs @@ -0,0 +1,143 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// CreateApiKeyRequest + /// + [DataContract] + public partial class CreateApiKeyRequest : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected CreateApiKeyRequest() { } + /// + /// Initializes a new instance of the class. + /// + /// Id of the sub-account organization (required). + /// Name of the API key. + public CreateApiKeyRequest(long? id = default(long?), string name = default(string)) + { + // to ensure "id" is required (not null) + if (id == null) + { + throw new InvalidDataException("id is a required property for CreateApiKeyRequest and cannot be null"); + } + else + { + this.Id = id; + } + this.Name = name; + } + + /// + /// Id of the sub-account organization + /// + /// Id of the sub-account organization + [DataMember(Name="id", EmitDefaultValue=false)] + public long? Id { get; set; } + + /// + /// Name of the API key + /// + /// Name of the API key + [DataMember(Name="name", EmitDefaultValue=false)] + public string Name { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class CreateApiKeyRequest {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as CreateApiKeyRequest); + } + + /// + /// Returns true if CreateApiKeyRequest instances are equal + /// + /// Instance of CreateApiKeyRequest to be compared + /// Boolean + public bool Equals(CreateApiKeyRequest input) + { + if (input == null) + return false; + + return + ( + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) + ) && + ( + this.Name == input.Name || + (this.Name != null && + this.Name.Equals(input.Name)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Id != null) + hashCode = hashCode * 59 + this.Id.GetHashCode(); + if (this.Name != null) + hashCode = hashCode * 59 + this.Name.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/CreateApiKeyResponse.cs b/src/sib_api_v3_sdk/Model/CreateApiKeyResponse.cs new file mode 100644 index 0000000..8de47dd --- /dev/null +++ b/src/sib_api_v3_sdk/Model/CreateApiKeyResponse.cs @@ -0,0 +1,130 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// CreateApiKeyResponse + /// + [DataContract] + public partial class CreateApiKeyResponse : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + /// Status of the API operation.. + /// API Key. + public CreateApiKeyResponse(string status = default(string), string key = default(string)) + { + this.Status = status; + this.Key = key; + } + + /// + /// Status of the API operation. + /// + /// Status of the API operation. + [DataMember(Name="status", EmitDefaultValue=false)] + public string Status { get; set; } + + /// + /// API Key + /// + /// API Key + [DataMember(Name="key", EmitDefaultValue=false)] + public string Key { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class CreateApiKeyResponse {\n"); + sb.Append(" Status: ").Append(Status).Append("\n"); + sb.Append(" Key: ").Append(Key).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as CreateApiKeyResponse); + } + + /// + /// Returns true if CreateApiKeyResponse instances are equal + /// + /// Instance of CreateApiKeyResponse to be compared + /// Boolean + public bool Equals(CreateApiKeyResponse input) + { + if (input == null) + return false; + + return + ( + this.Status == input.Status || + (this.Status != null && + this.Status.Equals(input.Status)) + ) && + ( + this.Key == input.Key || + (this.Key != null && + this.Key.Equals(input.Key)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Status != null) + hashCode = hashCode * 59 + this.Status.GetHashCode(); + if (this.Key != null) + hashCode = hashCode * 59 + this.Key.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/CreateAttribute.cs b/src/sib_api_v3_sdk/Model/CreateAttribute.cs index 92dd40b..c039be8 100644 --- a/src/sib_api_v3_sdk/Model/CreateAttribute.cs +++ b/src/sib_api_v3_sdk/Model/CreateAttribute.cs @@ -83,11 +83,13 @@ public enum TypeEnum /// Initializes a new instance of the class. /// /// Value of the attribute. Use only if the attribute's category is 'calculated' or 'global'. + /// Type of the attribute. Use only if the attribute's category is 'calculated' or 'global'. /// List of values and labels that the attribute can take. Use only if the attribute's category is "category". For example, [{"value":1, "label":"male"}, {"value":2, "label":"female"}]. /// Type of the attribute. Use only if the attribute's category is 'normal', 'category' or 'transactional' ( type 'boolean' is only available if the category is 'normal' attribute, type 'id' is only available if the category is 'transactional' attribute & type 'category' is only available if the category is 'category' attribute ). - public CreateAttribute(string value = default(string), List enumeration = default(List), TypeEnum? type = default(TypeEnum?)) + public CreateAttribute(string value = default(string), bool? isRecurring = default(bool?), List enumeration = default(List), TypeEnum? type = default(TypeEnum?)) { this.Value = value; + this.IsRecurring = isRecurring; this.Enumeration = enumeration; this.Type = type; } @@ -99,6 +101,13 @@ public enum TypeEnum [DataMember(Name="value", EmitDefaultValue=false)] public string Value { get; set; } + /// + /// Type of the attribute. Use only if the attribute's category is 'calculated' or 'global' + /// + /// Type of the attribute. Use only if the attribute's category is 'calculated' or 'global' + [DataMember(Name="isRecurring", EmitDefaultValue=false)] + public bool? IsRecurring { get; set; } + /// /// List of values and labels that the attribute can take. Use only if the attribute's category is "category". For example, [{"value":1, "label":"male"}, {"value":2, "label":"female"}] /// @@ -116,6 +125,7 @@ public override string ToString() var sb = new StringBuilder(); sb.Append("class CreateAttribute {\n"); sb.Append(" Value: ").Append(Value).Append("\n"); + sb.Append(" IsRecurring: ").Append(IsRecurring).Append("\n"); sb.Append(" Enumeration: ").Append(Enumeration).Append("\n"); sb.Append(" Type: ").Append(Type).Append("\n"); sb.Append("}\n"); @@ -157,6 +167,11 @@ public bool Equals(CreateAttribute input) (this.Value != null && this.Value.Equals(input.Value)) ) && + ( + this.IsRecurring == input.IsRecurring || + (this.IsRecurring != null && + this.IsRecurring.Equals(input.IsRecurring)) + ) && ( this.Enumeration == input.Enumeration || this.Enumeration != null && @@ -180,6 +195,8 @@ public override int GetHashCode() int hashCode = 41; if (this.Value != null) hashCode = hashCode * 59 + this.Value.GetHashCode(); + if (this.IsRecurring != null) + hashCode = hashCode * 59 + this.IsRecurring.GetHashCode(); if (this.Enumeration != null) hashCode = hashCode * 59 + this.Enumeration.GetHashCode(); if (this.Type != null) diff --git a/src/sib_api_v3_sdk/Model/CreateCategoryModel.cs b/src/sib_api_v3_sdk/Model/CreateCategoryModel.cs new file mode 100644 index 0000000..a4dd306 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/CreateCategoryModel.cs @@ -0,0 +1,113 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// CreateCategoryModel + /// + [DataContract] + public partial class CreateCategoryModel : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + /// ID of the category when a new category is created. + public CreateCategoryModel(long? id = default(long?)) + { + this.Id = id; + } + + /// + /// ID of the category when a new category is created + /// + /// ID of the category when a new category is created + [DataMember(Name="id", EmitDefaultValue=false)] + public long? Id { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class CreateCategoryModel {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as CreateCategoryModel); + } + + /// + /// Returns true if CreateCategoryModel instances are equal + /// + /// Instance of CreateCategoryModel to be compared + /// Boolean + public bool Equals(CreateCategoryModel input) + { + if (input == null) + return false; + + return + ( + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Id != null) + hashCode = hashCode * 59 + this.Id.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/CreateContact.cs b/src/sib_api_v3_sdk/Model/CreateContact.cs index 994bd27..47f1611 100644 --- a/src/sib_api_v3_sdk/Model/CreateContact.cs +++ b/src/sib_api_v3_sdk/Model/CreateContact.cs @@ -32,7 +32,7 @@ public partial class CreateContact : IEquatable /// Initializes a new instance of the class. /// /// Email address of the user. Mandatory if "SMS" field is not passed in "attributes" parameter. Mobile Number in "SMS" field should be passed with proper country code. For example {"SMS":"+91xxxxxxxxxx"} or {"SMS":"0091xxxxxxxxxx"}. - /// Pass the set of attributes and their values. These attributes must be present in your SendinBlue account. For eg. {"FNAME":"Elly", "LNAME":"Roger"}. + /// Pass the set of attributes and their values. The attribute's parameter should be passed in capital letter while creating a contact. These attributes must be present in your SendinBlue account. For eg. {"FNAME":"Elly", "LNAME":"Roger"}. /// Set this field to blacklist the contact for emails (emailBlacklisted = true). /// Set this field to blacklist the contact for SMS (smsBlacklisted = true). /// Ids of the lists to add the contact to. @@ -65,9 +65,9 @@ public partial class CreateContact : IEquatable public string Email { get; set; } /// - /// Pass the set of attributes and their values. These attributes must be present in your SendinBlue account. For eg. {"FNAME":"Elly", "LNAME":"Roger"} + /// Pass the set of attributes and their values. The attribute's parameter should be passed in capital letter while creating a contact. These attributes must be present in your SendinBlue account. For eg. {"FNAME":"Elly", "LNAME":"Roger"} /// - /// Pass the set of attributes and their values. These attributes must be present in your SendinBlue account. For eg. {"FNAME":"Elly", "LNAME":"Roger"} + /// Pass the set of attributes and their values. The attribute's parameter should be passed in capital letter while creating a contact. These attributes must be present in your SendinBlue account. For eg. {"FNAME":"Elly", "LNAME":"Roger"} [DataMember(Name="attributes", EmitDefaultValue=false)] public Object Attributes { get; set; } diff --git a/src/sib_api_v3_sdk/Model/CreateEmailCampaign.cs b/src/sib_api_v3_sdk/Model/CreateEmailCampaign.cs index 52ebc29..ac06b6a 100644 --- a/src/sib_api_v3_sdk/Model/CreateEmailCampaign.cs +++ b/src/sib_api_v3_sdk/Model/CreateEmailCampaign.cs @@ -91,7 +91,9 @@ protected CreateEmailCampaign() { } /// Available for dedicated ip clients. Set this to true if you wish to warm up your ip. (default to false). /// Mandatory if ipWarmupEnable is set to true. Set an initial quota greater than 1 for warming up your ip. We recommend you set a value of 3000.. /// Mandatory if ipWarmupEnable is set to true. Set a percentage increase rate for warming up your ip. We recommend you set the increase rate to 30% per day. If you want to send the same number of emails every day, set the daily increase value to 0%.. - public CreateEmailCampaign(string tag = default(string), CreateEmailCampaignSender sender = default(CreateEmailCampaignSender), string name = default(string), string htmlContent = default(string), string htmlUrl = default(string), long? templateId = default(long?), string scheduledAt = default(string), string subject = default(string), string replyTo = default(string), string toField = default(string), CreateEmailCampaignRecipients recipients = default(CreateEmailCampaignRecipients), string attachmentUrl = default(string), bool? inlineImageActivation = false, bool? mirrorActive = default(bool?), string footer = default(string), string header = default(string), string utmCampaign = default(string), Object _params = default(Object), bool? sendAtBestTime = false, bool? abTesting = false, string subjectA = default(string), string subjectB = default(string), long? splitRule = default(long?), WinnerCriteriaEnum? winnerCriteria = default(WinnerCriteriaEnum?), long? winnerDelay = default(long?), bool? ipWarmupEnable = false, long? initialQuota = default(long?), long? increaseRate = default(long?)) + /// Enter an unsubscription page id. The page id is a 24 digit alphanumeric id that can be found in the URL when editing the page. If not entered, then the default unsubscription page will be used.. + /// Mandatory if templateId is used containing the {{ update_profile }} tag. Enter an update profile form id. The form id is a 24 digit alphanumeric id that can be found in the URL when editing the form. If not entered, then the default update profile form will be used.. + public CreateEmailCampaign(string tag = default(string), CreateEmailCampaignSender sender = default(CreateEmailCampaignSender), string name = default(string), string htmlContent = default(string), string htmlUrl = default(string), long? templateId = default(long?), string scheduledAt = default(string), string subject = default(string), string replyTo = default(string), string toField = default(string), CreateEmailCampaignRecipients recipients = default(CreateEmailCampaignRecipients), string attachmentUrl = default(string), bool? inlineImageActivation = false, bool? mirrorActive = default(bool?), string footer = default(string), string header = default(string), string utmCampaign = default(string), Object _params = default(Object), bool? sendAtBestTime = false, bool? abTesting = false, string subjectA = default(string), string subjectB = default(string), long? splitRule = default(long?), WinnerCriteriaEnum? winnerCriteria = default(WinnerCriteriaEnum?), long? winnerDelay = default(long?), bool? ipWarmupEnable = false, long? initialQuota = default(long?), long? increaseRate = default(long?), string unsubscriptionPageId = default(string), string updateFormId = default(string)) { // to ensure "sender" is required (not null) if (sender == null) @@ -169,6 +171,8 @@ protected CreateEmailCampaign() { } } this.InitialQuota = initialQuota; this.IncreaseRate = increaseRate; + this.UnsubscriptionPageId = unsubscriptionPageId; + this.UpdateFormId = updateFormId; } /// @@ -359,6 +363,20 @@ protected CreateEmailCampaign() { } [DataMember(Name="increaseRate", EmitDefaultValue=false)] public long? IncreaseRate { get; set; } + /// + /// Enter an unsubscription page id. The page id is a 24 digit alphanumeric id that can be found in the URL when editing the page. If not entered, then the default unsubscription page will be used. + /// + /// Enter an unsubscription page id. The page id is a 24 digit alphanumeric id that can be found in the URL when editing the page. If not entered, then the default unsubscription page will be used. + [DataMember(Name="unsubscriptionPageId", EmitDefaultValue=false)] + public string UnsubscriptionPageId { get; set; } + + /// + /// Mandatory if templateId is used containing the {{ update_profile }} tag. Enter an update profile form id. The form id is a 24 digit alphanumeric id that can be found in the URL when editing the form. If not entered, then the default update profile form will be used. + /// + /// Mandatory if templateId is used containing the {{ update_profile }} tag. Enter an update profile form id. The form id is a 24 digit alphanumeric id that can be found in the URL when editing the form. If not entered, then the default update profile form will be used. + [DataMember(Name="updateFormId", EmitDefaultValue=false)] + public string UpdateFormId { get; set; } + /// /// Returns the string presentation of the object /// @@ -395,6 +413,8 @@ public override string ToString() sb.Append(" IpWarmupEnable: ").Append(IpWarmupEnable).Append("\n"); sb.Append(" InitialQuota: ").Append(InitialQuota).Append("\n"); sb.Append(" IncreaseRate: ").Append(IncreaseRate).Append("\n"); + sb.Append(" UnsubscriptionPageId: ").Append(UnsubscriptionPageId).Append("\n"); + sb.Append(" UpdateFormId: ").Append(UpdateFormId).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -568,6 +588,16 @@ public bool Equals(CreateEmailCampaign input) this.IncreaseRate == input.IncreaseRate || (this.IncreaseRate != null && this.IncreaseRate.Equals(input.IncreaseRate)) + ) && + ( + this.UnsubscriptionPageId == input.UnsubscriptionPageId || + (this.UnsubscriptionPageId != null && + this.UnsubscriptionPageId.Equals(input.UnsubscriptionPageId)) + ) && + ( + this.UpdateFormId == input.UpdateFormId || + (this.UpdateFormId != null && + this.UpdateFormId.Equals(input.UpdateFormId)) ); } @@ -636,6 +666,10 @@ public override int GetHashCode() hashCode = hashCode * 59 + this.InitialQuota.GetHashCode(); if (this.IncreaseRate != null) hashCode = hashCode * 59 + this.IncreaseRate.GetHashCode(); + if (this.UnsubscriptionPageId != null) + hashCode = hashCode * 59 + this.UnsubscriptionPageId.GetHashCode(); + if (this.UpdateFormId != null) + hashCode = hashCode * 59 + this.UpdateFormId.GetHashCode(); return hashCode; } } diff --git a/src/sib_api_v3_sdk/Model/CreateEmailCampaignRecipients.cs b/src/sib_api_v3_sdk/Model/CreateEmailCampaignRecipients.cs index f273ad7..cfdae28 100644 --- a/src/sib_api_v3_sdk/Model/CreateEmailCampaignRecipients.cs +++ b/src/sib_api_v3_sdk/Model/CreateEmailCampaignRecipients.cs @@ -23,7 +23,7 @@ namespace sib_api_v3_sdk.Model { /// - /// List ids to include/exclude from campaign + /// Segment ids and List ids to include/exclude from campaign /// [DataContract] public partial class CreateEmailCampaignRecipients : IEquatable @@ -33,10 +33,12 @@ public partial class CreateEmailCampaignRecipients : IEquatable /// List ids to exclude from the campaign. /// Mandatory if scheduledAt is not empty. List Ids to send the campaign to. - public CreateEmailCampaignRecipients(List exclusionListIds = default(List), List listIds = default(List)) + /// Mandatory if listIds are not used. Segment ids to send the campaign to.. + public CreateEmailCampaignRecipients(List exclusionListIds = default(List), List listIds = default(List), List segmentIds = default(List)) { this.ExclusionListIds = exclusionListIds; this.ListIds = listIds; + this.SegmentIds = segmentIds; } /// @@ -53,6 +55,13 @@ public partial class CreateEmailCampaignRecipients : IEquatable ListIds { get; set; } + /// + /// Mandatory if listIds are not used. Segment ids to send the campaign to. + /// + /// Mandatory if listIds are not used. Segment ids to send the campaign to. + [DataMember(Name="segmentIds", EmitDefaultValue=false)] + public List SegmentIds { get; set; } + /// /// Returns the string presentation of the object /// @@ -63,6 +72,7 @@ public override string ToString() sb.Append("class CreateEmailCampaignRecipients {\n"); sb.Append(" ExclusionListIds: ").Append(ExclusionListIds).Append("\n"); sb.Append(" ListIds: ").Append(ListIds).Append("\n"); + sb.Append(" SegmentIds: ").Append(SegmentIds).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -106,6 +116,11 @@ public bool Equals(CreateEmailCampaignRecipients input) this.ListIds == input.ListIds || this.ListIds != null && this.ListIds.SequenceEqual(input.ListIds) + ) && + ( + this.SegmentIds == input.SegmentIds || + this.SegmentIds != null && + this.SegmentIds.SequenceEqual(input.SegmentIds) ); } @@ -122,6 +137,8 @@ public override int GetHashCode() hashCode = hashCode * 59 + this.ExclusionListIds.GetHashCode(); if (this.ListIds != null) hashCode = hashCode * 59 + this.ListIds.GetHashCode(); + if (this.SegmentIds != null) + hashCode = hashCode * 59 + this.SegmentIds.GetHashCode(); return hashCode; } } diff --git a/src/sib_api_v3_sdk/Model/CreateProductModel.cs b/src/sib_api_v3_sdk/Model/CreateProductModel.cs new file mode 100644 index 0000000..77e8335 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/CreateProductModel.cs @@ -0,0 +1,113 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// CreateProductModel + /// + [DataContract] + public partial class CreateProductModel : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + /// ID of the Product when a new product is created. + public CreateProductModel(long? id = default(long?)) + { + this.Id = id; + } + + /// + /// ID of the Product when a new product is created + /// + /// ID of the Product when a new product is created + [DataMember(Name="id", EmitDefaultValue=false)] + public long? Id { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class CreateProductModel {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as CreateProductModel); + } + + /// + /// Returns true if CreateProductModel instances are equal + /// + /// Instance of CreateProductModel to be compared + /// Boolean + public bool Equals(CreateProductModel input) + { + if (input == null) + return false; + + return + ( + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Id != null) + hashCode = hashCode * 59 + this.Id.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/CreateSmsCampaign.cs b/src/sib_api_v3_sdk/Model/CreateSmsCampaign.cs index ff082f1..3af9d00 100644 --- a/src/sib_api_v3_sdk/Model/CreateSmsCampaign.cs +++ b/src/sib_api_v3_sdk/Model/CreateSmsCampaign.cs @@ -42,7 +42,9 @@ protected CreateSmsCampaign() { } /// recipients. /// UTC date-time on which the campaign has to run (YYYY-MM-DDTHH:mm:ss.SSSZ). Prefer to pass your timezone in date-time format for accurate result.. /// Format of the message. It indicates whether the content should be treated as unicode or not. (default to false). - public CreateSmsCampaign(string name = default(string), string sender = default(string), string content = default(string), CreateSmsCampaignRecipients recipients = default(CreateSmsCampaignRecipients), string scheduledAt = default(string), bool? unicodeEnabled = false) + /// A recognizable prefix will ensure your audience knows who you are. Recommended by U.S. carriers. This will be added as your Brand Name before the message content. **Prefer verifying maximum length of 160 characters including this prefix in message content to avoid multiple sending of same sms.**. + /// Instructions to unsubscribe from future communications. Recommended by U.S. carriers. Must include **STOP** keyword. This will be added as instructions after the end of message content. **Prefer verifying maximum length of 160 characters including this instructions in message content to avoid multiple sending of same sms.**. + public CreateSmsCampaign(string name = default(string), string sender = default(string), string content = default(string), CreateSmsCampaignRecipients recipients = default(CreateSmsCampaignRecipients), string scheduledAt = default(string), bool? unicodeEnabled = false, string organisationPrefix = default(string), string unsubscribeInstruction = default(string)) { // to ensure "name" is required (not null) if (name == null) @@ -82,6 +84,8 @@ protected CreateSmsCampaign() { } { this.UnicodeEnabled = unicodeEnabled; } + this.OrganisationPrefix = organisationPrefix; + this.UnsubscribeInstruction = unsubscribeInstruction; } /// @@ -125,6 +129,20 @@ protected CreateSmsCampaign() { } [DataMember(Name="unicodeEnabled", EmitDefaultValue=false)] public bool? UnicodeEnabled { get; set; } + /// + /// A recognizable prefix will ensure your audience knows who you are. Recommended by U.S. carriers. This will be added as your Brand Name before the message content. **Prefer verifying maximum length of 160 characters including this prefix in message content to avoid multiple sending of same sms.** + /// + /// A recognizable prefix will ensure your audience knows who you are. Recommended by U.S. carriers. This will be added as your Brand Name before the message content. **Prefer verifying maximum length of 160 characters including this prefix in message content to avoid multiple sending of same sms.** + [DataMember(Name="organisationPrefix", EmitDefaultValue=false)] + public string OrganisationPrefix { get; set; } + + /// + /// Instructions to unsubscribe from future communications. Recommended by U.S. carriers. Must include **STOP** keyword. This will be added as instructions after the end of message content. **Prefer verifying maximum length of 160 characters including this instructions in message content to avoid multiple sending of same sms.** + /// + /// Instructions to unsubscribe from future communications. Recommended by U.S. carriers. Must include **STOP** keyword. This will be added as instructions after the end of message content. **Prefer verifying maximum length of 160 characters including this instructions in message content to avoid multiple sending of same sms.** + [DataMember(Name="unsubscribeInstruction", EmitDefaultValue=false)] + public string UnsubscribeInstruction { get; set; } + /// /// Returns the string presentation of the object /// @@ -139,6 +157,8 @@ public override string ToString() sb.Append(" Recipients: ").Append(Recipients).Append("\n"); sb.Append(" ScheduledAt: ").Append(ScheduledAt).Append("\n"); sb.Append(" UnicodeEnabled: ").Append(UnicodeEnabled).Append("\n"); + sb.Append(" OrganisationPrefix: ").Append(OrganisationPrefix).Append("\n"); + sb.Append(" UnsubscribeInstruction: ").Append(UnsubscribeInstruction).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -202,6 +222,16 @@ public bool Equals(CreateSmsCampaign input) this.UnicodeEnabled == input.UnicodeEnabled || (this.UnicodeEnabled != null && this.UnicodeEnabled.Equals(input.UnicodeEnabled)) + ) && + ( + this.OrganisationPrefix == input.OrganisationPrefix || + (this.OrganisationPrefix != null && + this.OrganisationPrefix.Equals(input.OrganisationPrefix)) + ) && + ( + this.UnsubscribeInstruction == input.UnsubscribeInstruction || + (this.UnsubscribeInstruction != null && + this.UnsubscribeInstruction.Equals(input.UnsubscribeInstruction)) ); } @@ -226,6 +256,10 @@ public override int GetHashCode() hashCode = hashCode * 59 + this.ScheduledAt.GetHashCode(); if (this.UnicodeEnabled != null) hashCode = hashCode * 59 + this.UnicodeEnabled.GetHashCode(); + if (this.OrganisationPrefix != null) + hashCode = hashCode * 59 + this.OrganisationPrefix.GetHashCode(); + if (this.UnsubscribeInstruction != null) + hashCode = hashCode * 59 + this.UnsubscribeInstruction.GetHashCode(); return hashCode; } } diff --git a/src/sib_api_v3_sdk/Model/CreateSubAccount.cs b/src/sib_api_v3_sdk/Model/CreateSubAccount.cs index bec4652..3e03249 100644 --- a/src/sib_api_v3_sdk/Model/CreateSubAccount.cs +++ b/src/sib_api_v3_sdk/Model/CreateSubAccount.cs @@ -29,9 +29,9 @@ namespace sib_api_v3_sdk.Model public partial class CreateSubAccount : IEquatable { /// - /// Language for identifying localization information + /// Set the language of the sub-account /// - /// Language for identifying localization information + /// Set the language of the sub-account [JsonConverter(typeof(StringEnumConverter))] public enum LanguageEnum { @@ -74,9 +74,9 @@ public enum LanguageEnum } /// - /// Language for identifying localization information + /// Set the language of the sub-account /// - /// Language for identifying localization information + /// Set the language of the sub-account [DataMember(Name="language", EmitDefaultValue=false)] public LanguageEnum? Language { get; set; } /// @@ -87,10 +87,10 @@ protected CreateSubAccount() { } /// /// Initializes a new instance of the class. /// - /// Name of the organization (required). + /// Set the name of the sub-account company (required). /// Email address for the organization (required). - /// Language for identifying localization information. - /// Request timezone of the client. + /// Set the language of the sub-account. + /// Set the timezone of the sub-account. public CreateSubAccount(string companyName = default(string), string email = default(string), LanguageEnum? language = default(LanguageEnum?), string timezone = default(string)) { // to ensure "companyName" is required (not null) @@ -116,9 +116,9 @@ protected CreateSubAccount() { } } /// - /// Name of the organization + /// Set the name of the sub-account company /// - /// Name of the organization + /// Set the name of the sub-account company [DataMember(Name="companyName", EmitDefaultValue=false)] public string CompanyName { get; set; } @@ -131,9 +131,9 @@ protected CreateSubAccount() { } /// - /// Request timezone of the client + /// Set the timezone of the sub-account /// - /// Request timezone of the client + /// Set the timezone of the sub-account [DataMember(Name="timezone", EmitDefaultValue=false)] public string Timezone { get; set; } diff --git a/src/sib_api_v3_sdk/Model/CreateSubAccountResponse.cs b/src/sib_api_v3_sdk/Model/CreateSubAccountResponse.cs new file mode 100644 index 0000000..5b93276 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/CreateSubAccountResponse.cs @@ -0,0 +1,126 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// CreateSubAccountResponse + /// + [DataContract] + public partial class CreateSubAccountResponse : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected CreateSubAccountResponse() { } + /// + /// Initializes a new instance of the class. + /// + /// ID of the sub-account created (required). + public CreateSubAccountResponse(long? id = default(long?)) + { + // to ensure "id" is required (not null) + if (id == null) + { + throw new InvalidDataException("id is a required property for CreateSubAccountResponse and cannot be null"); + } + else + { + this.Id = id; + } + } + + /// + /// ID of the sub-account created + /// + /// ID of the sub-account created + [DataMember(Name="id", EmitDefaultValue=false)] + public long? Id { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class CreateSubAccountResponse {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as CreateSubAccountResponse); + } + + /// + /// Returns true if CreateSubAccountResponse instances are equal + /// + /// Instance of CreateSubAccountResponse to be compared + /// Boolean + public bool Equals(CreateSubAccountResponse input) + { + if (input == null) + return false; + + return + ( + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Id != null) + hashCode = hashCode * 59 + this.Id.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/CreateUpdateBatchCategory.cs b/src/sib_api_v3_sdk/Model/CreateUpdateBatchCategory.cs new file mode 100644 index 0000000..2317f41 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/CreateUpdateBatchCategory.cs @@ -0,0 +1,143 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// CreateUpdateBatchCategory + /// + [DataContract] + public partial class CreateUpdateBatchCategory : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected CreateUpdateBatchCategory() { } + /// + /// Initializes a new instance of the class. + /// + /// array of categories objects (required). + /// Facilitate to update the existing categories in the same request (updateEnabled = true). + public CreateUpdateBatchCategory(List categories = default(List), bool? updateEnabled = default(bool?)) + { + // to ensure "categories" is required (not null) + if (categories == null) + { + throw new InvalidDataException("categories is a required property for CreateUpdateBatchCategory and cannot be null"); + } + else + { + this.Categories = categories; + } + this.UpdateEnabled = updateEnabled; + } + + /// + /// array of categories objects + /// + /// array of categories objects + [DataMember(Name="categories", EmitDefaultValue=false)] + public List Categories { get; set; } + + /// + /// Facilitate to update the existing categories in the same request (updateEnabled = true) + /// + /// Facilitate to update the existing categories in the same request (updateEnabled = true) + [DataMember(Name="updateEnabled", EmitDefaultValue=false)] + public bool? UpdateEnabled { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class CreateUpdateBatchCategory {\n"); + sb.Append(" Categories: ").Append(Categories).Append("\n"); + sb.Append(" UpdateEnabled: ").Append(UpdateEnabled).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as CreateUpdateBatchCategory); + } + + /// + /// Returns true if CreateUpdateBatchCategory instances are equal + /// + /// Instance of CreateUpdateBatchCategory to be compared + /// Boolean + public bool Equals(CreateUpdateBatchCategory input) + { + if (input == null) + return false; + + return + ( + this.Categories == input.Categories || + this.Categories != null && + this.Categories.SequenceEqual(input.Categories) + ) && + ( + this.UpdateEnabled == input.UpdateEnabled || + (this.UpdateEnabled != null && + this.UpdateEnabled.Equals(input.UpdateEnabled)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Categories != null) + hashCode = hashCode * 59 + this.Categories.GetHashCode(); + if (this.UpdateEnabled != null) + hashCode = hashCode * 59 + this.UpdateEnabled.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/CreateUpdateBatchCategoryModel.cs b/src/sib_api_v3_sdk/Model/CreateUpdateBatchCategoryModel.cs new file mode 100644 index 0000000..dd79f6a --- /dev/null +++ b/src/sib_api_v3_sdk/Model/CreateUpdateBatchCategoryModel.cs @@ -0,0 +1,130 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// CreateUpdateBatchCategoryModel + /// + [DataContract] + public partial class CreateUpdateBatchCategoryModel : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + /// Number of the new created categories. + /// Number of the existing categories updated. + public CreateUpdateBatchCategoryModel(long? createdCount = default(long?), long? updatedCount = default(long?)) + { + this.CreatedCount = createdCount; + this.UpdatedCount = updatedCount; + } + + /// + /// Number of the new created categories + /// + /// Number of the new created categories + [DataMember(Name="createdCount", EmitDefaultValue=false)] + public long? CreatedCount { get; set; } + + /// + /// Number of the existing categories updated + /// + /// Number of the existing categories updated + [DataMember(Name="updatedCount", EmitDefaultValue=false)] + public long? UpdatedCount { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class CreateUpdateBatchCategoryModel {\n"); + sb.Append(" CreatedCount: ").Append(CreatedCount).Append("\n"); + sb.Append(" UpdatedCount: ").Append(UpdatedCount).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as CreateUpdateBatchCategoryModel); + } + + /// + /// Returns true if CreateUpdateBatchCategoryModel instances are equal + /// + /// Instance of CreateUpdateBatchCategoryModel to be compared + /// Boolean + public bool Equals(CreateUpdateBatchCategoryModel input) + { + if (input == null) + return false; + + return + ( + this.CreatedCount == input.CreatedCount || + (this.CreatedCount != null && + this.CreatedCount.Equals(input.CreatedCount)) + ) && + ( + this.UpdatedCount == input.UpdatedCount || + (this.UpdatedCount != null && + this.UpdatedCount.Equals(input.UpdatedCount)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.CreatedCount != null) + hashCode = hashCode * 59 + this.CreatedCount.GetHashCode(); + if (this.UpdatedCount != null) + hashCode = hashCode * 59 + this.UpdatedCount.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/CreateUpdateBatchProducts.cs b/src/sib_api_v3_sdk/Model/CreateUpdateBatchProducts.cs new file mode 100644 index 0000000..387dbda --- /dev/null +++ b/src/sib_api_v3_sdk/Model/CreateUpdateBatchProducts.cs @@ -0,0 +1,143 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// CreateUpdateBatchProducts + /// + [DataContract] + public partial class CreateUpdateBatchProducts : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected CreateUpdateBatchProducts() { } + /// + /// Initializes a new instance of the class. + /// + /// array of products objects (required). + /// Facilitate to update the existing categories in the same request (updateEnabled = true). + public CreateUpdateBatchProducts(List products = default(List), bool? updateEnabled = default(bool?)) + { + // to ensure "products" is required (not null) + if (products == null) + { + throw new InvalidDataException("products is a required property for CreateUpdateBatchProducts and cannot be null"); + } + else + { + this.Products = products; + } + this.UpdateEnabled = updateEnabled; + } + + /// + /// array of products objects + /// + /// array of products objects + [DataMember(Name="products", EmitDefaultValue=false)] + public List Products { get; set; } + + /// + /// Facilitate to update the existing categories in the same request (updateEnabled = true) + /// + /// Facilitate to update the existing categories in the same request (updateEnabled = true) + [DataMember(Name="updateEnabled", EmitDefaultValue=false)] + public bool? UpdateEnabled { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class CreateUpdateBatchProducts {\n"); + sb.Append(" Products: ").Append(Products).Append("\n"); + sb.Append(" UpdateEnabled: ").Append(UpdateEnabled).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as CreateUpdateBatchProducts); + } + + /// + /// Returns true if CreateUpdateBatchProducts instances are equal + /// + /// Instance of CreateUpdateBatchProducts to be compared + /// Boolean + public bool Equals(CreateUpdateBatchProducts input) + { + if (input == null) + return false; + + return + ( + this.Products == input.Products || + this.Products != null && + this.Products.SequenceEqual(input.Products) + ) && + ( + this.UpdateEnabled == input.UpdateEnabled || + (this.UpdateEnabled != null && + this.UpdateEnabled.Equals(input.UpdateEnabled)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Products != null) + hashCode = hashCode * 59 + this.Products.GetHashCode(); + if (this.UpdateEnabled != null) + hashCode = hashCode * 59 + this.UpdateEnabled.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/CreateUpdateBatchProductsModel.cs b/src/sib_api_v3_sdk/Model/CreateUpdateBatchProductsModel.cs new file mode 100644 index 0000000..350422b --- /dev/null +++ b/src/sib_api_v3_sdk/Model/CreateUpdateBatchProductsModel.cs @@ -0,0 +1,130 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// CreateUpdateBatchProductsModel + /// + [DataContract] + public partial class CreateUpdateBatchProductsModel : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + /// Number of the new created products. + /// Number of the existing products updated. + public CreateUpdateBatchProductsModel(long? createdCount = default(long?), long? updatedCount = default(long?)) + { + this.CreatedCount = createdCount; + this.UpdatedCount = updatedCount; + } + + /// + /// Number of the new created products + /// + /// Number of the new created products + [DataMember(Name="createdCount", EmitDefaultValue=false)] + public long? CreatedCount { get; set; } + + /// + /// Number of the existing products updated + /// + /// Number of the existing products updated + [DataMember(Name="updatedCount", EmitDefaultValue=false)] + public long? UpdatedCount { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class CreateUpdateBatchProductsModel {\n"); + sb.Append(" CreatedCount: ").Append(CreatedCount).Append("\n"); + sb.Append(" UpdatedCount: ").Append(UpdatedCount).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as CreateUpdateBatchProductsModel); + } + + /// + /// Returns true if CreateUpdateBatchProductsModel instances are equal + /// + /// Instance of CreateUpdateBatchProductsModel to be compared + /// Boolean + public bool Equals(CreateUpdateBatchProductsModel input) + { + if (input == null) + return false; + + return + ( + this.CreatedCount == input.CreatedCount || + (this.CreatedCount != null && + this.CreatedCount.Equals(input.CreatedCount)) + ) && + ( + this.UpdatedCount == input.UpdatedCount || + (this.UpdatedCount != null && + this.UpdatedCount.Equals(input.UpdatedCount)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.CreatedCount != null) + hashCode = hashCode * 59 + this.CreatedCount.GetHashCode(); + if (this.UpdatedCount != null) + hashCode = hashCode * 59 + this.UpdatedCount.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/CreateUpdateCategories.cs b/src/sib_api_v3_sdk/Model/CreateUpdateCategories.cs new file mode 100644 index 0000000..e1e227f --- /dev/null +++ b/src/sib_api_v3_sdk/Model/CreateUpdateCategories.cs @@ -0,0 +1,160 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// CreateUpdateCategories + /// + [DataContract] + public partial class CreateUpdateCategories : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected CreateUpdateCategories() { } + /// + /// Initializes a new instance of the class. + /// + /// Unique Category ID as saved in the shop (required). + /// **Mandatory in case of creation**. Name of the Category, as displayed in the shop . + /// URL to the category. + public CreateUpdateCategories(string id = default(string), string name = default(string), string url = default(string)) + { + // to ensure "id" is required (not null) + if (id == null) + { + throw new InvalidDataException("id is a required property for CreateUpdateCategories and cannot be null"); + } + else + { + this.Id = id; + } + this.Name = name; + this.Url = url; + } + + /// + /// Unique Category ID as saved in the shop + /// + /// Unique Category ID as saved in the shop + [DataMember(Name="id", EmitDefaultValue=false)] + public string Id { get; set; } + + /// + /// **Mandatory in case of creation**. Name of the Category, as displayed in the shop + /// + /// **Mandatory in case of creation**. Name of the Category, as displayed in the shop + [DataMember(Name="name", EmitDefaultValue=false)] + public string Name { get; set; } + + /// + /// URL to the category + /// + /// URL to the category + [DataMember(Name="url", EmitDefaultValue=false)] + public string Url { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class CreateUpdateCategories {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" Url: ").Append(Url).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as CreateUpdateCategories); + } + + /// + /// Returns true if CreateUpdateCategories instances are equal + /// + /// Instance of CreateUpdateCategories to be compared + /// Boolean + public bool Equals(CreateUpdateCategories input) + { + if (input == null) + return false; + + return + ( + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) + ) && + ( + this.Name == input.Name || + (this.Name != null && + this.Name.Equals(input.Name)) + ) && + ( + this.Url == input.Url || + (this.Url != null && + this.Url.Equals(input.Url)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Id != null) + hashCode = hashCode * 59 + this.Id.GetHashCode(); + if (this.Name != null) + hashCode = hashCode * 59 + this.Name.GetHashCode(); + if (this.Url != null) + hashCode = hashCode * 59 + this.Url.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/CreateUpdateCategory.cs b/src/sib_api_v3_sdk/Model/CreateUpdateCategory.cs new file mode 100644 index 0000000..637f314 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/CreateUpdateCategory.cs @@ -0,0 +1,185 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// CreateUpdateCategory + /// + [DataContract] + public partial class CreateUpdateCategory : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected CreateUpdateCategory() { } + /// + /// Initializes a new instance of the class. + /// + /// Unique Category ID as saved in the shop (required). + /// **Mandatory in case of creation**. Name of the Category, as displayed in the shop . + /// URL to the category. + /// Facilitate to update the existing category in the same request (updateEnabled = true) (default to false). + public CreateUpdateCategory(string id = default(string), string name = default(string), string url = default(string), bool? updateEnabled = false) + { + // to ensure "id" is required (not null) + if (id == null) + { + throw new InvalidDataException("id is a required property for CreateUpdateCategory and cannot be null"); + } + else + { + this.Id = id; + } + this.Name = name; + this.Url = url; + // use default value if no "updateEnabled" provided + if (updateEnabled == null) + { + this.UpdateEnabled = false; + } + else + { + this.UpdateEnabled = updateEnabled; + } + } + + /// + /// Unique Category ID as saved in the shop + /// + /// Unique Category ID as saved in the shop + [DataMember(Name="id", EmitDefaultValue=false)] + public string Id { get; set; } + + /// + /// **Mandatory in case of creation**. Name of the Category, as displayed in the shop + /// + /// **Mandatory in case of creation**. Name of the Category, as displayed in the shop + [DataMember(Name="name", EmitDefaultValue=false)] + public string Name { get; set; } + + /// + /// URL to the category + /// + /// URL to the category + [DataMember(Name="url", EmitDefaultValue=false)] + public string Url { get; set; } + + /// + /// Facilitate to update the existing category in the same request (updateEnabled = true) + /// + /// Facilitate to update the existing category in the same request (updateEnabled = true) + [DataMember(Name="updateEnabled", EmitDefaultValue=false)] + public bool? UpdateEnabled { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class CreateUpdateCategory {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" Url: ").Append(Url).Append("\n"); + sb.Append(" UpdateEnabled: ").Append(UpdateEnabled).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as CreateUpdateCategory); + } + + /// + /// Returns true if CreateUpdateCategory instances are equal + /// + /// Instance of CreateUpdateCategory to be compared + /// Boolean + public bool Equals(CreateUpdateCategory input) + { + if (input == null) + return false; + + return + ( + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) + ) && + ( + this.Name == input.Name || + (this.Name != null && + this.Name.Equals(input.Name)) + ) && + ( + this.Url == input.Url || + (this.Url != null && + this.Url.Equals(input.Url)) + ) && + ( + this.UpdateEnabled == input.UpdateEnabled || + (this.UpdateEnabled != null && + this.UpdateEnabled.Equals(input.UpdateEnabled)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Id != null) + hashCode = hashCode * 59 + this.Id.GetHashCode(); + if (this.Name != null) + hashCode = hashCode * 59 + this.Name.GetHashCode(); + if (this.Url != null) + hashCode = hashCode * 59 + this.Url.GetHashCode(); + if (this.UpdateEnabled != null) + hashCode = hashCode * 59 + this.UpdateEnabled.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/CreateUpdateProduct.cs b/src/sib_api_v3_sdk/Model/CreateUpdateProduct.cs new file mode 100644 index 0000000..906a098 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/CreateUpdateProduct.cs @@ -0,0 +1,295 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// CreateUpdateProduct + /// + [DataContract] + public partial class CreateUpdateProduct : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected CreateUpdateProduct() { } + /// + /// Initializes a new instance of the class. + /// + /// Product ID for which you requested the details (required). + /// Mandatory in case of creation**. Name of the product for which you requested the details (required). + /// URL to the product. + /// Absolute URL to the cover image of the product. + /// Product identifier from the shop. + /// Price of the product. + /// Category ID-s of the product. + /// Parent product id of the product. + /// Meta data of product such as description, vendor, producer, stock level. The size of cumulative metaInfo shall not exceed **1000 KB**. Maximum length of metaInfo object can be 10.. + /// Facilitate to update the existing category in the same request (updateEnabled = true) (default to false). + public CreateUpdateProduct(string id = default(string), string name = default(string), string url = default(string), string imageUrl = default(string), string sku = default(string), float? price = default(float?), List categories = default(List), string parentId = default(string), Dictionary metaInfo = default(Dictionary), bool? updateEnabled = false) + { + // to ensure "id" is required (not null) + if (id == null) + { + throw new InvalidDataException("id is a required property for CreateUpdateProduct and cannot be null"); + } + else + { + this.Id = id; + } + // to ensure "name" is required (not null) + if (name == null) + { + throw new InvalidDataException("name is a required property for CreateUpdateProduct and cannot be null"); + } + else + { + this.Name = name; + } + this.Url = url; + this.ImageUrl = imageUrl; + this.Sku = sku; + this.Price = price; + this.Categories = categories; + this.ParentId = parentId; + this.MetaInfo = metaInfo; + // use default value if no "updateEnabled" provided + if (updateEnabled == null) + { + this.UpdateEnabled = false; + } + else + { + this.UpdateEnabled = updateEnabled; + } + } + + /// + /// Product ID for which you requested the details + /// + /// Product ID for which you requested the details + [DataMember(Name="id", EmitDefaultValue=false)] + public string Id { get; set; } + + /// + /// Mandatory in case of creation**. Name of the product for which you requested the details + /// + /// Mandatory in case of creation**. Name of the product for which you requested the details + [DataMember(Name="name", EmitDefaultValue=false)] + public string Name { get; set; } + + /// + /// URL to the product + /// + /// URL to the product + [DataMember(Name="url", EmitDefaultValue=false)] + public string Url { get; set; } + + /// + /// Absolute URL to the cover image of the product + /// + /// Absolute URL to the cover image of the product + [DataMember(Name="imageUrl", EmitDefaultValue=false)] + public string ImageUrl { get; set; } + + /// + /// Product identifier from the shop + /// + /// Product identifier from the shop + [DataMember(Name="sku", EmitDefaultValue=false)] + public string Sku { get; set; } + + /// + /// Price of the product + /// + /// Price of the product + [DataMember(Name="price", EmitDefaultValue=false)] + public float? Price { get; set; } + + /// + /// Category ID-s of the product + /// + /// Category ID-s of the product + [DataMember(Name="categories", EmitDefaultValue=false)] + public List Categories { get; set; } + + /// + /// Parent product id of the product + /// + /// Parent product id of the product + [DataMember(Name="parentId", EmitDefaultValue=false)] + public string ParentId { get; set; } + + /// + /// Meta data of product such as description, vendor, producer, stock level. The size of cumulative metaInfo shall not exceed **1000 KB**. Maximum length of metaInfo object can be 10. + /// + /// Meta data of product such as description, vendor, producer, stock level. The size of cumulative metaInfo shall not exceed **1000 KB**. Maximum length of metaInfo object can be 10. + [DataMember(Name="metaInfo", EmitDefaultValue=false)] + public Dictionary MetaInfo { get; set; } + + /// + /// Facilitate to update the existing category in the same request (updateEnabled = true) + /// + /// Facilitate to update the existing category in the same request (updateEnabled = true) + [DataMember(Name="updateEnabled", EmitDefaultValue=false)] + public bool? UpdateEnabled { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class CreateUpdateProduct {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" Url: ").Append(Url).Append("\n"); + sb.Append(" ImageUrl: ").Append(ImageUrl).Append("\n"); + sb.Append(" Sku: ").Append(Sku).Append("\n"); + sb.Append(" Price: ").Append(Price).Append("\n"); + sb.Append(" Categories: ").Append(Categories).Append("\n"); + sb.Append(" ParentId: ").Append(ParentId).Append("\n"); + sb.Append(" MetaInfo: ").Append(MetaInfo).Append("\n"); + sb.Append(" UpdateEnabled: ").Append(UpdateEnabled).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as CreateUpdateProduct); + } + + /// + /// Returns true if CreateUpdateProduct instances are equal + /// + /// Instance of CreateUpdateProduct to be compared + /// Boolean + public bool Equals(CreateUpdateProduct input) + { + if (input == null) + return false; + + return + ( + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) + ) && + ( + this.Name == input.Name || + (this.Name != null && + this.Name.Equals(input.Name)) + ) && + ( + this.Url == input.Url || + (this.Url != null && + this.Url.Equals(input.Url)) + ) && + ( + this.ImageUrl == input.ImageUrl || + (this.ImageUrl != null && + this.ImageUrl.Equals(input.ImageUrl)) + ) && + ( + this.Sku == input.Sku || + (this.Sku != null && + this.Sku.Equals(input.Sku)) + ) && + ( + this.Price == input.Price || + (this.Price != null && + this.Price.Equals(input.Price)) + ) && + ( + this.Categories == input.Categories || + this.Categories != null && + this.Categories.SequenceEqual(input.Categories) + ) && + ( + this.ParentId == input.ParentId || + (this.ParentId != null && + this.ParentId.Equals(input.ParentId)) + ) && + ( + this.MetaInfo == input.MetaInfo || + this.MetaInfo != null && + this.MetaInfo.SequenceEqual(input.MetaInfo) + ) && + ( + this.UpdateEnabled == input.UpdateEnabled || + (this.UpdateEnabled != null && + this.UpdateEnabled.Equals(input.UpdateEnabled)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Id != null) + hashCode = hashCode * 59 + this.Id.GetHashCode(); + if (this.Name != null) + hashCode = hashCode * 59 + this.Name.GetHashCode(); + if (this.Url != null) + hashCode = hashCode * 59 + this.Url.GetHashCode(); + if (this.ImageUrl != null) + hashCode = hashCode * 59 + this.ImageUrl.GetHashCode(); + if (this.Sku != null) + hashCode = hashCode * 59 + this.Sku.GetHashCode(); + if (this.Price != null) + hashCode = hashCode * 59 + this.Price.GetHashCode(); + if (this.Categories != null) + hashCode = hashCode * 59 + this.Categories.GetHashCode(); + if (this.ParentId != null) + hashCode = hashCode * 59 + this.ParentId.GetHashCode(); + if (this.MetaInfo != null) + hashCode = hashCode * 59 + this.MetaInfo.GetHashCode(); + if (this.UpdateEnabled != null) + hashCode = hashCode * 59 + this.UpdateEnabled.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/CreateUpdateProducts.cs b/src/sib_api_v3_sdk/Model/CreateUpdateProducts.cs new file mode 100644 index 0000000..908bf2e --- /dev/null +++ b/src/sib_api_v3_sdk/Model/CreateUpdateProducts.cs @@ -0,0 +1,270 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// CreateUpdateProducts + /// + [DataContract] + public partial class CreateUpdateProducts : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected CreateUpdateProducts() { } + /// + /// Initializes a new instance of the class. + /// + /// Product ID for which you requested the details (required). + /// Mandatory in case of creation**. Name of the product for which you requested the details (required). + /// URL to the product. + /// Absolute URL to the cover image of the product. + /// Product identifier from the shop. + /// Price of the product. + /// Category ID-s of the product. + /// Parent product id of the product. + /// Meta data of product such as description, vendor, producer, stock level. The size of cumulative metaInfo shall not exceed **1000 KB**. Maximum length of metaInfo object can be 10.. + public CreateUpdateProducts(string id = default(string), string name = default(string), string url = default(string), string imageUrl = default(string), string sku = default(string), float? price = default(float?), List categories = default(List), string parentId = default(string), Dictionary metaInfo = default(Dictionary)) + { + // to ensure "id" is required (not null) + if (id == null) + { + throw new InvalidDataException("id is a required property for CreateUpdateProducts and cannot be null"); + } + else + { + this.Id = id; + } + // to ensure "name" is required (not null) + if (name == null) + { + throw new InvalidDataException("name is a required property for CreateUpdateProducts and cannot be null"); + } + else + { + this.Name = name; + } + this.Url = url; + this.ImageUrl = imageUrl; + this.Sku = sku; + this.Price = price; + this.Categories = categories; + this.ParentId = parentId; + this.MetaInfo = metaInfo; + } + + /// + /// Product ID for which you requested the details + /// + /// Product ID for which you requested the details + [DataMember(Name="id", EmitDefaultValue=false)] + public string Id { get; set; } + + /// + /// Mandatory in case of creation**. Name of the product for which you requested the details + /// + /// Mandatory in case of creation**. Name of the product for which you requested the details + [DataMember(Name="name", EmitDefaultValue=false)] + public string Name { get; set; } + + /// + /// URL to the product + /// + /// URL to the product + [DataMember(Name="url", EmitDefaultValue=false)] + public string Url { get; set; } + + /// + /// Absolute URL to the cover image of the product + /// + /// Absolute URL to the cover image of the product + [DataMember(Name="imageUrl", EmitDefaultValue=false)] + public string ImageUrl { get; set; } + + /// + /// Product identifier from the shop + /// + /// Product identifier from the shop + [DataMember(Name="sku", EmitDefaultValue=false)] + public string Sku { get; set; } + + /// + /// Price of the product + /// + /// Price of the product + [DataMember(Name="price", EmitDefaultValue=false)] + public float? Price { get; set; } + + /// + /// Category ID-s of the product + /// + /// Category ID-s of the product + [DataMember(Name="categories", EmitDefaultValue=false)] + public List Categories { get; set; } + + /// + /// Parent product id of the product + /// + /// Parent product id of the product + [DataMember(Name="parentId", EmitDefaultValue=false)] + public string ParentId { get; set; } + + /// + /// Meta data of product such as description, vendor, producer, stock level. The size of cumulative metaInfo shall not exceed **1000 KB**. Maximum length of metaInfo object can be 10. + /// + /// Meta data of product such as description, vendor, producer, stock level. The size of cumulative metaInfo shall not exceed **1000 KB**. Maximum length of metaInfo object can be 10. + [DataMember(Name="metaInfo", EmitDefaultValue=false)] + public Dictionary MetaInfo { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class CreateUpdateProducts {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" Url: ").Append(Url).Append("\n"); + sb.Append(" ImageUrl: ").Append(ImageUrl).Append("\n"); + sb.Append(" Sku: ").Append(Sku).Append("\n"); + sb.Append(" Price: ").Append(Price).Append("\n"); + sb.Append(" Categories: ").Append(Categories).Append("\n"); + sb.Append(" ParentId: ").Append(ParentId).Append("\n"); + sb.Append(" MetaInfo: ").Append(MetaInfo).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as CreateUpdateProducts); + } + + /// + /// Returns true if CreateUpdateProducts instances are equal + /// + /// Instance of CreateUpdateProducts to be compared + /// Boolean + public bool Equals(CreateUpdateProducts input) + { + if (input == null) + return false; + + return + ( + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) + ) && + ( + this.Name == input.Name || + (this.Name != null && + this.Name.Equals(input.Name)) + ) && + ( + this.Url == input.Url || + (this.Url != null && + this.Url.Equals(input.Url)) + ) && + ( + this.ImageUrl == input.ImageUrl || + (this.ImageUrl != null && + this.ImageUrl.Equals(input.ImageUrl)) + ) && + ( + this.Sku == input.Sku || + (this.Sku != null && + this.Sku.Equals(input.Sku)) + ) && + ( + this.Price == input.Price || + (this.Price != null && + this.Price.Equals(input.Price)) + ) && + ( + this.Categories == input.Categories || + this.Categories != null && + this.Categories.SequenceEqual(input.Categories) + ) && + ( + this.ParentId == input.ParentId || + (this.ParentId != null && + this.ParentId.Equals(input.ParentId)) + ) && + ( + this.MetaInfo == input.MetaInfo || + this.MetaInfo != null && + this.MetaInfo.SequenceEqual(input.MetaInfo) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Id != null) + hashCode = hashCode * 59 + this.Id.GetHashCode(); + if (this.Name != null) + hashCode = hashCode * 59 + this.Name.GetHashCode(); + if (this.Url != null) + hashCode = hashCode * 59 + this.Url.GetHashCode(); + if (this.ImageUrl != null) + hashCode = hashCode * 59 + this.ImageUrl.GetHashCode(); + if (this.Sku != null) + hashCode = hashCode * 59 + this.Sku.GetHashCode(); + if (this.Price != null) + hashCode = hashCode * 59 + this.Price.GetHashCode(); + if (this.Categories != null) + hashCode = hashCode * 59 + this.Categories.GetHashCode(); + if (this.ParentId != null) + hashCode = hashCode * 59 + this.ParentId.GetHashCode(); + if (this.MetaInfo != null) + hashCode = hashCode * 59 + this.MetaInfo.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/CreatedBatchId.cs b/src/sib_api_v3_sdk/Model/CreatedBatchId.cs new file mode 100644 index 0000000..53ca2bc --- /dev/null +++ b/src/sib_api_v3_sdk/Model/CreatedBatchId.cs @@ -0,0 +1,126 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// CreatedBatchId + /// + [DataContract] + public partial class CreatedBatchId : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected CreatedBatchId() { } + /// + /// Initializes a new instance of the class. + /// + /// Batch ID of the request (required). + public CreatedBatchId(decimal? batchId = default(decimal?)) + { + // to ensure "batchId" is required (not null) + if (batchId == null) + { + throw new InvalidDataException("batchId is a required property for CreatedBatchId and cannot be null"); + } + else + { + this.BatchId = batchId; + } + } + + /// + /// Batch ID of the request + /// + /// Batch ID of the request + [DataMember(Name="batchId", EmitDefaultValue=false)] + public decimal? BatchId { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class CreatedBatchId {\n"); + sb.Append(" BatchId: ").Append(BatchId).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as CreatedBatchId); + } + + /// + /// Returns true if CreatedBatchId instances are equal + /// + /// Instance of CreatedBatchId to be compared + /// Boolean + public bool Equals(CreatedBatchId input) + { + if (input == null) + return false; + + return + ( + this.BatchId == input.BatchId || + (this.BatchId != null && + this.BatchId.Equals(input.BatchId)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.BatchId != null) + hashCode = hashCode * 59 + this.BatchId.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/Deal.cs b/src/sib_api_v3_sdk/Model/Deal.cs new file mode 100644 index 0000000..2c6757b --- /dev/null +++ b/src/sib_api_v3_sdk/Model/Deal.cs @@ -0,0 +1,164 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// Deal Details + /// + [DataContract] + public partial class Deal : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + /// Unique deal id. + /// Deal attributes with values. + /// Contact ids for contacts linked to this deal. + /// Companies ids for companies linked to this deal. + public Deal(string id = default(string), Object attributes = default(Object), List linkedContactsIds = default(List), List linkedCompaniesIds = default(List)) + { + this.Id = id; + this.Attributes = attributes; + this.LinkedContactsIds = linkedContactsIds; + this.LinkedCompaniesIds = linkedCompaniesIds; + } + + /// + /// Unique deal id + /// + /// Unique deal id + [DataMember(Name="id", EmitDefaultValue=false)] + public string Id { get; set; } + + /// + /// Deal attributes with values + /// + /// Deal attributes with values + [DataMember(Name="attributes", EmitDefaultValue=false)] + public Object Attributes { get; set; } + + /// + /// Contact ids for contacts linked to this deal + /// + /// Contact ids for contacts linked to this deal + [DataMember(Name="linkedContactsIds", EmitDefaultValue=false)] + public List LinkedContactsIds { get; set; } + + /// + /// Companies ids for companies linked to this deal + /// + /// Companies ids for companies linked to this deal + [DataMember(Name="linkedCompaniesIds", EmitDefaultValue=false)] + public List LinkedCompaniesIds { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Deal {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" Attributes: ").Append(Attributes).Append("\n"); + sb.Append(" LinkedContactsIds: ").Append(LinkedContactsIds).Append("\n"); + sb.Append(" LinkedCompaniesIds: ").Append(LinkedCompaniesIds).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as Deal); + } + + /// + /// Returns true if Deal instances are equal + /// + /// Instance of Deal to be compared + /// Boolean + public bool Equals(Deal input) + { + if (input == null) + return false; + + return + ( + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) + ) && + ( + this.Attributes == input.Attributes || + (this.Attributes != null && + this.Attributes.Equals(input.Attributes)) + ) && + ( + this.LinkedContactsIds == input.LinkedContactsIds || + this.LinkedContactsIds != null && + this.LinkedContactsIds.SequenceEqual(input.LinkedContactsIds) + ) && + ( + this.LinkedCompaniesIds == input.LinkedCompaniesIds || + this.LinkedCompaniesIds != null && + this.LinkedCompaniesIds.SequenceEqual(input.LinkedCompaniesIds) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Id != null) + hashCode = hashCode * 59 + this.Id.GetHashCode(); + if (this.Attributes != null) + hashCode = hashCode * 59 + this.Attributes.GetHashCode(); + if (this.LinkedContactsIds != null) + hashCode = hashCode * 59 + this.LinkedContactsIds.GetHashCode(); + if (this.LinkedCompaniesIds != null) + hashCode = hashCode * 59 + this.LinkedCompaniesIds.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/DealAttributes.cs b/src/sib_api_v3_sdk/Model/DealAttributes.cs new file mode 100644 index 0000000..00a384a --- /dev/null +++ b/src/sib_api_v3_sdk/Model/DealAttributes.cs @@ -0,0 +1,98 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// List of deal attributes + /// + [DataContract] + public partial class DealAttributes : List, IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + public DealAttributes() : base() + { + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class DealAttributes {\n"); + sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as DealAttributes); + } + + /// + /// Returns true if DealAttributes instances are equal + /// + /// Instance of DealAttributes to be compared + /// Boolean + public bool Equals(DealAttributes input) + { + if (input == null) + return false; + + return base.Equals(input); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = base.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/DealAttributesInner.cs b/src/sib_api_v3_sdk/Model/DealAttributesInner.cs new file mode 100644 index 0000000..0d604da --- /dev/null +++ b/src/sib_api_v3_sdk/Model/DealAttributesInner.cs @@ -0,0 +1,176 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// List of attributes + /// + [DataContract] + public partial class DealAttributesInner : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + /// internalName. + /// label. + /// attributeTypeName. + /// attributeOptions. + /// isRequired. + public DealAttributesInner(string internalName = default(string), string label = default(string), string attributeTypeName = default(string), List attributeOptions = default(List), bool? isRequired = default(bool?)) + { + this.InternalName = internalName; + this.Label = label; + this.AttributeTypeName = attributeTypeName; + this.AttributeOptions = attributeOptions; + this.IsRequired = isRequired; + } + + /// + /// Gets or Sets InternalName + /// + [DataMember(Name="internalName", EmitDefaultValue=false)] + public string InternalName { get; set; } + + /// + /// Gets or Sets Label + /// + [DataMember(Name="label", EmitDefaultValue=false)] + public string Label { get; set; } + + /// + /// Gets or Sets AttributeTypeName + /// + [DataMember(Name="attributeTypeName", EmitDefaultValue=false)] + public string AttributeTypeName { get; set; } + + /// + /// Gets or Sets AttributeOptions + /// + [DataMember(Name="attributeOptions", EmitDefaultValue=false)] + public List AttributeOptions { get; set; } + + /// + /// Gets or Sets IsRequired + /// + [DataMember(Name="isRequired", EmitDefaultValue=false)] + public bool? IsRequired { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class DealAttributesInner {\n"); + sb.Append(" InternalName: ").Append(InternalName).Append("\n"); + sb.Append(" Label: ").Append(Label).Append("\n"); + sb.Append(" AttributeTypeName: ").Append(AttributeTypeName).Append("\n"); + sb.Append(" AttributeOptions: ").Append(AttributeOptions).Append("\n"); + sb.Append(" IsRequired: ").Append(IsRequired).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as DealAttributesInner); + } + + /// + /// Returns true if DealAttributesInner instances are equal + /// + /// Instance of DealAttributesInner to be compared + /// Boolean + public bool Equals(DealAttributesInner input) + { + if (input == null) + return false; + + return + ( + this.InternalName == input.InternalName || + (this.InternalName != null && + this.InternalName.Equals(input.InternalName)) + ) && + ( + this.Label == input.Label || + (this.Label != null && + this.Label.Equals(input.Label)) + ) && + ( + this.AttributeTypeName == input.AttributeTypeName || + (this.AttributeTypeName != null && + this.AttributeTypeName.Equals(input.AttributeTypeName)) + ) && + ( + this.AttributeOptions == input.AttributeOptions || + this.AttributeOptions != null && + this.AttributeOptions.SequenceEqual(input.AttributeOptions) + ) && + ( + this.IsRequired == input.IsRequired || + (this.IsRequired != null && + this.IsRequired.Equals(input.IsRequired)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.InternalName != null) + hashCode = hashCode * 59 + this.InternalName.GetHashCode(); + if (this.Label != null) + hashCode = hashCode * 59 + this.Label.GetHashCode(); + if (this.AttributeTypeName != null) + hashCode = hashCode * 59 + this.AttributeTypeName.GetHashCode(); + if (this.AttributeOptions != null) + hashCode = hashCode * 59 + this.AttributeOptions.GetHashCode(); + if (this.IsRequired != null) + hashCode = hashCode * 59 + this.IsRequired.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/DealsList.cs b/src/sib_api_v3_sdk/Model/DealsList.cs new file mode 100644 index 0000000..3472243 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/DealsList.cs @@ -0,0 +1,113 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// List of Deals + /// + [DataContract] + public partial class DealsList : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + /// List of deals. + public DealsList(List items = default(List)) + { + this.Items = items; + } + + /// + /// List of deals + /// + /// List of deals + [DataMember(Name="items", EmitDefaultValue=false)] + public List Items { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class DealsList {\n"); + sb.Append(" Items: ").Append(Items).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as DealsList); + } + + /// + /// Returns true if DealsList instances are equal + /// + /// Instance of DealsList to be compared + /// Boolean + public bool Equals(DealsList input) + { + if (input == null) + return false; + + return + ( + this.Items == input.Items || + this.Items != null && + this.Items.SequenceEqual(input.Items) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Items != null) + hashCode = hashCode * 59 + this.Items.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/FileData.cs b/src/sib_api_v3_sdk/Model/FileData.cs index 8a95695..9e74120 100644 --- a/src/sib_api_v3_sdk/Model/FileData.cs +++ b/src/sib_api_v3_sdk/Model/FileData.cs @@ -31,44 +31,24 @@ public partial class FileData : IEquatable /// /// Initializes a new instance of the class. /// - /// Url of uploaded file. - /// Id of uploaded file. /// Name of uploaded file. /// Account id of user which created the file. - /// Account details of user which created the file. /// Contact id of contact on which file is uploaded. - /// Deal ids linked to a file. - /// Size of file uploaded. + /// Deal id linked to a file. + /// Company id linked to a file. + /// Size of file in bytes. /// File created date/time. - /// File updated date/time. - public FileData(string url = default(string), string id = default(string), string name = default(string), string authorId = default(string), Object author = default(Object), long? contactId = default(long?), List dealIds = default(List), long? size = default(long?), DateTime? createdAt = default(DateTime?), DateTime? updatedAt = default(DateTime?)) + public FileData(string name = default(string), string authorId = default(string), long? contactId = default(long?), string dealId = default(string), string companyId = default(string), long? size = default(long?), DateTime? createdAt = default(DateTime?)) { - this.Url = url; - this.Id = id; this.Name = name; this.AuthorId = authorId; - this.Author = author; this.ContactId = contactId; - this.DealIds = dealIds; + this.DealId = dealId; + this.CompanyId = companyId; this.Size = size; this.CreatedAt = createdAt; - this.UpdatedAt = updatedAt; } - /// - /// Url of uploaded file - /// - /// Url of uploaded file - [DataMember(Name="url", EmitDefaultValue=false)] - public string Url { get; set; } - - /// - /// Id of uploaded file - /// - /// Id of uploaded file - [DataMember(Name="id", EmitDefaultValue=false)] - public string Id { get; set; } - /// /// Name of uploaded file /// @@ -83,13 +63,6 @@ public partial class FileData : IEquatable [DataMember(Name="authorId", EmitDefaultValue=false)] public string AuthorId { get; set; } - /// - /// Account details of user which created the file - /// - /// Account details of user which created the file - [DataMember(Name="author", EmitDefaultValue=false)] - public Object Author { get; set; } - /// /// Contact id of contact on which file is uploaded /// @@ -98,16 +71,23 @@ public partial class FileData : IEquatable public long? ContactId { get; set; } /// - /// Deal ids linked to a file + /// Deal id linked to a file + /// + /// Deal id linked to a file + [DataMember(Name="dealId", EmitDefaultValue=false)] + public string DealId { get; set; } + + /// + /// Company id linked to a file /// - /// Deal ids linked to a file - [DataMember(Name="dealIds", EmitDefaultValue=false)] - public List DealIds { get; set; } + /// Company id linked to a file + [DataMember(Name="companyId", EmitDefaultValue=false)] + public string CompanyId { get; set; } /// - /// Size of file uploaded + /// Size of file in bytes /// - /// Size of file uploaded + /// Size of file in bytes [DataMember(Name="size", EmitDefaultValue=false)] public long? Size { get; set; } @@ -118,13 +98,6 @@ public partial class FileData : IEquatable [DataMember(Name="createdAt", EmitDefaultValue=false)] public DateTime? CreatedAt { get; set; } - /// - /// File updated date/time - /// - /// File updated date/time - [DataMember(Name="updatedAt", EmitDefaultValue=false)] - public DateTime? UpdatedAt { get; set; } - /// /// Returns the string presentation of the object /// @@ -133,16 +106,13 @@ public override string ToString() { var sb = new StringBuilder(); sb.Append("class FileData {\n"); - sb.Append(" Url: ").Append(Url).Append("\n"); - sb.Append(" Id: ").Append(Id).Append("\n"); sb.Append(" Name: ").Append(Name).Append("\n"); sb.Append(" AuthorId: ").Append(AuthorId).Append("\n"); - sb.Append(" Author: ").Append(Author).Append("\n"); sb.Append(" ContactId: ").Append(ContactId).Append("\n"); - sb.Append(" DealIds: ").Append(DealIds).Append("\n"); + sb.Append(" DealId: ").Append(DealId).Append("\n"); + sb.Append(" CompanyId: ").Append(CompanyId).Append("\n"); sb.Append(" Size: ").Append(Size).Append("\n"); sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); - sb.Append(" UpdatedAt: ").Append(UpdatedAt).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -177,16 +147,6 @@ public bool Equals(FileData input) return false; return - ( - this.Url == input.Url || - (this.Url != null && - this.Url.Equals(input.Url)) - ) && - ( - this.Id == input.Id || - (this.Id != null && - this.Id.Equals(input.Id)) - ) && ( this.Name == input.Name || (this.Name != null && @@ -197,20 +157,20 @@ public bool Equals(FileData input) (this.AuthorId != null && this.AuthorId.Equals(input.AuthorId)) ) && - ( - this.Author == input.Author || - (this.Author != null && - this.Author.Equals(input.Author)) - ) && ( this.ContactId == input.ContactId || (this.ContactId != null && this.ContactId.Equals(input.ContactId)) ) && ( - this.DealIds == input.DealIds || - this.DealIds != null && - this.DealIds.SequenceEqual(input.DealIds) + this.DealId == input.DealId || + (this.DealId != null && + this.DealId.Equals(input.DealId)) + ) && + ( + this.CompanyId == input.CompanyId || + (this.CompanyId != null && + this.CompanyId.Equals(input.CompanyId)) ) && ( this.Size == input.Size || @@ -221,11 +181,6 @@ public bool Equals(FileData input) this.CreatedAt == input.CreatedAt || (this.CreatedAt != null && this.CreatedAt.Equals(input.CreatedAt)) - ) && - ( - this.UpdatedAt == input.UpdatedAt || - (this.UpdatedAt != null && - this.UpdatedAt.Equals(input.UpdatedAt)) ); } @@ -238,26 +193,20 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.Url != null) - hashCode = hashCode * 59 + this.Url.GetHashCode(); - if (this.Id != null) - hashCode = hashCode * 59 + this.Id.GetHashCode(); if (this.Name != null) hashCode = hashCode * 59 + this.Name.GetHashCode(); if (this.AuthorId != null) hashCode = hashCode * 59 + this.AuthorId.GetHashCode(); - if (this.Author != null) - hashCode = hashCode * 59 + this.Author.GetHashCode(); if (this.ContactId != null) hashCode = hashCode * 59 + this.ContactId.GetHashCode(); - if (this.DealIds != null) - hashCode = hashCode * 59 + this.DealIds.GetHashCode(); + if (this.DealId != null) + hashCode = hashCode * 59 + this.DealId.GetHashCode(); + if (this.CompanyId != null) + hashCode = hashCode * 59 + this.CompanyId.GetHashCode(); if (this.Size != null) hashCode = hashCode * 59 + this.Size.GetHashCode(); if (this.CreatedAt != null) hashCode = hashCode * 59 + this.CreatedAt.GetHashCode(); - if (this.UpdatedAt != null) - hashCode = hashCode * 59 + this.UpdatedAt.GetHashCode(); return hashCode; } } diff --git a/src/sib_api_v3_sdk/Model/FileDownloadableLink.cs b/src/sib_api_v3_sdk/Model/FileDownloadableLink.cs new file mode 100644 index 0000000..9a85238 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/FileDownloadableLink.cs @@ -0,0 +1,126 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// FileDownloadableLink + /// + [DataContract] + public partial class FileDownloadableLink : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected FileDownloadableLink() { } + /// + /// Initializes a new instance of the class. + /// + /// A unique link to download the requested file. (required). + public FileDownloadableLink(string fileUrl = default(string)) + { + // to ensure "fileUrl" is required (not null) + if (fileUrl == null) + { + throw new InvalidDataException("fileUrl is a required property for FileDownloadableLink and cannot be null"); + } + else + { + this.FileUrl = fileUrl; + } + } + + /// + /// A unique link to download the requested file. + /// + /// A unique link to download the requested file. + [DataMember(Name="fileUrl", EmitDefaultValue=false)] + public string FileUrl { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class FileDownloadableLink {\n"); + sb.Append(" FileUrl: ").Append(FileUrl).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as FileDownloadableLink); + } + + /// + /// Returns true if FileDownloadableLink instances are equal + /// + /// Instance of FileDownloadableLink to be compared + /// Boolean + public bool Equals(FileDownloadableLink input) + { + if (input == null) + return false; + + return + ( + this.FileUrl == input.FileUrl || + (this.FileUrl != null && + this.FileUrl.Equals(input.FileUrl)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.FileUrl != null) + hashCode = hashCode * 59 + this.FileUrl.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/FileList.cs b/src/sib_api_v3_sdk/Model/FileList.cs new file mode 100644 index 0000000..335da0d --- /dev/null +++ b/src/sib_api_v3_sdk/Model/FileList.cs @@ -0,0 +1,98 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// List of files + /// + [DataContract] + public partial class FileList : List, IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + public FileList() : base() + { + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class FileList {\n"); + sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as FileList); + } + + /// + /// Returns true if FileList instances are equal + /// + /// Instance of FileList to be compared + /// Boolean + public bool Equals(FileList input) + { + if (input == null) + return false; + + return base.Equals(input); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = base.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/GetCampaignStats.cs b/src/sib_api_v3_sdk/Model/GetCampaignStats.cs index adaf0a2..9fc944a 100644 --- a/src/sib_api_v3_sdk/Model/GetCampaignStats.cs +++ b/src/sib_api_v3_sdk/Model/GetCampaignStats.cs @@ -46,11 +46,13 @@ protected GetCampaignStats() { } /// Number of harbounce for the campaign (required). /// Number of unique openings for the campaign (required). /// Recipients without any privacy protection option enabled in their email client (required). + /// Rate of recipients without any privacy protection option enabled in their email client. + /// Rate of recipients without any privacy protection option enabled in their email client, applied to all delivered emails. /// Number of unsubscription for the campaign (required). /// Number of openings for the campaign (required). /// Number of deferred emails for the campaign. /// Total number of non-delivered campaigns for a particular campaign id.. - public GetCampaignStats(long? listId = default(long?), long? uniqueClicks = default(long?), long? clickers = default(long?), long? complaints = default(long?), long? delivered = default(long?), long? sent = default(long?), long? softBounces = default(long?), long? hardBounces = default(long?), long? uniqueViews = default(long?), long? trackableViews = default(long?), long? unsubscriptions = default(long?), long? viewed = default(long?), long? deferred = default(long?), long? returnBounce = default(long?)) + public GetCampaignStats(long? listId = default(long?), long? uniqueClicks = default(long?), long? clickers = default(long?), long? complaints = default(long?), long? delivered = default(long?), long? sent = default(long?), long? softBounces = default(long?), long? hardBounces = default(long?), long? uniqueViews = default(long?), long? trackableViews = default(long?), float? trackableViewsRate = default(float?), long? estimatedViews = default(long?), long? unsubscriptions = default(long?), long? viewed = default(long?), long? deferred = default(long?), long? returnBounce = default(long?)) { // to ensure "uniqueClicks" is required (not null) if (uniqueClicks == null) @@ -152,6 +154,8 @@ protected GetCampaignStats() { } this.Viewed = viewed; } this.ListId = listId; + this.TrackableViewsRate = trackableViewsRate; + this.EstimatedViews = estimatedViews; this.Deferred = deferred; this.ReturnBounce = returnBounce; } @@ -226,6 +230,20 @@ protected GetCampaignStats() { } [DataMember(Name="trackableViews", EmitDefaultValue=false)] public long? TrackableViews { get; set; } + /// + /// Rate of recipients without any privacy protection option enabled in their email client + /// + /// Rate of recipients without any privacy protection option enabled in their email client + [DataMember(Name="trackableViewsRate", EmitDefaultValue=false)] + public float? TrackableViewsRate { get; set; } + + /// + /// Rate of recipients without any privacy protection option enabled in their email client, applied to all delivered emails + /// + /// Rate of recipients without any privacy protection option enabled in their email client, applied to all delivered emails + [DataMember(Name="estimatedViews", EmitDefaultValue=false)] + public long? EstimatedViews { get; set; } + /// /// Number of unsubscription for the campaign /// @@ -272,6 +290,8 @@ public override string ToString() sb.Append(" HardBounces: ").Append(HardBounces).Append("\n"); sb.Append(" UniqueViews: ").Append(UniqueViews).Append("\n"); sb.Append(" TrackableViews: ").Append(TrackableViews).Append("\n"); + sb.Append(" TrackableViewsRate: ").Append(TrackableViewsRate).Append("\n"); + sb.Append(" EstimatedViews: ").Append(EstimatedViews).Append("\n"); sb.Append(" Unsubscriptions: ").Append(Unsubscriptions).Append("\n"); sb.Append(" Viewed: ").Append(Viewed).Append("\n"); sb.Append(" Deferred: ").Append(Deferred).Append("\n"); @@ -360,6 +380,16 @@ public bool Equals(GetCampaignStats input) (this.TrackableViews != null && this.TrackableViews.Equals(input.TrackableViews)) ) && + ( + this.TrackableViewsRate == input.TrackableViewsRate || + (this.TrackableViewsRate != null && + this.TrackableViewsRate.Equals(input.TrackableViewsRate)) + ) && + ( + this.EstimatedViews == input.EstimatedViews || + (this.EstimatedViews != null && + this.EstimatedViews.Equals(input.EstimatedViews)) + ) && ( this.Unsubscriptions == input.Unsubscriptions || (this.Unsubscriptions != null && @@ -411,6 +441,10 @@ public override int GetHashCode() hashCode = hashCode * 59 + this.UniqueViews.GetHashCode(); if (this.TrackableViews != null) hashCode = hashCode * 59 + this.TrackableViews.GetHashCode(); + if (this.TrackableViewsRate != null) + hashCode = hashCode * 59 + this.TrackableViewsRate.GetHashCode(); + if (this.EstimatedViews != null) + hashCode = hashCode * 59 + this.EstimatedViews.GetHashCode(); if (this.Unsubscriptions != null) hashCode = hashCode * 59 + this.Unsubscriptions.GetHashCode(); if (this.Viewed != null) diff --git a/src/sib_api_v3_sdk/Model/GetCategories.cs b/src/sib_api_v3_sdk/Model/GetCategories.cs new file mode 100644 index 0000000..2c7d7b8 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/GetCategories.cs @@ -0,0 +1,150 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// GetCategories + /// + [DataContract] + public partial class GetCategories : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected GetCategories() { } + /// + /// Initializes a new instance of the class. + /// + /// categories (required). + /// Number of categories (required). + public GetCategories(List categories = default(List), long? count = default(long?)) + { + // to ensure "categories" is required (not null) + if (categories == null) + { + throw new InvalidDataException("categories is a required property for GetCategories and cannot be null"); + } + else + { + this.Categories = categories; + } + // to ensure "count" is required (not null) + if (count == null) + { + throw new InvalidDataException("count is a required property for GetCategories and cannot be null"); + } + else + { + this.Count = count; + } + } + + /// + /// Gets or Sets Categories + /// + [DataMember(Name="categories", EmitDefaultValue=false)] + public List Categories { get; set; } + + /// + /// Number of categories + /// + /// Number of categories + [DataMember(Name="count", EmitDefaultValue=false)] + public long? Count { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class GetCategories {\n"); + sb.Append(" Categories: ").Append(Categories).Append("\n"); + sb.Append(" Count: ").Append(Count).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as GetCategories); + } + + /// + /// Returns true if GetCategories instances are equal + /// + /// Instance of GetCategories to be compared + /// Boolean + public bool Equals(GetCategories input) + { + if (input == null) + return false; + + return + ( + this.Categories == input.Categories || + this.Categories != null && + this.Categories.SequenceEqual(input.Categories) + ) && + ( + this.Count == input.Count || + (this.Count != null && + this.Count.Equals(input.Count)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Categories != null) + hashCode = hashCode * 59 + this.Categories.GetHashCode(); + if (this.Count != null) + hashCode = hashCode * 59 + this.Count.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/GetCategoryDetails.cs b/src/sib_api_v3_sdk/Model/GetCategoryDetails.cs new file mode 100644 index 0000000..bd95404 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/GetCategoryDetails.cs @@ -0,0 +1,218 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// GetCategoryDetails + /// + [DataContract] + public partial class GetCategoryDetails : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected GetCategoryDetails() { } + /// + /// Initializes a new instance of the class. + /// + /// Category ID for which you requested the details (required). + /// Name of the category for which you requested the details (required). + /// Creation UTC date-time of the category (YYYY-MM-DDTHH:mm:ss.SSSZ) (required). + /// Last modification UTC date-time of the category (YYYY-MM-DDTHH:mm:ss.SSSZ) (required). + /// URL to the category. + public GetCategoryDetails(string id = default(string), string name = default(string), string createdAt = default(string), string modifiedAt = default(string), string url = default(string)) + { + // to ensure "id" is required (not null) + if (id == null) + { + throw new InvalidDataException("id is a required property for GetCategoryDetails and cannot be null"); + } + else + { + this.Id = id; + } + // to ensure "name" is required (not null) + if (name == null) + { + throw new InvalidDataException("name is a required property for GetCategoryDetails and cannot be null"); + } + else + { + this.Name = name; + } + // to ensure "createdAt" is required (not null) + if (createdAt == null) + { + throw new InvalidDataException("createdAt is a required property for GetCategoryDetails and cannot be null"); + } + else + { + this.CreatedAt = createdAt; + } + // to ensure "modifiedAt" is required (not null) + if (modifiedAt == null) + { + throw new InvalidDataException("modifiedAt is a required property for GetCategoryDetails and cannot be null"); + } + else + { + this.ModifiedAt = modifiedAt; + } + this.Url = url; + } + + /// + /// Category ID for which you requested the details + /// + /// Category ID for which you requested the details + [DataMember(Name="id", EmitDefaultValue=false)] + public string Id { get; set; } + + /// + /// Name of the category for which you requested the details + /// + /// Name of the category for which you requested the details + [DataMember(Name="name", EmitDefaultValue=false)] + public string Name { get; set; } + + /// + /// Creation UTC date-time of the category (YYYY-MM-DDTHH:mm:ss.SSSZ) + /// + /// Creation UTC date-time of the category (YYYY-MM-DDTHH:mm:ss.SSSZ) + [DataMember(Name="createdAt", EmitDefaultValue=false)] + public string CreatedAt { get; set; } + + /// + /// Last modification UTC date-time of the category (YYYY-MM-DDTHH:mm:ss.SSSZ) + /// + /// Last modification UTC date-time of the category (YYYY-MM-DDTHH:mm:ss.SSSZ) + [DataMember(Name="modifiedAt", EmitDefaultValue=false)] + public string ModifiedAt { get; set; } + + /// + /// URL to the category + /// + /// URL to the category + [DataMember(Name="url", EmitDefaultValue=false)] + public string Url { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class GetCategoryDetails {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); + sb.Append(" ModifiedAt: ").Append(ModifiedAt).Append("\n"); + sb.Append(" Url: ").Append(Url).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as GetCategoryDetails); + } + + /// + /// Returns true if GetCategoryDetails instances are equal + /// + /// Instance of GetCategoryDetails to be compared + /// Boolean + public bool Equals(GetCategoryDetails input) + { + if (input == null) + return false; + + return + ( + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) + ) && + ( + this.Name == input.Name || + (this.Name != null && + this.Name.Equals(input.Name)) + ) && + ( + this.CreatedAt == input.CreatedAt || + (this.CreatedAt != null && + this.CreatedAt.Equals(input.CreatedAt)) + ) && + ( + this.ModifiedAt == input.ModifiedAt || + (this.ModifiedAt != null && + this.ModifiedAt.Equals(input.ModifiedAt)) + ) && + ( + this.Url == input.Url || + (this.Url != null && + this.Url.Equals(input.Url)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Id != null) + hashCode = hashCode * 59 + this.Id.GetHashCode(); + if (this.Name != null) + hashCode = hashCode * 59 + this.Name.GetHashCode(); + if (this.CreatedAt != null) + hashCode = hashCode * 59 + this.CreatedAt.GetHashCode(); + if (this.ModifiedAt != null) + hashCode = hashCode * 59 + this.ModifiedAt.GetHashCode(); + if (this.Url != null) + hashCode = hashCode * 59 + this.Url.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/GetProductDetails.cs b/src/sib_api_v3_sdk/Model/GetProductDetails.cs new file mode 100644 index 0000000..cc61652 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/GetProductDetails.cs @@ -0,0 +1,387 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// GetProductDetails + /// + [DataContract] + public partial class GetProductDetails : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected GetProductDetails() { } + /// + /// Initializes a new instance of the class. + /// + /// Product ID for which you requested the details (required). + /// Name of the product for which you requested the details (required). + /// Creation UTC date-time of the product (YYYY-MM-DDTHH:mm:ss.SSSZ) (required). + /// Last modification UTC date-time of the product (YYYY-MM-DDTHH:mm:ss.SSSZ) (required). + /// URL to the product. + /// Absolute URL to the cover image of the product. + /// Product identifier from the shop. + /// Price of the product. + /// Category ID-s of the product. + /// Parent product id of the product. + /// S3 url of original image. + /// S3 thumbnail url of original image in 120x120 dimension for analytics section (required). + /// Meta data of product such as description, vendor, producer, stock level, etc.. + /// S3 thumbnail url of original image in 600x400 dimension for editor section (required). + public GetProductDetails(string id = default(string), string name = default(string), string createdAt = default(string), string modifiedAt = default(string), string url = default(string), string imageUrl = default(string), string sku = default(string), float? price = default(float?), List categories = default(List), string parentId = default(string), string s3Original = default(string), string s3ThumbAnalytics = default(string), Object metaInfo = default(Object), string s3ThumbEditor = default(string)) + { + // to ensure "id" is required (not null) + if (id == null) + { + throw new InvalidDataException("id is a required property for GetProductDetails and cannot be null"); + } + else + { + this.Id = id; + } + // to ensure "name" is required (not null) + if (name == null) + { + throw new InvalidDataException("name is a required property for GetProductDetails and cannot be null"); + } + else + { + this.Name = name; + } + // to ensure "createdAt" is required (not null) + if (createdAt == null) + { + throw new InvalidDataException("createdAt is a required property for GetProductDetails and cannot be null"); + } + else + { + this.CreatedAt = createdAt; + } + // to ensure "modifiedAt" is required (not null) + if (modifiedAt == null) + { + throw new InvalidDataException("modifiedAt is a required property for GetProductDetails and cannot be null"); + } + else + { + this.ModifiedAt = modifiedAt; + } + // to ensure "s3ThumbAnalytics" is required (not null) + if (s3ThumbAnalytics == null) + { + throw new InvalidDataException("s3ThumbAnalytics is a required property for GetProductDetails and cannot be null"); + } + else + { + this.S3ThumbAnalytics = s3ThumbAnalytics; + } + // to ensure "s3ThumbEditor" is required (not null) + if (s3ThumbEditor == null) + { + throw new InvalidDataException("s3ThumbEditor is a required property for GetProductDetails and cannot be null"); + } + else + { + this.S3ThumbEditor = s3ThumbEditor; + } + this.Url = url; + this.ImageUrl = imageUrl; + this.Sku = sku; + this.Price = price; + this.Categories = categories; + this.ParentId = parentId; + this.S3Original = s3Original; + this.MetaInfo = metaInfo; + } + + /// + /// Product ID for which you requested the details + /// + /// Product ID for which you requested the details + [DataMember(Name="id", EmitDefaultValue=false)] + public string Id { get; set; } + + /// + /// Name of the product for which you requested the details + /// + /// Name of the product for which you requested the details + [DataMember(Name="name", EmitDefaultValue=false)] + public string Name { get; set; } + + /// + /// Creation UTC date-time of the product (YYYY-MM-DDTHH:mm:ss.SSSZ) + /// + /// Creation UTC date-time of the product (YYYY-MM-DDTHH:mm:ss.SSSZ) + [DataMember(Name="createdAt", EmitDefaultValue=false)] + public string CreatedAt { get; set; } + + /// + /// Last modification UTC date-time of the product (YYYY-MM-DDTHH:mm:ss.SSSZ) + /// + /// Last modification UTC date-time of the product (YYYY-MM-DDTHH:mm:ss.SSSZ) + [DataMember(Name="modifiedAt", EmitDefaultValue=false)] + public string ModifiedAt { get; set; } + + /// + /// URL to the product + /// + /// URL to the product + [DataMember(Name="url", EmitDefaultValue=false)] + public string Url { get; set; } + + /// + /// Absolute URL to the cover image of the product + /// + /// Absolute URL to the cover image of the product + [DataMember(Name="imageUrl", EmitDefaultValue=false)] + public string ImageUrl { get; set; } + + /// + /// Product identifier from the shop + /// + /// Product identifier from the shop + [DataMember(Name="sku", EmitDefaultValue=false)] + public string Sku { get; set; } + + /// + /// Price of the product + /// + /// Price of the product + [DataMember(Name="price", EmitDefaultValue=false)] + public float? Price { get; set; } + + /// + /// Category ID-s of the product + /// + /// Category ID-s of the product + [DataMember(Name="categories", EmitDefaultValue=false)] + public List Categories { get; set; } + + /// + /// Parent product id of the product + /// + /// Parent product id of the product + [DataMember(Name="parentId", EmitDefaultValue=false)] + public string ParentId { get; set; } + + /// + /// S3 url of original image + /// + /// S3 url of original image + [DataMember(Name="s3Original", EmitDefaultValue=false)] + public string S3Original { get; set; } + + /// + /// S3 thumbnail url of original image in 120x120 dimension for analytics section + /// + /// S3 thumbnail url of original image in 120x120 dimension for analytics section + [DataMember(Name="s3ThumbAnalytics", EmitDefaultValue=false)] + public string S3ThumbAnalytics { get; set; } + + /// + /// Meta data of product such as description, vendor, producer, stock level, etc. + /// + /// Meta data of product such as description, vendor, producer, stock level, etc. + [DataMember(Name="metaInfo", EmitDefaultValue=false)] + public Object MetaInfo { get; set; } + + /// + /// S3 thumbnail url of original image in 600x400 dimension for editor section + /// + /// S3 thumbnail url of original image in 600x400 dimension for editor section + [DataMember(Name="s3ThumbEditor", EmitDefaultValue=false)] + public string S3ThumbEditor { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class GetProductDetails {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); + sb.Append(" ModifiedAt: ").Append(ModifiedAt).Append("\n"); + sb.Append(" Url: ").Append(Url).Append("\n"); + sb.Append(" ImageUrl: ").Append(ImageUrl).Append("\n"); + sb.Append(" Sku: ").Append(Sku).Append("\n"); + sb.Append(" Price: ").Append(Price).Append("\n"); + sb.Append(" Categories: ").Append(Categories).Append("\n"); + sb.Append(" ParentId: ").Append(ParentId).Append("\n"); + sb.Append(" S3Original: ").Append(S3Original).Append("\n"); + sb.Append(" S3ThumbAnalytics: ").Append(S3ThumbAnalytics).Append("\n"); + sb.Append(" MetaInfo: ").Append(MetaInfo).Append("\n"); + sb.Append(" S3ThumbEditor: ").Append(S3ThumbEditor).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as GetProductDetails); + } + + /// + /// Returns true if GetProductDetails instances are equal + /// + /// Instance of GetProductDetails to be compared + /// Boolean + public bool Equals(GetProductDetails input) + { + if (input == null) + return false; + + return + ( + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) + ) && + ( + this.Name == input.Name || + (this.Name != null && + this.Name.Equals(input.Name)) + ) && + ( + this.CreatedAt == input.CreatedAt || + (this.CreatedAt != null && + this.CreatedAt.Equals(input.CreatedAt)) + ) && + ( + this.ModifiedAt == input.ModifiedAt || + (this.ModifiedAt != null && + this.ModifiedAt.Equals(input.ModifiedAt)) + ) && + ( + this.Url == input.Url || + (this.Url != null && + this.Url.Equals(input.Url)) + ) && + ( + this.ImageUrl == input.ImageUrl || + (this.ImageUrl != null && + this.ImageUrl.Equals(input.ImageUrl)) + ) && + ( + this.Sku == input.Sku || + (this.Sku != null && + this.Sku.Equals(input.Sku)) + ) && + ( + this.Price == input.Price || + (this.Price != null && + this.Price.Equals(input.Price)) + ) && + ( + this.Categories == input.Categories || + this.Categories != null && + this.Categories.SequenceEqual(input.Categories) + ) && + ( + this.ParentId == input.ParentId || + (this.ParentId != null && + this.ParentId.Equals(input.ParentId)) + ) && + ( + this.S3Original == input.S3Original || + (this.S3Original != null && + this.S3Original.Equals(input.S3Original)) + ) && + ( + this.S3ThumbAnalytics == input.S3ThumbAnalytics || + (this.S3ThumbAnalytics != null && + this.S3ThumbAnalytics.Equals(input.S3ThumbAnalytics)) + ) && + ( + this.MetaInfo == input.MetaInfo || + (this.MetaInfo != null && + this.MetaInfo.Equals(input.MetaInfo)) + ) && + ( + this.S3ThumbEditor == input.S3ThumbEditor || + (this.S3ThumbEditor != null && + this.S3ThumbEditor.Equals(input.S3ThumbEditor)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Id != null) + hashCode = hashCode * 59 + this.Id.GetHashCode(); + if (this.Name != null) + hashCode = hashCode * 59 + this.Name.GetHashCode(); + if (this.CreatedAt != null) + hashCode = hashCode * 59 + this.CreatedAt.GetHashCode(); + if (this.ModifiedAt != null) + hashCode = hashCode * 59 + this.ModifiedAt.GetHashCode(); + if (this.Url != null) + hashCode = hashCode * 59 + this.Url.GetHashCode(); + if (this.ImageUrl != null) + hashCode = hashCode * 59 + this.ImageUrl.GetHashCode(); + if (this.Sku != null) + hashCode = hashCode * 59 + this.Sku.GetHashCode(); + if (this.Price != null) + hashCode = hashCode * 59 + this.Price.GetHashCode(); + if (this.Categories != null) + hashCode = hashCode * 59 + this.Categories.GetHashCode(); + if (this.ParentId != null) + hashCode = hashCode * 59 + this.ParentId.GetHashCode(); + if (this.S3Original != null) + hashCode = hashCode * 59 + this.S3Original.GetHashCode(); + if (this.S3ThumbAnalytics != null) + hashCode = hashCode * 59 + this.S3ThumbAnalytics.GetHashCode(); + if (this.MetaInfo != null) + hashCode = hashCode * 59 + this.MetaInfo.GetHashCode(); + if (this.S3ThumbEditor != null) + hashCode = hashCode * 59 + this.S3ThumbEditor.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/GetProducts.cs b/src/sib_api_v3_sdk/Model/GetProducts.cs new file mode 100644 index 0000000..7ac1341 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/GetProducts.cs @@ -0,0 +1,150 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// GetProducts + /// + [DataContract] + public partial class GetProducts : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected GetProducts() { } + /// + /// Initializes a new instance of the class. + /// + /// products (required). + /// Number of products (required). + public GetProducts(List products = default(List), long? count = default(long?)) + { + // to ensure "products" is required (not null) + if (products == null) + { + throw new InvalidDataException("products is a required property for GetProducts and cannot be null"); + } + else + { + this.Products = products; + } + // to ensure "count" is required (not null) + if (count == null) + { + throw new InvalidDataException("count is a required property for GetProducts and cannot be null"); + } + else + { + this.Count = count; + } + } + + /// + /// Gets or Sets Products + /// + [DataMember(Name="products", EmitDefaultValue=false)] + public List Products { get; set; } + + /// + /// Number of products + /// + /// Number of products + [DataMember(Name="count", EmitDefaultValue=false)] + public long? Count { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class GetProducts {\n"); + sb.Append(" Products: ").Append(Products).Append("\n"); + sb.Append(" Count: ").Append(Count).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as GetProducts); + } + + /// + /// Returns true if GetProducts instances are equal + /// + /// Instance of GetProducts to be compared + /// Boolean + public bool Equals(GetProducts input) + { + if (input == null) + return false; + + return + ( + this.Products == input.Products || + this.Products != null && + this.Products.SequenceEqual(input.Products) + ) && + ( + this.Count == input.Count || + (this.Count != null && + this.Count.Equals(input.Count)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Products != null) + hashCode = hashCode * 59 + this.Products.GetHashCode(); + if (this.Count != null) + hashCode = hashCode * 59 + this.Count.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/GetScheduledEmailByBatchId.cs b/src/sib_api_v3_sdk/Model/GetScheduledEmailByBatchId.cs new file mode 100644 index 0000000..a8a8600 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/GetScheduledEmailByBatchId.cs @@ -0,0 +1,129 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// GetScheduledEmailByBatchId + /// + [DataContract] + public partial class GetScheduledEmailByBatchId : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + /// Total number of batches. + /// batches. + public GetScheduledEmailByBatchId(int? count = default(int?), List batches = default(List)) + { + this.Count = count; + this.Batches = batches; + } + + /// + /// Total number of batches + /// + /// Total number of batches + [DataMember(Name="count", EmitDefaultValue=false)] + public int? Count { get; set; } + + /// + /// Gets or Sets Batches + /// + [DataMember(Name="batches", EmitDefaultValue=false)] + public List Batches { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class GetScheduledEmailByBatchId {\n"); + sb.Append(" Count: ").Append(Count).Append("\n"); + sb.Append(" Batches: ").Append(Batches).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as GetScheduledEmailByBatchId); + } + + /// + /// Returns true if GetScheduledEmailByBatchId instances are equal + /// + /// Instance of GetScheduledEmailByBatchId to be compared + /// Boolean + public bool Equals(GetScheduledEmailByBatchId input) + { + if (input == null) + return false; + + return + ( + this.Count == input.Count || + (this.Count != null && + this.Count.Equals(input.Count)) + ) && + ( + this.Batches == input.Batches || + this.Batches != null && + this.Batches.SequenceEqual(input.Batches) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Count != null) + hashCode = hashCode * 59 + this.Count.GetHashCode(); + if (this.Batches != null) + hashCode = hashCode * 59 + this.Batches.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/GetScheduledEmailByBatchIdBatches.cs b/src/sib_api_v3_sdk/Model/GetScheduledEmailByBatchIdBatches.cs new file mode 100644 index 0000000..27ed681 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/GetScheduledEmailByBatchIdBatches.cs @@ -0,0 +1,209 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// GetScheduledEmailByBatchIdBatches + /// + [DataContract] + public partial class GetScheduledEmailByBatchIdBatches : IEquatable + { + /// + /// Current status of the scheduled batch + /// + /// Current status of the scheduled batch + [JsonConverter(typeof(StringEnumConverter))] + public enum StatusEnum + { + + /// + /// Enum InProgress for value: inProgress + /// + [EnumMember(Value = "inProgress")] + InProgress = 1, + + /// + /// Enum Queued for value: queued + /// + [EnumMember(Value = "queued")] + Queued = 2, + + /// + /// Enum Processed for value: processed + /// + [EnumMember(Value = "processed")] + Processed = 3, + + /// + /// Enum Error for value: error + /// + [EnumMember(Value = "error")] + Error = 4 + } + + /// + /// Current status of the scheduled batch + /// + /// Current status of the scheduled batch + [DataMember(Name="status", EmitDefaultValue=false)] + public StatusEnum Status { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected GetScheduledEmailByBatchIdBatches() { } + /// + /// Initializes a new instance of the class. + /// + /// Datetime for which the batch was scheduled (required). + /// Datetime on which the batch was scheduled (required). + /// Current status of the scheduled batch (required). + public GetScheduledEmailByBatchIdBatches(DateTime? scheduledAt = default(DateTime?), DateTime? createdAt = default(DateTime?), StatusEnum status = default(StatusEnum)) + { + // to ensure "scheduledAt" is required (not null) + if (scheduledAt == null) + { + throw new InvalidDataException("scheduledAt is a required property for GetScheduledEmailByBatchIdBatches and cannot be null"); + } + else + { + this.ScheduledAt = scheduledAt; + } + // to ensure "createdAt" is required (not null) + if (createdAt == null) + { + throw new InvalidDataException("createdAt is a required property for GetScheduledEmailByBatchIdBatches and cannot be null"); + } + else + { + this.CreatedAt = createdAt; + } + // to ensure "status" is required (not null) + if (status == null) + { + throw new InvalidDataException("status is a required property for GetScheduledEmailByBatchIdBatches and cannot be null"); + } + else + { + this.Status = status; + } + } + + /// + /// Datetime for which the batch was scheduled + /// + /// Datetime for which the batch was scheduled + [DataMember(Name="scheduledAt", EmitDefaultValue=false)] + public DateTime? ScheduledAt { get; set; } + + /// + /// Datetime on which the batch was scheduled + /// + /// Datetime on which the batch was scheduled + [DataMember(Name="createdAt", EmitDefaultValue=false)] + public DateTime? CreatedAt { get; set; } + + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class GetScheduledEmailByBatchIdBatches {\n"); + sb.Append(" ScheduledAt: ").Append(ScheduledAt).Append("\n"); + sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); + sb.Append(" Status: ").Append(Status).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as GetScheduledEmailByBatchIdBatches); + } + + /// + /// Returns true if GetScheduledEmailByBatchIdBatches instances are equal + /// + /// Instance of GetScheduledEmailByBatchIdBatches to be compared + /// Boolean + public bool Equals(GetScheduledEmailByBatchIdBatches input) + { + if (input == null) + return false; + + return + ( + this.ScheduledAt == input.ScheduledAt || + (this.ScheduledAt != null && + this.ScheduledAt.Equals(input.ScheduledAt)) + ) && + ( + this.CreatedAt == input.CreatedAt || + (this.CreatedAt != null && + this.CreatedAt.Equals(input.CreatedAt)) + ) && + ( + this.Status == input.Status || + (this.Status != null && + this.Status.Equals(input.Status)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ScheduledAt != null) + hashCode = hashCode * 59 + this.ScheduledAt.GetHashCode(); + if (this.CreatedAt != null) + hashCode = hashCode * 59 + this.CreatedAt.GetHashCode(); + if (this.Status != null) + hashCode = hashCode * 59 + this.Status.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/GetScheduledEmailByMessageId.cs b/src/sib_api_v3_sdk/Model/GetScheduledEmailByMessageId.cs new file mode 100644 index 0000000..9879822 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/GetScheduledEmailByMessageId.cs @@ -0,0 +1,209 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// GetScheduledEmailByMessageId + /// + [DataContract] + public partial class GetScheduledEmailByMessageId : IEquatable + { + /// + /// Current status of the scheduled email + /// + /// Current status of the scheduled email + [JsonConverter(typeof(StringEnumConverter))] + public enum StatusEnum + { + + /// + /// Enum InProgress for value: inProgress + /// + [EnumMember(Value = "inProgress")] + InProgress = 1, + + /// + /// Enum Queued for value: queued + /// + [EnumMember(Value = "queued")] + Queued = 2, + + /// + /// Enum Processed for value: processed + /// + [EnumMember(Value = "processed")] + Processed = 3, + + /// + /// Enum Error for value: error + /// + [EnumMember(Value = "error")] + Error = 4 + } + + /// + /// Current status of the scheduled email + /// + /// Current status of the scheduled email + [DataMember(Name="status", EmitDefaultValue=false)] + public StatusEnum Status { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected GetScheduledEmailByMessageId() { } + /// + /// Initializes a new instance of the class. + /// + /// Datetime for which the email was scheduled (required). + /// Datetime on which the email was scheduled (required). + /// Current status of the scheduled email (required). + public GetScheduledEmailByMessageId(DateTime? scheduledAt = default(DateTime?), DateTime? createdAt = default(DateTime?), StatusEnum status = default(StatusEnum)) + { + // to ensure "scheduledAt" is required (not null) + if (scheduledAt == null) + { + throw new InvalidDataException("scheduledAt is a required property for GetScheduledEmailByMessageId and cannot be null"); + } + else + { + this.ScheduledAt = scheduledAt; + } + // to ensure "createdAt" is required (not null) + if (createdAt == null) + { + throw new InvalidDataException("createdAt is a required property for GetScheduledEmailByMessageId and cannot be null"); + } + else + { + this.CreatedAt = createdAt; + } + // to ensure "status" is required (not null) + if (status == null) + { + throw new InvalidDataException("status is a required property for GetScheduledEmailByMessageId and cannot be null"); + } + else + { + this.Status = status; + } + } + + /// + /// Datetime for which the email was scheduled + /// + /// Datetime for which the email was scheduled + [DataMember(Name="scheduledAt", EmitDefaultValue=false)] + public DateTime? ScheduledAt { get; set; } + + /// + /// Datetime on which the email was scheduled + /// + /// Datetime on which the email was scheduled + [DataMember(Name="createdAt", EmitDefaultValue=false)] + public DateTime? CreatedAt { get; set; } + + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class GetScheduledEmailByMessageId {\n"); + sb.Append(" ScheduledAt: ").Append(ScheduledAt).Append("\n"); + sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); + sb.Append(" Status: ").Append(Status).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as GetScheduledEmailByMessageId); + } + + /// + /// Returns true if GetScheduledEmailByMessageId instances are equal + /// + /// Instance of GetScheduledEmailByMessageId to be compared + /// Boolean + public bool Equals(GetScheduledEmailByMessageId input) + { + if (input == null) + return false; + + return + ( + this.ScheduledAt == input.ScheduledAt || + (this.ScheduledAt != null && + this.ScheduledAt.Equals(input.ScheduledAt)) + ) && + ( + this.CreatedAt == input.CreatedAt || + (this.CreatedAt != null && + this.CreatedAt.Equals(input.CreatedAt)) + ) && + ( + this.Status == input.Status || + (this.Status != null && + this.Status.Equals(input.Status)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ScheduledAt != null) + hashCode = hashCode * 59 + this.ScheduledAt.GetHashCode(); + if (this.CreatedAt != null) + hashCode = hashCode * 59 + this.CreatedAt.GetHashCode(); + if (this.Status != null) + hashCode = hashCode * 59 + this.Status.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/GetSsoToken.cs b/src/sib_api_v3_sdk/Model/GetSsoToken.cs index aaa7eb6..130fd75 100644 --- a/src/sib_api_v3_sdk/Model/GetSsoToken.cs +++ b/src/sib_api_v3_sdk/Model/GetSsoToken.cs @@ -36,7 +36,7 @@ protected GetSsoToken() { } /// /// Initializes a new instance of the class. /// - /// Session token. It will remain valid for a short period of time only. (required). + /// Session token, it will remain valid for 15 days. (required). public GetSsoToken(string token = default(string)) { // to ensure "token" is required (not null) @@ -51,9 +51,9 @@ protected GetSsoToken() { } } /// - /// Session token. It will remain valid for a short period of time only. + /// Session token, it will remain valid for 15 days. /// - /// Session token. It will remain valid for a short period of time only. + /// Session token, it will remain valid for 15 days. [DataMember(Name="token", EmitDefaultValue=false)] public string Token { get; set; } diff --git a/src/sib_api_v3_sdk/Model/GetWebhook.cs b/src/sib_api_v3_sdk/Model/GetWebhook.cs index 5d7da8f..51d9d26 100644 --- a/src/sib_api_v3_sdk/Model/GetWebhook.cs +++ b/src/sib_api_v3_sdk/Model/GetWebhook.cs @@ -29,9 +29,9 @@ namespace sib_api_v3_sdk.Model public partial class GetWebhook : IEquatable { /// - /// Type of webhook (marketing or transac) + /// Type of webhook (marketing or transactional) /// - /// Type of webhook (marketing or transac) + /// Type of webhook (marketing or transactional) [JsonConverter(typeof(StringEnumConverter))] public enum TypeEnum { @@ -43,16 +43,16 @@ public enum TypeEnum Marketing = 1, /// - /// Enum Transac for value: transac + /// Enum Transactional for value: transactional /// - [EnumMember(Value = "transac")] - Transac = 2 + [EnumMember(Value = "transactional")] + Transactional = 2 } /// - /// Type of webhook (marketing or transac) + /// Type of webhook (marketing or transactional) /// - /// Type of webhook (marketing or transac) + /// Type of webhook (marketing or transactional) [DataMember(Name="type", EmitDefaultValue=false)] public TypeEnum Type { get; set; } /// @@ -67,7 +67,7 @@ protected GetWebhook() { } /// ID of the webhook (required). /// Description of the webhook (required). /// events (required). - /// Type of webhook (marketing or transac) (required). + /// Type of webhook (marketing or transactional) (required). /// Creation UTC date-time of the webhook (YYYY-MM-DDTHH:mm:ss.SSSZ) (required). /// Last modification UTC date-time of the webhook (YYYY-MM-DDTHH:mm:ss.SSSZ) (required). public GetWebhook(string url = default(string), long? id = default(long?), string description = default(string), List events = default(List), TypeEnum type = default(TypeEnum), string createdAt = default(string), string modifiedAt = default(string)) diff --git a/src/sib_api_v3_sdk/Model/GetWhatsappCampaignOverview.cs b/src/sib_api_v3_sdk/Model/GetWhatsappCampaignOverview.cs new file mode 100644 index 0000000..8a37a2c --- /dev/null +++ b/src/sib_api_v3_sdk/Model/GetWhatsappCampaignOverview.cs @@ -0,0 +1,365 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// GetWhatsappCampaignOverview + /// + [DataContract] + public partial class GetWhatsappCampaignOverview : IEquatable + { + /// + /// Status of the Whatsapp Campaign + /// + /// Status of the Whatsapp Campaign + [JsonConverter(typeof(StringEnumConverter))] + public enum CampaignStatusEnum + { + + /// + /// Enum Draft for value: draft + /// + [EnumMember(Value = "draft")] + Draft = 1, + + /// + /// Enum Scheduled for value: scheduled + /// + [EnumMember(Value = "scheduled")] + Scheduled = 2, + + /// + /// Enum Pending for value: pending + /// + [EnumMember(Value = "pending")] + Pending = 3, + + /// + /// Enum Approved for value: approved + /// + [EnumMember(Value = "approved")] + Approved = 4, + + /// + /// Enum Running for value: running + /// + [EnumMember(Value = "running")] + Running = 5, + + /// + /// Enum Suspended for value: suspended + /// + [EnumMember(Value = "suspended")] + Suspended = 6, + + /// + /// Enum Rejected for value: rejected + /// + [EnumMember(Value = "rejected")] + Rejected = 7, + + /// + /// Enum Sent for value: sent + /// + [EnumMember(Value = "sent")] + Sent = 8 + } + + /// + /// Status of the Whatsapp Campaign + /// + /// Status of the Whatsapp Campaign + [DataMember(Name="campaignStatus", EmitDefaultValue=false)] + public CampaignStatusEnum CampaignStatus { get; set; } + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected GetWhatsappCampaignOverview() { } + /// + /// Initializes a new instance of the class. + /// + /// ID of the Whatsapp Campaign (required). + /// Name of the Whatsapp Campaign (required). + /// Status of the Whatsapp Campaign (required). + /// UTC date-time on which Whatsapp campaign is scheduled. Should be in YYYY-MM-DDTHH:mm:ss.SSSZ format. + /// Sender of the Whatsapp Campaign (required). + /// stats. + /// template (required). + /// Creation UTC date-time of the SMS campaign (YYYY-MM-DDTHH:mm:ss.SSSZ) (required). + /// UTC date-time of last modification of the SMS campaign (YYYY-MM-DDTHH:mm:ss.SSSZ) (required). + public GetWhatsappCampaignOverview(long? id = default(long?), string campaignName = default(string), CampaignStatusEnum campaignStatus = default(CampaignStatusEnum), string scheduledAt = default(string), string senderNumber = default(string), WhatsappCampStats stats = default(WhatsappCampStats), WhatsappCampTemplate template = default(WhatsappCampTemplate), string createdAt = default(string), string modifiedAt = default(string)) + { + // to ensure "id" is required (not null) + if (id == null) + { + throw new InvalidDataException("id is a required property for GetWhatsappCampaignOverview and cannot be null"); + } + else + { + this.Id = id; + } + // to ensure "campaignName" is required (not null) + if (campaignName == null) + { + throw new InvalidDataException("campaignName is a required property for GetWhatsappCampaignOverview and cannot be null"); + } + else + { + this.CampaignName = campaignName; + } + // to ensure "campaignStatus" is required (not null) + if (campaignStatus == null) + { + throw new InvalidDataException("campaignStatus is a required property for GetWhatsappCampaignOverview and cannot be null"); + } + else + { + this.CampaignStatus = campaignStatus; + } + // to ensure "senderNumber" is required (not null) + if (senderNumber == null) + { + throw new InvalidDataException("senderNumber is a required property for GetWhatsappCampaignOverview and cannot be null"); + } + else + { + this.SenderNumber = senderNumber; + } + // to ensure "template" is required (not null) + if (template == null) + { + throw new InvalidDataException("template is a required property for GetWhatsappCampaignOverview and cannot be null"); + } + else + { + this.Template = template; + } + // to ensure "createdAt" is required (not null) + if (createdAt == null) + { + throw new InvalidDataException("createdAt is a required property for GetWhatsappCampaignOverview and cannot be null"); + } + else + { + this.CreatedAt = createdAt; + } + // to ensure "modifiedAt" is required (not null) + if (modifiedAt == null) + { + throw new InvalidDataException("modifiedAt is a required property for GetWhatsappCampaignOverview and cannot be null"); + } + else + { + this.ModifiedAt = modifiedAt; + } + this.ScheduledAt = scheduledAt; + this.Stats = stats; + } + + /// + /// ID of the Whatsapp Campaign + /// + /// ID of the Whatsapp Campaign + [DataMember(Name="id", EmitDefaultValue=false)] + public long? Id { get; set; } + + /// + /// Name of the Whatsapp Campaign + /// + /// Name of the Whatsapp Campaign + [DataMember(Name="campaignName", EmitDefaultValue=false)] + public string CampaignName { get; set; } + + + /// + /// UTC date-time on which Whatsapp campaign is scheduled. Should be in YYYY-MM-DDTHH:mm:ss.SSSZ format + /// + /// UTC date-time on which Whatsapp campaign is scheduled. Should be in YYYY-MM-DDTHH:mm:ss.SSSZ format + [DataMember(Name="scheduledAt", EmitDefaultValue=false)] + public string ScheduledAt { get; set; } + + /// + /// Sender of the Whatsapp Campaign + /// + /// Sender of the Whatsapp Campaign + [DataMember(Name="senderNumber", EmitDefaultValue=false)] + public string SenderNumber { get; set; } + + /// + /// Gets or Sets Stats + /// + [DataMember(Name="stats", EmitDefaultValue=false)] + public WhatsappCampStats Stats { get; set; } + + /// + /// Gets or Sets Template + /// + [DataMember(Name="template", EmitDefaultValue=false)] + public WhatsappCampTemplate Template { get; set; } + + /// + /// Creation UTC date-time of the SMS campaign (YYYY-MM-DDTHH:mm:ss.SSSZ) + /// + /// Creation UTC date-time of the SMS campaign (YYYY-MM-DDTHH:mm:ss.SSSZ) + [DataMember(Name="createdAt", EmitDefaultValue=false)] + public string CreatedAt { get; set; } + + /// + /// UTC date-time of last modification of the SMS campaign (YYYY-MM-DDTHH:mm:ss.SSSZ) + /// + /// UTC date-time of last modification of the SMS campaign (YYYY-MM-DDTHH:mm:ss.SSSZ) + [DataMember(Name="modifiedAt", EmitDefaultValue=false)] + public string ModifiedAt { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class GetWhatsappCampaignOverview {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" CampaignName: ").Append(CampaignName).Append("\n"); + sb.Append(" CampaignStatus: ").Append(CampaignStatus).Append("\n"); + sb.Append(" ScheduledAt: ").Append(ScheduledAt).Append("\n"); + sb.Append(" SenderNumber: ").Append(SenderNumber).Append("\n"); + sb.Append(" Stats: ").Append(Stats).Append("\n"); + sb.Append(" Template: ").Append(Template).Append("\n"); + sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); + sb.Append(" ModifiedAt: ").Append(ModifiedAt).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as GetWhatsappCampaignOverview); + } + + /// + /// Returns true if GetWhatsappCampaignOverview instances are equal + /// + /// Instance of GetWhatsappCampaignOverview to be compared + /// Boolean + public bool Equals(GetWhatsappCampaignOverview input) + { + if (input == null) + return false; + + return + ( + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) + ) && + ( + this.CampaignName == input.CampaignName || + (this.CampaignName != null && + this.CampaignName.Equals(input.CampaignName)) + ) && + ( + this.CampaignStatus == input.CampaignStatus || + (this.CampaignStatus != null && + this.CampaignStatus.Equals(input.CampaignStatus)) + ) && + ( + this.ScheduledAt == input.ScheduledAt || + (this.ScheduledAt != null && + this.ScheduledAt.Equals(input.ScheduledAt)) + ) && + ( + this.SenderNumber == input.SenderNumber || + (this.SenderNumber != null && + this.SenderNumber.Equals(input.SenderNumber)) + ) && + ( + this.Stats == input.Stats || + (this.Stats != null && + this.Stats.Equals(input.Stats)) + ) && + ( + this.Template == input.Template || + (this.Template != null && + this.Template.Equals(input.Template)) + ) && + ( + this.CreatedAt == input.CreatedAt || + (this.CreatedAt != null && + this.CreatedAt.Equals(input.CreatedAt)) + ) && + ( + this.ModifiedAt == input.ModifiedAt || + (this.ModifiedAt != null && + this.ModifiedAt.Equals(input.ModifiedAt)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Id != null) + hashCode = hashCode * 59 + this.Id.GetHashCode(); + if (this.CampaignName != null) + hashCode = hashCode * 59 + this.CampaignName.GetHashCode(); + if (this.CampaignStatus != null) + hashCode = hashCode * 59 + this.CampaignStatus.GetHashCode(); + if (this.ScheduledAt != null) + hashCode = hashCode * 59 + this.ScheduledAt.GetHashCode(); + if (this.SenderNumber != null) + hashCode = hashCode * 59 + this.SenderNumber.GetHashCode(); + if (this.Stats != null) + hashCode = hashCode * 59 + this.Stats.GetHashCode(); + if (this.Template != null) + hashCode = hashCode * 59 + this.Template.GetHashCode(); + if (this.CreatedAt != null) + hashCode = hashCode * 59 + this.CreatedAt.GetHashCode(); + if (this.ModifiedAt != null) + hashCode = hashCode * 59 + this.ModifiedAt.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/InlineResponse200.cs b/src/sib_api_v3_sdk/Model/InlineResponse200.cs new file mode 100644 index 0000000..321cd20 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/InlineResponse200.cs @@ -0,0 +1,126 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// Created company id + /// + [DataContract] + public partial class InlineResponse200 : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected InlineResponse200() { } + /// + /// Initializes a new instance of the class. + /// + /// Unique company id (required). + public InlineResponse200(string id = default(string)) + { + // to ensure "id" is required (not null) + if (id == null) + { + throw new InvalidDataException("id is a required property for InlineResponse200 and cannot be null"); + } + else + { + this.Id = id; + } + } + + /// + /// Unique company id + /// + /// Unique company id + [DataMember(Name="id", EmitDefaultValue=false)] + public string Id { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class InlineResponse200 {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as InlineResponse200); + } + + /// + /// Returns true if InlineResponse200 instances are equal + /// + /// Instance of InlineResponse200 to be compared + /// Boolean + public bool Equals(InlineResponse200 input) + { + if (input == null) + return false; + + return + ( + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Id != null) + hashCode = hashCode * 59 + this.Id.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/InlineResponse201.cs b/src/sib_api_v3_sdk/Model/InlineResponse201.cs new file mode 100644 index 0000000..5bfc355 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/InlineResponse201.cs @@ -0,0 +1,126 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// Created deal id + /// + [DataContract] + public partial class InlineResponse201 : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected InlineResponse201() { } + /// + /// Initializes a new instance of the class. + /// + /// Unique deal id (required). + public InlineResponse201(string id = default(string)) + { + // to ensure "id" is required (not null) + if (id == null) + { + throw new InvalidDataException("id is a required property for InlineResponse201 and cannot be null"); + } + else + { + this.Id = id; + } + } + + /// + /// Unique deal id + /// + /// Unique deal id + [DataMember(Name="id", EmitDefaultValue=false)] + public string Id { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class InlineResponse201 {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as InlineResponse201); + } + + /// + /// Returns true if InlineResponse201 instances are equal + /// + /// Instance of InlineResponse201 to be compared + /// Boolean + public bool Equals(InlineResponse201 input) + { + if (input == null) + return false; + + return + ( + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Id != null) + hashCode = hashCode * 59 + this.Id.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/InlineResponse2011.cs b/src/sib_api_v3_sdk/Model/InlineResponse2011.cs new file mode 100644 index 0000000..eb91ba3 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/InlineResponse2011.cs @@ -0,0 +1,126 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// Task Details + /// + [DataContract] + public partial class InlineResponse2011 : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected InlineResponse2011() { } + /// + /// Initializes a new instance of the class. + /// + /// Unique task id (required). + public InlineResponse2011(string id = default(string)) + { + // to ensure "id" is required (not null) + if (id == null) + { + throw new InvalidDataException("id is a required property for InlineResponse2011 and cannot be null"); + } + else + { + this.Id = id; + } + } + + /// + /// Unique task id + /// + /// Unique task id + [DataMember(Name="id", EmitDefaultValue=false)] + public string Id { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class InlineResponse2011 {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as InlineResponse2011); + } + + /// + /// Returns true if InlineResponse2011 instances are equal + /// + /// Instance of InlineResponse2011 to be compared + /// Boolean + public bool Equals(InlineResponse2011 input) + { + if (input == null) + return false; + + return + ( + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Id != null) + hashCode = hashCode * 59 + this.Id.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/NoteData.cs b/src/sib_api_v3_sdk/Model/NoteData.cs index b9eb237..2766cca 100644 --- a/src/sib_api_v3_sdk/Model/NoteData.cs +++ b/src/sib_api_v3_sdk/Model/NoteData.cs @@ -39,7 +39,8 @@ protected NoteData() { } /// Text content of a note (required). /// Contact Ids linked to a note. /// Deal Ids linked to a note. - public NoteData(string text = default(string), List contactIds = default(List), List dealIds = default(List)) + /// Company Ids linked to a note. + public NoteData(string text = default(string), List contactIds = default(List), List dealIds = default(List), List companyIds = default(List)) { // to ensure "text" is required (not null) if (text == null) @@ -52,6 +53,7 @@ protected NoteData() { } } this.ContactIds = contactIds; this.DealIds = dealIds; + this.CompanyIds = companyIds; } /// @@ -75,6 +77,13 @@ protected NoteData() { } [DataMember(Name="dealIds", EmitDefaultValue=false)] public List DealIds { get; set; } + /// + /// Company Ids linked to a note + /// + /// Company Ids linked to a note + [DataMember(Name="companyIds", EmitDefaultValue=false)] + public List CompanyIds { get; set; } + /// /// Returns the string presentation of the object /// @@ -86,6 +95,7 @@ public override string ToString() sb.Append(" Text: ").Append(Text).Append("\n"); sb.Append(" ContactIds: ").Append(ContactIds).Append("\n"); sb.Append(" DealIds: ").Append(DealIds).Append("\n"); + sb.Append(" CompanyIds: ").Append(CompanyIds).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -134,6 +144,11 @@ public bool Equals(NoteData input) this.DealIds == input.DealIds || this.DealIds != null && this.DealIds.SequenceEqual(input.DealIds) + ) && + ( + this.CompanyIds == input.CompanyIds || + this.CompanyIds != null && + this.CompanyIds.SequenceEqual(input.CompanyIds) ); } @@ -152,6 +167,8 @@ public override int GetHashCode() hashCode = hashCode * 59 + this.ContactIds.GetHashCode(); if (this.DealIds != null) hashCode = hashCode * 59 + this.DealIds.GetHashCode(); + if (this.CompanyIds != null) + hashCode = hashCode * 59 + this.CompanyIds.GetHashCode(); return hashCode; } } diff --git a/src/sib_api_v3_sdk/Model/NoteId.cs b/src/sib_api_v3_sdk/Model/NoteId.cs new file mode 100644 index 0000000..e68ea6e --- /dev/null +++ b/src/sib_api_v3_sdk/Model/NoteId.cs @@ -0,0 +1,113 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// Updated Note ID + /// + [DataContract] + public partial class NoteId : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + /// Unique note Id. + public NoteId(string id = default(string)) + { + this.Id = id; + } + + /// + /// Unique note Id + /// + /// Unique note Id + [DataMember(Name="id", EmitDefaultValue=false)] + public string Id { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class NoteId {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as NoteId); + } + + /// + /// Returns true if NoteId instances are equal + /// + /// Instance of NoteId to be compared + /// Boolean + public bool Equals(NoteId input) + { + if (input == null) + return false; + + return + ( + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Id != null) + hashCode = hashCode * 59 + this.Id.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/NoteList.cs b/src/sib_api_v3_sdk/Model/NoteList.cs new file mode 100644 index 0000000..8c7802c --- /dev/null +++ b/src/sib_api_v3_sdk/Model/NoteList.cs @@ -0,0 +1,98 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// List of notes + /// + [DataContract] + public partial class NoteList : List, IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + public NoteList() : base() + { + } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class NoteList {\n"); + sb.Append(" ").Append(base.ToString().Replace("\n", "\n ")).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as NoteList); + } + + /// + /// Returns true if NoteList instances are equal + /// + /// Instance of NoteList to be compared + /// Boolean + public bool Equals(NoteList input) + { + if (input == null) + return false; + + return base.Equals(input); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = base.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/Order.cs b/src/sib_api_v3_sdk/Model/Order.cs new file mode 100644 index 0000000..e63a1b8 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/Order.cs @@ -0,0 +1,300 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// Order + /// + [DataContract] + public partial class Order : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected Order() { } + /// + /// Initializes a new instance of the class. + /// + /// Unique ID of the order. (required). + /// Event occurrence UTC date-time (YYYY-MM-DDTHH:mm:ssZ), when order is actually created. (required). + /// Event updated UTC date-time (YYYY-MM-DDTHH:mm:ssZ), when the status of the order is actually changed/updated. (required). + /// State of the order. (required). + /// Total amount of the order, including all shipping expenses, tax and the price of items. (required). + /// products (required). + /// Email of the contact, Mandatory if "phone" field is not passed in "billing" parameter.. + /// billing. + /// Coupons applied to the order. Stored case insensitive.. + public Order(string id = default(string), string createdAt = default(string), string updatedAt = default(string), string status = default(string), decimal? amount = default(decimal?), List products = default(List), string email = default(string), OrderBilling billing = default(OrderBilling), List coupons = default(List)) + { + // to ensure "id" is required (not null) + if (id == null) + { + throw new InvalidDataException("id is a required property for Order and cannot be null"); + } + else + { + this.Id = id; + } + // to ensure "createdAt" is required (not null) + if (createdAt == null) + { + throw new InvalidDataException("createdAt is a required property for Order and cannot be null"); + } + else + { + this.CreatedAt = createdAt; + } + // to ensure "updatedAt" is required (not null) + if (updatedAt == null) + { + throw new InvalidDataException("updatedAt is a required property for Order and cannot be null"); + } + else + { + this.UpdatedAt = updatedAt; + } + // to ensure "status" is required (not null) + if (status == null) + { + throw new InvalidDataException("status is a required property for Order and cannot be null"); + } + else + { + this.Status = status; + } + // to ensure "amount" is required (not null) + if (amount == null) + { + throw new InvalidDataException("amount is a required property for Order and cannot be null"); + } + else + { + this.Amount = amount; + } + // to ensure "products" is required (not null) + if (products == null) + { + throw new InvalidDataException("products is a required property for Order and cannot be null"); + } + else + { + this.Products = products; + } + this.Email = email; + this.Billing = billing; + this.Coupons = coupons; + } + + /// + /// Unique ID of the order. + /// + /// Unique ID of the order. + [DataMember(Name="id", EmitDefaultValue=false)] + public string Id { get; set; } + + /// + /// Event occurrence UTC date-time (YYYY-MM-DDTHH:mm:ssZ), when order is actually created. + /// + /// Event occurrence UTC date-time (YYYY-MM-DDTHH:mm:ssZ), when order is actually created. + [DataMember(Name="createdAt", EmitDefaultValue=false)] + public string CreatedAt { get; set; } + + /// + /// Event updated UTC date-time (YYYY-MM-DDTHH:mm:ssZ), when the status of the order is actually changed/updated. + /// + /// Event updated UTC date-time (YYYY-MM-DDTHH:mm:ssZ), when the status of the order is actually changed/updated. + [DataMember(Name="updatedAt", EmitDefaultValue=false)] + public string UpdatedAt { get; set; } + + /// + /// State of the order. + /// + /// State of the order. + [DataMember(Name="status", EmitDefaultValue=false)] + public string Status { get; set; } + + /// + /// Total amount of the order, including all shipping expenses, tax and the price of items. + /// + /// Total amount of the order, including all shipping expenses, tax and the price of items. + [DataMember(Name="amount", EmitDefaultValue=false)] + public decimal? Amount { get; set; } + + /// + /// Gets or Sets Products + /// + [DataMember(Name="products", EmitDefaultValue=false)] + public List Products { get; set; } + + /// + /// Email of the contact, Mandatory if "phone" field is not passed in "billing" parameter. + /// + /// Email of the contact, Mandatory if "phone" field is not passed in "billing" parameter. + [DataMember(Name="email", EmitDefaultValue=false)] + public string Email { get; set; } + + /// + /// Gets or Sets Billing + /// + [DataMember(Name="billing", EmitDefaultValue=false)] + public OrderBilling Billing { get; set; } + + /// + /// Coupons applied to the order. Stored case insensitive. + /// + /// Coupons applied to the order. Stored case insensitive. + [DataMember(Name="coupons", EmitDefaultValue=false)] + public List Coupons { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Order {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); + sb.Append(" UpdatedAt: ").Append(UpdatedAt).Append("\n"); + sb.Append(" Status: ").Append(Status).Append("\n"); + sb.Append(" Amount: ").Append(Amount).Append("\n"); + sb.Append(" Products: ").Append(Products).Append("\n"); + sb.Append(" Email: ").Append(Email).Append("\n"); + sb.Append(" Billing: ").Append(Billing).Append("\n"); + sb.Append(" Coupons: ").Append(Coupons).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as Order); + } + + /// + /// Returns true if Order instances are equal + /// + /// Instance of Order to be compared + /// Boolean + public bool Equals(Order input) + { + if (input == null) + return false; + + return + ( + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) + ) && + ( + this.CreatedAt == input.CreatedAt || + (this.CreatedAt != null && + this.CreatedAt.Equals(input.CreatedAt)) + ) && + ( + this.UpdatedAt == input.UpdatedAt || + (this.UpdatedAt != null && + this.UpdatedAt.Equals(input.UpdatedAt)) + ) && + ( + this.Status == input.Status || + (this.Status != null && + this.Status.Equals(input.Status)) + ) && + ( + this.Amount == input.Amount || + (this.Amount != null && + this.Amount.Equals(input.Amount)) + ) && + ( + this.Products == input.Products || + this.Products != null && + this.Products.SequenceEqual(input.Products) + ) && + ( + this.Email == input.Email || + (this.Email != null && + this.Email.Equals(input.Email)) + ) && + ( + this.Billing == input.Billing || + (this.Billing != null && + this.Billing.Equals(input.Billing)) + ) && + ( + this.Coupons == input.Coupons || + this.Coupons != null && + this.Coupons.SequenceEqual(input.Coupons) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Id != null) + hashCode = hashCode * 59 + this.Id.GetHashCode(); + if (this.CreatedAt != null) + hashCode = hashCode * 59 + this.CreatedAt.GetHashCode(); + if (this.UpdatedAt != null) + hashCode = hashCode * 59 + this.UpdatedAt.GetHashCode(); + if (this.Status != null) + hashCode = hashCode * 59 + this.Status.GetHashCode(); + if (this.Amount != null) + hashCode = hashCode * 59 + this.Amount.GetHashCode(); + if (this.Products != null) + hashCode = hashCode * 59 + this.Products.GetHashCode(); + if (this.Email != null) + hashCode = hashCode * 59 + this.Email.GetHashCode(); + if (this.Billing != null) + hashCode = hashCode * 59 + this.Billing.GetHashCode(); + if (this.Coupons != null) + hashCode = hashCode * 59 + this.Coupons.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/OrderBatch.cs b/src/sib_api_v3_sdk/Model/OrderBatch.cs new file mode 100644 index 0000000..f0b1d01 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/OrderBatch.cs @@ -0,0 +1,143 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// OrderBatch + /// + [DataContract] + public partial class OrderBatch : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected OrderBatch() { } + /// + /// Initializes a new instance of the class. + /// + /// array of order objects (required). + /// Notify Url provided by client to get the status of batch request. + public OrderBatch(List orders = default(List), string notifyUrl = default(string)) + { + // to ensure "orders" is required (not null) + if (orders == null) + { + throw new InvalidDataException("orders is a required property for OrderBatch and cannot be null"); + } + else + { + this.Orders = orders; + } + this.NotifyUrl = notifyUrl; + } + + /// + /// array of order objects + /// + /// array of order objects + [DataMember(Name="orders", EmitDefaultValue=false)] + public List Orders { get; set; } + + /// + /// Notify Url provided by client to get the status of batch request + /// + /// Notify Url provided by client to get the status of batch request + [DataMember(Name="notifyUrl", EmitDefaultValue=false)] + public string NotifyUrl { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class OrderBatch {\n"); + sb.Append(" Orders: ").Append(Orders).Append("\n"); + sb.Append(" NotifyUrl: ").Append(NotifyUrl).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as OrderBatch); + } + + /// + /// Returns true if OrderBatch instances are equal + /// + /// Instance of OrderBatch to be compared + /// Boolean + public bool Equals(OrderBatch input) + { + if (input == null) + return false; + + return + ( + this.Orders == input.Orders || + this.Orders != null && + this.Orders.SequenceEqual(input.Orders) + ) && + ( + this.NotifyUrl == input.NotifyUrl || + (this.NotifyUrl != null && + this.NotifyUrl.Equals(input.NotifyUrl)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Orders != null) + hashCode = hashCode * 59 + this.Orders.GetHashCode(); + if (this.NotifyUrl != null) + hashCode = hashCode * 59 + this.NotifyUrl.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/OrderBilling.cs b/src/sib_api_v3_sdk/Model/OrderBilling.cs new file mode 100644 index 0000000..a4eba42 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/OrderBilling.cs @@ -0,0 +1,215 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// Billing details of an order. + /// + [DataContract] + public partial class OrderBilling : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + /// Full billing address.. + /// Exact city of the address.. + /// Billing country 2-letter ISO code.. + /// Phone number to contact for further details about the order, Mandatory if "email" field is not passed.. + /// Postcode for delivery and billing.. + /// How the visitor will pay for the item(s), e.g. paypal, check, etc.. + /// Exact region (state/province) for delivery and billing.. + public OrderBilling(string address = default(string), string city = default(string), string countryCode = default(string), string phone = default(string), string postCode = default(string), string paymentMethod = default(string), string region = default(string)) + { + this.Address = address; + this.City = city; + this.CountryCode = countryCode; + this.Phone = phone; + this.PostCode = postCode; + this.PaymentMethod = paymentMethod; + this.Region = region; + } + + /// + /// Full billing address. + /// + /// Full billing address. + [DataMember(Name="address", EmitDefaultValue=false)] + public string Address { get; set; } + + /// + /// Exact city of the address. + /// + /// Exact city of the address. + [DataMember(Name="city", EmitDefaultValue=false)] + public string City { get; set; } + + /// + /// Billing country 2-letter ISO code. + /// + /// Billing country 2-letter ISO code. + [DataMember(Name="countryCode", EmitDefaultValue=false)] + public string CountryCode { get; set; } + + /// + /// Phone number to contact for further details about the order, Mandatory if "email" field is not passed. + /// + /// Phone number to contact for further details about the order, Mandatory if "email" field is not passed. + [DataMember(Name="phone", EmitDefaultValue=false)] + public string Phone { get; set; } + + /// + /// Postcode for delivery and billing. + /// + /// Postcode for delivery and billing. + [DataMember(Name="postCode", EmitDefaultValue=false)] + public string PostCode { get; set; } + + /// + /// How the visitor will pay for the item(s), e.g. paypal, check, etc. + /// + /// How the visitor will pay for the item(s), e.g. paypal, check, etc. + [DataMember(Name="paymentMethod", EmitDefaultValue=false)] + public string PaymentMethod { get; set; } + + /// + /// Exact region (state/province) for delivery and billing. + /// + /// Exact region (state/province) for delivery and billing. + [DataMember(Name="region", EmitDefaultValue=false)] + public string Region { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class OrderBilling {\n"); + sb.Append(" Address: ").Append(Address).Append("\n"); + sb.Append(" City: ").Append(City).Append("\n"); + sb.Append(" CountryCode: ").Append(CountryCode).Append("\n"); + sb.Append(" Phone: ").Append(Phone).Append("\n"); + sb.Append(" PostCode: ").Append(PostCode).Append("\n"); + sb.Append(" PaymentMethod: ").Append(PaymentMethod).Append("\n"); + sb.Append(" Region: ").Append(Region).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as OrderBilling); + } + + /// + /// Returns true if OrderBilling instances are equal + /// + /// Instance of OrderBilling to be compared + /// Boolean + public bool Equals(OrderBilling input) + { + if (input == null) + return false; + + return + ( + this.Address == input.Address || + (this.Address != null && + this.Address.Equals(input.Address)) + ) && + ( + this.City == input.City || + (this.City != null && + this.City.Equals(input.City)) + ) && + ( + this.CountryCode == input.CountryCode || + (this.CountryCode != null && + this.CountryCode.Equals(input.CountryCode)) + ) && + ( + this.Phone == input.Phone || + (this.Phone != null && + this.Phone.Equals(input.Phone)) + ) && + ( + this.PostCode == input.PostCode || + (this.PostCode != null && + this.PostCode.Equals(input.PostCode)) + ) && + ( + this.PaymentMethod == input.PaymentMethod || + (this.PaymentMethod != null && + this.PaymentMethod.Equals(input.PaymentMethod)) + ) && + ( + this.Region == input.Region || + (this.Region != null && + this.Region.Equals(input.Region)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Address != null) + hashCode = hashCode * 59 + this.Address.GetHashCode(); + if (this.City != null) + hashCode = hashCode * 59 + this.City.GetHashCode(); + if (this.CountryCode != null) + hashCode = hashCode * 59 + this.CountryCode.GetHashCode(); + if (this.Phone != null) + hashCode = hashCode * 59 + this.Phone.GetHashCode(); + if (this.PostCode != null) + hashCode = hashCode * 59 + this.PostCode.GetHashCode(); + if (this.PaymentMethod != null) + hashCode = hashCode * 59 + this.PaymentMethod.GetHashCode(); + if (this.Region != null) + hashCode = hashCode * 59 + this.Region.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/OrderProducts.cs b/src/sib_api_v3_sdk/Model/OrderProducts.cs new file mode 100644 index 0000000..6e7d961 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/OrderProducts.cs @@ -0,0 +1,193 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// Details for the Products in an order. + /// + [DataContract] + public partial class OrderProducts : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected OrderProducts() { } + /// + /// Initializes a new instance of the class. + /// + /// ID of the product. (required). + /// How many pieces of the product the visitor has added to the cart. (required). + /// Product ID of the red color shirts.. + /// The price of a unit of product (required). + public OrderProducts(string productId = default(string), decimal? quantity = default(decimal?), string variantId = default(string), decimal? price = default(decimal?)) + { + // to ensure "productId" is required (not null) + if (productId == null) + { + throw new InvalidDataException("productId is a required property for OrderProducts and cannot be null"); + } + else + { + this.ProductId = productId; + } + // to ensure "quantity" is required (not null) + if (quantity == null) + { + throw new InvalidDataException("quantity is a required property for OrderProducts and cannot be null"); + } + else + { + this.Quantity = quantity; + } + // to ensure "price" is required (not null) + if (price == null) + { + throw new InvalidDataException("price is a required property for OrderProducts and cannot be null"); + } + else + { + this.Price = price; + } + this.VariantId = variantId; + } + + /// + /// ID of the product. + /// + /// ID of the product. + [DataMember(Name="productId", EmitDefaultValue=false)] + public string ProductId { get; set; } + + /// + /// How many pieces of the product the visitor has added to the cart. + /// + /// How many pieces of the product the visitor has added to the cart. + [DataMember(Name="quantity", EmitDefaultValue=false)] + public decimal? Quantity { get; set; } + + /// + /// Product ID of the red color shirts. + /// + /// Product ID of the red color shirts. + [DataMember(Name="variantId", EmitDefaultValue=false)] + public string VariantId { get; set; } + + /// + /// The price of a unit of product + /// + /// The price of a unit of product + [DataMember(Name="price", EmitDefaultValue=false)] + public decimal? Price { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class OrderProducts {\n"); + sb.Append(" ProductId: ").Append(ProductId).Append("\n"); + sb.Append(" Quantity: ").Append(Quantity).Append("\n"); + sb.Append(" VariantId: ").Append(VariantId).Append("\n"); + sb.Append(" Price: ").Append(Price).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as OrderProducts); + } + + /// + /// Returns true if OrderProducts instances are equal + /// + /// Instance of OrderProducts to be compared + /// Boolean + public bool Equals(OrderProducts input) + { + if (input == null) + return false; + + return + ( + this.ProductId == input.ProductId || + (this.ProductId != null && + this.ProductId.Equals(input.ProductId)) + ) && + ( + this.Quantity == input.Quantity || + (this.Quantity != null && + this.Quantity.Equals(input.Quantity)) + ) && + ( + this.VariantId == input.VariantId || + (this.VariantId != null && + this.VariantId.Equals(input.VariantId)) + ) && + ( + this.Price == input.Price || + (this.Price != null && + this.Price.Equals(input.Price)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.ProductId != null) + hashCode = hashCode * 59 + this.ProductId.GetHashCode(); + if (this.Quantity != null) + hashCode = hashCode * 59 + this.Quantity.GetHashCode(); + if (this.VariantId != null) + hashCode = hashCode * 59 + this.VariantId.GetHashCode(); + if (this.Price != null) + hashCode = hashCode * 59 + this.Price.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/Pipeline.cs b/src/sib_api_v3_sdk/Model/Pipeline.cs new file mode 100644 index 0000000..2e26415 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/Pipeline.cs @@ -0,0 +1,113 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// List of stages + /// + [DataContract] + public partial class Pipeline : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + /// List of stages. + public Pipeline(List stages = default(List)) + { + this.Stages = stages; + } + + /// + /// List of stages + /// + /// List of stages + [DataMember(Name="stages", EmitDefaultValue=false)] + public List Stages { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class Pipeline {\n"); + sb.Append(" Stages: ").Append(Stages).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as Pipeline); + } + + /// + /// Returns true if Pipeline instances are equal + /// + /// Instance of Pipeline to be compared + /// Boolean + public bool Equals(Pipeline input) + { + if (input == null) + return false; + + return + ( + this.Stages == input.Stages || + this.Stages != null && + this.Stages.SequenceEqual(input.Stages) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Stages != null) + hashCode = hashCode * 59 + this.Stages.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/PipelineStage.cs b/src/sib_api_v3_sdk/Model/PipelineStage.cs new file mode 100644 index 0000000..aff6615 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/PipelineStage.cs @@ -0,0 +1,130 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// List of stages + /// + [DataContract] + public partial class PipelineStage : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + /// Stage id. + /// Stage name. + public PipelineStage(string id = default(string), string name = default(string)) + { + this.Id = id; + this.Name = name; + } + + /// + /// Stage id + /// + /// Stage id + [DataMember(Name="id", EmitDefaultValue=false)] + public string Id { get; set; } + + /// + /// Stage name + /// + /// Stage name + [DataMember(Name="name", EmitDefaultValue=false)] + public string Name { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class PipelineStage {\n"); + sb.Append(" Id: ").Append(Id).Append("\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as PipelineStage); + } + + /// + /// Returns true if PipelineStage instances are equal + /// + /// Instance of PipelineStage to be compared + /// Boolean + public bool Equals(PipelineStage input) + { + if (input == null) + return false; + + return + ( + this.Id == input.Id || + (this.Id != null && + this.Id.Equals(input.Id)) + ) && + ( + this.Name == input.Name || + (this.Name != null && + this.Name.Equals(input.Name)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Id != null) + hashCode = hashCode * 59 + this.Id.GetHashCode(); + if (this.Name != null) + hashCode = hashCode * 59 + this.Name.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/ScheduleSmtpEmail.cs b/src/sib_api_v3_sdk/Model/ScheduleSmtpEmail.cs new file mode 100644 index 0000000..55749a5 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/ScheduleSmtpEmail.cs @@ -0,0 +1,146 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// ScheduleSmtpEmail + /// + [DataContract] + public partial class ScheduleSmtpEmail : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + /// Message ID of the transactional email scheduled. + /// messageIds. + /// Batch ID of the batch transactional email scheduled. + public ScheduleSmtpEmail(string messageId = default(string), List messageIds = default(List), string batchId = default(string)) + { + this.MessageId = messageId; + this.MessageIds = messageIds; + this.BatchId = batchId; + } + + /// + /// Message ID of the transactional email scheduled + /// + /// Message ID of the transactional email scheduled + [DataMember(Name="messageId", EmitDefaultValue=false)] + public string MessageId { get; set; } + + /// + /// Gets or Sets MessageIds + /// + [DataMember(Name="messageIds", EmitDefaultValue=false)] + public List MessageIds { get; set; } + + /// + /// Batch ID of the batch transactional email scheduled + /// + /// Batch ID of the batch transactional email scheduled + [DataMember(Name="batchId", EmitDefaultValue=false)] + public string BatchId { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class ScheduleSmtpEmail {\n"); + sb.Append(" MessageId: ").Append(MessageId).Append("\n"); + sb.Append(" MessageIds: ").Append(MessageIds).Append("\n"); + sb.Append(" BatchId: ").Append(BatchId).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as ScheduleSmtpEmail); + } + + /// + /// Returns true if ScheduleSmtpEmail instances are equal + /// + /// Instance of ScheduleSmtpEmail to be compared + /// Boolean + public bool Equals(ScheduleSmtpEmail input) + { + if (input == null) + return false; + + return + ( + this.MessageId == input.MessageId || + (this.MessageId != null && + this.MessageId.Equals(input.MessageId)) + ) && + ( + this.MessageIds == input.MessageIds || + this.MessageIds != null && + this.MessageIds.SequenceEqual(input.MessageIds) + ) && + ( + this.BatchId == input.BatchId || + (this.BatchId != null && + this.BatchId.Equals(input.BatchId)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.MessageId != null) + hashCode = hashCode * 59 + this.MessageId.GetHashCode(); + if (this.MessageIds != null) + hashCode = hashCode * 59 + this.MessageIds.GetHashCode(); + if (this.BatchId != null) + hashCode = hashCode * 59 + this.BatchId.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/SendSmtpEmail.cs b/src/sib_api_v3_sdk/Model/SendSmtpEmail.cs index eb7ea74..8e91fa3 100644 --- a/src/sib_api_v3_sdk/Model/SendSmtpEmail.cs +++ b/src/sib_api_v3_sdk/Model/SendSmtpEmail.cs @@ -39,13 +39,15 @@ public partial class SendSmtpEmail : IEquatable /// Plain Text body of the message ( Ignored if 'templateId' is passed ). /// Subject of the message. Mandatory if 'templateId' is not passed. /// replyTo. - /// Pass the absolute URL (no local file) or the base64 content of the attachment along with the attachment name (Mandatory if attachment content is passed). For example, `[{ "url ": "https://attachment.domain.com/myAttachmentFromUrl.jpg ", "name ": "myAttachmentFromUrl.jpg "}, { "content ": "base64 example content ", "name ": "myAttachmentFromBase64.jpg "}]`. Allowed extensions for attachment file: xlsx, xls, ods, docx, docm, doc, csv, pdf, txt, gif, jpg, jpeg, png, tif, tiff, rtf, bmp, cgm, css, shtml, html, htm, zip, xml, ppt, pptx, tar, ez, ics, mobi, msg, pub, eps, odt, mp3, m4a, m4v, wma, ogg, flac, wav, aif, aifc, aiff, mp4, mov, avi, mkv, mpeg, mpg, wmv, pkpass and xlsm ( If 'templateId' is passed and is in New Template Language format then both attachment url and content are accepted. If template is in Old template Language format, then 'attachment' is ignored ). - /// Pass the set of custom headers (not the standard headers) that shall be sent along the mail headers in the original email. 'sender.ip' header can be set (only for dedicated ip users) to mention the IP to be used for sending transactional emails. Headers are allowed in `This-Case-Only` (i.e. words separated by hyphen with first letter of each word in capital letter), they will be converted to such case styling if not in this format in the request payload. For example, `{"sender.ip":"1.2.3.4", "X-Mailin-custom":"some_custom_header","idempotencyKey":"abc-123"}`.. + /// Pass the absolute URL (no local file) or the base64 content of the attachment along with the attachment name (Mandatory if attachment content is passed). For example, `[{"url":"https://attachment.domain.com/myAttachmentFromUrl.jpg", "name":"myAttachmentFromUrl.jpg"}, {"content":"base64 example content", "name":"myAttachmentFromBase64.jpg"}]`. Allowed extensions for attachment file: xlsx, xls, ods, docx, docm, doc, csv, pdf, txt, gif, jpg, jpeg, png, tif, tiff, rtf, bmp, cgm, css, shtml, html, htm, zip, xml, ppt, pptx, tar, ez, ics, mobi, msg, pub, eps, odt, mp3, m4a, m4v, wma, ogg, flac, wav, aif, aifc, aiff, mp4, mov, avi, mkv, mpeg, mpg, wmv, pkpass and xlsm ( If 'templateId' is passed and is in New Template Language format then both attachment url and content are accepted. If template is in Old template Language format, then 'attachment' is ignored ). + /// Pass the set of custom headers (not the standard headers) that shall be sent along the mail headers in the original email. 'sender.ip' header can be set (only for dedicated ip users) to mention the IP to be used for sending transactional emails. Headers are allowed in `This-Case-Only` (i.e. words separated by hyphen with first letter of each word in capital letter), they will be converted to such case styling if not in this format in the request payload. For example, `{"sender.ip":"1.2.3.4", "X-Mailin-custom":"some_custom_header", "idempotencyKey":"abc-123"}`.. /// Id of the template.. - /// Pass the set of attributes to customize the template. For example, {"FNAME":"Joe","LNAME":"Doe"}. It's considered only if template is in New Template Language format.. + /// Pass the set of attributes to customize the template. For example, {"FNAME":"Joe", "LNAME":"Doe"}. It's considered only if template is in New Template Language format.. /// You can customize and send out multiple versions of a mail. templateId can be customized only if global parameter contains templateId. htmlContent and textContent can be customized only if any of the two, htmlContent or textContent, is present in global parameters. Some global parameters such as **to(mandatory), bcc, cc, replyTo, subject** can also be customized specific to each version. Total number of recipients in one API request must not exceed 2000. However, you can still pass upto 99 recipients maximum in one message version. The size of individual params in all the messageVersions shall not exceed 100 KB limit and that of cumulative params shall not exceed 1000 KB. You can follow this **step-by-step guide** on how to use **messageVersions** to batch send emails - https://developers.sendinblue.com/docs/batch-send-transactional-emails. /// Tag your emails to find them more easily. - public SendSmtpEmail(SendSmtpEmailSender sender = default(SendSmtpEmailSender), List to = default(List), List bcc = default(List), List cc = default(List), string htmlContent = default(string), string textContent = default(string), string subject = default(string), SendSmtpEmailReplyTo replyTo = default(SendSmtpEmailReplyTo), List attachment = default(List), Object headers = default(Object), long? templateId = default(long?), Object _params = default(Object), List messageVersions = default(List), List tags = default(List)) + /// UTC date-time on which the email has to schedule (YYYY-MM-DDTHH:mm:ss.SSSZ). Prefer to pass your timezone in date-time format for scheduling. There can be an expected delay of +5 minutes in scheduled email delivery. **Please note this feature is currently a public beta**.. + /// Valid UUIDv4 batch id to identify the scheduled batches transactional email. If not passed we will create a valid UUIDv4 batch id at our end.. + public SendSmtpEmail(SendSmtpEmailSender sender = default(SendSmtpEmailSender), List to = default(List), List bcc = default(List), List cc = default(List), string htmlContent = default(string), string textContent = default(string), string subject = default(string), SendSmtpEmailReplyTo replyTo = default(SendSmtpEmailReplyTo), List attachment = default(List), Object headers = default(Object), long? templateId = default(long?), Object _params = default(Object), List messageVersions = default(List), List tags = default(List), DateTime? scheduledAt = default(DateTime?), string batchId = default(string)) { this.Sender = sender; this.To = to; @@ -61,6 +63,8 @@ public partial class SendSmtpEmail : IEquatable this.Params = _params; this.MessageVersions = messageVersions; this.Tags = tags; + this.ScheduledAt = scheduledAt; + this.BatchId = batchId; } /// @@ -70,9 +74,9 @@ public partial class SendSmtpEmail : IEquatable public SendSmtpEmailSender Sender { get; set; } /// - /// Mandatory if messageVersions are not passed, ignored if messageVersions are passed. List of email addresses and names (optional) of the recipients. For example, [{"name":"Jimmy","email":"jimmy98@example.com"}, {"name":"Joe","email":"joe@example.com"}] + /// Mandatory if messageVersions are not passed, ignored if messageVersions are passed. List of email addresses and names (optional) of the recipients. For example, [{"name":"Jimmy", "email":"jimmy98@example.com"}, {"name":"Joe", "email":"joe@example.com"}] /// - /// Mandatory if messageVersions are not passed, ignored if messageVersions are passed. List of email addresses and names (optional) of the recipients. For example, [{"name":"Jimmy","email":"jimmy98@example.com"}, {"name":"Joe","email":"joe@example.com"}] + /// Mandatory if messageVersions are not passed, ignored if messageVersions are passed. List of email addresses and names (optional) of the recipients. For example, [{"name":"Jimmy", "email":"jimmy98@example.com"}, {"name":"Joe", "email":"joe@example.com"}] [DataMember(Name="to", EmitDefaultValue=false)] public List To { get; set; } @@ -118,16 +122,16 @@ public partial class SendSmtpEmail : IEquatable public SendSmtpEmailReplyTo ReplyTo { get; set; } /// - /// Pass the absolute URL (no local file) or the base64 content of the attachment along with the attachment name (Mandatory if attachment content is passed). For example, `[{"url":"https://attachment.domain.com/myAttachmentFromUrl.jpg","name":"myAttachmentFromUrl.jpg"}, {"content":"base64 example content","name":"myAttachmentFromBase64.jpg"}]`. Allowed extensions for attachment file: xlsx, xls, ods, docx, docm, doc, csv, pdf, txt, gif, jpg, jpeg, png, tif, tiff, rtf, bmp, cgm, css, shtml, html, htm, zip, xml, ppt, pptx, tar, ez, ics, mobi, msg, pub, eps, odt, mp3, m4a, m4v, wma, ogg, flac, wav, aif, aifc, aiff, mp4, mov, avi, mkv, mpeg, mpg, wmv, pkpass and xlsm ( If 'templateId' is passed and is in New Template Language format then both attachment url and content are accepted. If template is in Old template Language format, then 'attachment' is ignored ) + /// Pass the absolute URL (no local file) or the base64 content of the attachment along with the attachment name (Mandatory if attachment content is passed). For example, `[{"url":"https://attachment.domain.com/myAttachmentFromUrl.jpg", "name":"myAttachmentFromUrl.jpg"}, {"content":"base64 example content", "name":"myAttachmentFromBase64.jpg"}]`. Allowed extensions for attachment file: xlsx, xls, ods, docx, docm, doc, csv, pdf, txt, gif, jpg, jpeg, png, tif, tiff, rtf, bmp, cgm, css, shtml, html, htm, zip, xml, ppt, pptx, tar, ez, ics, mobi, msg, pub, eps, odt, mp3, m4a, m4v, wma, ogg, flac, wav, aif, aifc, aiff, mp4, mov, avi, mkv, mpeg, mpg, wmv, pkpass and xlsm ( If 'templateId' is passed and is in New Template Language format then both attachment url and content are accepted. If template is in Old template Language format, then 'attachment' is ignored ) /// - /// Pass the absolute URL (no local file) or the base64 content of the attachment along with the attachment name (Mandatory if attachment content is passed). For example, `[{ "url ": "https://attachment.domain.com/myAttachmentFromUrl.jpg ", "name ": "myAttachmentFromUrl.jpg "}, { "content ": "base64 example content ", "name ": "myAttachmentFromBase64.jpg "}]`. Allowed extensions for attachment file: xlsx, xls, ods, docx, docm, doc, csv, pdf, txt, gif, jpg, jpeg, png, tif, tiff, rtf, bmp, cgm, css, shtml, html, htm, zip, xml, ppt, pptx, tar, ez, ics, mobi, msg, pub, eps, odt, mp3, m4a, m4v, wma, ogg, flac, wav, aif, aifc, aiff, mp4, mov, avi, mkv, mpeg, mpg, wmv, pkpass and xlsm ( If 'templateId' is passed and is in New Template Language format then both attachment url and content are accepted. If template is in Old template Language format, then 'attachment' is ignored ) + /// Pass the absolute URL (no local file) or the base64 content of the attachment along with the attachment name (Mandatory if attachment content is passed). For example, `[{"url":"https://attachment.domain.com/myAttachmentFromUrl.jpg", "name":"myAttachmentFromUrl.jpg"}, {"content":"base64 example content", "name":"myAttachmentFromBase64.jpg"}]`. Allowed extensions for attachment file: xlsx, xls, ods, docx, docm, doc, csv, pdf, txt, gif, jpg, jpeg, png, tif, tiff, rtf, bmp, cgm, css, shtml, html, htm, zip, xml, ppt, pptx, tar, ez, ics, mobi, msg, pub, eps, odt, mp3, m4a, m4v, wma, ogg, flac, wav, aif, aifc, aiff, mp4, mov, avi, mkv, mpeg, mpg, wmv, pkpass and xlsm ( If 'templateId' is passed and is in New Template Language format then both attachment url and content are accepted. If template is in Old template Language format, then 'attachment' is ignored ) [DataMember(Name="attachment", EmitDefaultValue=false)] public List Attachment { get; set; } /// - /// Pass the set of custom headers (not the standard headers) that shall be sent along the mail headers in the original email. 'sender.ip' header can be set (only for dedicated ip users) to mention the IP to be used for sending transactional emails. Headers are allowed in `This-Case-Only` (i.e. words separated by hyphen with first letter of each word in capital letter), they will be converted to such case styling if not in this format in the request payload. For example, `{"sender.ip":"1.2.3.4","X-Mailin-custom":"some_custom_header","idempotencyKey":"abc-123"}`. + /// Pass the set of custom headers (not the standard headers) that shall be sent along the mail headers in the original email. 'sender.ip' header can be set (only for dedicated ip users) to mention the IP to be used for sending transactional emails. Headers are allowed in `This-Case-Only` (i.e. words separated by hyphen with first letter of each word in capital letter), they will be converted to such case styling if not in this format in the request payload. For example, `{"sender.ip":"1.2.3.4", "X-Mailin-custom":"some_custom_header", "idempotencyKey":"abc-123"}`. /// - /// Pass the set of custom headers (not the standard headers) that shall be sent along the mail headers in the original email. 'sender.ip' header can be set (only for dedicated ip users) to mention the IP to be used for sending transactional emails. Headers are allowed in `This-Case-Only` (i.e. words separated by hyphen with first letter of each word in capital letter), they will be converted to such case styling if not in this format in the request payload. For example, `{"sender.ip":"1.2.3.4","X-Mailin-custom":"some_custom_header","idempotencyKey":"abc-123"}`. + /// Pass the set of custom headers (not the standard headers) that shall be sent along the mail headers in the original email. 'sender.ip' header can be set (only for dedicated ip users) to mention the IP to be used for sending transactional emails. Headers are allowed in `This-Case-Only` (i.e. words separated by hyphen with first letter of each word in capital letter), they will be converted to such case styling if not in this format in the request payload. For example, `{"sender.ip":"1.2.3.4", "X-Mailin-custom":"some_custom_header", "idempotencyKey":"abc-123"}`. [DataMember(Name="headers", EmitDefaultValue=false)] public Object Headers { get; set; } @@ -139,9 +143,9 @@ public partial class SendSmtpEmail : IEquatable public long? TemplateId { get; set; } /// - /// Pass the set of attributes to customize the template. For example, { "FNAME ": "Joe ", "LNAME ": "Doe "}. It's considered only if template is in New Template Language format. + /// Pass the set of attributes to customize the template. For example, {"FNAME":"Joe", "LNAME":"Doe"}. It's considered only if template is in New Template Language format. /// - /// Pass the set of attributes to customize the template. For example, { "FNAME ": "Joe ", "LNAME ": "Doe "}. It's considered only if template is in New Template Language format. + /// Pass the set of attributes to customize the template. For example, {"FNAME":"Joe", "LNAME":"Doe"}. It's considered only if template is in New Template Language format. [DataMember(Name="params", EmitDefaultValue=false)] public Object Params { get; set; } @@ -159,6 +163,20 @@ public partial class SendSmtpEmail : IEquatable [DataMember(Name="tags", EmitDefaultValue=false)] public List Tags { get; set; } + /// + /// UTC date-time on which the email has to schedule (YYYY-MM-DDTHH:mm:ss.SSSZ). Prefer to pass your timezone in date-time format for scheduling. There can be an expected delay of +5 minutes in scheduled email delivery. **Please note this feature is currently a public beta**. + /// + /// UTC date-time on which the email has to schedule (YYYY-MM-DDTHH:mm:ss.SSSZ). Prefer to pass your timezone in date-time format for scheduling. There can be an expected delay of +5 minutes in scheduled email delivery. **Please note this feature is currently a public beta**. + [DataMember(Name="scheduledAt", EmitDefaultValue=false)] + public DateTime? ScheduledAt { get; set; } + + /// + /// Valid UUIDv4 batch id to identify the scheduled batches transactional email. If not passed we will create a valid UUIDv4 batch id at our end. + /// + /// Valid UUIDv4 batch id to identify the scheduled batches transactional email. If not passed we will create a valid UUIDv4 batch id at our end. + [DataMember(Name="batchId", EmitDefaultValue=false)] + public string BatchId { get; set; } + /// /// Returns the string presentation of the object /// @@ -181,6 +199,8 @@ public override string ToString() sb.Append(" Params: ").Append(Params).Append("\n"); sb.Append(" MessageVersions: ").Append(MessageVersions).Append("\n"); sb.Append(" Tags: ").Append(Tags).Append("\n"); + sb.Append(" ScheduledAt: ").Append(ScheduledAt).Append("\n"); + sb.Append(" BatchId: ").Append(BatchId).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -284,6 +304,16 @@ public bool Equals(SendSmtpEmail input) this.Tags == input.Tags || this.Tags != null && this.Tags.SequenceEqual(input.Tags) + ) && + ( + this.ScheduledAt == input.ScheduledAt || + (this.ScheduledAt != null && + this.ScheduledAt.Equals(input.ScheduledAt)) + ) && + ( + this.BatchId == input.BatchId || + (this.BatchId != null && + this.BatchId.Equals(input.BatchId)) ); } @@ -324,6 +354,10 @@ public override int GetHashCode() hashCode = hashCode * 59 + this.MessageVersions.GetHashCode(); if (this.Tags != null) hashCode = hashCode * 59 + this.Tags.GetHashCode(); + if (this.ScheduledAt != null) + hashCode = hashCode * 59 + this.ScheduledAt.GetHashCode(); + if (this.BatchId != null) + hashCode = hashCode * 59 + this.BatchId.GetHashCode(); return hashCode; } } diff --git a/src/sib_api_v3_sdk/Model/SendTransacSms.cs b/src/sib_api_v3_sdk/Model/SendTransacSms.cs index 99852c3..34701b0 100644 --- a/src/sib_api_v3_sdk/Model/SendTransacSms.cs +++ b/src/sib_api_v3_sdk/Model/SendTransacSms.cs @@ -70,7 +70,8 @@ protected SendTransacSms() { } /// Tag of the message. /// Webhook to call for each event triggered by the message (delivered etc.). /// Format of the message. It indicates whether the content should be treated as unicode or not. (default to false). - public SendTransacSms(string sender = default(string), string recipient = default(string), string content = default(string), TypeEnum? type = TypeEnum.Transactional, string tag = default(string), string webUrl = default(string), bool? unicodeEnabled = false) + /// A recognizable prefix will ensure your audience knows who you are. Recommended by U.S. carriers. This will be added as your Brand Name before the message content. **Prefer verifying maximum length of 160 characters including this prefix in message content to avoid multiple sending of same sms.**. + public SendTransacSms(string sender = default(string), string recipient = default(string), string content = default(string), TypeEnum? type = TypeEnum.Transactional, string tag = default(string), string webUrl = default(string), bool? unicodeEnabled = false, string organisationPrefix = default(string)) { // to ensure "sender" is required (not null) if (sender == null) @@ -119,6 +120,7 @@ protected SendTransacSms() { } { this.UnicodeEnabled = unicodeEnabled; } + this.OrganisationPrefix = organisationPrefix; } /// @@ -164,6 +166,13 @@ protected SendTransacSms() { } [DataMember(Name="unicodeEnabled", EmitDefaultValue=false)] public bool? UnicodeEnabled { get; set; } + /// + /// A recognizable prefix will ensure your audience knows who you are. Recommended by U.S. carriers. This will be added as your Brand Name before the message content. **Prefer verifying maximum length of 160 characters including this prefix in message content to avoid multiple sending of same sms.** + /// + /// A recognizable prefix will ensure your audience knows who you are. Recommended by U.S. carriers. This will be added as your Brand Name before the message content. **Prefer verifying maximum length of 160 characters including this prefix in message content to avoid multiple sending of same sms.** + [DataMember(Name="organisationPrefix", EmitDefaultValue=false)] + public string OrganisationPrefix { get; set; } + /// /// Returns the string presentation of the object /// @@ -179,6 +188,7 @@ public override string ToString() sb.Append(" Tag: ").Append(Tag).Append("\n"); sb.Append(" WebUrl: ").Append(WebUrl).Append("\n"); sb.Append(" UnicodeEnabled: ").Append(UnicodeEnabled).Append("\n"); + sb.Append(" OrganisationPrefix: ").Append(OrganisationPrefix).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -247,6 +257,11 @@ public bool Equals(SendTransacSms input) this.UnicodeEnabled == input.UnicodeEnabled || (this.UnicodeEnabled != null && this.UnicodeEnabled.Equals(input.UnicodeEnabled)) + ) && + ( + this.OrganisationPrefix == input.OrganisationPrefix || + (this.OrganisationPrefix != null && + this.OrganisationPrefix.Equals(input.OrganisationPrefix)) ); } @@ -273,6 +288,8 @@ public override int GetHashCode() hashCode = hashCode * 59 + this.WebUrl.GetHashCode(); if (this.UnicodeEnabled != null) hashCode = hashCode * 59 + this.UnicodeEnabled.GetHashCode(); + if (this.OrganisationPrefix != null) + hashCode = hashCode * 59 + this.OrganisationPrefix.GetHashCode(); return hashCode; } } diff --git a/src/sib_api_v3_sdk/Model/SubAccountDetailsResponsePlanInfoCredits.cs b/src/sib_api_v3_sdk/Model/SubAccountDetailsResponsePlanInfoCredits.cs index 50394a4..665c1fc 100644 --- a/src/sib_api_v3_sdk/Model/SubAccountDetailsResponsePlanInfoCredits.cs +++ b/src/sib_api_v3_sdk/Model/SubAccountDetailsResponsePlanInfoCredits.cs @@ -23,7 +23,7 @@ namespace sib_api_v3_sdk.Model { /// - /// Sub-account messaging quota details + /// Credits quota and remaining credits on the sub-account /// [DataContract] public partial class SubAccountDetailsResponsePlanInfoCredits : IEquatable @@ -31,7 +31,7 @@ public partial class SubAccountDetailsResponsePlanInfoCredits : IEquatable /// Initializes a new instance of the class. /// - /// Sms quota of the sub-account. + /// SMS credits remaining on the sub-account. /// emails. public SubAccountDetailsResponsePlanInfoCredits(long? sms = default(long?), SubAccountDetailsResponsePlanInfoCreditsEmails emails = default(SubAccountDetailsResponsePlanInfoCreditsEmails)) { @@ -40,9 +40,9 @@ public partial class SubAccountDetailsResponsePlanInfoCredits : IEquatable - /// Sms quota of the sub-account + /// SMS credits remaining on the sub-account /// - /// Sms quota of the sub-account + /// SMS credits remaining on the sub-account [DataMember(Name="sms", EmitDefaultValue=false)] public long? Sms { get; set; } diff --git a/src/sib_api_v3_sdk/Model/SubAccountDetailsResponsePlanInfoCreditsEmails.cs b/src/sib_api_v3_sdk/Model/SubAccountDetailsResponsePlanInfoCreditsEmails.cs index c638ccc..077513b 100644 --- a/src/sib_api_v3_sdk/Model/SubAccountDetailsResponsePlanInfoCreditsEmails.cs +++ b/src/sib_api_v3_sdk/Model/SubAccountDetailsResponsePlanInfoCreditsEmails.cs @@ -23,7 +23,7 @@ namespace sib_api_v3_sdk.Model { /// - /// Email quota details of the sub-account + /// Email credits remaining on the sub-account /// [DataContract] public partial class SubAccountDetailsResponsePlanInfoCreditsEmails : IEquatable diff --git a/src/sib_api_v3_sdk/Model/SubAccountDetailsResponsePlanInfoFeatures.cs b/src/sib_api_v3_sdk/Model/SubAccountDetailsResponsePlanInfoFeatures.cs index 7a709e5..2ed7f70 100644 --- a/src/sib_api_v3_sdk/Model/SubAccountDetailsResponsePlanInfoFeatures.cs +++ b/src/sib_api_v3_sdk/Model/SubAccountDetailsResponsePlanInfoFeatures.cs @@ -23,7 +23,7 @@ namespace sib_api_v3_sdk.Model { /// - /// Sub-account features and addons quota details + /// Features available on the sub-account /// [DataContract] public partial class SubAccountDetailsResponsePlanInfoFeatures : IEquatable diff --git a/src/sib_api_v3_sdk/Model/SubAccountsResponseSubAccounts.cs b/src/sib_api_v3_sdk/Model/SubAccountsResponseSubAccounts.cs index cda7c67..310da3c 100644 --- a/src/sib_api_v3_sdk/Model/SubAccountsResponseSubAccounts.cs +++ b/src/sib_api_v3_sdk/Model/SubAccountsResponseSubAccounts.cs @@ -36,10 +36,10 @@ protected SubAccountsResponseSubAccounts() { } /// /// Initializes a new instance of the class. /// - /// client id of sub-account organization (required). - /// Name of sub-account organization (required). - /// Whether organization is active or not (required). - /// timestamp when the organization was created (required). + /// id of the sub-account (required). + /// Name of the sub-account company (required). + /// Whether the sub-account is active or not (required). + /// Timestamp when the sub-account was created (required). public SubAccountsResponseSubAccounts(long? id = default(long?), string companyName = default(string), bool? active = default(bool?), long? createdAt = default(long?)) { // to ensure "id" is required (not null) @@ -81,30 +81,30 @@ protected SubAccountsResponseSubAccounts() { } } /// - /// client id of sub-account organization + /// id of the sub-account /// - /// client id of sub-account organization + /// id of the sub-account [DataMember(Name="id", EmitDefaultValue=false)] public long? Id { get; set; } /// - /// Name of sub-account organization + /// Name of the sub-account company /// - /// Name of sub-account organization + /// Name of the sub-account company [DataMember(Name="companyName", EmitDefaultValue=false)] public string CompanyName { get; set; } /// - /// Whether organization is active or not + /// Whether the sub-account is active or not /// - /// Whether organization is active or not + /// Whether the sub-account is active or not [DataMember(Name="active", EmitDefaultValue=false)] public bool? Active { get; set; } /// - /// timestamp when the organization was created + /// Timestamp when the sub-account was created /// - /// timestamp when the organization was created + /// Timestamp when the sub-account was created [DataMember(Name="createdAt", EmitDefaultValue=false)] public long? CreatedAt { get; set; } diff --git a/src/sib_api_v3_sdk/Model/Task.cs b/src/sib_api_v3_sdk/Model/Task.cs index 3b4e0ab..e84f03e 100644 --- a/src/sib_api_v3_sdk/Model/Task.cs +++ b/src/sib_api_v3_sdk/Model/Task.cs @@ -36,24 +36,13 @@ protected Task() { } /// /// Initializes a new instance of the class. /// - /// firstContact. /// Unique task id. /// Id for type of task e.g Call / Email / Meeting etc. (required). /// Name of task (required). /// Contact ids for contacts linked to this task. - /// Contact details for contacts linked to this task. /// Deal ids for deals a task is linked to. /// Companies ids for companies a task is linked to. - /// User id to whom task is assigned. - /// Task date/time (required). - /// Duration of task. - /// Notes added to a task. - /// Task marked as done. - /// Task reminder date/time for a task. - /// Task created date/time. - /// Task update date/time. - /// refs. - public Task(Contact firstContact = default(Contact), string id = default(string), string taskTypeId = default(string), string name = default(string), List contactsIds = default(List), List contacts = default(List), List dealsIds = default(List), List companiesIds = default(List), string assignToId = default(string), DateTime? date = default(DateTime?), int? duration = default(int?), string notes = default(string), bool? done = default(bool?), TaskReminder reminder = default(TaskReminder), DateTime? createdAt = default(DateTime?), DateTime? updatedAt = default(DateTime?), Object refs = default(Object)) + public Task(string id = default(string), string taskTypeId = default(string), string name = default(string), List contactsIds = default(List), List dealsIds = default(List), List companiesIds = default(List)) { // to ensure "taskTypeId" is required (not null) if (taskTypeId == null) @@ -73,37 +62,12 @@ protected Task() { } { this.Name = name; } - // to ensure "date" is required (not null) - if (date == null) - { - throw new InvalidDataException("date is a required property for Task and cannot be null"); - } - else - { - this.Date = date; - } - this.FirstContact = firstContact; this.Id = id; this.ContactsIds = contactsIds; - this.Contacts = contacts; this.DealsIds = dealsIds; this.CompaniesIds = companiesIds; - this.AssignToId = assignToId; - this.Duration = duration; - this.Notes = notes; - this.Done = done; - this.Reminder = reminder; - this.CreatedAt = createdAt; - this.UpdatedAt = updatedAt; - this.Refs = refs; } - /// - /// Gets or Sets FirstContact - /// - [DataMember(Name="firstContact", EmitDefaultValue=false)] - public Contact FirstContact { get; set; } - /// /// Unique task id /// @@ -132,13 +96,6 @@ protected Task() { } [DataMember(Name="contactsIds", EmitDefaultValue=false)] public List ContactsIds { get; set; } - /// - /// Contact details for contacts linked to this task - /// - /// Contact details for contacts linked to this task - [DataMember(Name="contacts", EmitDefaultValue=false)] - public List Contacts { get; set; } - /// /// Deal ids for deals a task is linked to /// @@ -153,68 +110,6 @@ protected Task() { } [DataMember(Name="companiesIds", EmitDefaultValue=false)] public List CompaniesIds { get; set; } - /// - /// User id to whom task is assigned - /// - /// User id to whom task is assigned - [DataMember(Name="assignToId", EmitDefaultValue=false)] - public string AssignToId { get; set; } - - /// - /// Task date/time - /// - /// Task date/time - [DataMember(Name="date", EmitDefaultValue=false)] - public DateTime? Date { get; set; } - - /// - /// Duration of task - /// - /// Duration of task - [DataMember(Name="duration", EmitDefaultValue=false)] - public int? Duration { get; set; } - - /// - /// Notes added to a task - /// - /// Notes added to a task - [DataMember(Name="notes", EmitDefaultValue=false)] - public string Notes { get; set; } - - /// - /// Task marked as done - /// - /// Task marked as done - [DataMember(Name="done", EmitDefaultValue=false)] - public bool? Done { get; set; } - - /// - /// Task reminder date/time for a task - /// - /// Task reminder date/time for a task - [DataMember(Name="reminder", EmitDefaultValue=false)] - public TaskReminder Reminder { get; set; } - - /// - /// Task created date/time - /// - /// Task created date/time - [DataMember(Name="createdAt", EmitDefaultValue=false)] - public DateTime? CreatedAt { get; set; } - - /// - /// Task update date/time - /// - /// Task update date/time - [DataMember(Name="updatedAt", EmitDefaultValue=false)] - public DateTime? UpdatedAt { get; set; } - - /// - /// Gets or Sets Refs - /// - [DataMember(Name="refs", EmitDefaultValue=false)] - public Object Refs { get; set; } - /// /// Returns the string presentation of the object /// @@ -223,23 +118,12 @@ public override string ToString() { var sb = new StringBuilder(); sb.Append("class Task {\n"); - sb.Append(" FirstContact: ").Append(FirstContact).Append("\n"); sb.Append(" Id: ").Append(Id).Append("\n"); sb.Append(" TaskTypeId: ").Append(TaskTypeId).Append("\n"); sb.Append(" Name: ").Append(Name).Append("\n"); sb.Append(" ContactsIds: ").Append(ContactsIds).Append("\n"); - sb.Append(" Contacts: ").Append(Contacts).Append("\n"); sb.Append(" DealsIds: ").Append(DealsIds).Append("\n"); sb.Append(" CompaniesIds: ").Append(CompaniesIds).Append("\n"); - sb.Append(" AssignToId: ").Append(AssignToId).Append("\n"); - sb.Append(" Date: ").Append(Date).Append("\n"); - sb.Append(" Duration: ").Append(Duration).Append("\n"); - sb.Append(" Notes: ").Append(Notes).Append("\n"); - sb.Append(" Done: ").Append(Done).Append("\n"); - sb.Append(" Reminder: ").Append(Reminder).Append("\n"); - sb.Append(" CreatedAt: ").Append(CreatedAt).Append("\n"); - sb.Append(" UpdatedAt: ").Append(UpdatedAt).Append("\n"); - sb.Append(" Refs: ").Append(Refs).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -274,11 +158,6 @@ public bool Equals(Task input) return false; return - ( - this.FirstContact == input.FirstContact || - (this.FirstContact != null && - this.FirstContact.Equals(input.FirstContact)) - ) && ( this.Id == input.Id || (this.Id != null && @@ -299,11 +178,6 @@ public bool Equals(Task input) this.ContactsIds != null && this.ContactsIds.SequenceEqual(input.ContactsIds) ) && - ( - this.Contacts == input.Contacts || - this.Contacts != null && - this.Contacts.SequenceEqual(input.Contacts) - ) && ( this.DealsIds == input.DealsIds || this.DealsIds != null && @@ -313,51 +187,6 @@ public bool Equals(Task input) this.CompaniesIds == input.CompaniesIds || this.CompaniesIds != null && this.CompaniesIds.SequenceEqual(input.CompaniesIds) - ) && - ( - this.AssignToId == input.AssignToId || - (this.AssignToId != null && - this.AssignToId.Equals(input.AssignToId)) - ) && - ( - this.Date == input.Date || - (this.Date != null && - this.Date.Equals(input.Date)) - ) && - ( - this.Duration == input.Duration || - (this.Duration != null && - this.Duration.Equals(input.Duration)) - ) && - ( - this.Notes == input.Notes || - (this.Notes != null && - this.Notes.Equals(input.Notes)) - ) && - ( - this.Done == input.Done || - (this.Done != null && - this.Done.Equals(input.Done)) - ) && - ( - this.Reminder == input.Reminder || - (this.Reminder != null && - this.Reminder.Equals(input.Reminder)) - ) && - ( - this.CreatedAt == input.CreatedAt || - (this.CreatedAt != null && - this.CreatedAt.Equals(input.CreatedAt)) - ) && - ( - this.UpdatedAt == input.UpdatedAt || - (this.UpdatedAt != null && - this.UpdatedAt.Equals(input.UpdatedAt)) - ) && - ( - this.Refs == input.Refs || - (this.Refs != null && - this.Refs.Equals(input.Refs)) ); } @@ -370,8 +199,6 @@ public override int GetHashCode() unchecked // Overflow is fine, just wrap { int hashCode = 41; - if (this.FirstContact != null) - hashCode = hashCode * 59 + this.FirstContact.GetHashCode(); if (this.Id != null) hashCode = hashCode * 59 + this.Id.GetHashCode(); if (this.TaskTypeId != null) @@ -380,30 +207,10 @@ public override int GetHashCode() hashCode = hashCode * 59 + this.Name.GetHashCode(); if (this.ContactsIds != null) hashCode = hashCode * 59 + this.ContactsIds.GetHashCode(); - if (this.Contacts != null) - hashCode = hashCode * 59 + this.Contacts.GetHashCode(); if (this.DealsIds != null) hashCode = hashCode * 59 + this.DealsIds.GetHashCode(); if (this.CompaniesIds != null) hashCode = hashCode * 59 + this.CompaniesIds.GetHashCode(); - if (this.AssignToId != null) - hashCode = hashCode * 59 + this.AssignToId.GetHashCode(); - if (this.Date != null) - hashCode = hashCode * 59 + this.Date.GetHashCode(); - if (this.Duration != null) - hashCode = hashCode * 59 + this.Duration.GetHashCode(); - if (this.Notes != null) - hashCode = hashCode * 59 + this.Notes.GetHashCode(); - if (this.Done != null) - hashCode = hashCode * 59 + this.Done.GetHashCode(); - if (this.Reminder != null) - hashCode = hashCode * 59 + this.Reminder.GetHashCode(); - if (this.CreatedAt != null) - hashCode = hashCode * 59 + this.CreatedAt.GetHashCode(); - if (this.UpdatedAt != null) - hashCode = hashCode * 59 + this.UpdatedAt.GetHashCode(); - if (this.Refs != null) - hashCode = hashCode * 59 + this.Refs.GetHashCode(); return hashCode; } } diff --git a/src/sib_api_v3_sdk/Model/TaskList.cs b/src/sib_api_v3_sdk/Model/TaskList.cs new file mode 100644 index 0000000..1b063f2 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/TaskList.cs @@ -0,0 +1,113 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// List of tasks + /// + [DataContract] + public partial class TaskList : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + /// List of tasks. + public TaskList(List items = default(List)) + { + this.Items = items; + } + + /// + /// List of tasks + /// + /// List of tasks + [DataMember(Name="items", EmitDefaultValue=false)] + public List Items { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class TaskList {\n"); + sb.Append(" Items: ").Append(Items).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as TaskList); + } + + /// + /// Returns true if TaskList instances are equal + /// + /// Instance of TaskList to be compared + /// Boolean + public bool Equals(TaskList input) + { + if (input == null) + return false; + + return + ( + this.Items == input.Items || + this.Items != null && + this.Items.SequenceEqual(input.Items) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Items != null) + hashCode = hashCode * 59 + this.Items.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/TaskReminder.cs b/src/sib_api_v3_sdk/Model/TaskReminder.cs index 8802449..cfd6c7c 100644 --- a/src/sib_api_v3_sdk/Model/TaskReminder.cs +++ b/src/sib_api_v3_sdk/Model/TaskReminder.cs @@ -77,7 +77,7 @@ protected TaskReminder() { } /// /// Value of time unit before reminder is to be sent (required). /// Unit of time before reminder is to be sent (required). - /// Type of task reminder (required). + /// Type of task reminder e.g email, push (required). public TaskReminder(int? value = default(int?), UnitEnum unit = default(UnitEnum), List types = default(List)) { // to ensure "value" is required (not null) @@ -118,9 +118,9 @@ protected TaskReminder() { } /// - /// Type of task reminder + /// Type of task reminder e.g email, push /// - /// Type of task reminder + /// Type of task reminder e.g email, push [DataMember(Name="types", EmitDefaultValue=false)] public List Types { get; set; } diff --git a/src/sib_api_v3_sdk/Model/TaskTypes.cs b/src/sib_api_v3_sdk/Model/TaskTypes.cs index eb5054b..0cf16c3 100644 --- a/src/sib_api_v3_sdk/Model/TaskTypes.cs +++ b/src/sib_api_v3_sdk/Model/TaskTypes.cs @@ -32,12 +32,10 @@ public partial class TaskTypes : IEquatable /// Initializes a new instance of the class. /// /// Id of task type. - /// Icon of task type. /// Title of task type. - public TaskTypes(string id = default(string), string icon = default(string), string title = default(string)) + public TaskTypes(string id = default(string), string title = default(string)) { this.Id = id; - this.Icon = icon; this.Title = title; } @@ -48,13 +46,6 @@ public partial class TaskTypes : IEquatable [DataMember(Name="id", EmitDefaultValue=false)] public string Id { get; set; } - /// - /// Icon of task type - /// - /// Icon of task type - [DataMember(Name="icon", EmitDefaultValue=false)] - public string Icon { get; set; } - /// /// Title of task type /// @@ -71,7 +62,6 @@ public override string ToString() var sb = new StringBuilder(); sb.Append("class TaskTypes {\n"); sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" Icon: ").Append(Icon).Append("\n"); sb.Append(" Title: ").Append(Title).Append("\n"); sb.Append("}\n"); return sb.ToString(); @@ -112,11 +102,6 @@ public bool Equals(TaskTypes input) (this.Id != null && this.Id.Equals(input.Id)) ) && - ( - this.Icon == input.Icon || - (this.Icon != null && - this.Icon.Equals(input.Icon)) - ) && ( this.Title == input.Title || (this.Title != null && @@ -135,8 +120,6 @@ public override int GetHashCode() int hashCode = 41; if (this.Id != null) hashCode = hashCode * 59 + this.Id.GetHashCode(); - if (this.Icon != null) - hashCode = hashCode * 59 + this.Icon.GetHashCode(); if (this.Title != null) hashCode = hashCode * 59 + this.Title.GetHashCode(); return hashCode; diff --git a/src/sib_api_v3_sdk/Model/UpdateBatchContactsContacts.cs b/src/sib_api_v3_sdk/Model/UpdateBatchContactsContacts.cs index 776ae72..8903de9 100644 --- a/src/sib_api_v3_sdk/Model/UpdateBatchContactsContacts.cs +++ b/src/sib_api_v3_sdk/Model/UpdateBatchContactsContacts.cs @@ -34,7 +34,7 @@ public partial class UpdateBatchContactsContacts : IEquatableEmail address of the user to be updated (For each operation only pass one of the supported contact identifiers. Email, id or sms). /// id of the user to be updated (For each operation only pass one of the supported contact identifiers. Email, id or sms). /// SMS of the user to be updated (For each operation only pass one of the supported contact identifiers. Email, id or sms). - /// Pass the set of attributes to be updated. **These attributes must be present in your account**. To update existing email address of a contact with the new one please pass EMAIL in attribtes. For example, **{ "EMAIL ": "newemail@domain.com ", "FNAME ": "Ellie ", "LNAME ": "Roger "}**. Keep in mind transactional attributes can be updated the same way as normal attributes. Mobile Number in **SMS** field should be passed with proper country code. For example: **{ "SMS ": "+91xxxxxxxxxx "} or { "SMS ": "0091xxxxxxxxxx "}** . + /// Pass the set of attributes to be updated. **These attributes must be present in your account**. To update existing email address of a contact with the new one please pass EMAIL in attribtes. For example, **{ "EMAIL":"newemail@domain.com", "FNAME":"Ellie", "LNAME":"Roger"}**. Keep in mind transactional attributes can be updated the same way as normal attributes. Mobile Number in **SMS** field should be passed with proper country code. For example: **{"SMS":"+91xxxxxxxxxx"} or {"SMS":"0091xxxxxxxxxx"}** . /// Set/unset this field to blacklist/allow the contact for emails (emailBlacklisted = true). /// Set/unset this field to blacklist/allow the contact for SMS (smsBlacklisted = true). /// Ids of the lists to add the contact to. @@ -75,9 +75,9 @@ public partial class UpdateBatchContactsContacts : IEquatable - /// Pass the set of attributes to be updated. **These attributes must be present in your account**. To update existing email address of a contact with the new one please pass EMAIL in attribtes. For example, **{ "EMAIL ": "newemail@domain.com ", "FNAME ": "Ellie ", "LNAME ": "Roger "}**. Keep in mind transactional attributes can be updated the same way as normal attributes. Mobile Number in **SMS** field should be passed with proper country code. For example: **{ "SMS ": "+91xxxxxxxxxx "} or { "SMS ": "0091xxxxxxxxxx "}** + /// Pass the set of attributes to be updated. **These attributes must be present in your account**. To update existing email address of a contact with the new one please pass EMAIL in attribtes. For example, **{ "EMAIL":"newemail@domain.com", "FNAME":"Ellie", "LNAME":"Roger"}**. Keep in mind transactional attributes can be updated the same way as normal attributes. Mobile Number in **SMS** field should be passed with proper country code. For example: **{"SMS":"+91xxxxxxxxxx"} or {"SMS":"0091xxxxxxxxxx"}** /// - /// Pass the set of attributes to be updated. **These attributes must be present in your account**. To update existing email address of a contact with the new one please pass EMAIL in attribtes. For example, **{ "EMAIL ": "newemail@domain.com ", "FNAME ": "Ellie ", "LNAME ": "Roger "}**. Keep in mind transactional attributes can be updated the same way as normal attributes. Mobile Number in **SMS** field should be passed with proper country code. For example: **{ "SMS ": "+91xxxxxxxxxx "} or { "SMS ": "0091xxxxxxxxxx "}** + /// Pass the set of attributes to be updated. **These attributes must be present in your account**. To update existing email address of a contact with the new one please pass EMAIL in attribtes. For example, **{ "EMAIL":"newemail@domain.com", "FNAME":"Ellie", "LNAME":"Roger"}**. Keep in mind transactional attributes can be updated the same way as normal attributes. Mobile Number in **SMS** field should be passed with proper country code. For example: **{"SMS":"+91xxxxxxxxxx"} or {"SMS":"0091xxxxxxxxxx"}** [DataMember(Name="attributes", EmitDefaultValue=false)] public Dictionary Attributes { get; set; } diff --git a/src/sib_api_v3_sdk/Model/UpdateContact.cs b/src/sib_api_v3_sdk/Model/UpdateContact.cs index 1a23bfa..4a96be1 100644 --- a/src/sib_api_v3_sdk/Model/UpdateContact.cs +++ b/src/sib_api_v3_sdk/Model/UpdateContact.cs @@ -31,7 +31,7 @@ public partial class UpdateContact : IEquatable /// /// Initializes a new instance of the class. /// - /// Pass the set of attributes to be updated. These attributes must be present in your account. To update existing email address of a contact with the new one please pass EMAIL in attribtes. For example, `{ "EMAIL":"newemail@domain.com", "FNAME":"Ellie", "LNAME":"Roger"}`. Keep in mind transactional attributes can be updated the same way as normal attributes. Mobile Number in "SMS" field should be passed with proper country code. For example {"SMS":"+91xxxxxxxxxx"} or {"SMS":"0091xxxxxxxxxx"}. + /// Pass the set of attributes to be updated. These attributes must be present in your account. To update existing email address of a contact with the new one please pass EMAIL in attributes. For example, `{ "EMAIL":"newemail@domain.com", "FNAME":"Ellie", "LNAME":"Roger"}`. The attribute's parameter should be passed in capital letter while updating a contact. Keep in mind transactional attributes can be updated the same way as normal attributes. Mobile Number in "SMS" field should be passed with proper country code. For example {"SMS":"+91xxxxxxxxxx"} or {"SMS":"0091xxxxxxxxxx"}. /// Set/unset this field to blacklist/allow the contact for emails (emailBlacklisted = true). /// Set/unset this field to blacklist/allow the contact for SMS (smsBlacklisted = true). /// Ids of the lists to add the contact to. @@ -48,9 +48,9 @@ public partial class UpdateContact : IEquatable } /// - /// Pass the set of attributes to be updated. These attributes must be present in your account. To update existing email address of a contact with the new one please pass EMAIL in attribtes. For example, `{ "EMAIL":"newemail@domain.com", "FNAME":"Ellie", "LNAME":"Roger"}`. Keep in mind transactional attributes can be updated the same way as normal attributes. Mobile Number in "SMS" field should be passed with proper country code. For example {"SMS":"+91xxxxxxxxxx"} or {"SMS":"0091xxxxxxxxxx"} + /// Pass the set of attributes to be updated. These attributes must be present in your account. To update existing email address of a contact with the new one please pass EMAIL in attributes. For example, `{ "EMAIL":"newemail@domain.com", "FNAME":"Ellie", "LNAME":"Roger"}`. The attribute's parameter should be passed in capital letter while updating a contact. Keep in mind transactional attributes can be updated the same way as normal attributes. Mobile Number in "SMS" field should be passed with proper country code. For example {"SMS":"+91xxxxxxxxxx"} or {"SMS":"0091xxxxxxxxxx"} /// - /// Pass the set of attributes to be updated. These attributes must be present in your account. To update existing email address of a contact with the new one please pass EMAIL in attribtes. For example, `{ "EMAIL":"newemail@domain.com", "FNAME":"Ellie", "LNAME":"Roger"}`. Keep in mind transactional attributes can be updated the same way as normal attributes. Mobile Number in "SMS" field should be passed with proper country code. For example {"SMS":"+91xxxxxxxxxx"} or {"SMS":"0091xxxxxxxxxx"} + /// Pass the set of attributes to be updated. These attributes must be present in your account. To update existing email address of a contact with the new one please pass EMAIL in attributes. For example, `{ "EMAIL":"newemail@domain.com", "FNAME":"Ellie", "LNAME":"Roger"}`. The attribute's parameter should be passed in capital letter while updating a contact. Keep in mind transactional attributes can be updated the same way as normal attributes. Mobile Number in "SMS" field should be passed with proper country code. For example {"SMS":"+91xxxxxxxxxx"} or {"SMS":"0091xxxxxxxxxx"} [DataMember(Name="attributes", EmitDefaultValue=false)] public Object Attributes { get; set; } diff --git a/src/sib_api_v3_sdk/Model/UpdateEmailCampaign.cs b/src/sib_api_v3_sdk/Model/UpdateEmailCampaign.cs index 4312783..a581e31 100644 --- a/src/sib_api_v3_sdk/Model/UpdateEmailCampaign.cs +++ b/src/sib_api_v3_sdk/Model/UpdateEmailCampaign.cs @@ -61,7 +61,7 @@ public enum WinnerCriteriaEnum /// Tag of the campaign. /// sender. /// Name of the campaign. - /// Body of the message (HTML version). REQUIRED if htmlUrl is empty. + /// Body of the message (HTML version). If the campaign is designed using Drag & Drop editor via HTML content, then the design page will not have Drag & Drop editor access for that campaign. REQUIRED if htmlUrl is empty. /// Url which contents the body of the email message. REQUIRED if htmlContent is empty. /// UTC date-time on which the campaign has to run (YYYY-MM-DDTHH:mm:ss.SSSZ). Prefer to pass your timezone in date-time format for accurate result. If sendAtBestTime is set to true, your campaign will be sent according to the date passed (ignoring the time part).. /// Subject of the campaign. @@ -86,7 +86,9 @@ public enum WinnerCriteriaEnum /// Available for dedicated ip clients. Set this to true if you wish to warm up your ip. (default to false). /// Set an initial quota greater than 1 for warming up your ip. We recommend you set a value of 3000.. /// Set a percentage increase rate for warming up your ip. We recommend you set the increase rate to 30% per day. If you want to send the same number of emails every day, set the daily increase value to 0%.. - public UpdateEmailCampaign(string tag = default(string), UpdateEmailCampaignSender sender = default(UpdateEmailCampaignSender), string name = default(string), string htmlContent = default(string), string htmlUrl = default(string), string scheduledAt = default(string), string subject = default(string), string replyTo = default(string), string toField = default(string), UpdateEmailCampaignRecipients recipients = default(UpdateEmailCampaignRecipients), string attachmentUrl = default(string), bool? inlineImageActivation = false, bool? mirrorActive = default(bool?), bool? recurring = false, string footer = default(string), string header = default(string), string utmCampaign = default(string), Object _params = default(Object), bool? sendAtBestTime = default(bool?), bool? abTesting = false, string subjectA = default(string), string subjectB = default(string), long? splitRule = default(long?), WinnerCriteriaEnum? winnerCriteria = default(WinnerCriteriaEnum?), long? winnerDelay = default(long?), bool? ipWarmupEnable = false, long? initialQuota = default(long?), long? increaseRate = default(long?)) + /// Enter an unsubscription page id. The page id is a 24 digit alphanumeric id that can be found in the URL when editing the page.. + /// Mandatory if templateId is used containing the {{ update_profile }} tag. Enter an update profile form id. The form id is a 24 digit alphanumeric id that can be found in the URL when editing the form.. + public UpdateEmailCampaign(string tag = default(string), UpdateEmailCampaignSender sender = default(UpdateEmailCampaignSender), string name = default(string), string htmlContent = default(string), string htmlUrl = default(string), string scheduledAt = default(string), string subject = default(string), string replyTo = default(string), string toField = default(string), UpdateEmailCampaignRecipients recipients = default(UpdateEmailCampaignRecipients), string attachmentUrl = default(string), bool? inlineImageActivation = false, bool? mirrorActive = default(bool?), bool? recurring = false, string footer = default(string), string header = default(string), string utmCampaign = default(string), Object _params = default(Object), bool? sendAtBestTime = default(bool?), bool? abTesting = false, string subjectA = default(string), string subjectB = default(string), long? splitRule = default(long?), WinnerCriteriaEnum? winnerCriteria = default(WinnerCriteriaEnum?), long? winnerDelay = default(long?), bool? ipWarmupEnable = false, long? initialQuota = default(long?), long? increaseRate = default(long?), string unsubscriptionPageId = default(string), string updateFormId = default(string)) { this.Tag = tag; this.Sender = sender; @@ -148,6 +150,8 @@ public enum WinnerCriteriaEnum } this.InitialQuota = initialQuota; this.IncreaseRate = increaseRate; + this.UnsubscriptionPageId = unsubscriptionPageId; + this.UpdateFormId = updateFormId; } /// @@ -171,9 +175,9 @@ public enum WinnerCriteriaEnum public string Name { get; set; } /// - /// Body of the message (HTML version). REQUIRED if htmlUrl is empty + /// Body of the message (HTML version). If the campaign is designed using Drag & Drop editor via HTML content, then the design page will not have Drag & Drop editor access for that campaign. REQUIRED if htmlUrl is empty /// - /// Body of the message (HTML version). REQUIRED if htmlUrl is empty + /// Body of the message (HTML version). If the campaign is designed using Drag & Drop editor via HTML content, then the design page will not have Drag & Drop editor access for that campaign. REQUIRED if htmlUrl is empty [DataMember(Name="htmlContent", EmitDefaultValue=false)] public string HtmlContent { get; set; } @@ -338,6 +342,20 @@ public enum WinnerCriteriaEnum [DataMember(Name="increaseRate", EmitDefaultValue=false)] public long? IncreaseRate { get; set; } + /// + /// Enter an unsubscription page id. The page id is a 24 digit alphanumeric id that can be found in the URL when editing the page. + /// + /// Enter an unsubscription page id. The page id is a 24 digit alphanumeric id that can be found in the URL when editing the page. + [DataMember(Name="unsubscriptionPageId", EmitDefaultValue=false)] + public string UnsubscriptionPageId { get; set; } + + /// + /// Mandatory if templateId is used containing the {{ update_profile }} tag. Enter an update profile form id. The form id is a 24 digit alphanumeric id that can be found in the URL when editing the form. + /// + /// Mandatory if templateId is used containing the {{ update_profile }} tag. Enter an update profile form id. The form id is a 24 digit alphanumeric id that can be found in the URL when editing the form. + [DataMember(Name="updateFormId", EmitDefaultValue=false)] + public string UpdateFormId { get; set; } + /// /// Returns the string presentation of the object /// @@ -374,6 +392,8 @@ public override string ToString() sb.Append(" IpWarmupEnable: ").Append(IpWarmupEnable).Append("\n"); sb.Append(" InitialQuota: ").Append(InitialQuota).Append("\n"); sb.Append(" IncreaseRate: ").Append(IncreaseRate).Append("\n"); + sb.Append(" UnsubscriptionPageId: ").Append(UnsubscriptionPageId).Append("\n"); + sb.Append(" UpdateFormId: ").Append(UpdateFormId).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -547,6 +567,16 @@ public bool Equals(UpdateEmailCampaign input) this.IncreaseRate == input.IncreaseRate || (this.IncreaseRate != null && this.IncreaseRate.Equals(input.IncreaseRate)) + ) && + ( + this.UnsubscriptionPageId == input.UnsubscriptionPageId || + (this.UnsubscriptionPageId != null && + this.UnsubscriptionPageId.Equals(input.UnsubscriptionPageId)) + ) && + ( + this.UpdateFormId == input.UpdateFormId || + (this.UpdateFormId != null && + this.UpdateFormId.Equals(input.UpdateFormId)) ); } @@ -615,6 +645,10 @@ public override int GetHashCode() hashCode = hashCode * 59 + this.InitialQuota.GetHashCode(); if (this.IncreaseRate != null) hashCode = hashCode * 59 + this.IncreaseRate.GetHashCode(); + if (this.UnsubscriptionPageId != null) + hashCode = hashCode * 59 + this.UnsubscriptionPageId.GetHashCode(); + if (this.UpdateFormId != null) + hashCode = hashCode * 59 + this.UpdateFormId.GetHashCode(); return hashCode; } } diff --git a/src/sib_api_v3_sdk/Model/UpdateEmailCampaignRecipients.cs b/src/sib_api_v3_sdk/Model/UpdateEmailCampaignRecipients.cs index 863ef03..c68afe1 100644 --- a/src/sib_api_v3_sdk/Model/UpdateEmailCampaignRecipients.cs +++ b/src/sib_api_v3_sdk/Model/UpdateEmailCampaignRecipients.cs @@ -23,7 +23,7 @@ namespace sib_api_v3_sdk.Model { /// - /// List ids to include/exclude from campaign + /// Segment ids and List ids to include/exclude from campaign /// [DataContract] public partial class UpdateEmailCampaignRecipients : IEquatable @@ -32,11 +32,13 @@ public partial class UpdateEmailCampaignRecipients : IEquatable class. /// /// List ids which have to be excluded from a campaign. - /// Lists Ids to send the campaign to. REQUIRED if already not present in campaign and scheduledAt is not empty. - public UpdateEmailCampaignRecipients(List exclusionListIds = default(List), List listIds = default(List)) + /// Lists Ids to send the campaign to. Campaign should only be updated with listIds if listIds were used to create it. REQUIRED if already not present in campaign and scheduledAt is not empty. + /// Mandatory if listIds are not used. Campaign should only be updated with segmentIds if segmentIds were used to create it. Segment ids to send the campaign to.. + public UpdateEmailCampaignRecipients(List exclusionListIds = default(List), List listIds = default(List), List segmentIds = default(List)) { this.ExclusionListIds = exclusionListIds; this.ListIds = listIds; + this.SegmentIds = segmentIds; } /// @@ -47,12 +49,19 @@ public partial class UpdateEmailCampaignRecipients : IEquatable ExclusionListIds { get; set; } /// - /// Lists Ids to send the campaign to. REQUIRED if already not present in campaign and scheduledAt is not empty + /// Lists Ids to send the campaign to. Campaign should only be updated with listIds if listIds were used to create it. REQUIRED if already not present in campaign and scheduledAt is not empty /// - /// Lists Ids to send the campaign to. REQUIRED if already not present in campaign and scheduledAt is not empty + /// Lists Ids to send the campaign to. Campaign should only be updated with listIds if listIds were used to create it. REQUIRED if already not present in campaign and scheduledAt is not empty [DataMember(Name="listIds", EmitDefaultValue=false)] public List ListIds { get; set; } + /// + /// Mandatory if listIds are not used. Campaign should only be updated with segmentIds if segmentIds were used to create it. Segment ids to send the campaign to. + /// + /// Mandatory if listIds are not used. Campaign should only be updated with segmentIds if segmentIds were used to create it. Segment ids to send the campaign to. + [DataMember(Name="segmentIds", EmitDefaultValue=false)] + public List SegmentIds { get; set; } + /// /// Returns the string presentation of the object /// @@ -63,6 +72,7 @@ public override string ToString() sb.Append("class UpdateEmailCampaignRecipients {\n"); sb.Append(" ExclusionListIds: ").Append(ExclusionListIds).Append("\n"); sb.Append(" ListIds: ").Append(ListIds).Append("\n"); + sb.Append(" SegmentIds: ").Append(SegmentIds).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -106,6 +116,11 @@ public bool Equals(UpdateEmailCampaignRecipients input) this.ListIds == input.ListIds || this.ListIds != null && this.ListIds.SequenceEqual(input.ListIds) + ) && + ( + this.SegmentIds == input.SegmentIds || + this.SegmentIds != null && + this.SegmentIds.SequenceEqual(input.SegmentIds) ); } @@ -122,6 +137,8 @@ public override int GetHashCode() hashCode = hashCode * 59 + this.ExclusionListIds.GetHashCode(); if (this.ListIds != null) hashCode = hashCode * 59 + this.ListIds.GetHashCode(); + if (this.SegmentIds != null) + hashCode = hashCode * 59 + this.SegmentIds.GetHashCode(); return hashCode; } } diff --git a/src/sib_api_v3_sdk/Model/UpdateSmsCampaign.cs b/src/sib_api_v3_sdk/Model/UpdateSmsCampaign.cs index 2ec437c..0276403 100644 --- a/src/sib_api_v3_sdk/Model/UpdateSmsCampaign.cs +++ b/src/sib_api_v3_sdk/Model/UpdateSmsCampaign.cs @@ -37,7 +37,9 @@ public partial class UpdateSmsCampaign : IEquatable /// recipients. /// UTC date-time on which the campaign has to run (YYYY-MM-DDTHH:mm:ss.SSSZ). Prefer to pass your timezone in date-time format for accurate result.. /// Format of the message. It indicates whether the content should be treated as unicode or not. (default to false). - public UpdateSmsCampaign(string name = default(string), string sender = default(string), string content = default(string), CreateSmsCampaignRecipients recipients = default(CreateSmsCampaignRecipients), string scheduledAt = default(string), bool? unicodeEnabled = false) + /// A recognizable prefix will ensure your audience knows who you are. Recommended by U.S. carriers. This will be added as your Brand Name before the message content. **Prefer verifying maximum length of 160 characters including this prefix in message content to avoid multiple sending of same sms.**. + /// Instructions to unsubscribe from future communications. Recommended by U.S. carriers. Must include **STOP** keyword. This will be added as instructions after the end of message content. **Prefer verifying maximum length of 160 characters including this instructions in message content to avoid multiple sending of same sms.**. + public UpdateSmsCampaign(string name = default(string), string sender = default(string), string content = default(string), CreateSmsCampaignRecipients recipients = default(CreateSmsCampaignRecipients), string scheduledAt = default(string), bool? unicodeEnabled = false, string organisationPrefix = default(string), string unsubscribeInstruction = default(string)) { this.Name = name; this.Sender = sender; @@ -53,6 +55,8 @@ public partial class UpdateSmsCampaign : IEquatable { this.UnicodeEnabled = unicodeEnabled; } + this.OrganisationPrefix = organisationPrefix; + this.UnsubscribeInstruction = unsubscribeInstruction; } /// @@ -96,6 +100,20 @@ public partial class UpdateSmsCampaign : IEquatable [DataMember(Name="unicodeEnabled", EmitDefaultValue=false)] public bool? UnicodeEnabled { get; set; } + /// + /// A recognizable prefix will ensure your audience knows who you are. Recommended by U.S. carriers. This will be added as your Brand Name before the message content. **Prefer verifying maximum length of 160 characters including this prefix in message content to avoid multiple sending of same sms.** + /// + /// A recognizable prefix will ensure your audience knows who you are. Recommended by U.S. carriers. This will be added as your Brand Name before the message content. **Prefer verifying maximum length of 160 characters including this prefix in message content to avoid multiple sending of same sms.** + [DataMember(Name="organisationPrefix", EmitDefaultValue=false)] + public string OrganisationPrefix { get; set; } + + /// + /// Instructions to unsubscribe from future communications. Recommended by U.S. carriers. Must include **STOP** keyword. This will be added as instructions after the end of message content. **Prefer verifying maximum length of 160 characters including this instructions in message content to avoid multiple sending of same sms.** + /// + /// Instructions to unsubscribe from future communications. Recommended by U.S. carriers. Must include **STOP** keyword. This will be added as instructions after the end of message content. **Prefer verifying maximum length of 160 characters including this instructions in message content to avoid multiple sending of same sms.** + [DataMember(Name="unsubscribeInstruction", EmitDefaultValue=false)] + public string UnsubscribeInstruction { get; set; } + /// /// Returns the string presentation of the object /// @@ -110,6 +128,8 @@ public override string ToString() sb.Append(" Recipients: ").Append(Recipients).Append("\n"); sb.Append(" ScheduledAt: ").Append(ScheduledAt).Append("\n"); sb.Append(" UnicodeEnabled: ").Append(UnicodeEnabled).Append("\n"); + sb.Append(" OrganisationPrefix: ").Append(OrganisationPrefix).Append("\n"); + sb.Append(" UnsubscribeInstruction: ").Append(UnsubscribeInstruction).Append("\n"); sb.Append("}\n"); return sb.ToString(); } @@ -173,6 +193,16 @@ public bool Equals(UpdateSmsCampaign input) this.UnicodeEnabled == input.UnicodeEnabled || (this.UnicodeEnabled != null && this.UnicodeEnabled.Equals(input.UnicodeEnabled)) + ) && + ( + this.OrganisationPrefix == input.OrganisationPrefix || + (this.OrganisationPrefix != null && + this.OrganisationPrefix.Equals(input.OrganisationPrefix)) + ) && + ( + this.UnsubscribeInstruction == input.UnsubscribeInstruction || + (this.UnsubscribeInstruction != null && + this.UnsubscribeInstruction.Equals(input.UnsubscribeInstruction)) ); } @@ -197,6 +227,10 @@ public override int GetHashCode() hashCode = hashCode * 59 + this.ScheduledAt.GetHashCode(); if (this.UnicodeEnabled != null) hashCode = hashCode * 59 + this.UnicodeEnabled.GetHashCode(); + if (this.OrganisationPrefix != null) + hashCode = hashCode * 59 + this.OrganisationPrefix.GetHashCode(); + if (this.UnsubscribeInstruction != null) + hashCode = hashCode * 59 + this.UnsubscribeInstruction.GetHashCode(); return hashCode; } } diff --git a/src/sib_api_v3_sdk/Model/UpdateSmtpTemplate.cs b/src/sib_api_v3_sdk/Model/UpdateSmtpTemplate.cs index c8aaa64..5fdedc0 100644 --- a/src/sib_api_v3_sdk/Model/UpdateSmtpTemplate.cs +++ b/src/sib_api_v3_sdk/Model/UpdateSmtpTemplate.cs @@ -34,7 +34,7 @@ public partial class UpdateSmtpTemplate : IEquatable /// Tag of the template. /// sender. /// Name of the template. - /// Required if htmlUrl is empty. Body of the message (HTML must have more than 10 characters). + /// Required if htmlUrl is empty. If the template is designed using Drag & Drop editor via HTML content, then the design page will not have Drag & Drop editor access for that template. Body of the message (HTML must have more than 10 characters). /// Required if htmlContent is empty. URL to the body of the email (HTML). /// Subject of the email. /// Email on which campaign recipients will be able to reply to. @@ -76,9 +76,9 @@ public partial class UpdateSmtpTemplate : IEquatable public string TemplateName { get; set; } /// - /// Required if htmlUrl is empty. Body of the message (HTML must have more than 10 characters) + /// Required if htmlUrl is empty. If the template is designed using Drag & Drop editor via HTML content, then the design page will not have Drag & Drop editor access for that template. Body of the message (HTML must have more than 10 characters) /// - /// Required if htmlUrl is empty. Body of the message (HTML must have more than 10 characters) + /// Required if htmlUrl is empty. If the template is designed using Drag & Drop editor via HTML content, then the design page will not have Drag & Drop editor access for that template. Body of the message (HTML must have more than 10 characters) [DataMember(Name="htmlContent", EmitDefaultValue=false)] public string HtmlContent { get; set; } diff --git a/src/sib_api_v3_sdk/Model/UploadImageModel.cs b/src/sib_api_v3_sdk/Model/UploadImageModel.cs new file mode 100644 index 0000000..3a27308 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/UploadImageModel.cs @@ -0,0 +1,126 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// UploadImageModel + /// + [DataContract] + public partial class UploadImageModel : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected UploadImageModel() { } + /// + /// Initializes a new instance of the class. + /// + /// URL of the image uploaded (required). + public UploadImageModel(string url = default(string)) + { + // to ensure "url" is required (not null) + if (url == null) + { + throw new InvalidDataException("url is a required property for UploadImageModel and cannot be null"); + } + else + { + this.Url = url; + } + } + + /// + /// URL of the image uploaded + /// + /// URL of the image uploaded + [DataMember(Name="url", EmitDefaultValue=false)] + public string Url { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class UploadImageModel {\n"); + sb.Append(" Url: ").Append(Url).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as UploadImageModel); + } + + /// + /// Returns true if UploadImageModel instances are equal + /// + /// Instance of UploadImageModel to be compared + /// Boolean + public bool Equals(UploadImageModel input) + { + if (input == null) + return false; + + return + ( + this.Url == input.Url || + (this.Url != null && + this.Url.Equals(input.Url)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Url != null) + hashCode = hashCode * 59 + this.Url.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/VariablesItems.cs b/src/sib_api_v3_sdk/Model/VariablesItems.cs new file mode 100644 index 0000000..1268f28 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/VariablesItems.cs @@ -0,0 +1,144 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// VariablesItems + /// + [DataContract] + public partial class VariablesItems : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + /// name. + /// _default. + /// datatype. + public VariablesItems(string name = default(string), string _default = default(string), string datatype = default(string)) + { + this.Name = name; + this.Default = _default; + this.Datatype = datatype; + } + + /// + /// Gets or Sets Name + /// + [DataMember(Name="name", EmitDefaultValue=false)] + public string Name { get; set; } + + /// + /// Gets or Sets Default + /// + [DataMember(Name="default", EmitDefaultValue=false)] + public string Default { get; set; } + + /// + /// Gets or Sets Datatype + /// + [DataMember(Name="datatype", EmitDefaultValue=false)] + public string Datatype { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class VariablesItems {\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" Default: ").Append(Default).Append("\n"); + sb.Append(" Datatype: ").Append(Datatype).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as VariablesItems); + } + + /// + /// Returns true if VariablesItems instances are equal + /// + /// Instance of VariablesItems to be compared + /// Boolean + public bool Equals(VariablesItems input) + { + if (input == null) + return false; + + return + ( + this.Name == input.Name || + (this.Name != null && + this.Name.Equals(input.Name)) + ) && + ( + this.Default == input.Default || + (this.Default != null && + this.Default.Equals(input.Default)) + ) && + ( + this.Datatype == input.Datatype || + (this.Datatype != null && + this.Datatype.Equals(input.Datatype)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Name != null) + hashCode = hashCode * 59 + this.Name.GetHashCode(); + if (this.Default != null) + hashCode = hashCode * 59 + this.Default.GetHashCode(); + if (this.Datatype != null) + hashCode = hashCode * 59 + this.Datatype.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/WhatsappCampStats.cs b/src/sib_api_v3_sdk/Model/WhatsappCampStats.cs new file mode 100644 index 0000000..189114e --- /dev/null +++ b/src/sib_api_v3_sdk/Model/WhatsappCampStats.cs @@ -0,0 +1,221 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// WhatsappCampStats + /// + [DataContract] + public partial class WhatsappCampStats : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + [JsonConstructorAttribute] + protected WhatsappCampStats() { } + /// + /// Initializes a new instance of the class. + /// + /// sent (required). + /// delivered (required). + /// read (required). + /// unsubscribe (required). + /// notSent (required). + public WhatsappCampStats(int? sent = default(int?), int? delivered = default(int?), int? read = default(int?), int? unsubscribe = default(int?), int? notSent = default(int?)) + { + // to ensure "sent" is required (not null) + if (sent == null) + { + throw new InvalidDataException("sent is a required property for WhatsappCampStats and cannot be null"); + } + else + { + this.Sent = sent; + } + // to ensure "delivered" is required (not null) + if (delivered == null) + { + throw new InvalidDataException("delivered is a required property for WhatsappCampStats and cannot be null"); + } + else + { + this.Delivered = delivered; + } + // to ensure "read" is required (not null) + if (read == null) + { + throw new InvalidDataException("read is a required property for WhatsappCampStats and cannot be null"); + } + else + { + this.Read = read; + } + // to ensure "unsubscribe" is required (not null) + if (unsubscribe == null) + { + throw new InvalidDataException("unsubscribe is a required property for WhatsappCampStats and cannot be null"); + } + else + { + this.Unsubscribe = unsubscribe; + } + // to ensure "notSent" is required (not null) + if (notSent == null) + { + throw new InvalidDataException("notSent is a required property for WhatsappCampStats and cannot be null"); + } + else + { + this.NotSent = notSent; + } + } + + /// + /// Gets or Sets Sent + /// + [DataMember(Name="sent", EmitDefaultValue=false)] + public int? Sent { get; set; } + + /// + /// Gets or Sets Delivered + /// + [DataMember(Name="delivered", EmitDefaultValue=false)] + public int? Delivered { get; set; } + + /// + /// Gets or Sets Read + /// + [DataMember(Name="read", EmitDefaultValue=false)] + public int? Read { get; set; } + + /// + /// Gets or Sets Unsubscribe + /// + [DataMember(Name="unsubscribe", EmitDefaultValue=false)] + public int? Unsubscribe { get; set; } + + /// + /// Gets or Sets NotSent + /// + [DataMember(Name="not_sent", EmitDefaultValue=false)] + public int? NotSent { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class WhatsappCampStats {\n"); + sb.Append(" Sent: ").Append(Sent).Append("\n"); + sb.Append(" Delivered: ").Append(Delivered).Append("\n"); + sb.Append(" Read: ").Append(Read).Append("\n"); + sb.Append(" Unsubscribe: ").Append(Unsubscribe).Append("\n"); + sb.Append(" NotSent: ").Append(NotSent).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as WhatsappCampStats); + } + + /// + /// Returns true if WhatsappCampStats instances are equal + /// + /// Instance of WhatsappCampStats to be compared + /// Boolean + public bool Equals(WhatsappCampStats input) + { + if (input == null) + return false; + + return + ( + this.Sent == input.Sent || + (this.Sent != null && + this.Sent.Equals(input.Sent)) + ) && + ( + this.Delivered == input.Delivered || + (this.Delivered != null && + this.Delivered.Equals(input.Delivered)) + ) && + ( + this.Read == input.Read || + (this.Read != null && + this.Read.Equals(input.Read)) + ) && + ( + this.Unsubscribe == input.Unsubscribe || + (this.Unsubscribe != null && + this.Unsubscribe.Equals(input.Unsubscribe)) + ) && + ( + this.NotSent == input.NotSent || + (this.NotSent != null && + this.NotSent.Equals(input.NotSent)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Sent != null) + hashCode = hashCode * 59 + this.Sent.GetHashCode(); + if (this.Delivered != null) + hashCode = hashCode * 59 + this.Delivered.GetHashCode(); + if (this.Read != null) + hashCode = hashCode * 59 + this.Read.GetHashCode(); + if (this.Unsubscribe != null) + hashCode = hashCode * 59 + this.Unsubscribe.GetHashCode(); + if (this.NotSent != null) + hashCode = hashCode * 59 + this.NotSent.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/Model/WhatsappCampTemplate.cs b/src/sib_api_v3_sdk/Model/WhatsappCampTemplate.cs new file mode 100644 index 0000000..4880d89 --- /dev/null +++ b/src/sib_api_v3_sdk/Model/WhatsappCampTemplate.cs @@ -0,0 +1,279 @@ +/* + * SendinBlue API + * + * SendinBlue provide a RESTFul API that can be used with any languages. With this API, you will be able to : - Manage your campaigns and get the statistics - Manage your contacts - Send transactional Emails and SMS - and much more... You can download our wrappers at https://github.com/orgs/sendinblue **Possible responses** | Code | Message | | :- -- -- -- -- -- --: | - -- -- -- -- -- -- | | 200 | OK. Successful Request | | 201 | OK. Successful Creation | | 202 | OK. Request accepted | | 204 | OK. Successful Update/Deletion | | 400 | Error. Bad Request | | 401 | Error. Authentication Needed | | 402 | Error. Not enough credit, plan upgrade needed | | 403 | Error. Permission denied | | 404 | Error. Object does not exist | | 405 | Error. Method not allowed | | 406 | Error. Not Acceptable | + * + * OpenAPI spec version: 3.0.0 + * Contact: contact@sendinblue.com + * Generated by: https://github.com/swagger-api/swagger-codegen.git + */ + +using System; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Runtime.Serialization; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using SwaggerDateConverter = sib_api_v3_sdk.Client.SwaggerDateConverter; + +namespace sib_api_v3_sdk.Model +{ + /// + /// WhatsappCampTemplate + /// + [DataContract] + public partial class WhatsappCampTemplate : IEquatable + { + /// + /// Initializes a new instance of the class. + /// + /// name of the template. + /// description of the template. + /// language of the template. + /// containsButton. + /// displayHeader. + /// type of header. + /// array of component item objects. + /// array of variables item object. + /// array of variables item variables. + /// buttonType. + /// hideFooter. + public WhatsappCampTemplate(string name = default(string), string category = default(string), string language = default(string), bool? containsButton = default(bool?), bool? displayHeader = default(bool?), string headerType = default(string), List components = default(List), List headerVariables = default(List), List bodyVariables = default(List), string buttonType = default(string), bool? hideFooter = default(bool?)) + { + this.Name = name; + this.Category = category; + this.Language = language; + this.ContainsButton = containsButton; + this.DisplayHeader = displayHeader; + this.HeaderType = headerType; + this.Components = components; + this.HeaderVariables = headerVariables; + this.BodyVariables = bodyVariables; + this.ButtonType = buttonType; + this.HideFooter = hideFooter; + } + + /// + /// name of the template + /// + /// name of the template + [DataMember(Name="name", EmitDefaultValue=false)] + public string Name { get; set; } + + /// + /// description of the template + /// + /// description of the template + [DataMember(Name="category", EmitDefaultValue=false)] + public string Category { get; set; } + + /// + /// language of the template + /// + /// language of the template + [DataMember(Name="language", EmitDefaultValue=false)] + public string Language { get; set; } + + /// + /// Gets or Sets ContainsButton + /// + [DataMember(Name="contains_button", EmitDefaultValue=false)] + public bool? ContainsButton { get; set; } + + /// + /// Gets or Sets DisplayHeader + /// + [DataMember(Name="display_header", EmitDefaultValue=false)] + public bool? DisplayHeader { get; set; } + + /// + /// type of header + /// + /// type of header + [DataMember(Name="header_type", EmitDefaultValue=false)] + public string HeaderType { get; set; } + + /// + /// array of component item objects + /// + /// array of component item objects + [DataMember(Name="components", EmitDefaultValue=false)] + public List Components { get; set; } + + /// + /// array of variables item object + /// + /// array of variables item object + [DataMember(Name="header_variables", EmitDefaultValue=false)] + public List HeaderVariables { get; set; } + + /// + /// array of variables item variables + /// + /// array of variables item variables + [DataMember(Name="body_variables", EmitDefaultValue=false)] + public List BodyVariables { get; set; } + + /// + /// Gets or Sets ButtonType + /// + [DataMember(Name="button_type", EmitDefaultValue=false)] + public string ButtonType { get; set; } + + /// + /// Gets or Sets HideFooter + /// + [DataMember(Name="hide_footer", EmitDefaultValue=false)] + public bool? HideFooter { get; set; } + + /// + /// Returns the string presentation of the object + /// + /// String presentation of the object + public override string ToString() + { + var sb = new StringBuilder(); + sb.Append("class WhatsappCampTemplate {\n"); + sb.Append(" Name: ").Append(Name).Append("\n"); + sb.Append(" Category: ").Append(Category).Append("\n"); + sb.Append(" Language: ").Append(Language).Append("\n"); + sb.Append(" ContainsButton: ").Append(ContainsButton).Append("\n"); + sb.Append(" DisplayHeader: ").Append(DisplayHeader).Append("\n"); + sb.Append(" HeaderType: ").Append(HeaderType).Append("\n"); + sb.Append(" Components: ").Append(Components).Append("\n"); + sb.Append(" HeaderVariables: ").Append(HeaderVariables).Append("\n"); + sb.Append(" BodyVariables: ").Append(BodyVariables).Append("\n"); + sb.Append(" ButtonType: ").Append(ButtonType).Append("\n"); + sb.Append(" HideFooter: ").Append(HideFooter).Append("\n"); + sb.Append("}\n"); + return sb.ToString(); + } + + /// + /// Returns the JSON string presentation of the object + /// + /// JSON string presentation of the object + public virtual string ToJson() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + + /// + /// Returns true if objects are equal + /// + /// Object to be compared + /// Boolean + public override bool Equals(object input) + { + return this.Equals(input as WhatsappCampTemplate); + } + + /// + /// Returns true if WhatsappCampTemplate instances are equal + /// + /// Instance of WhatsappCampTemplate to be compared + /// Boolean + public bool Equals(WhatsappCampTemplate input) + { + if (input == null) + return false; + + return + ( + this.Name == input.Name || + (this.Name != null && + this.Name.Equals(input.Name)) + ) && + ( + this.Category == input.Category || + (this.Category != null && + this.Category.Equals(input.Category)) + ) && + ( + this.Language == input.Language || + (this.Language != null && + this.Language.Equals(input.Language)) + ) && + ( + this.ContainsButton == input.ContainsButton || + (this.ContainsButton != null && + this.ContainsButton.Equals(input.ContainsButton)) + ) && + ( + this.DisplayHeader == input.DisplayHeader || + (this.DisplayHeader != null && + this.DisplayHeader.Equals(input.DisplayHeader)) + ) && + ( + this.HeaderType == input.HeaderType || + (this.HeaderType != null && + this.HeaderType.Equals(input.HeaderType)) + ) && + ( + this.Components == input.Components || + this.Components != null && + this.Components.SequenceEqual(input.Components) + ) && + ( + this.HeaderVariables == input.HeaderVariables || + this.HeaderVariables != null && + this.HeaderVariables.SequenceEqual(input.HeaderVariables) + ) && + ( + this.BodyVariables == input.BodyVariables || + this.BodyVariables != null && + this.BodyVariables.SequenceEqual(input.BodyVariables) + ) && + ( + this.ButtonType == input.ButtonType || + (this.ButtonType != null && + this.ButtonType.Equals(input.ButtonType)) + ) && + ( + this.HideFooter == input.HideFooter || + (this.HideFooter != null && + this.HideFooter.Equals(input.HideFooter)) + ); + } + + /// + /// Gets the hash code + /// + /// Hash code + public override int GetHashCode() + { + unchecked // Overflow is fine, just wrap + { + int hashCode = 41; + if (this.Name != null) + hashCode = hashCode * 59 + this.Name.GetHashCode(); + if (this.Category != null) + hashCode = hashCode * 59 + this.Category.GetHashCode(); + if (this.Language != null) + hashCode = hashCode * 59 + this.Language.GetHashCode(); + if (this.ContainsButton != null) + hashCode = hashCode * 59 + this.ContainsButton.GetHashCode(); + if (this.DisplayHeader != null) + hashCode = hashCode * 59 + this.DisplayHeader.GetHashCode(); + if (this.HeaderType != null) + hashCode = hashCode * 59 + this.HeaderType.GetHashCode(); + if (this.Components != null) + hashCode = hashCode * 59 + this.Components.GetHashCode(); + if (this.HeaderVariables != null) + hashCode = hashCode * 59 + this.HeaderVariables.GetHashCode(); + if (this.BodyVariables != null) + hashCode = hashCode * 59 + this.BodyVariables.GetHashCode(); + if (this.ButtonType != null) + hashCode = hashCode * 59 + this.ButtonType.GetHashCode(); + if (this.HideFooter != null) + hashCode = hashCode * 59 + this.HideFooter.GetHashCode(); + return hashCode; + } + } + } + +} diff --git a/src/sib_api_v3_sdk/sib_api_v3_sdk.csproj b/src/sib_api_v3_sdk/sib_api_v3_sdk.csproj index 6d0f165..b2fa0e0 100644 --- a/src/sib_api_v3_sdk/sib_api_v3_sdk.csproj +++ b/src/sib_api_v3_sdk/sib_api_v3_sdk.csproj @@ -14,7 +14,7 @@ true true sib_api_v3_sdk - 3.3.0 + 4.0.0 https://github.com/sendinblue/APIv3-csharp-library/blob/master/LICENSE.txt https://github.com/sendinblue/APIv3-csharp-library https://github.com/sendinblue/APIv3-csharp-library @@ -24,7 +24,8 @@ - + + From f920f8856a1f655dc3e71f34c3fdfdf96ec942e5 Mon Sep 17 00:00:00 2001 From: amitsendinblue Date: Mon, 13 Feb 2023 12:47:50 +0530 Subject: [PATCH 2/3] latest v4.0.0 --- .vs/sib_api_v3_sdk/DesignTimeBuild/.dtbcache | Bin 153734 -> 0 bytes .vs/sib_api_v3_sdk/v15/Server/sqlite3/db.lock | 0 .../v15/Server/sqlite3/storage.ide | Bin 4096 -> 0 bytes .../v15/Server/sqlite3/storage.ide-shm | Bin 32768 -> 0 bytes .../v15/Server/sqlite3/storage.ide-wal | Bin 1194832 -> 0 bytes docs/EmailCampaignsApi.md | 12 ++-- src/sib_api_v3_sdk/Api/EmailCampaignsApi.cs | 60 ++++++++++++------ .../Model/GetSmsEventReportEvents.cs | 8 ++- src/sib_api_v3_sdk/sib_api_v3_sdk.csproj | 6 +- 9 files changed, 58 insertions(+), 28 deletions(-) delete mode 100644 .vs/sib_api_v3_sdk/DesignTimeBuild/.dtbcache delete mode 100644 .vs/sib_api_v3_sdk/v15/Server/sqlite3/db.lock delete mode 100644 .vs/sib_api_v3_sdk/v15/Server/sqlite3/storage.ide delete mode 100644 .vs/sib_api_v3_sdk/v15/Server/sqlite3/storage.ide-shm delete mode 100644 .vs/sib_api_v3_sdk/v15/Server/sqlite3/storage.ide-wal diff --git a/.vs/sib_api_v3_sdk/DesignTimeBuild/.dtbcache b/.vs/sib_api_v3_sdk/DesignTimeBuild/.dtbcache deleted file mode 100644 index a85c9d4ee62352e2d8adf375651ecca339a1cde3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153734 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 diff --git a/.vs/sib_api_v3_sdk/v15/Server/sqlite3/db.lock b/.vs/sib_api_v3_sdk/v15/Server/sqlite3/db.lock deleted file mode 100644 index e69de29..0000000 diff --git a/.vs/sib_api_v3_sdk/v15/Server/sqlite3/storage.ide b/.vs/sib_api_v3_sdk/v15/Server/sqlite3/storage.ide deleted file mode 100644 index 56758a88b356f5fc284d2b23256cb2a77affde45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmWFz^vNtqRY=P(%1ta$FlG>7U}9o$P*7lCU|@t|AVoG{WYA-E8MMY1k!}PC+S?R4I`Lk#3L>MLI;31`7~SIu(_aQdAUFSQHlQ0;EGR zKt&~N@p+fsac2biotg8^9cR9G=HVXhKKFgk{hjmgd2igY@~Nz{K~$<#Ig0boUmPD? z{e66kgtm1y#veZ%v*}Rvc4x1z(0fCngt&md^|p$o@A(vU;oX1!<g3OQwvVwi5?2rR;LJY)0F31geATQWV`@H=><$0v+YrX96 zagY!4gMH3s+Iz|8lzhGgc&{K7g2GS)ib63c4ke%@Tmhw^G+YT+K^Z6u<-o2^1-Kfn zfotJ9xE^kRickqELlvkB)xf?-^10Z#-3T|q%}^a`KuxFxwc!@11Ghq5s0a0-0W^e0 z&={IPQ@9P9!R^o-T0l!^1+AeCw1sxi9y&lr=medi3v`7$pc{0D9?%o+gkEqL+zq|q z9_Ryop&#^z0Wc5-!C)8yL*ZT+2KT{mxE~&X5ik-)!Dtu*V__VOhY9c?JOmHJBk(9p zgh?YQcSvUtj!!PhF{06_nAMhvq1-^U& zJ^`PAPrxVO6YvT61bhNM0iS?Rz$f4n@Co`7>?>>1ne>sGm?JqI1h8X^z3C!fQw!fY5QBek`s(6!2H4^@X=UF44T40`w# z#h!`u?0(41zK9a+RcOU?<+(2UO()93?dkIHtFGMAHULDjhRVZ_$Yv0+h%7%Po7paU zPsks?gxK{G@BjO4+rAKfrDj7)NvZ85$ui0IDuiG4^AdiQ zlUv%(9j$UWx%<0m!?A4RPWY9Mtyra`wvS1cNw!NT{AwV#w0%dBto!8Qw&5uJDlfOR zZBtt1baMB1*M?)+eyQ*)1N+ljOKqn}mPxinD*S3Fx3o=Pk*wkJaNF$_epQrPJ}a9s zPVW95@_gH@7JfyuIk1h?cB*8VWc$;?uSRl9+i@4kx?dh{TkXQHN^;93vKbqd$HD#I zQ=V@-1;ejQa?5G5>1K0aV|l)9cZ_5`AP={Fj^S5jx#d#X%I|bXO8GdD9 zgKS$iXXd`_w|iV3eqJ_%h)rbK_L@erM##f$lWF)>MQ*uFHsdaPf5@#;h`mxA|M#Ko zkqy6cvVXa>)bO`$c6t65*>oe0k=ve3 z{G9?>7sZ=I@4~M~XmUX(*YqB3IM#023?k;1>4BLByM7 zd6jGya&k@k$n*EeW)Lw?;;#xRpO~#kiB38vNwtvYZ*6;^dn4ljrZ1%^+f& zEYFqA3{H}2C(nONHrWiyCaOP1HkW-%w%bbvg6zib8(^ULyl+05u9sSfh|?Xu}cd`ND4MmB?p zwPpEv*|gvM4ZjA;Ef2_M5V3$PFObblPLk><&rgs|H{!!`+q1G6M7%|oUyw~V;vl*0 zLD>u<7L?_MvYFY*-QP)`ze6_Nh>yr^&&g&Gv5qXSmrXa~V7cuf*$g5UlI2CRnZ?Q7 N-&vl&Q#ON$e*+HIFM7SbhCTk=b2~b zd1mIBXP%jN*q>qw-W;AW28*=xnOK*GZ!N;%v%C;jYVy)#@{A22xA2hx7 zQQgM1E!~N{-O0|jhVHx)e4FE#<#~B{m%~4vzN7un_XYg}{;%L!K4tyIK=n z`&zM5-r1Gd*OO>(O#jGNZmKHZT$Q)Eykc!tUfR3U+8f#uv+&L7Qj87c=I66gqk>u2 z-PzLKT+_ZgS!DT>vtdoNJeim`EgH_l&%_lC-3>KO6Z2ZyyA#cc&b*G!mbQk@gL!)s z2lEEo`%lp5IL>$4S&JPr!PMHQ}%~t zv}V^_3G|ou<4M4ifF}V@0-gjs33w9lB;ZNFlYl1yPXe9?D(ppRs##|u0rJ+u7De?9eMFTVgu#ryFj;7P!ffF}V@ z0-gjs33w9lB;ZNFlYl1yPXhn-5+HwzU-t_fIPkTrrH06>mL~yE0-gjs33w9lB;ZNFlYl1yPXe9RCvcs2Fd)8Zix@Ya z5+AUp+gp)r>}gB1t6TN94?+80z3ti2Z`OP90(oBE!RbSeb_hWZwOM7!o z`|f0s<$6WV-VrTN2G$MLG>(m(3F_y0nIlLn@dC8Q59;v(bLH}Ds^@O0_u>VPu^IB< zJPCLb@Fd_#z>|O{0Z#&+1Uw0N67VG8Nx+l9|4s?m;sx%l?7pS`ThHFyPrN{`r7B*$ zfJGSIpPmFf33w9lB;ZNFlYl1yPXe9~3h zzVRG)-JgE6mKOW|_$%~ic>JI7591%i-;2K$ekBx)`(2x zy~tUS9T6`4O8BgBBAgrgXXsFS;{j-b+vVs4Q(9_ zEzRv+l@;T+o4m(ciLY_&Q z@?MeXrf#q)(bbV`?@DZFZD^+`9tg9krMt`M47(SA`bNjp9n+aLpJ#TW?ltYZ&>NZ* z`c?Z8{nJ%(a7#~1Q+aoHL*pI_2kL@MPMim>${lkxVEml9XlJ}#b)cKtqKT9RWUI?S zcBmV&X+XnE4Gmb4Y^hAPqjHJ{lz@O+4X`1_ig_l#wxPYDIZ@LA)|VFn+2@#b3&O}k zo>^eFtI=}+zGe=_`343<_kZ7SA+W z+FffIO;_r=8@kaET3}3CTN?K!$gJ#|2}WuhGvbKGs2M!7XiG4du zn&>hfjeXkXCkdt?W#; zsRj##R!s&W=X#IfL7P62XLbyrT|xNx2_U@4u^a~m zJ~9t_idU6^k4!oSn>C4pWH#4~2VLiSngwhefenDCE$v-BySf@XTRLc>(Y2*3(P=LN zXQz(^*rCrtB6d=lsgD|iPEx*WbE2!;v^HHmtz?qdjs|DW6)X$dgi$K&M*w_+N4o8bDm*>r?!AHXhd|cQ3vIex z-rU@oXvRzwMiql5H8#n5uq#>j2b(*HXUgzWMQf4R9-FK^6-wFs9~RQXA@%U%>1wOp=KRLH{JhFz)5wP+18T{w{coOg=;7P!ffF}V@0-gjs33w9l zB;ZNFlYl1yPXhlH5*Wnt`J5$R0sA{tOUW6i#|v!zPQmIwhQ}`8;>(yow1r{`hQ?~5 ze~h-o{u=vw{JZg**cRb)vAd&}iYzOOuSJ&ze-mu=&x==t&JZT?HwMn-E)kP#Sa>aR zc7zX~9hemTIPh0K*SDB`-FK7!hw;0`hodusj|9v8zIZHDBt-ecfgVm4S2HgQPezUl zzZ%}nO%C{?Zw8*{-tbLeANQT@zbyXUV<`UFd;<%&%mCvBR-7bAm8=`T&j1Nj=JF-1 z>a8-j4B>F9s1c+b=Y%sLl@H;kv-Yk2W=9wDByQe-3Jyg zFn^~Yl{@EZ!1(j1o$QEVzE;y+n|s_AFED$nAkA@3vA=kMf+D`z z+V0uh+U`DMVjde~x3)=K?d^u~|39-csOxqwx z`Ob-D2b@ZJKw6m=FEGWO9%Mk8OtP~vV8#nfawoeiX!$ev9Ruk*80aR}3(_LzavVUX z0XVj#7Z4xDMw}ThkmpWMGlPv+zy`q6Kz8iM9TKENpNT{ULVYZCk}Ny?W88I;ENG)A z@-=MVTl=Fn3(`#IqUalRBpKC=Tk3kCAbQRScSf~8*j$=^W_&4QyufgG)6anu$f3bq zn>1SD1%|mB+Q%?4qfE)Cgn1uMPfX;Qlx@hatgR4;OZSe#X z9?LI7#{g*h;NH8j!%ydjeQb(C-$q@eX$#27spbu{jojV z(%6nzWvnDNJ{F9=9etX+EP7Y;is*spwrEwfC^|ao7vC4374Kqh7QZc?B{qxe#o6M} z$fuFtM6QY)9~m2dF?@b_ZI}z)A36{!3;sEHU2souRN#rg7XwxPPjT{~%|FrijPFan z1;Ts6Wx{g)9sUx2CHFCR3ws5-lN}3InS8#6(~XkRLbk~>`)fo%lnqc@Ehhq0RLlrF zTXywyC(!CUv8v#mH-y&7NfXaq%DXTG70IT9MWk#$SMF@_V`2 z>#8yIKz#;vr+ezKfaO0o+IbI_jN*zmvlkXiaUA=I{L8@b>gFmhOD9@hqg_EH2EmOltoupO?$hduj%XUF3a?7A@ z2NC3kAX77}9Kg&|#|cu|u>sarooid#_bNht=-5t8*9+2kCyas}MDN$vozl?Uj4)I> zo0Duu@EBrJNutMZ#A49}9>QrGni_Vs658&T=AKRj=_lJslpmsJ$K4=e1%%-m;iyUC zjQRaKteIWlRJSH~HMI6(>!(hqR+`|d4m2i|5bBi;jonEl`o9@-(7`S^OXrE*0*_?W z1rQ{qpCF<(-0M=}fH7)EI6R!MA$RPk!lGvTQKcXSoPdCf`fZ6_dy>h$+QBa7{56;c zJH^l@^6IfVcz=OQmHM1h^&@_4SjtpHW9>Aj4mv_pr!N}9-ecs2b|YpzyjK+s^Ro(g z8=Z<7SCNyBY7h@ORRxlVx(L*!<|+`oWVs-*PI;l(x5f#(2F|FVP60GO_J#&b5!#zI zR_3`8%gSUcogUO6?smhBZOW@7-Rh>DVQA=Rn~qVtgg@j|GL@TZwYog%Z2q+ub0*B2 z^y#O@1M>|xLbZ1hc?4ggO{AK%URXmB&}_Fk!_o{18KO@{@$l0QqiCSMEe$LC{&=|>=X}sX1f<8wf zCN8!-Q3x3973T6q`gfEk@XXRT#th?U+RCZ$QrfRl7X`ZhqgWiuPuE^GV2cOyQ?)m> zb?tF^e3e#W>zzi0{ge4x4aW9@eI;}HXdcsR<>;~PE%3p-V2awdHBw5OgX(wmxc=Zo zzFLDZ`d3vuZe=hgAM6HG$i^$6a*|S8yH>1=^Ak9&;Ym*CDZMCdHp6a>@#B$KUsr}- zM)|Rvv97r-(;jPqiD6@^n!eD+f6`F(V zT|@Y(9IXM={Xb&+a?*-SE{Q9t-FvMUHYf;<%HeN76T%Vdv$hGhu^?!t{%(5&UK;nB z)BEeFWiz}$xF=8H*K5!8ZjCDUntDGyjjzl2nnH?B0c#WKhx_vX!X*&4`UTF+zirsr zq5G~1vsW^+nI6Ws(HB7mfb)e~LEyj74rO}ccf|L^2gUA<9gLMke;>U%dR#OnKET{7 z9u#LqUW}X{SseZ#{GD)pcu?rR&}pIh!M_GC3vLRA0`~;k+3kTb{zv?0_=|jR_%7yW za4&M_b8Fa-L5zN!&d1cfV6C$o$CBCCw!p{i#Bf`2EXKsHj4!*}Vz;Yez+DyLs5I4q z`pDx9!#P?ks8s}xrn!30Qo5|xV+i;QPS-Vk0uy4T(~;OjRF+_b5pp^&FfnM=-PM4`#Md3o7?z~oN-!ytw+L*BZXtoRt zP&D8FDLxNB<)`o-Rz6Ebx?u-D*Pn|3&U;x_Zbj545sRl$_xxiu0cD=Ku0o68i?oD*ly0xbp zCyq7$8=LP=L(Q5}OU`t#+TJ=G1{pYT-8Y{5~<@Q&>7&o=0z&OYCJ+qa{U~^jc0So zroUBHQGS6HNcR`NEB>8$c|01sD|Sh2bFAFUJLu&d)cuWK-oXJTp)`Hu13a(b@Smv?Z0RtGEA^b-kQ-a#+#V82-py}X0FDG#TYchE)tIc?EtS)Y4( z2c6_9H#VQp0lmC~R?mUH=q9MnLHWGf6?j}nDK+d;dkm& zKOw)sI_7#Nep~#~cy)YA?Ah3DvF6y?m=JwGdTsQ}(duZS_?md1*dcBb!;!y5ZjM|L zIWDpaIR*ZNXn`+>mxjlMeiiz0=+w}j(AbbK_=DgD!S%rZ`d0dwllXbCA#muyP3CHGSlE=7D%I%my!R4Y-g)A5c^?_|RpEFsD1bbFv?xkUL* z0}f~)f8JomNYf-*lt{c&kFCd1Uh?q&cMovDR{Zug>s~ZILML zsq<{S{oxLikOq}*8L)2xt&}JYs`D(Xy?}Bhq(P+=v}#S1tOROMSdB#4P+jGq?S&PS zkQ6n4U9wx>)32?ky0bBqTjul<8a~dca!TCF3R!bQZWA3298}h5^Ocn$Z;1 z66G>=o{hFQQjUalruKBVO49S{!>$NW3mBUL3efN~)ZFdL26)B66^Z>VjkJzlbqEAp za3HTGsU5d*^Eof{?qc>Ak^bAK;lrv{rxT67^WK zlTHEgD#wP$0fp#(o|&LFFKs3+>j6RDF+mexWVb3w>u$BS6T7C%tt2ym<#ehVWPJqw ztM`G1D+Nje3U~0#Xf332QIcnzXQ$V`JiZ12**;YPdo8+-4;-p;HJl9#v8jCcgZN!%;O0ba_j3r&iP$3*#UDlp?|88Bewpz z5p7DgN<7atE7q!C+{2gXp6xvJs4p_4Tw3nN_`-XU!@JMbg7+kVVJ6->fK?e z-^OZ?bT_zWgB-CE>qM0&>k)I6bgk92EH^a$V${$l}Pj@N40x z!l#9|h5ey-LRW>(4ONC_A~WHW!7l{&1!o~^z|%NSuqUuG5b%HOzsi4_f0loc?{VK< zzWu&kzA?U_aF6gUVUtkGzsldmH}DI&*SI^lPVOXb2>TIx4f}a^5j&B21&j^&XOIMw zPeZSEWDNqWkjUgax6L+?;Sx+fT`Oe^69M`vi7daXwMjbE7zqOa8B@cLXbWOrC(&r& z%9>^d94TRFSfCCT>Ab9wXn=68!{H|I|0?XbHp161=0X(knWXry#$C9=cvD(JcvRGQiGlv~3ss8ox60UNsQU_j}JvAmq8>JIkt_HlU33pP>MUQOFB+mS_sRHey27fgj69d0J4+eRBL}L$WUoMm{zN$ zX*8g#qk>>;;fL$0N(eNPWG)8!%kRXa->pq6|VFv^D?w*sRZ!O z7X@U7%$zqgK_4s?tE<+!uH@$A-UOYesFaF;?%W6g-GVYkDpV&Jn#)q{q}W_R4iykt zC(Qv7R}+lPfD@$I7@W-bIklbWh=}H&0ns|C07RV+PJN?Bq*>5w)Lyx$cCj?mjb7_t zA1%$mNT&!Z!>Nl}X*w$4e5A{UH(HtoY8#SW%5DeN!E}Y>N~}bb3(;z&sjjGH!y771 zfg;*gUTBmmX)>rdw;t&@>Or8LMP(nKgf%@bkETC~(^ zE2Iga<6QaEV5UlWJhKJFwf?RhWYd?V`u`!p9TMG(I?u8F9SHVNX&lVRIteuq02r{dimOEUR1mpaU&Cn4wjF{`sZC#iDkui4#+L@=9i705j9?zoXzdE$!s z8v4izSJgJN;{3E#kaoDj&`p-sZM5bvT{9WP_#@YCt{5x5XDUtdLt#GS=T^8rm}{9` zQlBnp6r}3UL=Nja679+yg}pu~GZn6AX!{=Qw-bU?>-=yS`b~eWWsSe$A&bvEasFqT zXWiWyx~yVC2Wi8(`N>Bo`Ls>G2KUNv04tNGM3b@hWUJjBjI~xcZMw*O`*=Z`=c=){VAs|XvYCyp7X^yota!zQx6O6xn{+&&jmHXOptn9)^2qD0O3VQzdUSom zbOSTDwg^&P->R6!%WO<1)M)o!>x^1NVKp=-x-fWRxyt;@q6Pp#OvcraRb2>v30S+=FxbR!yuZ9nXi^8Kr4~M=T+8$aK{4n@R@S@>iH3`=o{YgH=S+0fqA(5OmnWr_v7^N{9VKshM}243GbH+QP5C6~vX zv~7G7X}EMox!ltLa}sN= zb>^&yqoi)-s381l?MQoxn&T2=MGEK`Yo#ubb3PBn7I-GOu+)izNVK^P>_yT(Hz$#_ zZ;z8YV2af)VU1iSwNftO*&rpsx^q+92jm2)JzLPDVcF`WHjs5Sk?q6NGDK>HVXJ{< z!%Q3NG37F!Dv8cPxiD;LIHRPKdmR=v4nnP!T3q&keLWaiG%t<;H(J`Gj@P{_i!Mz*A}`K z4VB(4HG++ej?JNCLZhW!kVeMIqaynTSJKFa7n4rHv1ZI$bg$}iiH=wK9M{tVfo1j} zT59WlfzNlnwP4vB@Al9o1qDcZAHSJ>Jia?VD)#f(DY5a1&eZW=n=@(FtEP=|9z#bM8NRPd=Uz5D zoN5d!d%BQdTBCpz&)U^-b;p8X!`w3Oxyyl^9*)c0?amjg;q=O*!CZhlfD7CRviH0~ z4@^h7)_0Faqy+?k(@(1iDf)4Lm0y{c_! z$DWcBC111xR}njxCYnfF=aa-v0EnYoHdQuE5MZ!l-LE$+o+am*{zkP}?TpjaJCdL*3TU}C-mJ;`@vxH93Q(sk}; zVAP(reJE3vzvjMOZHUyaIqqh2DtG$AOlgoWVGNq!QgFr+Pj3&fwgv0b!L&Bj{Q~bU zop#MrUmy3)Fc-r;gvN#uiQN#v%;?nqAf7hx$pBlPRgIfw)JD0qF~tHFf-6aUTZ zM&?6*t?zB0#9kvl=o=wC5DaqLgdSlGvIKmMuj9kq?Sbm}b@A=-5H}=tN9^R-M0gku zxmy#vv)q~1DYoSg>U)wqli05}iMqgB?q+CNu?h1hdjx5t^C@ap%=FncIR+09p>G5# z8NuCLL-h&kE5clv@>zcRjw9v+V%nSXLkXFX1B|-)6K@+MVVy)hPdar3)?iodUZ8`GB`Y_q=$AwP%vauQV!}(y+FAa4gtjn0YFK~D6YoK(fDkbhlSbf@LZuBz$ zapx53wI|K8fmay8-6~)0dbZq2RLO(xJdz4)*icg1gK$m}KhF&G9$%b=S#V4Zw$?d_ zkLTS@clG*U=0+$1chg-$F@k&44S42LceXwa3QQe#Y00cS5vsBsyT+a0!NwI_Fs%pG zTC$7KDaX1{dnid{XV5K&rn!7*rxN{ZMD9fR(n#(uGb-K|<| zRmC);p>a=}8W23yy+RvZ7gc1gSuRMt+ZH8p_qaPeLNzm-kjJ|_ck65o$IQb*JWY3Z*3g2bMPrj|Mu{e8Z+GW+)F9J? z)7i=JQ@A**slwSN1d10Hm9B9&&&_~n@!+xFhvp5T^||gB_*G8c6=N@3db@g#;5H_H zas0&ikk~(Bx5lnSmVxEbzeQh)UKBkuI#&FHc$IjTxKx~ka|GXwY>zAq|2h0Z_}p-J zxF9?N=LoJ1tqn~Iz7YIzurs(lm>cv59thkN*b$iPf7*Ygf2lv_d&u{F-%ek-@JHcM z;WWe(4CO!J@8Q3Xn1UMaWA0_{Ty7sXh<$_o3VRA$$c|y2WNsr~v;B-nA^2#XnwU)+ zV-(*Tq_;XnF-OjGHD&}GoIYo%xEWEPg-}-O^G70-UsJTOi|oXxtq|Gfe{#)LLkxtwY#Pp zp*1NALvmj8%xI%i2tuOtc)@%zFrORs7)R3umv<#%7QmOb)1sQymzpH?ylOH+5w8rlfPwhHtLw8Q`@uj zGCFBjo7(2Ej>c|WuUGM^>&O{YAqrZmGDG7gbe(59MyD3T@Y|dL7OzZgY7xjdpI&6co0wXNvqZM1y}c}(Qwu=U`B|cVU~^OR zp=DZF`Gy8Kb=sR%VOFQ+fuNHUmn6(gNW)Wewb_WOE{7g<>I3h{R9l|IEMaKQ#~yE)RY!{$_lv?_$2y zR}tG7o9Vwfmdn;e|HB2MF9|!NH?yOo7X+61c13pymBPFHnCSXwN$`Zglk6YaGo$(J z1yP^)Yw+r6eP?CN3s zOfGF?WGlFhOpu5U;`2Gnbc$U&f-m7Rj6&?vvHTLwX230@5W9F1zsCNw_o%@xBpx#v zWp+MMHMuv`o1I(8H*yZl99znzm@rjrPm73?BziFMNklr6=CCuk=Sh4;e4>9kmYF%b zX$-$eN9^UUo5EKxzUnwXfhtAfg*jobp2IhA17DG_n}_gI>HFr{N_HF-snyU?NAZs- zEm<{zuL64ZMJaon-bH%F84aJsAFnlf+PcRQE2~E!52LoSbp&mjV@PlT6KBD&W`uIk z)A30i6O<55NMW(YgzEmc=CkUcev0>P*{SXr%ugi{GuPB^>ai$MIxPU1*GKaUs6f*b zYv3RI3lfU?EJL*N1N27L4o1y(UmjnnH#7|yyU2UB@n`1vuJg1#Guu3aM-_0OV;^EXB zzCh`Ibc$Z74V4}+^&5iFnWiWEsV-@>sJv6x24%{kNJLBac9uy!-Eqk7)(us9#N&x1 z<}3~)wtfn~-XgbbaV&$##8Ok5ENOod!?B_Kbfe;^B$Wlp?4~s?3DOo^?59R1AX7u= zyBrCocOV1H^wMu_m;2w;ht*ce;)`JZHI84#Wj*)Id_+RZWTU_j^Ea~BdaTf2Or^8B z4OMZ_+kXn4&je6&t#{Y$X}~FJ{m$Jjovl>EACN^!J9*3eLFFOiQCa49u@1$U*66m& z)|a+B(oiEL=Ql(6>8$^yX;5Tr`rOhi^1tN^cbs-d{;pO?_hP!lwLwJc+N>zH58Kw(~dJB&(?>iT+Ni zj|#5LXi>I&JYT65*-W6m5?DQ)FVdbHT?b#=G?rh++H8cvi{@}TeK0>+=@3R3+jG>Q z=|O4V8pSVQO$%-)7w`+oGMkT7o-Ou@YI9Q=pR{~EZT!>CE|w%Xqi=>LEu?WtQ%<%0 zS`~GImKi(j%00KtnF@Q>a-$K}Qj60k<15;f3Vcl>iP@ehQ3>I3e7U{Y78o#1H;x7( zRq@&wKSBEvS&jWV@9I#2l6r+$ZJlm6wFX#9y;Ki&)q3gA^Y|)Oo5U!iSo+@k$rJe+ z{ROSlsE0Y%B~H=iETej>pn2Z&2vq?#B8khujXO@5d&o3urRvhgaz!|EAx(?4DT2o5 z!}JAxWCNqNs}-2<(j26djP~VVm9B9`6bIV$vjdtd>UWZ@2ra2 z=UL)4BXN5AW}MFlRpanZu`=JucwrCoAgLy-qHbF7{S%4lv>~F8^D-;Qf~UQ%jVQ#- z&C~fUmd9xmDy_Y#lQCD4L`|T~Co_iR@+I_=?m^KHN1Q=DkIKz^QJ5c0=4+KQ%h0Pw zq#G*5oI?si-^}n9*xHO0)vt2-gcO!VbaDzs;wx>i#$P3U`pJW~Q8|=KEkKSB7J+%r;(X zrm|Wl51vy8WhSIiG8}b_NMISJG;3w@*f~!QlLc;q4A)(a+DB~TwndTaWOCv;&#uxp z>IfO`ym{!1n7gQN8u|NI%jD8?9$JwRY>o`KUINwc&oO4?xowci>*su1&k2ojGMs{y z8R95v+S}DkIx_hNooCYN19G+u7hxl~)Y?`b>lKTl&B2Vh85x6eHb|nXEUr2+D%9C(oJ($!cBg^D`kl@|8KsAIsc_KDxfoQI;RFi5N z)=lyR5OKaq+b8I7IS*SIm~Ut`+?>=HS|wA8P3Kz~8K6pKq}CjGf*o@1(aE3PGNs@A z3={0=ga*k-(K(eEH|B~JGG*sXE~Y{ z<9a5S&3c(qa=O}N&4QRK4>z}H%*g~Asz!E~h*PVQ4QrGUtt(IJyyzb z5OlsF)e9&p$6%*4)kaO0$x#41w^JrUjx4J88CvF(B%^9M0%Rw17h?}C4QaX@=9wMl z#8|cImIb$EVtBk90@X#1?e4(PC&@u1NrjGS)whjyN(7{mdw#1N024)yndldIr0hrZ zq1JQL+@CeF4@8}8i(*Y%pBZbAERg+cY)tmFcdJX^QGMVUXH2cKp}%TFQsXRT_EZOaLpBX3KJ@_#zdGu|KW$P`k5YC*QP1q9k) zO^OnMIP_D?6u zs!~vEVaFPt>c)gkm1&dauBvGQkyWWK5OF?X%K(*=>V%O`Q#6pMPVEB;=SIFaQf{gP zvO;gvrnlxSwjZ6H6u`QP>b-2WZ_ z>HgLJ;lAJcZsNYgZpBH1A;Ld}=h!^qK4dREU)U=w;r=a*6e9fJ*bn$0@mKR-}=`iZqeLZnFcIlamqfX?e>`~HS;gDGW&D#nM0n& zYMOnJT%AaEr@K1YACucheXcn#*n1Z8r_i??+CCz9m$r>&vpqCMuy=AJ++5|Stpl~4 z))+sY7*luV*xwQ{J0*3@V{hZilwF0Ajz+xi~u zPJr*U>zSIO{8+VbfPLl$a@*2NSb_GmH(AyL##T7q{t~s~j0d z&GmAvcl8SWvf3IPmZj}UdlA6KDW}$)gJqtDv1iWX_YFiv(xTGXX><5SYN-CIq~Bh1 zpoHH$koT=OLJCEE^FY31E*56Z;CBq<8<68f+9k_c0ld&o8>ZG5(r!}RrJL1W_ad&M zopI|oEx||Bmzb-yEgD03X;;4(?hJN>*2A;C2{hKI32iWB@>ZS(K( zh@7E`$#{m*&b+LvDce)!>aFdx@2s<9xtI&Mc|-Y`wnr$7S-Dr^@08wj8wHQ(FlJod zY<;$3iHK5Wqd138^-~VPG7o6&pKi<8F1PyeA2)E2>;60HpfwVmN^&FWeofsam2ELt(SI8e%bQ4@<+ zocYoxc9J$OXm8<*>@3;{HLku`+0fXXR02Qt(5trV!I_ImcB-}=pd`t5*rSy@8<`JqynLjSb4m7P zpLskHty^_8N7e0fIJU=KCMRta7-l@W9mW>_BFkF}0d9`g!Fy(%)m&2g7 zWmjiI=fV1}&c?K4BQSoXg@YXNFG-0BzDu%PtXiKC7T zp?HD0{7X#y#`rn$W3VtWJ8u0?Z3fzl$flB{}{ulih_)qhTz9)TMz8YUp z_*l4HXy*S7V&0D@0Z#&-u>>Z_CnHEDZ8DM;k+oZHf#=c5ezQwwM6tYwXZFrsSG5_l zT*ZMgOUn$hWItRPMx>ZI4TV)bPHqNw3n~}ZD>1?K*lj9eMoJ!sl;ktTgI-M!;{YeHE?QT__}qUhMr zNEzufXe-Gw5u_CstvR_yj4AB zYVMj;$dpvW$-+#X1)>p6kcskU9NX?Ea&xm>2TIP5ZTAB^Q{KcgCuEFY&JYlKg1iw- zEORX0f#Qqu2H3;OO||OIz#@6Qv)nbb8E$-gsEj-q1(3AOo>$3~3B$Q+r{m!EX)v#z=4^Vl-BeF)W0ZmtiB?H=6d6gRQWJ=Ne3u?Yz zt_C&d;RH5$+7PG6$fQxHMnme(CxkHfw9=KXje8SKy61SiOsO==9QVcnK*wd|(x6*p zjlH;XnX+d%$)I9rx`8oXM!t+HplWhXi@=98H_DVeW2)mS^@TZJMkb9a(|o2)3KXi8 zQo}jbzA$4la%<#U_AZyplvBe=Xp1U93&bE9*)*nVJ2I+?ST0iv4JW8%BWw`!Wn|4b z1rjt|=~>R-_jX91EK@Fx9d4S-Ik8-sGHei^V7N5&Zs^L;=8zD){WD(Hc<`PCJPCLb z@Fd_#z>~m#l?0Ggoprt~hMANW=JvL`T^ImlIy1=L;_e;*f-@t&v_COZWTWo3Gwpa< zu8l8X2Y9e6Z>5DdFtx}vPnr+KbfvIKcYC9#p9RF_jXMC*0)rDu_{Ht+66~8WkWIqf zO|HPuGx*Q@@g(3$z>|O{0Z#&+ z1Uw0N67VG8Nx+kUCjn0ao&^3YBru4@A^5uPPFyHLN8yUt-=kU~s+#T>xad!_X8rVp z=cb04XOUmvW`+xKO#CMbXhwzxclRtaul5v-oY?ZP+ZX7iWt@BcDco z6S*pKd}M6+#qjyzwP7xFf9OD{EcoZ(b-_KsQGq7{Ukp_FKlR_?Z}U&|J>&b5Z-MZh zaG9{2e}}(>Ux~X6Z((<`W5FszM>zWqu4I1=Psc3h9vBtX2&;lCXQw+auo=tBp6klx zT9IrzSVVrepDgBGxRU7W_;zwYw?+r~p|o5uN}^*Ba8(z!QWje|?O9FuKxcOK6MrUdGB=?M|p@435#HUlKO z0^71(kc!;aR`->v0fpo-HBa+Cb(|pK{N=*>@(nfnO9~phki@g2px+Z+0|+N%A98o} zG7~gJFxshKT|MYrpDo4x@f!sx-$}(ayzI&1KXiIHR7XT~9s)3g2#9|98X76^xj6JqjtJbY<+F6@t=xL&Am+*(2 zm@ATuag>66azOL1hK`n<`%89qHSNXOIGm5`#-x2$Pj^D&f%%3Tq1w9$(yx|i6DeC3 zHn!WGVOf$3d@_okr@gMmADerxH&N0FbxNj%CaYoJO4K=7!fPq5gEl?y*`=|82NmWQ zGo~M4MU$xY1u|;qQAP?46G`s%vr@w-@q=D$T0(uPg3MuJ__8sMk7JxK{ z?%A-G6U?QQx=1b5^&iC|Lf~;WPGh z%HfgWEfUKMrl?mWTg(}9DP4)6en&s$9;AzG)FPvQrDY4*U<%oI1yoK_YO6M~t`+O( znlFFy`jWF9_1$Lsx|>=uIez zbqH^zmP46sJQgTd4GPV{^)5;)VoP|;UQSv;MQZJgWYX-F)b7333mX&!Yu-`z2=!Up zgj5S2rjfF5YT4~$8){>0$zTBf%(Z{SiJlK zE$w^hY>1a%U?4jyUVZ^DzrcXE;rh-mz|t~Aj~AHq?JrN6bJ=Sf>Nc)z=}zSBPIk66 zbmx^YgBXrumgnW+RSy3~;h+BF!ykhF0smLiCjn0ao&-DzcoOg=;7P!ffF}V@0-gkpu>>SO5XhZ6m6fWx8+PFuv1DUU z8?HQ|w8cfX55dY!Rppzj@-~-OtgXtMXnQs>Z(1~*ho6b`y_%+pc`fbTiRMISUPot3 z8?xQ!?M)oaYfpCPwfD5P&a%8aF>e~H97g!gNpf>_}5=hjYTnHF5eb)aisD^{O7 z8+y8v%IBRnT04tuAN}YULFydMd?2?VpOqrYcPwG?JE<;~&w^HwE$eDFZmG(vS+}BU zd)`FL3(6NJ<|W&0r4y$qtvqr12F{;5b0)h(X)=x1uEf5cL_5MWRo3;7yiI0l52v*^ zv?XTY)#*}<4dmv7_eKTN!iwcj#93H7qUA|%>1XPOsyG`v6V%VMbV{w&=+*^V=No>3 zK}$EEQ})yQze0=sK>T@nG$Q`b_=oWi;_t=ZioX(nKKe%VlBgVA5}hu-Dn2B(i!~w> zc`tHSWJiPxzk)jp6XD#@KSPH?g~7LiKM(E=E)V=A@Lb@WKsRn86mTZsQvY1P;JeXx zmT!?SPk2>$LO3F{3i*P_-@u>259eOzzRsn%McgFzHTE$!#h%QDaAD#x`zb(L(+1NK zt41|aoR2MVQZ0s?awp|Ht#lj_J#YfUkq}k8RMT|!f$%CygX;E9O&ii+BtM;Q@eKjI zlCqsf9M{SYl7sZ7MRmPGGOH-bsgvx&6e!mlW*8Ek&Y_(+Gl>%zUrD)6onKGg3#Swb zPy4?Y9zj-=RomzcyD8VHlQjM629ensX^Cg`{L<-kW+Bb#PVn422TZ1${!XOSr{#_t zbHMmHNQYX4xAlZ3T2NdyB|&wb+`Ko?@KQqqY@u(fN!*U4^Q_<50f$e49*|b1Wei(28HAkcK?bBzlOQ`A14#MS zdT?_R)mfYGN_JV$rcdOV9Ruh)Abk7;5MJcC(FO)SGEYqsuf)#UuMu1`9(0}SDd=Vb z8%JOR;3+MGcE)Q=Pag}gL!X62210$*7<7^>@uh1=gEQv}mIZCXC|uaFi6+#@;HAdx z*0j-`fa?;cXoF1MNDy>>Uq|1d`6FOd`@E0=-EvDVC_6W*{lOLt$MiGfOBF4xt=a)! zgexOzi+0I(=70<5)6anu$Qg#gT@5BT%pB-e4+UN4gL`kF{2}Tc5!&q9yuQ+UU&EHc zu4D~$>k~G2keV&N*KM0ManN&>EWQ`ikQmR*wAus+Z$%XFQ8)T)SQelR6EOi+1&Y~4 zqO~gIIK^RP}QUl>uNoUv$_( z#`|%TgIZ*p5D^E8fHwL-#rZ`JeL)rrxHM}3w%vL^a}y6XYTfjK{-#1!DuX#l*?za! z3KoR3bv~@3haaJ&g2Uue{2r2O$M1M*3VuhW6Y*P=hTwN(1%BD`4*v0}((!9<&!6q( z9fV}OA5Q|F1Uw0N67VG8Nx+kUCjn0ao&-DzcoOg=@Lwf?^t^-IYp9-b20%YYaNRA_ zp8v&$vxalgKQSTkK?)lf8k1uM;)Bs>v?cb}*w^FVjn~BPj$SIVtSr73T^jsNu+={= zUJ*J&n8e>0IG4LbOtN9&HQZvzhtCd7ihdmUE1&CI%)ais$^XOn-QvU18No+_<$hm0 z7Ag{={NX?kCyT3@mxU)I$Aw=F@8%{4e9<=p&vS41Ca{nD&h}px|L!qthS_`rYkC^h zz2NNe0xM1uq)I1wjnu8hffJ}S6NQ*thVa}~xVxc7^?TWn$|>cDeXD;tQes7%*UApE zjFOV{-soR?j50w{o)3sobp&>4`v;5NHfIuFtLd)IJ#LE^n2kGk<~XO=U%Ws;5#MZW_x|_tXEh2^ zjdMmUeXD;OGbvq8mL2{XPLtxP?V1H``Z&Ivwe5u1;svH{K#ED{mCX(~mGpqLJ}q8g ziaR~XfHaw8XJf#O7ntNuc3IH!XYe})(swY>O+=R3Mb70ofKCH&Y)LO5K8%ex1gEV@ z9Hgz-Ja>AU8Em`)HUORmvSUB)|Lq-BedVKa*GaO(3yhw~*RXwW?T^|lNHd*xj=n)h zl2OgLrLG6?p?i#QXH@%x&86vQ#+Ne23k-KR{Tw)f95b_=v2%>t4|6xTYqL*1z6wA? zN!HMdJ~#G-BM%FbyPF^N8CkYbGtJnPH?_62+slZD!|`SD_%ddR^}<9&fPyr%ca`bM zX62V4(f^QPn*Mj}^DP54GzfX}OBWOsl$Mp?Un%!E3I}~ACLw++pmW`?F50X)F1N)K zOn5B63>_b+IoZZ_JgbC39o<{VExS5#2&KNOv$5VD4N$MoSehET6BP~JfEZjSNK@TH z*d~=UmMbwA%)P+1-AC~3@cUo>SI(ph!|Y?sL+ss5{L%OW@mu0o#?OzR5pRp17_Y^h z1T*8K;-T0-a4W%cv4>)}#jc561m8httRc1`wk$R~HZ~?k{~7&5^yTO;qCbj$H~O{c z=c7H*rf6NXB3cri7#$pC#1C)^;c@XE@p|!6@oe!_u|?c2R*Q4R$s*!sB7cdz5&320 z{>aUdZ${3G9E!B!)`HcM1(9iy+(}U~yn(U{oOF|A+q_|8xF_ z{I~h9@n7VZ{hj^>{|5gu|7`zQzv%m??+?D0eZTPi$oE~}*LkGQwF zXSttpKj1&&uHwGT9p>7(6S%cFV=;pp$p!g$*uS&CWq-xLz(300!{5kX!Jm)zG<2yL zx>Q`s{TQXcQbuOu$-J_H(s^^a7t8{@I4b!0ML?R?g68q7@#GE-2G+&K#S*d_n8F% zEuPE$1kKt^%}_S40OAQyQdi|;SpkIOH$IjWz;^nKk9fbB!}*-i>dOUl*+1&fASB3$ zLWSZ=^Mdevjx(Nu>|BmDK9YDiOUFV*ii^2>4K|BVk>Wz`9p16&E@Vg z3xHWv%KgYJ0BBJ$cc(#=h_L@Lo)>~fQ6cw3vj8*-=W}vhs}!>T zHlEL4faitWjb;I8%%9KQU>1PJ{JGrqW&vo-FXgT?3qWIjG50;AU>-o{7joY<3jjKA zKKC870HDzEYs~_HLdUN$3jhiozuI7&_+mdbo}^zW~m1^5Pf_}9z=&_Ex**en1ISb(n@1!&e1Sb&Sn0)WB-e8nsPC@jE* zW&uE90WL5L016B6WrJ~|%Kp=M4uenvgK)lC02(j|=a~hd0fTU^SpWza`E$$y(13D& z$tZwwmOwebXchnz%6Ya~08l9BS!Mx1p`2eZ3jhk`{Jg<95n(?uo7625Qda_vnP-tq4SpZOI>K=n} zVuSs=@f@033{7n|3qS*!y4x(kH=wBrvj8-psZC}9Xh2gNjRI(DF*J3TSpZOIYJ*t- zP-yB&W&uE_^6Pbe&>o>Ir56Xh2iz%>vMXrXFt=00NqNoLK-G z(9|790W`H3n!4RA04Owdn^^!*XzEt80HDy+EoK2gp{bh<#)$~~q46A=S`1CCGYdci zn!3p>01asBMza7kps5?o0$@T@*XspEP|ji~=Q^`sUO^F*v(_vqL&02btyxflf>Lgc zSx|(6Vs5q0I0>VW{hRR|%2@>EtT78f1IoF|EC3BCXSG=X8c@!aW&vnGIjf8UC}$Cr zbA?#|P$*}mSpZNdXN6e+P$*})SpZNd=W>H_;*0&O@f^xo1m#?27T^Ua=Tfr(G@zVI z%mUDWaxOLtKm*FT$S8nv7C|`|ngsxbaxO3n01D-tZx#R)$~n(004S7muE995!T!Z~ z4&^L@a+a9|paJD9H4E?!C})XT02)xvVzU4=pqxcU0hF@{%2{X@02InO$1DISlykOO z08l7rfmr}hDCaDLaiYrp*?11+EP`^*Gz&lj$~nU<01YVTbh7{uP|j&)0cb!ury2$5 zk3~?vSb1ptL|PBa)NBJ7`x=TOcfDCY#T05qVSd1e7< zKsm>o1)u@t9A_2)6UsUE=x&t5!XS))Mt*@OKKWf!Q@9*X;2z*^=dR_x#+}6-Q)VRUvhPyDHPn|OtI9()Il;&QP-%#Hjf@>b;D$mNkQM)pTeimZv0L`H`H z6Mh+7k{;Pl7iG+k*LlHv^Xhwg!gyAN8N@U*!A1cfD`7 zZ=CSFaGp@f|Bb%^Cr7(2w^FcMnauaq^?TJsAJkwb3)OpC>T9rd2CukxkzF6x zCu*XCq$~*pyo>CVyR&ThSP(V@A<^!GcafcWy_kM3R27YPk)3yuUB*2ibPw+$yZ^C^ z>;`hBwdG1X+eYC3^~>(e8w|BAYO?sR|L?p4?=!tD+q+-yf9L&rbXg*8biq?q1W(l% zeagOIUIF}6qm7Sc1@KahGCr0Rz(+OG_=xWpb0esY6)ZrpALtLU7{Xd8*Z4TE04t&4 z#>cV(tb=llk0k|I1r0Mk78PI(G*thHB@k9X$WWo~^39u9fQ89m<6~I?mL-FXk0k|g zN5zegMFnt1#dIe+xM1JcpJ6=$M^x1KIIjS1DAD*>Rsbhd#Q0cJ02fr)_*hf`2NcB$ z#H@aSJ1)87--~bk_toSVn89Dh2rKxH_{#$S3fvSpJ`nRi>_5#v*Y_vit-fwwvGAU7 zQT*!~sZRS>(0I#gUruN8ua7JHle-~w&ZY8#fJs$C6)16m5&8wDn zLGSvbiI@DJch&7|NWb*Vxcv7gi}^#&`<-@MaMJ0e+Nz4C-7oxzyQoe31;UrD7Ni{K z&7A4V;cvPN3+#1C@p>4D%ueDygZ)&M+nVU?LV9QY_CmI8lORoYQNLZAk)2HgQxw;{ z_4s@4%(aa_6_U(hi@RYslYz01Do;7Rb6xFZD_f8)90{d~w|m|7u&U0^WT%1#5az2+ z4U@`;5^`B}fb!zmPVq3`TO&xh&RZ1uqY~YTRSlg@yOKSW$(kzI;I8+pM$Uc>eV0>z zv06U z#6ue$WKJKGsf>O)t0JgPiKAV_)o2`%jXKwKt%iD(HhYP?aY=>Iea+w};%?MdaSZVk zVJ#DKK66k}v?a(6XwFo(7@1?)eeO-h!FdFiWD?<_baOnC=en0J`?jq!8h%i~jGKZ>0ZTNIlX zeLMPW^h~V&!{WQ*)#8QXJTVrz2YdJHBE{jC!ncK6!&}26!lBUjLZ^i$1^*MgEBKw@ z>frdmuLAc5ngf;o5B)FtFMxMJ^gZe8^40i)!pFkpLNotw{w4k?{z3kS{B`{0{JDs# zPx2@68~F;pM2S-HbARXF0I$M%h^p`48n{hdC0EK#=7w_t_8;tf>`UyU z>^=o?!?3wI7b{AX6u3*d9DQqqqWd4CFS$|?j#v)TWIfaS}mH3P35oF_?V0xUy zBcpj{yz-emPT~=y&{aQ@$4NXgQvXOEC-Ddp-KtN?<0Kx*)jlddCh-VT(JD{plaEO} zlB0hlACq_liDA{J;Q+-O|?&1+%`=~^?i$@USt~^!t z=EWnd{t=t|fI_lN^(n#}z=pQMRPn5g0k4k`? zD0k@}5h?_zPW>YSg#fir|41QHqTHc>q`;$yoaC9Yx+gO%xAV+s`h;E;mfN%sXuYu9 zs(pZz{PJF&846A&$R{HUwEfi5?DDRzMBA>`gXGbHx!WzbAgQU7ix-l+POe{(*wxcq z-=661>TYOn!hE-Qc46A_sB}Wb@*bpmoxQGVGnNp_cV=lzpC$Y8ZR2%g1x~~BadI=b zTTr>Mp0as&)t9%mbmy&3cI|1wK6VE!A?nvA8yi~dX_{8=5L}dZL)LK9s8fNZassrR zk9Y>aRJn;~wwTk;ESW4&tsQbBNX>Jc!ge6o3*}urb6US|u1qv^_jD$@)}k$t8hZoo zZvbPhaswDU;n*{lncPtMB%UeI#wpd|3nr@MonXSrH7C~DojGofluuMM)FU6Z&5sNk zYvdC^!&Qp<3}_SNdMKJ&56ffQETv999u%GDTkjh+M?OwVHjVTFSjH-|B-F23-T`Xv zvQ68OrpeoRW}Dfc)a4(Y&el(M8*bs_ccAp`{&)0CB^~t#l~Mw0yH%2TBEwDfI(8Q{KcgCuBS!t{;Eb6$jNl zLEZ=^mN{l(p!lM^0rs$RQ>_~FvPfRfGfu8bu*E_QmDfSFA!(aEuaav~1?Q@rj*~C1 zRde5K+HO;C<4E@wc@3yJzi0r|`otY6uT~9<7Dr{xx4%ZN0ZmtiB?H=6c@-{7vDMxt z&-HROs5!qWB|G92c_q)(W%B%`Z7pn*|bX;D+Gn2ui;bbb8>8`MVV`5f} z@p1+7+oMF2vv%Kr*3x88Hp+A{nDYepePNE5mxHQlKGP-z3RSu>%sJJ*Fk><<5X-l? zS(nRnb(r&enJf^4iUUtsx{e>bxE=^5L}FYo|Aj=}weuf`vb-xI$+erf#d_p%{r`T(;Ct~-;ZirnL`(o^1Y)@=kY-Ox0HYqkV#zp@eeLebQ^vBT~qnAg&6g@TC z65SrHj?Rrvjt-0R;$Or!#9xX(5pNQ|A)X_iCY~(r5Ldy^Fh$G}g~(qcZ$_Sq+!y(N z9V~ZVh}Za6#bAKr%~yfp7aS^h^E@|4#op{}TT!|7d^M_p$F? z-}AnQeYg9r_I<^d^6m4TMQV#@kNAB5MS|v@H62K;Tqv0K^8iN24RD+OqeZ< z#ToE_^1tI>@5Ihl4QBV}TQCOA* zR+e4ZT@bv%Sv4x&#%R=dM2$wHQR96d@xEi?tugUPH1UjAqJIBhS3lD|=gutTef_?# z8)~b6RZl(j)YDbn)ipgm?VH-q(W=N!?MLV!MB9(d1M!ww{&JH49gBF2?l!#jrO{gS z(RVE3Er%u(yzf}VTXdJ;OL*V0h_@V)Oz^&A5pU6K-buLcSj1ZnN+x(;eu%edHttJ! zUw(+U9FRh(0GTySECAe=p#9K7ubrS9k5%HGk$pjW%#>87RFZCs) zbc~ellT47(F;c3zqLa{qklqjxZ_#YgPmrZstNEG$`Uz6HwUkaxCP?YlQmRRuFCnE{ zOX;4Lprs+bAtK(QiI$UKacH!ZPEICB>1Zj{1j(0>($P}7TQWgPM@y+DG){s=qR~=1 zDVZRpqoh>R4PQb^M@i|#WP+5Al2T0_dPs}nINT% zD6L%k5>m>D+9;VIrHm-8Ui%VK%81&)5;UUp#)Wu`RwW94yNGT(#t0ibe=@kp{ z7OiSKi3%xYM0HLkNGT&qE8D(=lro}9lL=DFh|=n|lW^};h_`e|CP*nGN-NyHgp@L( z+9eaDlo6#>ZeK!58BsAm!GDcHJfW3tPoh!}!0I&$@x-yo1g$}9L?yJ^?MrACS|ciP zbTUD!zZy{qt#~^LjVQf0A)YugnZUBPlxo%6mylA8sKoMQf|P1RCA9MGOGv3kRAQMW zXhi9~3Gswhznz30gVlQz;)&*Df|P1RCA0$WOGv3kRH8ANAf*~ni6xex5v3O;#1o5? z2~w&Nm1syNummrq^~nS&)rd-HLEP0cMoKlJ5_OiK5v3O;#1mQ=cM=*=dQn0=adZh$pI&2~w&Nm6)AOkW!7Pgv~!HM@gwhRKn&Tm7}CoBPwC@k4lXw zy$T_ou=z)&u2FgwLOfyfk4lXwy$T_ou=z)&u2FgwLOfyfkIG6Z)rd;i{G*Z&H#DLW zHvg#9h|;SN;t897R8~l-MpVM)AC(nSsu7j2`A21ilxjpJZ2nQ{-hB{H*!-hX*C@UF zAfB-KN99N<)rd;i{G)QDlxjpJZ2nQHkN5QMgLuN`AO5=!;t897RA@x$-3Rf6%|9x} z>7y7%l+8aX#_7WtMwHDzD)`)x5oPm_3XLee>>!@7`A3CjeR|nJJYn;XifyEn5oPm_ zifyEn5oPm_ifyEn5oPm_3XLee>>!@7`A3CDlwNiaPuTpULhl9B%MRiRn}1Y{l~P8O z%|9x}N+~1C<{uRrQF^;UJYn;X3eEcTc7u4r<{uSf_#{e7ZT?X)MoJk`Hvg#5h|=2) z;t897RA@x$?FR9L%|9wMqV#ryc*5o%6z@6%ZbQ31+jXJ7$A3kaah+e1aI{4ph&&K^Ao4)ufye`q2MX{& zU5Awi75`vvn?6Y@xkJB}vD<&8vgC)+CBLriuyXo;rH-k35saSSY0`tu-q#QZR&`i8 zsZ9?uwf4D~eXs0@nhq9BI_nhhIY<=*<@ z;j-GABZ9AT^laOgCbF1ox@B=m@3tRxJ%m&@X_ia_X)1B)1#Lg# zXtRfHFs$UZwtc(FEHho0^;+A$#3fa`)GVv5uGzV<;Rrn?n(R4Gx9z(W(ieIrBzAtA zo#kuspZK7KPwFQ`CbX$9XL}wg_2(nJqcMMu&irew0{=molqZf#uGXb{6N0S^R6lb@ zuiHCx7{I!~#+_?odUN2cvW?=8$B&AS(t80^_o_&=MIMMe5P2Z-K;(hQ1Ca-Ed!TJEG6<%0HsACniT)GKOk<<> z38j8b%>QvK92dP$=>NL+3FY|;ydBY98u-GCcZYqm-a)W#+in`@8%`60Xjt36-)$!O z&pLZwc=BJbveYy1fi~Y`rVMvX+_BB~n5HV_OI@*d^)iSy{K7CzPFt0bbt}})o^4v& z@xRLu9MrNlFT@0Qdui`g+Oo~BTnkhNdmM~M+xGow zrdBmBtZCL)&x@<8N)$ODlFA`kpO;emBZ+V^cYy}42A1H56ZqTSnS7LNub z*9DIK^SE!jJo>~|BrYrY$AA5I3iXTXKbl`E{QvfM3O8y$qTP1WSJXFGEuYa?Q!}}K zZq4!?+P$6p9X@@VD*Bzm%65OW-|~olr*Kx&+=Vms37wvRo4H$E!YBx@Tkcv_-Q3W~^6LCzmsfpN={A+@SM2+QeMNdPj@~!6xS_s@ z_wYr(QyBeDVRh4js>a2`^8CalFH^FY)VUWjMZZ%R{Z3)l4}a+@$v69zJX`FOu@nzJ zbMyP!#l`;kgQvxPtmRacoY1TNsCMoRm#M#W&>Z|+UFdfUzU2p+ow$3URq_RKCBNav zox@rF6SK*8qF>dsee^qpP2JaTKiGFu(leFowjWsHT<5?0{owNUll+vFSCl26oGD?o0ELIYsp0nR+8MC zdPBdszG3?jC1j*L4l>QtkTTr$O7*er+zTMne?zCf)gNc4Go_T3vDFK`$KDSg(0*?} z&mOB#lb6;t^O#p{Q*&*#_Z-O!gW6BeD&}dbnQPx}D*64U?YAw-_M%F8X0zyb3iU1w zy;EW>{7xb79ZY_Y;G@^C9Dn5_18(7Yfrr|6irzc;BY5wi4nws4?|5K?mf7uNBQn-Z zqW2E^??D~Er?_l)aL4P!i(mS1^_YOwy9klMCcREGy9gN;PXzvWvThgNU4o2@C z^t(g!-ofa-gFou`4tCZpS8`q8h$kApIN|IMKl8pv(4%im|D!GPK;(hQ1Ca+J4@4e_ zJP>&x@<8N)$OHesd!S{%d+tB}_?FonVy6zjwo7TdippuvO*rkg1&43)P=~3P-8%E` zTUK@dd~#_?WsIAtO%<*ff7;szbXjNp9-qHBt;dU3zjfx^n|@J0W$0%oEc~Q%NeNQR z6u!Q$V~_i0u5;)G^Zs)6iW8py$98+(w`2FCzPst&b0%&#^r}}%UR!X&_zU;>Vdz`u z-Sf(6rSGn~;O;9oxciIvJNvw}!;0^FRvohXw{I?4aQn?$UOaXFX_t5Z>zGZ>7}00j z4kt{yY@4ASFX%9MXycpXhJAI>W3QcDe&wDc2M>GTgCiM89ydD4=l`dR5Ybv2#a zm9`r+SbryED?7ZH`YWY+v_49u8a62{8&ua&KYz!e6~`4*wecAHL=pJ z_B6xfxhm7Sbdk#Lpo8K)Pp|#bF5b%`XVfmLN#>7@$6{TmL|bX+84d1P{LURIzffsC z%T&LYtNhX#4SO^-)CajU)>UdU7hlvhm3AJa-~6trZuX2^C_i1eULe)Ed+G2&#W*9W zW!eUTmeOugv3ph1f{6`tYXWmN?-`4A^UYD@bp?Cx;LfMNJo?UId(WG`&y?Ecn(}!K zjd~eD`KZ`Bv3BiZJC&D9UjB@YSFlY-I@ZBJv8OM@*>>B-hIgFMBYs`1Q}=gbWesJU z$8YKJVSGuC1;S{HJP>&x@<8N)$ODlFA`e6!h&&K^Ao9Rk_Q1;aojUa#IIv{pB=5#_ zmxk)4i}bZfUNKjZ0-Y!BJ88m^x;sd7qTLKIMaYbS>A`hjNqW_9?HeZ?2hN z(^$T^v35~a|B{sxJu9X)HgHeq z84=#^lxjmbYt2n)-y!UX=?!&D`5LEZLke_EH6kT1(~4zPjn(?DU7?N`*Rizc)PW_j zTE4{Gw4_dVpR=m;Ee*MeS9>}`ri6CerRWOVo9X>*-O#zSy0M0So}*Lx zM{Tft%6)zE{Q|$(z2BR^YI(E|i&rIGK91>sv_&3>JP>&x@<8N)$ODlFA`kq(=Yf+? z?NU;@a`Kty?yv96Et=C%=iW0kuVIH-(-+s&)lFPbQ@yaJan>&5XHJ+ldD*C8t-oI* z?Q_5Crp3DF(dViqqiTDPUOw)eOV;^rqbFxS@`wL?UU$gL>wWNKELNp|b7IZ0npl(m zR*M$J7VB?qY<{dh*65`#jnyfyP`PSJ*Gkhum7VMD*K5D2;PTi}rBLfxgr?N8wX$n| zine8{sZmn3u?FP@^{1B0ErrHF6TI*^ytOM)FH_JTrCGc&W9jHT{TZ z)00v9fq%8LO?L0{=_j9Xb3q*BZ*#^Ju_!wQO zer=YQITr4Cx0c_e`ss14Yck0rq`O(xEYRO(uNCz%j&ExkS}Vs$o$Kl52s*n{)69bW zxy96zUzWZ-Pqw(T#{&P@F;blc?%d+6T_nrvbsnmdC+y6DluKu%G)d1KuRk?Pma%8! zq)w$6KlJ7F5kk2mRI~GhjY9g4J4?{RY;@MBx7fHg-Qivq?5FmxAf2{Au4RioYnr@v zGkWQPt_O3baOYQgn;ZAKyzz94_auWoFR;h6?HBF6;ICCYJW*11aZLZCE%HF*fye`q z2O~Cx@W7l7D<^mP?=Ik~S*#5tpBFfz>6k;`e|P2| zl(ZRZ39Om0y2yH@TN@$8R=lbtQHYGKWECTwdj+UT&HHQ@}R_tuG(Ge@Mmcu@)ICJz5Z`Z`e#729T zV1%1tp;D}MA0eID%4X)#BG)$po%y749oKxNbCf_9T0{#1lxou0;;AjbqdSl#1@rpsho4R`%J zQ<4$DDnB{2WWKaF$`k2qYvlB&V9W=5^rT>hSAS(~N~JmT6xY5P1U z*mIt>bjbB$KIaKb@u^I}j2LPTQo_0H+lY1&<{LMLY%B#WrvEac>SZ^6=eRg6mQKIr z*iomGrez!*=UYpwNqU48WIj2VuU_QrwNI78Ys+X0K8s;=(j(2Q;k;nnrk0uK`FOtS z!F$fzv}KWJX`tKnwXnvZm4TFNb(pP3hf6vSrP>kpT2Owe{OUf9a!1-}362Mnj>7i2 z6g)xi=R9Y1xg7e|V&%G2_xT!U;vltA`R>e$e$H&}{Kt_9_hY=qr); z*{XPZ3fJU5|0v80xn=XUzmQUE!`?O1L4OO6w@jaBYe#yiV*QZ2{Mv2Jnrq87GIDvv z$+yKH=_S{e?Q5=Qv3G8**O`I2TH!q;wOm_#l1szdZqu6S{?xpAxZqLm&(}{C$cou2%4Ca6CDxaF0 zey5c`H|)n?rpl}_^?ogo%iW@U<*}3}W8BjS_AEhu+X|^En0JSD1*zeCuGS@jR%Vyw z{y)4fQ1bfm2OoIBu-m+sCo z-0>9BE>>ggIlID26k;jsG(1hl`6H|~oSxlR*(Hjtvk-aC$nGj1_{q|;+m@MIOg)9j zE|TBe>^IjyiCpc@FWYvDIFk9!Fxj6`EwnzK^bDWfsLic~p_g2@ z-r?>a*iZLRHksT$$}e4v)#-MHkAERH7FHL}cBZavgms5kqf)QW+52c%K776n>*T4> zIa;A=(7%N#-cHTQ?&DlCg|s%cZ2l7VM6a{lC|EJ0AEl?-+?Fz|pt+T8_F32D4C~hX z+zhD7TY=75p4-2f62;b;U*6^~?wYnp^S%b}ylVYD=mXA!x%1Q8P>5uH+j46t zrd+s>q-sn*{@GfXE>nEX#guTLb#m{U&6XfHzpt~&watn`OIa^Xx7yNk+nXs-Y@PY# z`Ao1$SF2q8+48yn53dVsbK}>4o;Um3=}Oxovut{MOiMn=w%S=txo}@kwJE(HyCaof zrudqRDG~J2Y_C+YUtb&%eynV4H+;yYkmp?E^U&8wM*E!95h>7N9<*&FlmM$P%E z^w+H`@;R!_scXQZ{#!}qZGw3FFjvnRVkb#Na}u>ARYepm(xQl-0T&$PtP+~dh_Q7$GcFuTt_Z{`9ews&$r;$@Y-oucW$Zd zZ7D>4&8#b=boLeOaJ#ZgWN%YzvTe7hu#({w-qbdPb8^|9U8eY&3n>v^Ge}*p4cnbt zDtj9WkzX_G3Mn1FGY_{WoSxnO>=MP+S%~}s?>x(sec|WK!q#S&$ZmIQvTe7hkdk(H z6t>>dvfG=PTTDHL$Z`eX$``Es+PZDn%G^@f?Jh)q&8#b=ba!FH@-(-5CfDAs$dv8Nn!u4i+ zOAj@@-1Tth+o*IT(mydOTr%i`Z7Gwh2NkZXbq(Qmb61CMKBsbbwZXH(_Dze_?^AFG zOyG?=+}+`S*JIu1UQp%}IIic|{jiM!cdv-o?S48nC3qS+NDn?4a_1P%K71D9dL_2< zjB<_lMh;h=`)JeTEVC3m5#Be;EzRz-Te~NA`E_bH-muw~yVnl#Sa)M27MhQBL9fib zgHFw7G}d|d@q88pxx4y+oITvT^Y)dxE8u( zdUCJxnV<4W1iolpTOiw-o#D4}h3AyKQ!D#h%v|m1v#$p4>e;BjJiT{>KUUMF7$@oT zsqFf=hR|!wGr@Xd>iFk=!(Fl571heI!fu-F?xFCKf&bQqj@CR`ynTgg3?I?-mW1;% zeU+M<+aI~)+G1hrea<|^)rDC=dYdfWJrU#1SD9_gF10LHS)jgUu~B&>?VGf@Z8M2N zePs5!zHZL~<fIC&Lxx8C5mu#UHFvfz}s%c~P>gLmy5}xy=kA1T%u%xlZb5lkzwDBv0k5FL;7_( zv&Qu6em;rR_W9IqOU_<+=C`KSX3o>rRAV9Yt^aNvg}vK)?Hrx_t>s>r-jz=(yB(=B zqjY~+Zu-^L`j4F_!)v&%o^VR~`8<1G{&Q)#j9Hbf_8>1`t=Xj7Qh(uPve_EGl4p7? zoLfvih0ErbbjbL=@9QiIRb>~j=rX(5v7$Edh6`Ry-6*Bq@mFV#Oj zl_9p5mOInXrwlAkJ4`Xq$)Dyj{WEs~8(vt9Nm-J&V21 znD`7Mb1vn+U1=@no0geJJT&-8TE!_X}$9|7s%*B(BI`pnG ze!H-Dw%@P_w>6vgLfV&K#?HR3CZqKBWu_OV)%u8)&pcw;athU5m|T9T)Nl7YFQlfW z`yy9vG4(LJ%T^cZ`RhxSD7MaG7L1_Es$-! z9l7euUow2YFzZv(0vlZGbLAFOkBygX8Z9q;o=mONBvMne>1xd;_v9^iQ0`fy;8`j6 zY=Y@*O)k?%g_l@U8(S-%?b%CfSGK&&w&a&;Oa0l`DYAc;KIoO%?8rRRCQa|A^JHis&XWQo?+4F;^gI#|5 zXPeodYiddvmu)YZ?!~s$9_YyLySC^qMq}#pIjNuh+NepjA%BUWUD^CwXxX*bf;Ddu z=W<%b`h4+iDyAjD>XKOcY z!|MX4oOaywKa~BR1%p0;jzayHt;CwzpXw!hx|HY2gH~i8li_^3|0u>9H(w0TTC({v zQ!2l=^2x86bzw`hdnB{&{57V2>&Ue}H7&iZxpIrC$81m4l{p*9onKsS#YpFtb)W6= z>%;ClHS^U&`2`4iYIxtB#duOa{k`;Iso>tl-Ib<(Z#7#QtMr_cnI|-+?32T{jCgW_ z=V}+pqSSM#rMf%l^j|l2PuY>m)4}fPN>)=i`@8RZWj-}!Wn4Wx#S#7_mt%=8(%riZ z9P!K>Z!6$=Gy6;-^HV1)8~!vX(3ra7@4n@PM)#b$tH;g;K`CmZf13wjjsd=OEw;Dk zTJ3y;#yvNl-ZtLTkSi}3FNI0v>Tmf<=Pnce)F#zWfxlB%8ChpZmCWu@r+K+2%jf6W zz88ZYdybd86g-QEN#_}4_sv1RZ|2^lK{`i@=lW=`J3<@{WclR}yBZ*qYBwptZ*iwm z<~QG5zPn3c4U53qy!{4<9dp+B$vZ-I({K5{9J3MoW|aHAV8)=OxW18XwA*hB2Wyg6 z3%%0XNXx@_bU}}8iXE;TMit-f;d6T=bFH_yevkY%`bC?Ov5MF%&r1A{7b!o>d)C(8 zE#i(yVOL+XJh!y7%;Yl9+}LOBvF{+c=X&{0$Q)V6$}LZ7y8bv{o_GDhrE)IK&Kw`U z1BM(U+Ro3eXSr`Ax+f?sg)^JodD)r5J>TMdg3m3T^Hq31m;r_BL0^z#$I!}UeqK*| z(d&LooPF*QU7uX8J@+)f`<^Y|;GbP)1caX|=_6z58y}?`V z`Bmm1O{y6m(QgZv%>D~XYg*nNH)j=nFlbkPyR%zk$Fy)g_KhdbFkG+NUNZd~d#O+A zq!PU{GlllM>$dA5!P7md>FyaN`|hGE#b<=P|Hyr7nVv_VV;l#+?9RCaY0hk%J>8Yl zovY~yL3;3n6{*;Pf83a+6!y4lFW>!i#{v!Z#$mTtD~~c$aNh_cjqiLe&|jy4>&6kX z(>);u@kCtek>wgfo47I|>3*@EnUYHlo>;OpcYdt%^6B?{zm4yZvCo}6=NotZ;`+m= zNKLnVvzrm?zU4@~R9<`9pJt!MlnVB-*~qT8#%}iJW{b{) zHIn6f>Rg%WK>=~*aZlo6A?s;;CXD5rX)>>;PQrboG<&W)w+Fx8g%tgRb4U93($U7* z$iC?tNH}Tw&k?@0yQ>hE z@aaOkMX`(3cR()zk91AkMsaF%6-62GIv#v{iM`+_&4 z1^p@8JS#QLSs0#;xhqUKh2EN4%FZXv-unyasho%Kx_h4i?=*04M{s=@+ugj4-{e~% zNosMaZkEM9Bi-HSxo?h!nKOx#aWhE#oGry^P5*YB^@mIi_}Trcmh~Yg!}zxmK??ob z<=Cv)ogql$+Cj`&&h5?fTX(paxu)|5vn<9BvRtX~qVr^CO88q!!I`;Gx!`+#g_b~$ z9%`T9=P&2H%qX{~qMf|^v?O(O*z+xRr6^p|ooDQ>1}|{!%&$Etlj}aM@cIkWfIhpH zr0Ndm1a=i7Q+&<&N^n->`r_^fsXsM^{uzENN+4nV*2&wLg8Dg%fQ1E7x zR7yR5%o^-0U8r2DFN1n=YYs}}^HU+33VZ8hp)F~PHQ}|1eD#FoQs-)^rP7ZU*OqK& z(cDL>kP^WWNUy#1+Jdr$`Ku6n@@Yyx4~E&@W7CFks+*tWp7l6+-dV~>46a?x-aIo{ zH{$xi{j06m@RlcL;cnjR=G}brk+n$P7v$a-!?#o zqn%kAS4vyUuspktF{{ElH_x1}a?GXOH_F@rj$puHaP|ZP!Tt~7{O|6$_-t2tg zuI|>BaH`$yx%s`VL6`(bo!;S&6CR;Q*m=*S!f8SK^5?c@eOPC3w6f`JO_Li{R?<=a zqn=MDvwek07iML4y9z5C_E>6b!#TO^&n{DZ&4rZUsglfNiXT&R7{TriCj6Yb>(QCg z?iaViEl<_P9eM8D{A(S#%Q?R>uW{mg!tlREDQH56Mm z+?&>hmfSt3?b=(@={_||y&iJxviYbG*-W1lS88q8n_CBK){HFI=iGfvwlueBF zVNu#Vm{hl#=04$o8G)Ql-Q5o3i}g->=9E4i+_!U&!blFE14yAi(rfX(li^N=J=R6g z>7>GYna_;|Qskk_o)}Hf37!?T9M){Z`{~xWZx_2YapY(h<0!nJ`e|FX-zmo?T9W5CnrMu?4&#pO}a*nl6Uftd0d@qIXFq6ZtZ&{4r!=Dvcx~()}NqQPu zD8=<4cy}$=3}$SWXLk-xgOj&3`&aKhSi(AWgGk&CarqqoJ>$w)wQ+Nu>7%$WR@Cl!HQ`Wt)pLBYg z%|6`cqc(qb<jfs};`tPLY$Pap<&N$#vfPNoH}o!Qde`a3g4`bMtO zSX`xl+`;9S33^d}IgVSVL~#Dimq$DJ)dn{^%^XSLT<-tF>jE>Lzu||b*P6dpTK~+F z!JR@_M?Se+^ZNYd?Ksmn(C$Wh{xXHs#Qiy+mGGoa>YZj-cW$Zd?Jq=r&8%yiwZW(R zg|)5_8#7lDxLzuRg6`SDtmb#4 z+rsIA2V0jY#PYE2Lga%vOwdM4%Whj{ZZY)~BJ1wegJ;8nb8Og0xuvq(U5NaeSyxEu zT>Ukip56ZJ62;b8n7muRPkq87?0a{IkbaKIWp_4hfo$6?V(y*o8k^m^uyjy+>#fRO zZtYmzb}faLJi9m*2ho(R(*4Z9sZCyIT+Ic5UOCbW5e)`8n&%o|~@ONx5|zTerr8?kQAa)`_Sm z^%$kvkeZjhj#L@93c)dE6$-D@qilW@%s_*;;iO8q>(mN)n$HlAl$OQvgc}=pIocu* zL>`Dd5P2Z-K;(hQ1Ca+J4@4e_JP>&x^1zSI0|T(geve?c_xBh){txFaP}0C3ou!dM zkq06VL>`Dd5P2Z-K;(hQ1Ca+J4@4e_JP>&x^1#~mfOr3I>jI}v-LvMoj}w=wl0j>` zqDWulfye`q2O`Dd@T2p9cmHqe0wY%qSn`K%!(Wz_ zgMW0EMg~P5h&&K^Ao4)ufye`q2O`Dd5P2Z-K;(fRod>-8e_Iz=b>oKL z%-d-G?y_>okIvG_pvVJ}2O`Dd5P4v2d%(N@w{?NK zoA&zGPcEE$yeb*GwkwMCMIMMe5P2Z-K;(hQ1Ca+J4@4e_JP>&x@<8N)$OAt*4|wo+~na!~E`Dd5P2Z-K;(hQ z13x+sc=!LdF0kYDs~-Qh;T?XXV8oBk(#W951Ca+J4@4e_JP>&x@<8N)$ODlFA`e6! zh&&K^U~PNAyZ^U!fz5WPZb^Ln@N88wa&1=>>5DuNc_8vY`Dd5P2Z- zK;(hQ1Ca-QbRO{T|7~5M&sjs)?K|Z^Ka-UeKRQbzgCY+^9*8^;c_8vY`Dd5P2Z-K;(h7?E&xp-_`}%UH9u@k36z!nkuPW+Z9FnA`e6!h&&K^Ao4)ufye`q z2O&x@<8N)$ODlFA`e6!h&&K^;78{H@BZJ`1wQGx#YS(x+_HhJ-1#U4gt(g~cW)S3YRH#Q$T*M!gUH=eXdn}tHMSKl&@EKN?~1vP72KmZzy0h zHXWt#nL0;_@r*MnH72@8C(Mj7L7H{VBeTv@}Tl*gq|6NRd)c>@? zH)7fYKc}#P6yqQGMTM=z)K7hXR2Z)vY{TA{6()$gE5_fiD@+x0{NO(;%od|dQS3d1 zYVB}*Nc%vcUW_kgM(jg{Wxl+2V;?E35Ysm5gI9^E4;wyFI9+W1{YreUpRe86w+fev zk!6Fg7E?d^;G6t>?D<~d4l({BzeGkoB&NTS-%z+QM;@%3WH z59PNP-|Od7W`g)}?O-3gi}*S1*zw#={EC?V&bFuceKGw9{qVQqEwxXXsp5@Q(I(nQ z=lYZq#XDm3Q6B!gSpU89XNmtQz(3lJoufbh5~GjpT=BP| ze7HoJ*8cOvJ;dn8o(shrifJ#~MdB^Q^hfH1`-$m4*mJ3Pgr6_;&ShJRk!9oDHco8z z!xO~TU#}8R6`Q_m#RrOQyj(AyBQ|?(5HA$tZ|aAai)laGP2%Ik^ha!lSBt5S?RN16 zVyVHyPD#K|X8@#@l`n2ou79oC0iG#&lukiWP;+@5uzu2A^&lYc`ee&T`#Qn98 zJuiuG5OcjC|5foLV!NKaDSlf#P3Xg?Nzm(GNc<=6XQ;w-CQ0MxSTv<>^o|458&lpieqT+H#;u6Hf} zUTo*Lp-Swb&I*%Xp+B36>EEI!7E1o9i{0na*K3vT4!-jF<7P0m39mHpf zxjtyun=4!r3zJ59W&nD(=sC2kN~`{2{Xs?yue5nm{_`2_rHv9<4f@nd4^ukfFIc@$hA z{y=R0hcOm?Z1B2b+DCtb2a5ane4%)<7=MuebMaiU)qjzArI`BJ;4{V6AK}ZzoDZ}c zyIgXU5tI?U#UM|i0QwuwypVN>jJCyICbWS<6i%XlEyG^T~8I$ck%T# z;yz+)>-FOCVr(HFo+6ezJl($)ALQpNDR#4Xp_sZkR`5^6^hNE)Zr7j7#hgpn?i61m zw!Q%0BG!MeZSX?^#({QYcj?dLVth~A?-9Q$wy}S&_!Ds-KObICjWb{0CmtcDy=?G~ z0>&!sgJ+0)Yajg&iIh~5EHUk8EIcZ{M2vs58+$^3ZWPmg%0DH3Mr`eWTKvA4 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 diff --git a/docs/EmailCampaignsApi.md b/docs/EmailCampaignsApi.md index c59c730..0361ad3 100644 --- a/docs/EmailCampaignsApi.md +++ b/docs/EmailCampaignsApi.md @@ -296,7 +296,7 @@ Name | Type | Description | Notes # **GetEmailCampaign** -> GetEmailCampaign GetEmailCampaign (long? campaignId) +> GetEmailCampaign GetEmailCampaign (long? campaignId, string statistics = null) Get an email campaign report @@ -325,11 +325,12 @@ namespace Example var apiInstance = new EmailCampaignsApi(); var campaignId = 789; // long? | Id of the campaign + var statistics = statistics_example; // string | Filter on the type of statistics required. Example **globalStats** value will only fetch globalStats info of the campaign in returned response. (optional) try { // Get an email campaign report - GetEmailCampaign result = apiInstance.GetEmailCampaign(campaignId); + GetEmailCampaign result = apiInstance.GetEmailCampaign(campaignId, statistics); Debug.WriteLine(result); } catch (Exception e) @@ -346,6 +347,7 @@ namespace Example Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **campaignId** | **long?**| Id of the campaign | + **statistics** | **string**| Filter on the type of statistics required. Example **globalStats** value will only fetch globalStats info of the campaign in returned response. | [optional] ### Return type @@ -364,7 +366,7 @@ Name | Type | Description | Notes # **GetEmailCampaigns** -> GetEmailCampaigns GetEmailCampaigns (string type = null, string status = null, string startDate = null, string endDate = null, long? limit = null, long? offset = null, string sort = null) +> GetEmailCampaigns GetEmailCampaigns (string type = null, string status = null, string statistics = null, string startDate = null, string endDate = null, long? limit = null, long? offset = null, string sort = null) Return all your created email campaigns @@ -394,6 +396,7 @@ namespace Example var apiInstance = new EmailCampaignsApi(); var type = type_example; // string | Filter on the type of the campaigns (optional) var status = status_example; // string | Filter on the status of the campaign (optional) + var statistics = statistics_example; // string | Filter on the type of statistics required. Example **globalStats** value will only fetch globalStats info of the campaign in returned response. (optional) var startDate = startDate_example; // string | Mandatory if endDate is used. Starting (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) var endDate = endDate_example; // string | Mandatory if startDate is used. Ending (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) var limit = 789; // long? | Number of documents per page (optional) (default to 50) @@ -403,7 +406,7 @@ namespace Example try { // Return all your created email campaigns - GetEmailCampaigns result = apiInstance.GetEmailCampaigns(type, status, startDate, endDate, limit, offset, sort); + GetEmailCampaigns result = apiInstance.GetEmailCampaigns(type, status, statistics, startDate, endDate, limit, offset, sort); Debug.WriteLine(result); } catch (Exception e) @@ -421,6 +424,7 @@ Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **type** | **string**| Filter on the type of the campaigns | [optional] **status** | **string**| Filter on the status of the campaign | [optional] + **statistics** | **string**| Filter on the type of statistics required. Example **globalStats** value will only fetch globalStats info of the campaign in returned response. | [optional] **startDate** | **string**| Mandatory if endDate is used. Starting (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) | [optional] **endDate** | **string**| Mandatory if startDate is used. Ending (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) | [optional] **limit** | **long?**| Number of documents per page | [optional] [default to 50] diff --git a/src/sib_api_v3_sdk/Api/EmailCampaignsApi.cs b/src/sib_api_v3_sdk/Api/EmailCampaignsApi.cs index 497bea9..192c1c4 100644 --- a/src/sib_api_v3_sdk/Api/EmailCampaignsApi.cs +++ b/src/sib_api_v3_sdk/Api/EmailCampaignsApi.cs @@ -118,8 +118,9 @@ public interface IEmailCampaignsApi : IApiAccessor /// /// Thrown when fails to make API call /// Id of the campaign + /// Filter on the type of statistics required. Example **globalStats** value will only fetch globalStats info of the campaign in returned response. (optional) /// GetEmailCampaign - GetEmailCampaign GetEmailCampaign (long? campaignId); + GetEmailCampaign GetEmailCampaign (long? campaignId, string statistics = null); /// /// Get an email campaign report @@ -129,8 +130,9 @@ public interface IEmailCampaignsApi : IApiAccessor /// /// Thrown when fails to make API call /// Id of the campaign + /// Filter on the type of statistics required. Example **globalStats** value will only fetch globalStats info of the campaign in returned response. (optional) /// ApiResponse of GetEmailCampaign - ApiResponse GetEmailCampaignWithHttpInfo (long? campaignId); + ApiResponse GetEmailCampaignWithHttpInfo (long? campaignId, string statistics = null); /// /// Return all your created email campaigns /// @@ -140,13 +142,14 @@ public interface IEmailCampaignsApi : IApiAccessor /// Thrown when fails to make API call /// Filter on the type of the campaigns (optional) /// Filter on the status of the campaign (optional) + /// Filter on the type of statistics required. Example **globalStats** value will only fetch globalStats info of the campaign in returned response. (optional) /// Mandatory if endDate is used. Starting (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) /// Mandatory if startDate is used. Ending (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) /// Number of documents per page (optional, default to 50) /// Index of the first document in the page (optional, default to 0) /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) /// GetEmailCampaigns - GetEmailCampaigns GetEmailCampaigns (string type = null, string status = null, string startDate = null, string endDate = null, long? limit = null, long? offset = null, string sort = null); + GetEmailCampaigns GetEmailCampaigns (string type = null, string status = null, string statistics = null, string startDate = null, string endDate = null, long? limit = null, long? offset = null, string sort = null); /// /// Return all your created email campaigns @@ -157,13 +160,14 @@ public interface IEmailCampaignsApi : IApiAccessor /// Thrown when fails to make API call /// Filter on the type of the campaigns (optional) /// Filter on the status of the campaign (optional) + /// Filter on the type of statistics required. Example **globalStats** value will only fetch globalStats info of the campaign in returned response. (optional) /// Mandatory if endDate is used. Starting (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) /// Mandatory if startDate is used. Ending (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) /// Number of documents per page (optional, default to 50) /// Index of the first document in the page (optional, default to 0) /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) /// ApiResponse of GetEmailCampaigns - ApiResponse GetEmailCampaignsWithHttpInfo (string type = null, string status = null, string startDate = null, string endDate = null, long? limit = null, long? offset = null, string sort = null); + ApiResponse GetEmailCampaignsWithHttpInfo (string type = null, string status = null, string statistics = null, string startDate = null, string endDate = null, long? limit = null, long? offset = null, string sort = null); /// /// Get a shared template url /// @@ -415,8 +419,9 @@ public interface IEmailCampaignsApi : IApiAccessor /// /// Thrown when fails to make API call /// Id of the campaign + /// Filter on the type of statistics required. Example **globalStats** value will only fetch globalStats info of the campaign in returned response. (optional) /// Task of GetEmailCampaign - System.Threading.Tasks.Task GetEmailCampaignAsync (long? campaignId); + System.Threading.Tasks.Task GetEmailCampaignAsync (long? campaignId, string statistics = null); /// /// Get an email campaign report @@ -426,8 +431,9 @@ public interface IEmailCampaignsApi : IApiAccessor /// /// Thrown when fails to make API call /// Id of the campaign + /// Filter on the type of statistics required. Example **globalStats** value will only fetch globalStats info of the campaign in returned response. (optional) /// Task of ApiResponse (GetEmailCampaign) - System.Threading.Tasks.Task> GetEmailCampaignAsyncWithHttpInfo (long? campaignId); + System.Threading.Tasks.Task> GetEmailCampaignAsyncWithHttpInfo (long? campaignId, string statistics = null); /// /// Return all your created email campaigns /// @@ -437,13 +443,14 @@ public interface IEmailCampaignsApi : IApiAccessor /// Thrown when fails to make API call /// Filter on the type of the campaigns (optional) /// Filter on the status of the campaign (optional) + /// Filter on the type of statistics required. Example **globalStats** value will only fetch globalStats info of the campaign in returned response. (optional) /// Mandatory if endDate is used. Starting (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) /// Mandatory if startDate is used. Ending (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) /// Number of documents per page (optional, default to 50) /// Index of the first document in the page (optional, default to 0) /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) /// Task of GetEmailCampaigns - System.Threading.Tasks.Task GetEmailCampaignsAsync (string type = null, string status = null, string startDate = null, string endDate = null, long? limit = null, long? offset = null, string sort = null); + System.Threading.Tasks.Task GetEmailCampaignsAsync (string type = null, string status = null, string statistics = null, string startDate = null, string endDate = null, long? limit = null, long? offset = null, string sort = null); /// /// Return all your created email campaigns @@ -454,13 +461,14 @@ public interface IEmailCampaignsApi : IApiAccessor /// Thrown when fails to make API call /// Filter on the type of the campaigns (optional) /// Filter on the status of the campaign (optional) + /// Filter on the type of statistics required. Example **globalStats** value will only fetch globalStats info of the campaign in returned response. (optional) /// Mandatory if endDate is used. Starting (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) /// Mandatory if startDate is used. Ending (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) /// Number of documents per page (optional, default to 50) /// Index of the first document in the page (optional, default to 0) /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) /// Task of ApiResponse (GetEmailCampaigns) - System.Threading.Tasks.Task> GetEmailCampaignsAsyncWithHttpInfo (string type = null, string status = null, string startDate = null, string endDate = null, long? limit = null, long? offset = null, string sort = null); + System.Threading.Tasks.Task> GetEmailCampaignsAsyncWithHttpInfo (string type = null, string status = null, string statistics = null, string startDate = null, string endDate = null, long? limit = null, long? offset = null, string sort = null); /// /// Get a shared template url /// @@ -1373,10 +1381,11 @@ public async System.Threading.Tasks.Task> GetA /// /// Thrown when fails to make API call /// Id of the campaign + /// Filter on the type of statistics required. Example **globalStats** value will only fetch globalStats info of the campaign in returned response. (optional) /// GetEmailCampaign - public GetEmailCampaign GetEmailCampaign (long? campaignId) + public GetEmailCampaign GetEmailCampaign (long? campaignId, string statistics = null) { - ApiResponse localVarResponse = GetEmailCampaignWithHttpInfo(campaignId); + ApiResponse localVarResponse = GetEmailCampaignWithHttpInfo(campaignId, statistics); return localVarResponse.Data; } @@ -1385,8 +1394,9 @@ public GetEmailCampaign GetEmailCampaign (long? campaignId) /// /// Thrown when fails to make API call /// Id of the campaign + /// Filter on the type of statistics required. Example **globalStats** value will only fetch globalStats info of the campaign in returned response. (optional) /// ApiResponse of GetEmailCampaign - public ApiResponse< GetEmailCampaign > GetEmailCampaignWithHttpInfo (long? campaignId) + public ApiResponse< GetEmailCampaign > GetEmailCampaignWithHttpInfo (long? campaignId, string statistics = null) { // verify the required parameter 'campaignId' is set if (campaignId == null) @@ -1415,6 +1425,7 @@ public ApiResponse< GetEmailCampaign > GetEmailCampaignWithHttpInfo (long? campa localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); if (campaignId != null) localVarPathParams.Add("campaignId", this.Configuration.ApiClient.ParameterToString(campaignId)); // path parameter + if (statistics != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "statistics", statistics)); // query parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -1450,10 +1461,11 @@ public ApiResponse< GetEmailCampaign > GetEmailCampaignWithHttpInfo (long? campa /// /// Thrown when fails to make API call /// Id of the campaign + /// Filter on the type of statistics required. Example **globalStats** value will only fetch globalStats info of the campaign in returned response. (optional) /// Task of GetEmailCampaign - public async System.Threading.Tasks.Task GetEmailCampaignAsync (long? campaignId) + public async System.Threading.Tasks.Task GetEmailCampaignAsync (long? campaignId, string statistics = null) { - ApiResponse localVarResponse = await GetEmailCampaignAsyncWithHttpInfo(campaignId); + ApiResponse localVarResponse = await GetEmailCampaignAsyncWithHttpInfo(campaignId, statistics); return localVarResponse.Data; } @@ -1463,8 +1475,9 @@ public async System.Threading.Tasks.Task GetEmailCampaignAsync /// /// Thrown when fails to make API call /// Id of the campaign + /// Filter on the type of statistics required. Example **globalStats** value will only fetch globalStats info of the campaign in returned response. (optional) /// Task of ApiResponse (GetEmailCampaign) - public async System.Threading.Tasks.Task> GetEmailCampaignAsyncWithHttpInfo (long? campaignId) + public async System.Threading.Tasks.Task> GetEmailCampaignAsyncWithHttpInfo (long? campaignId, string statistics = null) { // verify the required parameter 'campaignId' is set if (campaignId == null) @@ -1493,6 +1506,7 @@ public async System.Threading.Tasks.Task> GetEmail localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept); if (campaignId != null) localVarPathParams.Add("campaignId", this.Configuration.ApiClient.ParameterToString(campaignId)); // path parameter + if (statistics != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "statistics", statistics)); // query parameter // authentication (api-key) required if (!String.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("api-key"))) @@ -1529,15 +1543,16 @@ public async System.Threading.Tasks.Task> GetEmail /// Thrown when fails to make API call /// Filter on the type of the campaigns (optional) /// Filter on the status of the campaign (optional) + /// Filter on the type of statistics required. Example **globalStats** value will only fetch globalStats info of the campaign in returned response. (optional) /// Mandatory if endDate is used. Starting (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) /// Mandatory if startDate is used. Ending (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) /// Number of documents per page (optional, default to 50) /// Index of the first document in the page (optional, default to 0) /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) /// GetEmailCampaigns - public GetEmailCampaigns GetEmailCampaigns (string type = null, string status = null, string startDate = null, string endDate = null, long? limit = null, long? offset = null, string sort = null) + public GetEmailCampaigns GetEmailCampaigns (string type = null, string status = null, string statistics = null, string startDate = null, string endDate = null, long? limit = null, long? offset = null, string sort = null) { - ApiResponse localVarResponse = GetEmailCampaignsWithHttpInfo(type, status, startDate, endDate, limit, offset, sort); + ApiResponse localVarResponse = GetEmailCampaignsWithHttpInfo(type, status, statistics, startDate, endDate, limit, offset, sort); return localVarResponse.Data; } @@ -1547,13 +1562,14 @@ public GetEmailCampaigns GetEmailCampaigns (string type = null, string status = /// Thrown when fails to make API call /// Filter on the type of the campaigns (optional) /// Filter on the status of the campaign (optional) + /// Filter on the type of statistics required. Example **globalStats** value will only fetch globalStats info of the campaign in returned response. (optional) /// Mandatory if endDate is used. Starting (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) /// Mandatory if startDate is used. Ending (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) /// Number of documents per page (optional, default to 50) /// Index of the first document in the page (optional, default to 0) /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) /// ApiResponse of GetEmailCampaigns - public ApiResponse< GetEmailCampaigns > GetEmailCampaignsWithHttpInfo (string type = null, string status = null, string startDate = null, string endDate = null, long? limit = null, long? offset = null, string sort = null) + public ApiResponse< GetEmailCampaigns > GetEmailCampaignsWithHttpInfo (string type = null, string status = null, string statistics = null, string startDate = null, string endDate = null, long? limit = null, long? offset = null, string sort = null) { var localVarPath = "./emailCampaigns"; @@ -1580,6 +1596,7 @@ public ApiResponse< GetEmailCampaigns > GetEmailCampaignsWithHttpInfo (string ty if (type != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "type", type)); // query parameter if (status != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "status", status)); // query parameter + if (statistics != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "statistics", statistics)); // query parameter if (startDate != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "startDate", startDate)); // query parameter if (endDate != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "endDate", endDate)); // query parameter if (limit != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "limit", limit)); // query parameter @@ -1621,15 +1638,16 @@ public ApiResponse< GetEmailCampaigns > GetEmailCampaignsWithHttpInfo (string ty /// Thrown when fails to make API call /// Filter on the type of the campaigns (optional) /// Filter on the status of the campaign (optional) + /// Filter on the type of statistics required. Example **globalStats** value will only fetch globalStats info of the campaign in returned response. (optional) /// Mandatory if endDate is used. Starting (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) /// Mandatory if startDate is used. Ending (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) /// Number of documents per page (optional, default to 50) /// Index of the first document in the page (optional, default to 0) /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) /// Task of GetEmailCampaigns - public async System.Threading.Tasks.Task GetEmailCampaignsAsync (string type = null, string status = null, string startDate = null, string endDate = null, long? limit = null, long? offset = null, string sort = null) + public async System.Threading.Tasks.Task GetEmailCampaignsAsync (string type = null, string status = null, string statistics = null, string startDate = null, string endDate = null, long? limit = null, long? offset = null, string sort = null) { - ApiResponse localVarResponse = await GetEmailCampaignsAsyncWithHttpInfo(type, status, startDate, endDate, limit, offset, sort); + ApiResponse localVarResponse = await GetEmailCampaignsAsyncWithHttpInfo(type, status, statistics, startDate, endDate, limit, offset, sort); return localVarResponse.Data; } @@ -1640,13 +1658,14 @@ public async System.Threading.Tasks.Task GetEmailCampaignsAsy /// Thrown when fails to make API call /// Filter on the type of the campaigns (optional) /// Filter on the status of the campaign (optional) + /// Filter on the type of statistics required. Example **globalStats** value will only fetch globalStats info of the campaign in returned response. (optional) /// Mandatory if endDate is used. Starting (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) /// Mandatory if startDate is used. Ending (urlencoded) UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ) to filter the sent email campaigns. Prefer to pass your timezone in date-time format for accurate result ( only available if either 'status' not passed and if passed is set to 'sent' ) (optional) /// Number of documents per page (optional, default to 50) /// Index of the first document in the page (optional, default to 0) /// Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed (optional, default to desc) /// Task of ApiResponse (GetEmailCampaigns) - public async System.Threading.Tasks.Task> GetEmailCampaignsAsyncWithHttpInfo (string type = null, string status = null, string startDate = null, string endDate = null, long? limit = null, long? offset = null, string sort = null) + public async System.Threading.Tasks.Task> GetEmailCampaignsAsyncWithHttpInfo (string type = null, string status = null, string statistics = null, string startDate = null, string endDate = null, long? limit = null, long? offset = null, string sort = null) { var localVarPath = "./emailCampaigns"; @@ -1673,6 +1692,7 @@ public async System.Threading.Tasks.Task> GetEmai if (type != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "type", type)); // query parameter if (status != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "status", status)); // query parameter + if (statistics != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "statistics", statistics)); // query parameter if (startDate != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "startDate", startDate)); // query parameter if (endDate != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "endDate", endDate)); // query parameter if (limit != null) localVarQueryParams.AddRange(this.Configuration.ApiClient.ParameterToKeyValuePairs("", "limit", limit)); // query parameter diff --git a/src/sib_api_v3_sdk/Model/GetSmsEventReportEvents.cs b/src/sib_api_v3_sdk/Model/GetSmsEventReportEvents.cs index 5af694b..8dc7ba2 100644 --- a/src/sib_api_v3_sdk/Model/GetSmsEventReportEvents.cs +++ b/src/sib_api_v3_sdk/Model/GetSmsEventReportEvents.cs @@ -88,7 +88,13 @@ public enum EventEnum /// Enum Blocked for value: blocked /// [EnumMember(Value = "blocked")] - Blocked = 9 + Blocked = 9, + + /// + /// Enum Rejected for value: rejected + /// + [EnumMember(Value = "rejected")] + Rejected = 10 } /// diff --git a/src/sib_api_v3_sdk/sib_api_v3_sdk.csproj b/src/sib_api_v3_sdk/sib_api_v3_sdk.csproj index b2fa0e0..9bc5b21 100644 --- a/src/sib_api_v3_sdk/sib_api_v3_sdk.csproj +++ b/src/sib_api_v3_sdk/sib_api_v3_sdk.csproj @@ -14,7 +14,7 @@ true true sib_api_v3_sdk - 4.0.0 + 4.0.1 https://github.com/sendinblue/APIv3-csharp-library/blob/master/LICENSE.txt https://github.com/sendinblue/APIv3-csharp-library https://github.com/sendinblue/APIv3-csharp-library @@ -25,8 +25,8 @@ - - + + From b75697d1991eb22ac28872fa21cf8f2314f9177b Mon Sep 17 00:00:00 2001 From: amitsendinblue Date: Fri, 24 Feb 2023 12:35:29 +0530 Subject: [PATCH 3/3] Reported issue fix --- README.md | 2 +- src/sib_api_v3_sdk/Client/ApiClient.cs | 2 +- src/sib_api_v3_sdk/Client/Configuration.cs | 2 +- src/sib_api_v3_sdk/Model/CreateEmailCampaignSender.cs | 10 +--------- src/sib_api_v3_sdk/sib_api_v3_sdk.csproj | 2 +- 5 files changed, 5 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 023a26b..886d953 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ SendinBlue's API matches the [OpenAPI v2 definition](https://www.openapis.org/). This C# SDK is automatically generated by the [Swagger Codegen](https://github.com/swagger-api/swagger-codegen) project and is reviewed and maintained by SendinBlue: - API version: 3.0.0 -- SDK version: 4.0.0 +- SDK version: 4.0.2 - Build package: io.swagger.codegen.languages.CSharpClientCodegen For more information, please visit [https://account.sendinblue.com/support](https://account.sendinblue.com/support) diff --git a/src/sib_api_v3_sdk/Client/ApiClient.cs b/src/sib_api_v3_sdk/Client/ApiClient.cs index 70718b4..e46159f 100644 --- a/src/sib_api_v3_sdk/Client/ApiClient.cs +++ b/src/sib_api_v3_sdk/Client/ApiClient.cs @@ -178,7 +178,7 @@ public Object CallApi( // set user agent if (!Configuration.UserAgent.ToLower().StartsWith("sendinblue_")) - Configuration.UserAgent = "sendinblue_clientAPI/v4.0.0/c#"; + Configuration.UserAgent = "sendinblue_clientAPI/v4.0.2/c#"; RestClient.UserAgent = Configuration.UserAgent; diff --git a/src/sib_api_v3_sdk/Client/Configuration.cs b/src/sib_api_v3_sdk/Client/Configuration.cs index 53a294e..c2f2905 100644 --- a/src/sib_api_v3_sdk/Client/Configuration.cs +++ b/src/sib_api_v3_sdk/Client/Configuration.cs @@ -29,7 +29,7 @@ public class Configuration : IReadableConfiguration /// Version of the package. /// /// Version of the package. - public const string Version = "4.0.0"; + public const string Version = "4.0.2"; /// /// Identifier for ISO 8601 DateTime Format diff --git a/src/sib_api_v3_sdk/Model/CreateEmailCampaignSender.cs b/src/sib_api_v3_sdk/Model/CreateEmailCampaignSender.cs index ea7d07f..4742eec 100644 --- a/src/sib_api_v3_sdk/Model/CreateEmailCampaignSender.cs +++ b/src/sib_api_v3_sdk/Model/CreateEmailCampaignSender.cs @@ -41,15 +41,7 @@ protected CreateEmailCampaignSender() { } /// Select the sender for the campaign on the basis of sender id. In order to select a sender with specific pool of IP’s, dedicated ip users shall pass id (instead of email).. public CreateEmailCampaignSender(string name = default(string), string email = default(string), long? id = default(long?)) { - // to ensure "email" is required (not null) - if (email == null) - { - throw new InvalidDataException("email is a required property for CreateEmailCampaignSender and cannot be null"); - } - else - { - this.Email = email; - } + this.Email = email; this.Name = name; this.Id = id; } diff --git a/src/sib_api_v3_sdk/sib_api_v3_sdk.csproj b/src/sib_api_v3_sdk/sib_api_v3_sdk.csproj index 9bc5b21..8cdba03 100644 --- a/src/sib_api_v3_sdk/sib_api_v3_sdk.csproj +++ b/src/sib_api_v3_sdk/sib_api_v3_sdk.csproj @@ -14,7 +14,7 @@ true true sib_api_v3_sdk - 4.0.1 + 4.0.2 https://github.com/sendinblue/APIv3-csharp-library/blob/master/LICENSE.txt https://github.com/sendinblue/APIv3-csharp-library https://github.com/sendinblue/APIv3-csharp-library