Repository: fudiwei/DotNetCore.SKIT.FlurlHttpClient.ByteDance
Branch: main
Commit: 7382202ec866
Files: 4644
Total size: 8.5 MB
Directory structure:
gitextract_ceduv36k/
├── .editorconfig
├── .gitee/
│ ├── ISSUE_TEMPLATE.zh-CN.md
│ └── PULL_REQUEST_TEMPLATE.zh-CN.md
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── 1_bug_report.md
│ │ ├── 2_feature_request.md
│ │ └── 3_custom.md
│ ├── PULL_REQUEST_TEMPLATE/
│ │ ├── 1_bugfix.md
│ │ └── 2_enhancement.md
│ └── workflows/
│ ├── codeql-analysis.yml
│ └── super-linter.yml
├── .gitignore
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── SKIT.FlurlHttpClient.ByteDance.slnx
├── docs/
│ ├── DouyinOpen/
│ │ ├── Advanced_Dispose.md
│ │ ├── Advanced_HttpClient.md
│ │ ├── Advanced_HttpClientFactory.md
│ │ ├── Advanced_Interceptor.md
│ │ ├── Advanced_JsonSerializer.md
│ │ ├── Basic_EventDeserialization.md
│ │ ├── Basic_EventSignatureVerification.md
│ │ ├── Basic_Extensions.md
│ │ ├── Basic_GoodLifeSPIDecryption.md
│ │ ├── Basic_MobileNumberDecryption.md
│ │ ├── Basic_ModelDefinition.md
│ │ ├── Basic_Parameters.md
│ │ ├── Migration_V3.md
│ │ └── README.md
│ ├── DouyinShop/
│ │ └── README.md
│ ├── MicroApp/
│ │ ├── Advanced_Dispose.md
│ │ ├── Advanced_HttpClient.md
│ │ ├── Advanced_HttpClientFactory.md
│ │ ├── Advanced_Interceptor.md
│ │ ├── Advanced_JsonSerializer.md
│ │ ├── Basic_EventDeserialization.md
│ │ ├── Basic_EventSignatureVerification.md
│ │ ├── Basic_Extensions.md
│ │ ├── Basic_ModelDefinition.md
│ │ ├── Migration_V3.md
│ │ └── README.md
│ ├── TikTokGlobal/
│ │ ├── Basic_ModelDefinition.md
│ │ └── README.md
│ └── TikTokGlobalShop/
│ ├── Basic_LegacyAPI.md
│ ├── Basic_ModelDefinition.md
│ └── README.md
├── src/
│ ├── SKIT.FlurlHttpClient.ByteDance.DouyinOpen/
│ │ ├── DouyinOpenClient.cs
│ │ ├── DouyinOpenClientBuilder.cs
│ │ ├── DouyinOpenClientOptions.cs
│ │ ├── DouyinOpenEndpoints.cs
│ │ ├── DouyinOpenEvent.cs
│ │ ├── DouyinOpenException.cs
│ │ ├── DouyinOpenRequest.cs
│ │ ├── DouyinOpenResponse.cs
│ │ ├── Events/
│ │ │ ├── GoodLife/
│ │ │ │ ├── LifeMemberJoinEvent.cs
│ │ │ │ ├── LifeMemberLeaveEvent.cs
│ │ │ │ ├── LifeProductAuditEvent.cs
│ │ │ │ ├── LifeTradeCertificateNotifyEvent.cs
│ │ │ │ └── LifeTradeOrderNotifyEvent.cs
│ │ │ ├── IM/
│ │ │ │ ├── EnterGroupAuditChangeEvent.cs
│ │ │ │ ├── GroupFansEventEvent.cs
│ │ │ │ ├── IMAuthorizeEvent.cs
│ │ │ │ ├── IMEnterDirectMessageEvent.cs
│ │ │ │ ├── IMGroupReceiveMessageEvent.cs
│ │ │ │ ├── IMGroupSendMessageEvent.cs
│ │ │ │ ├── IMReceiveMessageEvent.cs
│ │ │ │ └── IMSendMessageEvent.cs
│ │ │ ├── Interaction/
│ │ │ │ ├── NewFollowActionEvent.cs
│ │ │ │ └── NewVideoDiggEvent.cs
│ │ │ ├── UnionAuth/
│ │ │ │ ├── UnionAuthInfoForBEvent.cs
│ │ │ │ └── UnionAuthInfoForCEvent.cs
│ │ │ └── Webhook/
│ │ │ ├── AuthorizeEvent.cs
│ │ │ ├── CreateVideoEvent.cs
│ │ │ ├── DialogPhoneEvent.cs
│ │ │ ├── ItemCommentReplyEvent.cs
│ │ │ ├── PersonalTabContactEvent.cs
│ │ │ ├── ReceiveMessageEvent.cs
│ │ │ ├── UnauthorizeEvent.cs
│ │ │ ├── VerifyWebhookEvent.cs
│ │ │ └── WebsiteContactEvent.cs
│ │ ├── Extensions/
│ │ │ ├── DouyinOpenClientDecryptionExtensions.cs
│ │ │ ├── DouyinOpenClientEventExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteApiAppsAuthExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteApiAppsTradeExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteApiDouyinAuthExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteApiDouyinIMExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteApiDouyinInteractiveExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteApiDouyinRoleExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteApiDouyinSchemaExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteApiDouyinUserExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteApiDouyinVideoExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteApiIMExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteApiIndustryExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteApiMatchExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteDataExternalExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteDevToolExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteDiscoveryExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteEnterpriseExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteEventExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteFansExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteGoodLifeExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteHotSearchExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteIMExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteImageExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteItemExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteJSExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteMarketServiceExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteMessageExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteNamekExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteOAuthExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteOpenExtensions.cs
│ │ │ ├── DouyinOpenClientExecutePOIExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteRoomExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteSandboxExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteShareIdExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteStarExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteTaskExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteToolExtensions.cs
│ │ │ ├── DouyinOpenClientExecuteVideoExtensions.cs
│ │ │ ├── DouyinOpenClientParameterExtensions.cs
│ │ │ └── DouyinOpenClientSPIExtensions.cs
│ │ ├── Models/
│ │ │ ├── ApiAppsAuth/
│ │ │ │ ├── AppsAuthGetOpenIdByCV1Request.cs
│ │ │ │ └── AppsAuthGetOpenIdByCV1Response.cs
│ │ │ ├── ApiAppsTrade/
│ │ │ │ ├── AppsTradeBookCreateBookV2Request.cs
│ │ │ │ ├── AppsTradeBookCreateBookV2Response.cs
│ │ │ │ ├── AppsTradeBookMerchantCancelBookV2Request.cs
│ │ │ │ ├── AppsTradeBookMerchantCancelBookV2Response.cs
│ │ │ │ ├── AppsTradeBookQueryBookV2Request.cs
│ │ │ │ ├── AppsTradeBookQueryBookV2Response.cs
│ │ │ │ ├── AppsTradeBookResultCallbackV2Request.cs
│ │ │ │ ├── AppsTradeBookResultCallbackV2Response.cs
│ │ │ │ ├── AppsTradeBookUserCancelBookV2Request.cs
│ │ │ │ ├── AppsTradeBookUserCancelBookV2Response.cs
│ │ │ │ ├── AppsTradeFulfillmentDeliveryPrepareV2Request.cs
│ │ │ │ ├── AppsTradeFulfillmentDeliveryPrepareV2Response.cs
│ │ │ │ ├── AppsTradeFulfillmentDeliveryVerifyV2Request.cs
│ │ │ │ ├── AppsTradeFulfillmentDeliveryVerifyV2Response.cs
│ │ │ │ ├── AppsTradeFulfillmentOrderCanUseV2Request.cs
│ │ │ │ ├── AppsTradeFulfillmentOrderCanUseV2Response.cs
│ │ │ │ ├── AppsTradeFulfillmentPushDeliveryV2Request.cs
│ │ │ │ ├── AppsTradeFulfillmentPushDeliveryV2Response.cs
│ │ │ │ ├── AppsTradeFulfillmentQueryUserCertificatesV2Request.cs
│ │ │ │ ├── AppsTradeFulfillmentQueryUserCertificatesV2Response.cs
│ │ │ │ ├── AppsTradeFulfillmentVerifyCancelV2Request.cs
│ │ │ │ ├── AppsTradeFulfillmentVerifyCancelV2Response.cs
│ │ │ │ ├── AppsTradeOrderCloseOrderV2Request.cs
│ │ │ │ ├── AppsTradeOrderCloseOrderV2Response.cs
│ │ │ │ ├── AppsTradeOrderCreateOrderV2Request.cs
│ │ │ │ ├── AppsTradeOrderCreateOrderV2Response.cs
│ │ │ │ ├── AppsTradeOrderQueryCPSV2Request.cs
│ │ │ │ ├── AppsTradeOrderQueryCPSV2Response.cs
│ │ │ │ ├── AppsTradeOrderQueryItemOrderInfoV2Request.cs
│ │ │ │ ├── AppsTradeOrderQueryItemOrderInfoV2Response.cs
│ │ │ │ ├── AppsTradeOrderQueryOrderV2Request.cs
│ │ │ │ ├── AppsTradeOrderQueryOrderV2Response.cs
│ │ │ │ ├── AppsTradeRefundCreateRefundV2Request.cs
│ │ │ │ ├── AppsTradeRefundCreateRefundV2Response.cs
│ │ │ │ ├── AppsTradeRefundMerchantAuditCallbackV2Request.cs
│ │ │ │ ├── AppsTradeRefundMerchantAuditCallbackV2Response.cs
│ │ │ │ ├── AppsTradeRefundQueryRefundV2Request.cs
│ │ │ │ ├── AppsTradeRefundQueryRefundV2Response.cs
│ │ │ │ ├── AppsTradeSettleCreateSettleV2Request.cs
│ │ │ │ ├── AppsTradeSettleCreateSettleV2Response.cs
│ │ │ │ ├── AppsTradeSettleQuerySettleV2Request.cs
│ │ │ │ └── AppsTradeSettleQuerySettleV2Response.cs
│ │ │ ├── ApiDouyinAuth/
│ │ │ │ ├── DouyinAuthGetOpenIdByBV1Request.cs
│ │ │ │ ├── DouyinAuthGetOpenIdByBV1Response.cs
│ │ │ │ ├── DouyinAuthGetOpenIdByCV1Request.cs
│ │ │ │ ├── DouyinAuthGetOpenIdByCV1Response.cs
│ │ │ │ ├── DouyinAuthGetRelatedIdV1Request.cs
│ │ │ │ └── DouyinAuthGetRelatedIdV1Response.cs
│ │ │ ├── ApiDouyinIM/
│ │ │ │ ├── DouyinIMDeleteAppletTemplateV1Request.cs
│ │ │ │ ├── DouyinIMDeleteAppletTemplateV1Response.cs
│ │ │ │ ├── DouyinIMGetAppletTemplateV1Request.cs
│ │ │ │ ├── DouyinIMGetAppletTemplateV1Response.cs
│ │ │ │ ├── DouyinIMSetAppletTemplateV1Request.cs
│ │ │ │ └── DouyinIMSetAppletTemplateV1Response.cs
│ │ │ ├── ApiDouyinInteractive/
│ │ │ │ ├── DouyinInteractiveIntentionLogListV1Request.cs
│ │ │ │ └── DouyinInteractiveIntentionLogListV1Response.cs
│ │ │ ├── ApiDouyinRole/
│ │ │ │ ├── DouyinRoleCheckV1Request.cs
│ │ │ │ └── DouyinRoleCheckV1Response.cs
│ │ │ ├── ApiDouyinSchema/
│ │ │ │ ├── DouyinSchemaGetChatV1Request.cs
│ │ │ │ ├── DouyinSchemaGetChatV1Response.cs
│ │ │ │ ├── DouyinSchemaGetItemInfoV1Request.cs
│ │ │ │ ├── DouyinSchemaGetItemInfoV1Response.cs
│ │ │ │ ├── DouyinSchemaGetLiveV1Request.cs
│ │ │ │ ├── DouyinSchemaGetLiveV1Response.cs
│ │ │ │ ├── DouyinSchemaGetShareV1Request.cs
│ │ │ │ ├── DouyinSchemaGetShareV1Response.cs
│ │ │ │ ├── DouyinSchemaGetUserProfileV1Request.cs
│ │ │ │ └── DouyinSchemaGetUserProfileV1Response.cs
│ │ │ ├── ApiDouyinUser/
│ │ │ │ ├── DouyinUserFansDataV1Request.cs
│ │ │ │ └── DouyinUserFansDataV1Response.cs
│ │ │ ├── ApiDouyinVideo/
│ │ │ │ ├── DouyinVideoBasicInfoV1Request.cs
│ │ │ │ ├── DouyinVideoBasicInfoV1Response.cs
│ │ │ │ ├── DouyinVideoCreateVideoV1Request.cs
│ │ │ │ ├── DouyinVideoCreateVideoV1Response.cs
│ │ │ │ ├── DouyinVideoDataV1Request.cs
│ │ │ │ ├── DouyinVideoDataV1Response.cs
│ │ │ │ ├── DouyinVideoListV1Request.cs
│ │ │ │ ├── DouyinVideoListV1Response.cs
│ │ │ │ ├── DouyinVideoUploadVideoV1Request.cs
│ │ │ │ ├── DouyinVideoUploadVideoV1Response.cs
│ │ │ │ ├── Iframe/
│ │ │ │ │ ├── DouyinVideoGetIframeByItemV1Request.cs
│ │ │ │ │ ├── DouyinVideoGetIframeByItemV1Response.cs
│ │ │ │ │ ├── DouyinVideoGetIframeByVideoV1Request.cs
│ │ │ │ │ └── DouyinVideoGetIframeByVideoV1Response.cs
│ │ │ │ ├── Image/
│ │ │ │ │ ├── DouyinVideoCreateImageTextV1Request.cs
│ │ │ │ │ ├── DouyinVideoCreateImageTextV1Response.cs
│ │ │ │ │ ├── DouyinVideoUploadImageV1Request.cs
│ │ │ │ │ └── DouyinVideoUploadImageV1Response.cs
│ │ │ │ └── Part/
│ │ │ │ ├── DouyinVideoCompleteVideoPartUploadV1Request.cs
│ │ │ │ ├── DouyinVideoCompleteVideoPartUploadV1Response.cs
│ │ │ │ ├── DouyinVideoInitVideoPartUploadV1Request.cs
│ │ │ │ ├── DouyinVideoInitVideoPartUploadV1Response.cs
│ │ │ │ ├── DouyinVideoUploadVideoPartV1Request.cs
│ │ │ │ └── DouyinVideoUploadVideoPartV1Response.cs
│ │ │ ├── ApiIM/
│ │ │ │ ├── IMMessageResourcesRequest.cs
│ │ │ │ └── IMMessageResourcesResponse.cs
│ │ │ ├── ApiIndustry/
│ │ │ │ ├── AppTestRelation/
│ │ │ │ │ ├── IndustrySolutionAddAppTestRelationV1Request.cs
│ │ │ │ │ ├── IndustrySolutionAddAppTestRelationV1Response.cs
│ │ │ │ │ ├── IndustrySolutionDeleteAppTestRelationV1Request.cs
│ │ │ │ │ ├── IndustrySolutionDeleteAppTestRelationV1Response.cs
│ │ │ │ │ ├── IndustrySolutionQueryAppTestRelationV1Request.cs
│ │ │ │ │ └── IndustrySolutionQueryAppTestRelationV1Response.cs
│ │ │ │ └── Implementation/
│ │ │ │ ├── IndustrySolutionQueryImplementationV1Request.cs
│ │ │ │ ├── IndustrySolutionQueryImplementationV1Response.cs
│ │ │ │ ├── IndustrySolutionSetImplementationV1Request.cs
│ │ │ │ └── IndustrySolutionSetImplementationV1Response.cs
│ │ │ ├── ApiMatch/
│ │ │ │ ├── MatchTaskboxAgencyQueryBillLinkV2Request.cs
│ │ │ │ ├── MatchTaskboxAgencyQueryBillLinkV2Response.cs
│ │ │ │ ├── MatchTaskboxAgencyQueryVideoSummaryDataV2Request.cs
│ │ │ │ ├── MatchTaskboxAgencyQueryVideoSummaryDataV2Response.cs
│ │ │ │ ├── MatchTaskboxChangeUserBindAgentV1Request.cs
│ │ │ │ ├── MatchTaskboxChangeUserBindAgentV1Response.cs
│ │ │ │ ├── MatchTaskboxGenerateAgentLinkV1Request.cs
│ │ │ │ ├── MatchTaskboxGenerateAgentLinkV1Response.cs
│ │ │ │ ├── MatchTaskboxGetAgencyUserBindRecordV1Request.cs
│ │ │ │ ├── MatchTaskboxGetAgencyUserBindRecordV1Response.cs
│ │ │ │ ├── MatchTaskboxQueryAppTaskIdV1Request.cs
│ │ │ │ ├── MatchTaskboxQueryAppTaskIdV1Response.cs
│ │ │ │ ├── MatchTaskboxQueryTaskInfoV1Request.cs
│ │ │ │ ├── MatchTaskboxQueryTaskInfoV1Response.cs
│ │ │ │ ├── MatchTaskboxQueryTaskVideoStatusV2Request.cs
│ │ │ │ ├── MatchTaskboxQueryTaskVideoStatusV2Response.cs
│ │ │ │ ├── MatchTaskboxQueryViolateTalentListV2Request.cs
│ │ │ │ ├── MatchTaskboxQueryViolateTalentListV2Response.cs
│ │ │ │ ├── MatchTaskboxSaveAgentV1Request.cs
│ │ │ │ └── MatchTaskboxSaveAgentV1Response.cs
│ │ │ ├── DataExternal/
│ │ │ │ ├── Anchor/
│ │ │ │ │ ├── DataExternalAnchorMpItemClickDistributionRequest.cs
│ │ │ │ │ └── DataExternalAnchorMpItemClickDistributionResponse.cs
│ │ │ │ ├── Billboard/
│ │ │ │ │ ├── Amusement/
│ │ │ │ │ │ ├── DataExternalBillboardAmusementNewRequest.cs
│ │ │ │ │ │ ├── DataExternalBillboardAmusementNewResponse.cs
│ │ │ │ │ │ ├── DataExternalBillboardAmusementOverallRequest.cs
│ │ │ │ │ │ └── DataExternalBillboardAmusementOverallResponse.cs
│ │ │ │ │ ├── Car/
│ │ │ │ │ │ ├── DataExternalBillboardCarCommentRequest.cs
│ │ │ │ │ │ ├── DataExternalBillboardCarCommentResponse.cs
│ │ │ │ │ │ ├── DataExternalBillboardCarDriverRequest.cs
│ │ │ │ │ │ ├── DataExternalBillboardCarDriverResponse.cs
│ │ │ │ │ │ ├── DataExternalBillboardCarOverallRequest.cs
│ │ │ │ │ │ ├── DataExternalBillboardCarOverallResponse.cs
│ │ │ │ │ │ ├── DataExternalBillboardCarPlayRequest.cs
│ │ │ │ │ │ ├── DataExternalBillboardCarPlayResponse.cs
│ │ │ │ │ │ ├── DataExternalBillboardCarUseRequest.cs
│ │ │ │ │ │ └── DataExternalBillboardCarUseResponse.cs
│ │ │ │ │ ├── Cospa/
│ │ │ │ │ │ ├── DataExternalBillboardCospaBrainCavityRequest.cs
│ │ │ │ │ │ ├── DataExternalBillboardCospaBrainCavityResponse.cs
│ │ │ │ │ │ ├── DataExternalBillboardCospaNewRequest.cs
│ │ │ │ │ │ ├── DataExternalBillboardCospaNewResponse.cs
│ │ │ │ │ │ ├── DataExternalBillboardCospaOutshotRequest.cs
│ │ │ │ │ │ ├── DataExternalBillboardCospaOutshotResponse.cs
│ │ │ │ │ │ ├── DataExternalBillboardCospaOverallRequest.cs
│ │ │ │ │ │ ├── DataExternalBillboardCospaOverallResponse.cs
│ │ │ │ │ │ ├── DataExternalBillboardCospaPaintingRequest.cs
│ │ │ │ │ │ ├── DataExternalBillboardCospaPaintingResponse.cs
│ │ │ │ │ │ ├── DataExternalBillboardCospaQingmanRequest.cs
│ │ │ │ │ │ ├── DataExternalBillboardCospaQingmanResponse.cs
│ │ │ │ │ │ ├── DataExternalBillboardCospaVoiceRequest.cs
│ │ │ │ │ │ └── DataExternalBillboardCospaVoiceResponse.cs
│ │ │ │ │ ├── Drama/
│ │ │ │ │ │ ├── DataExternalBillboardDramaOverallRequest.cs
│ │ │ │ │ │ └── DataExternalBillboardDramaOverallResponse.cs
│ │ │ │ │ ├── Food/
│ │ │ │ │ │ ├── DataExternalBillboardFoodNewRequest.cs
│ │ │ │ │ │ ├── DataExternalBillboardFoodNewResponse.cs
│ │ │ │ │ │ ├── DataExternalBillboardFoodOverallRequest.cs
│ │ │ │ │ │ ├── DataExternalBillboardFoodOverallResponse.cs
│ │ │ │ │ │ ├── DataExternalBillboardFoodShopRequest.cs
│ │ │ │ │ │ ├── DataExternalBillboardFoodShopResponse.cs
│ │ │ │ │ │ ├── DataExternalBillboardFoodTutorialRequest.cs
│ │ │ │ │ │ └── DataExternalBillboardFoodTutorialResponse.cs
│ │ │ │ │ ├── Game/
│ │ │ │ │ │ ├── DataExternalBillboardGameConsoleRequest.cs
│ │ │ │ │ │ ├── DataExternalBillboardGameConsoleResponse.cs
│ │ │ │ │ │ ├── DataExternalBillboardGameInformationRequest.cs
│ │ │ │ │ │ └── DataExternalBillboardGameInformationResponse.cs
│ │ │ │ │ ├── HotVideo/
│ │ │ │ │ │ ├── DataExternalBillboardHotVideoRequest.cs
│ │ │ │ │ │ └── DataExternalBillboardHotVideoResponse.cs
│ │ │ │ │ ├── Live/
│ │ │ │ │ │ ├── DataExternalBillboardLiveRequest.cs
│ │ │ │ │ │ └── DataExternalBillboardLiveResponse.cs
│ │ │ │ │ ├── Music/
│ │ │ │ │ │ ├── DataExternalBillboardMusicHotRequest.cs
│ │ │ │ │ │ ├── DataExternalBillboardMusicHotResponse.cs
│ │ │ │ │ │ ├── DataExternalBillboardMusicOriginalRequest.cs
│ │ │ │ │ │ ├── DataExternalBillboardMusicOriginalResponse.cs
│ │ │ │ │ │ ├── DataExternalBillboardMusicSoarRequest.cs
│ │ │ │ │ │ └── DataExternalBillboardMusicSoarResponse.cs
│ │ │ │ │ ├── Prop/
│ │ │ │ │ │ ├── DataExternalBillboardPropRequest.cs
│ │ │ │ │ │ └── DataExternalBillboardPropResponse.cs
│ │ │ │ │ ├── Sport/
│ │ │ │ │ │ ├── DataExternalBillboardSportBasketballRequest.cs
│ │ │ │ │ │ ├── DataExternalBillboardSportBasketballResponse.cs
│ │ │ │ │ │ ├── DataExternalBillboardSportComprehensiveRequest.cs
│ │ │ │ │ │ ├── DataExternalBillboardSportComprehensiveResponse.cs
│ │ │ │ │ │ ├── DataExternalBillboardSportCultureRequest.cs
│ │ │ │ │ │ ├── DataExternalBillboardSportCultureResponse.cs
│ │ │ │ │ │ ├── DataExternalBillboardSportFitnessRequest.cs
│ │ │ │ │ │ ├── DataExternalBillboardSportFitnessResponse.cs
│ │ │ │ │ │ ├── DataExternalBillboardSportOutdoorsRequest.cs
│ │ │ │ │ │ ├── DataExternalBillboardSportOutdoorsResponse.cs
│ │ │ │ │ │ ├── DataExternalBillboardSportOverallRequest.cs
│ │ │ │ │ │ ├── DataExternalBillboardSportOverallResponse.cs
│ │ │ │ │ │ ├── DataExternalBillboardSportSoccerRequest.cs
│ │ │ │ │ │ ├── DataExternalBillboardSportSoccerResponse.cs
│ │ │ │ │ │ ├── DataExternalBillboardSportTableTennisRequest.cs
│ │ │ │ │ │ └── DataExternalBillboardSportTableTennisResponse.cs
│ │ │ │ │ ├── Stars/
│ │ │ │ │ │ ├── DataExternalBillboardStarsRequest.cs
│ │ │ │ │ │ └── DataExternalBillboardStarsResponse.cs
│ │ │ │ │ ├── Topic/
│ │ │ │ │ │ ├── DataExternalBillboardTopicRequest.cs
│ │ │ │ │ │ └── DataExternalBillboardTopicResponse.cs
│ │ │ │ │ └── Travel/
│ │ │ │ │ ├── DataExternalBillboardTravelNewRequest.cs
│ │ │ │ │ ├── DataExternalBillboardTravelNewResponse.cs
│ │ │ │ │ ├── DataExternalBillboardTravelOverallRequest.cs
│ │ │ │ │ └── DataExternalBillboardTravelOverallResponse.cs
│ │ │ │ ├── Fans/
│ │ │ │ │ ├── DataExternalFansCommentRequest.cs
│ │ │ │ │ ├── DataExternalFansCommentResponse.cs
│ │ │ │ │ ├── DataExternalFansFavouriteRequest.cs
│ │ │ │ │ ├── DataExternalFansFavouriteResponse.cs
│ │ │ │ │ ├── DataExternalFansSourceRequest.cs
│ │ │ │ │ └── DataExternalFansSourceResponse.cs
│ │ │ │ ├── Item/
│ │ │ │ │ ├── DataExternalItemBaseRequest.cs
│ │ │ │ │ ├── DataExternalItemBaseResponse.cs
│ │ │ │ │ ├── DataExternalItemCommentRequest.cs
│ │ │ │ │ ├── DataExternalItemCommentResponse.cs
│ │ │ │ │ ├── DataExternalItemLikeRequest.cs
│ │ │ │ │ ├── DataExternalItemLikeResponse.cs
│ │ │ │ │ ├── DataExternalItemPlayRequest.cs
│ │ │ │ │ ├── DataExternalItemPlayResponse.cs
│ │ │ │ │ ├── DataExternalItemShareRequest.cs
│ │ │ │ │ └── DataExternalItemShareResponse.cs
│ │ │ │ ├── POI/
│ │ │ │ │ ├── DataExternalPOIBaseRequest.cs
│ │ │ │ │ ├── DataExternalPOIBaseResponse.cs
│ │ │ │ │ ├── DataExternalPOIBillboardRequest.cs
│ │ │ │ │ ├── DataExternalPOIBillboardResponse.cs
│ │ │ │ │ ├── DataExternalPOIClaimListRequest.cs
│ │ │ │ │ ├── DataExternalPOIClaimListResponse.cs
│ │ │ │ │ ├── DataExternalPOIServiceBaseRequest.cs
│ │ │ │ │ ├── DataExternalPOIServiceBaseResponse.cs
│ │ │ │ │ ├── DataExternalPOIServiceUserRequest.cs
│ │ │ │ │ ├── DataExternalPOIServiceUserResponse.cs
│ │ │ │ │ ├── DataExternalPOIUserRequest.cs
│ │ │ │ │ └── DataExternalPOIUserResponse.cs
│ │ │ │ └── User/
│ │ │ │ ├── DataExternalUserCommentRequest.cs
│ │ │ │ ├── DataExternalUserCommentResponse.cs
│ │ │ │ ├── DataExternalUserFansRequest.cs
│ │ │ │ ├── DataExternalUserFansResponse.cs
│ │ │ │ ├── DataExternalUserItemRequest.cs
│ │ │ │ ├── DataExternalUserItemResponse.cs
│ │ │ │ ├── DataExternalUserLikeRequest.cs
│ │ │ │ ├── DataExternalUserLikeResponse.cs
│ │ │ │ ├── DataExternalUserProfileRequest.cs
│ │ │ │ ├── DataExternalUserProfileResponse.cs
│ │ │ │ ├── DataExternalUserShareRequest.cs
│ │ │ │ └── DataExternalUserShareResponse.cs
│ │ │ ├── DevTool/
│ │ │ │ ├── DevToolMicroAppIsLegalRequest.cs
│ │ │ │ └── DevToolMicroAppIsLegalResponse.cs
│ │ │ ├── Discovery/
│ │ │ │ ├── DiscoveryEntertainmentRankItemRequest.cs
│ │ │ │ ├── DiscoveryEntertainmentRankItemResponse.cs
│ │ │ │ ├── DiscoveryEntertainmentRankVersionRequest.cs
│ │ │ │ └── DiscoveryEntertainmentRankVersionResponse.cs
│ │ │ ├── Enterprise/
│ │ │ │ └── Media/
│ │ │ │ ├── EnterpriseMediaDeleteRequest.cs
│ │ │ │ ├── EnterpriseMediaDeleteResponse.cs
│ │ │ │ ├── EnterpriseMediaListRequest.cs
│ │ │ │ ├── EnterpriseMediaListResponse.cs
│ │ │ │ ├── EnterpriseMediaTempUploadRequest.cs
│ │ │ │ ├── EnterpriseMediaTempUploadResponse.cs
│ │ │ │ ├── EnterpriseMediaUploadRequest.cs
│ │ │ │ └── EnterpriseMediaUploadResponse.cs
│ │ │ ├── Event/
│ │ │ │ ├── EventStatusListRequest.cs
│ │ │ │ ├── EventStatusListResponse.cs
│ │ │ │ ├── EventStatusUpdateRequest.cs
│ │ │ │ └── EventStatusUpdateResponse.cs
│ │ │ ├── Fans/
│ │ │ │ ├── FansCheckRequest.cs
│ │ │ │ └── FansCheckResponse.cs
│ │ │ ├── GoodLife/
│ │ │ │ ├── Aftersale/
│ │ │ │ │ ├── Audit/
│ │ │ │ │ │ ├── GoodLifeAftersaleAuditNotifyV1Request.cs
│ │ │ │ │ │ └── GoodLifeAftersaleAuditNotifyV1Response.cs
│ │ │ │ │ └── Order/
│ │ │ │ │ ├── GoodLifeAftersaleOrderApplyRefundV1Request.cs
│ │ │ │ │ ├── GoodLifeAftersaleOrderApplyRefundV1Response.cs
│ │ │ │ │ ├── GoodLifeAftersaleOrderMerchantRejectV1Request.cs
│ │ │ │ │ └── GoodLifeAftersaleOrderMerchantRejectV1Response.cs
│ │ │ │ ├── Fulfilment/
│ │ │ │ │ ├── Certificate/
│ │ │ │ │ │ ├── GoodLifeFulfilmentCertificateCancelV1Request.cs
│ │ │ │ │ │ ├── GoodLifeFulfilmentCertificateCancelV1Response.cs
│ │ │ │ │ │ ├── GoodLifeFulfilmentCertificateGetV1Request.cs
│ │ │ │ │ │ ├── GoodLifeFulfilmentCertificateGetV1Response.cs
│ │ │ │ │ │ ├── GoodLifeFulfilmentCertificatePrepareV1Request.cs
│ │ │ │ │ │ ├── GoodLifeFulfilmentCertificatePrepareV1Response.cs
│ │ │ │ │ │ ├── GoodLifeFulfilmentCertificateQueryV1Request.cs
│ │ │ │ │ │ ├── GoodLifeFulfilmentCertificateQueryV1Response.cs
│ │ │ │ │ │ ├── GoodLifeFulfilmentCertificateVerifyRecordQueryV1Request.cs
│ │ │ │ │ │ ├── GoodLifeFulfilmentCertificateVerifyRecordQueryV1Response.cs
│ │ │ │ │ │ ├── GoodLifeFulfilmentCertificateVerifyV1Request.cs
│ │ │ │ │ │ └── GoodLifeFulfilmentCertificateVerifyV1Response.cs
│ │ │ │ │ ├── Distribution/
│ │ │ │ │ │ ├── GoodLifeFulfilmentDistributionOrderSyncStatusV1Request.cs
│ │ │ │ │ │ └── GoodLifeFulfilmentDistributionOrderSyncStatusV1Response.cs
│ │ │ │ │ └── ReserveCode/
│ │ │ │ │ ├── GoodLifeFulfilmentReserveCodeBatchImportV1Request.cs
│ │ │ │ │ ├── GoodLifeFulfilmentReserveCodeBatchImportV1Response.cs
│ │ │ │ │ ├── GoodLifeFulfilmentReserveCodeBindOrderInfoV1Request.cs
│ │ │ │ │ └── GoodLifeFulfilmentReserveCodeBindOrderInfoV1Response.cs
│ │ │ │ ├── Goods/
│ │ │ │ │ ├── Calendar/
│ │ │ │ │ │ ├── GoodLifeGoodsCalendarAmountGroupSaveV1Request.cs
│ │ │ │ │ │ ├── GoodLifeGoodsCalendarAmountGroupSaveV1Response.cs
│ │ │ │ │ │ ├── GoodLifeGoodsCalendarStaticAttributeGroupSaveV1Request.cs
│ │ │ │ │ │ ├── GoodLifeGoodsCalendarStaticAttributeGroupSaveV1Response.cs
│ │ │ │ │ │ ├── GoodLifeGoodsCalendarStockGroupSaveV1Request.cs
│ │ │ │ │ │ └── GoodLifeGoodsCalendarStockGroupSaveV1Response.cs
│ │ │ │ │ ├── Category/
│ │ │ │ │ │ ├── GoodLifeGoodsCategoryGetV1Request.cs
│ │ │ │ │ │ └── GoodLifeGoodsCategoryGetV1Response.cs
│ │ │ │ │ ├── Product/
│ │ │ │ │ │ ├── GoodLifeGoodsProductDraftGetV1Request.cs
│ │ │ │ │ │ ├── GoodLifeGoodsProductDraftGetV1Response.cs
│ │ │ │ │ │ ├── GoodLifeGoodsProductDraftQueryV1Request.cs
│ │ │ │ │ │ ├── GoodLifeGoodsProductDraftQueryV1Response.cs
│ │ │ │ │ │ ├── GoodLifeGoodsProductFreeAuditV1Request.cs
│ │ │ │ │ │ ├── GoodLifeGoodsProductFreeAuditV1Response.cs
│ │ │ │ │ │ ├── GoodLifeGoodsProductOnlineGetV1Request.cs
│ │ │ │ │ │ ├── GoodLifeGoodsProductOnlineGetV1Response.cs
│ │ │ │ │ │ ├── GoodLifeGoodsProductOnlineQueryV1Request.cs
│ │ │ │ │ │ ├── GoodLifeGoodsProductOnlineQueryV1Response.cs
│ │ │ │ │ │ ├── GoodLifeGoodsProductOperateV1Request.cs
│ │ │ │ │ │ ├── GoodLifeGoodsProductOperateV1Response.cs
│ │ │ │ │ │ ├── GoodLifeGoodsProductSaveV1Request.cs
│ │ │ │ │ │ └── GoodLifeGoodsProductSaveV1Response.cs
│ │ │ │ │ ├── SKU/
│ │ │ │ │ │ ├── GoodLifeGoodsSKUBatchSaveV1Request.cs
│ │ │ │ │ │ └── GoodLifeGoodsSKUBatchSaveV1Response.cs
│ │ │ │ │ ├── SPU/
│ │ │ │ │ │ ├── GoodLifeGoodsSPUSaveV1Request.cs
│ │ │ │ │ │ └── GoodLifeGoodsSPUSaveV1Response.cs
│ │ │ │ │ ├── Stock/
│ │ │ │ │ │ ├── GoodLifeGoodsStockSyncV1Request.cs
│ │ │ │ │ │ └── GoodLifeGoodsStockSyncV1Response.cs
│ │ │ │ │ └── Template/
│ │ │ │ │ ├── GoodLifeGoodsTemplateGetV1Request.cs
│ │ │ │ │ └── GoodLifeGoodsTemplateGetV1Response.cs
│ │ │ │ ├── Member/
│ │ │ │ │ ├── GoodLifeMemberUnionIdGetV1Request.cs
│ │ │ │ │ ├── GoodLifeMemberUnionIdGetV1Response.cs
│ │ │ │ │ ├── GoodLifeMemberUserUpdateV1Request.cs
│ │ │ │ │ └── GoodLifeMemberUserUpdateV1Response.cs
│ │ │ │ ├── POI/
│ │ │ │ │ ├── Crowd/
│ │ │ │ │ │ ├── GoodLifePOICrowdSaveV1Request.cs
│ │ │ │ │ │ └── GoodLifePOICrowdSaveV1Response.cs
│ │ │ │ │ ├── GoodLifePOIClaimV1Request.cs
│ │ │ │ │ ├── GoodLifePOIClaimV1Response.cs
│ │ │ │ │ ├── GoodLifePOIDecorateV1Request.cs
│ │ │ │ │ ├── GoodLifePOIDecorateV1Response.cs
│ │ │ │ │ ├── GoodLifePOIMatchRelationQueryV1Request.cs
│ │ │ │ │ ├── GoodLifePOIMatchRelationQueryV1Response.cs
│ │ │ │ │ ├── GoodLifePOIMatchTaskQueryV1Request.cs
│ │ │ │ │ ├── GoodLifePOIMatchTaskQueryV1Response.cs
│ │ │ │ │ ├── GoodLifePOIMatchTaskSubmitV1Request.cs
│ │ │ │ │ ├── GoodLifePOIMatchTaskSubmitV1Response.cs
│ │ │ │ │ ├── GoodLifePOISyncV1Request.cs
│ │ │ │ │ ├── GoodLifePOISyncV1Response.cs
│ │ │ │ │ ├── GoodLifePOITaskQueryV1Request.cs
│ │ │ │ │ ├── GoodLifePOITaskQueryV1Response.cs
│ │ │ │ │ ├── GoodLifePOIUpdateV1Request.cs
│ │ │ │ │ └── GoodLifePOIUpdateV1Response.cs
│ │ │ │ ├── Partner/
│ │ │ │ │ ├── Commission/
│ │ │ │ │ │ ├── GoodLifePartnerCommissionRecordGetV1Request.cs
│ │ │ │ │ │ ├── GoodLifePartnerCommissionRecordGetV1Response.cs
│ │ │ │ │ │ ├── GoodLifePartnerCommissionRecordQueryV1Request.cs
│ │ │ │ │ │ ├── GoodLifePartnerCommissionRecordQueryV1Response.cs
│ │ │ │ │ │ ├── GoodLifePartnerProductCommissionQueryV1Request.cs
│ │ │ │ │ │ ├── GoodLifePartnerProductCommissionQueryV1Response.cs
│ │ │ │ │ │ ├── GoodLifePartnerProductCommissionSaveV1Request.cs
│ │ │ │ │ │ └── GoodLifePartnerProductCommissionSaveV1Response.cs
│ │ │ │ │ └── Order/
│ │ │ │ │ ├── GoodLifePartnerOrderCreateV1Request.cs
│ │ │ │ │ ├── GoodLifePartnerOrderCreateV1Response.cs
│ │ │ │ │ ├── GoodLifePartnerOrderGetV1Request.cs
│ │ │ │ │ ├── GoodLifePartnerOrderGetV1Response.cs
│ │ │ │ │ ├── GoodLifePartnerOrderQueryV1Request.cs
│ │ │ │ │ └── GoodLifePartnerOrderQueryV1Response.cs
│ │ │ │ ├── Settle/
│ │ │ │ │ ├── GoodLifeSettleLedgerDetailedQueryByOrderV1Request.cs
│ │ │ │ │ ├── GoodLifeSettleLedgerDetailedQueryByOrderV1Response.cs
│ │ │ │ │ ├── GoodLifeSettleLedgerDetailedQueryV1Request.cs
│ │ │ │ │ ├── GoodLifeSettleLedgerDetailedQueryV1Response.cs
│ │ │ │ │ ├── GoodLifeSettleLedgerQueryByOrderV1Request.cs
│ │ │ │ │ ├── GoodLifeSettleLedgerQueryByOrderV1Response.cs
│ │ │ │ │ ├── GoodLifeSettleLedgerQueryRecordByCertificateV1Request.cs
│ │ │ │ │ ├── GoodLifeSettleLedgerQueryRecordByCertificateV1Response.cs
│ │ │ │ │ ├── GoodLifeSettleLedgerQueryV1Request.cs
│ │ │ │ │ └── GoodLifeSettleLedgerQueryV1Response.cs
│ │ │ │ ├── Shop/
│ │ │ │ │ ├── GoodLifeShopPOIQueryV1Request.cs
│ │ │ │ │ └── GoodLifeShopPOIQueryV1Response.cs
│ │ │ │ └── Trade/
│ │ │ │ ├── GoodLifeTradeBookGetV1Request.cs
│ │ │ │ ├── GoodLifeTradeBookGetV1Response.cs
│ │ │ │ ├── GoodLifeTradeBuyMerchantConfirmOrderV1Request.cs
│ │ │ │ ├── GoodLifeTradeBuyMerchantConfirmOrderV1Response.cs
│ │ │ │ ├── GoodLifeTradeOrderQueryV1Request.cs
│ │ │ │ └── GoodLifeTradeOrderQueryV1Response.cs
│ │ │ ├── HotSearch/
│ │ │ │ ├── HotSearchSentencesRequest.cs
│ │ │ │ ├── HotSearchSentencesResponse.cs
│ │ │ │ ├── HotSearchTrendingSentencesRequest.cs
│ │ │ │ ├── HotSearchTrendingSentencesResponse.cs
│ │ │ │ ├── HotSearchVideosRequest.cs
│ │ │ │ └── HotSearchVideosResponse.cs
│ │ │ ├── IM/
│ │ │ │ ├── Authorize/
│ │ │ │ │ ├── IMAuthorizeStatusRequest.cs
│ │ │ │ │ ├── IMAuthorizeStatusResponse.cs
│ │ │ │ │ ├── IMAuthorizeUserListRequest.cs
│ │ │ │ │ └── IMAuthorizeUserListResponse.cs
│ │ │ │ ├── Card/
│ │ │ │ │ ├── IMDeleteRetainConsultCardRequest.cs
│ │ │ │ │ ├── IMDeleteRetainConsultCardResponse.cs
│ │ │ │ │ ├── IMGetRetainConsultCardRequest.cs
│ │ │ │ │ ├── IMGetRetainConsultCardResponse.cs
│ │ │ │ │ ├── IMSaveRetainConsultCardRequest.cs
│ │ │ │ │ └── IMSaveRetainConsultCardResponse.cs
│ │ │ │ ├── Group/
│ │ │ │ │ ├── IMGroupEnterAuditGetRequest.cs
│ │ │ │ │ ├── IMGroupEnterAuditGetResponse.cs
│ │ │ │ │ ├── IMGroupEnterAuditSetRequest.cs
│ │ │ │ │ ├── IMGroupEnterAuditSetResponse.cs
│ │ │ │ │ ├── IMGroupFansCountRequest.cs
│ │ │ │ │ ├── IMGroupFansCountResponse.cs
│ │ │ │ │ ├── IMGroupFansCreateRequest.cs
│ │ │ │ │ ├── IMGroupFansCreateResponse.cs
│ │ │ │ │ ├── IMGroupFansListRequest.cs
│ │ │ │ │ ├── IMGroupFansListResponse.cs
│ │ │ │ │ ├── IMGroupSettingDisableRequest.cs
│ │ │ │ │ ├── IMGroupSettingDisableResponse.cs
│ │ │ │ │ ├── IMGroupSettingSetRequest.cs
│ │ │ │ │ └── IMGroupSettingSetResponse.cs
│ │ │ │ └── Message/
│ │ │ │ ├── IMRecallMessageRequest.cs
│ │ │ │ ├── IMRecallMessageResponse.cs
│ │ │ │ ├── IMSendMessageGroupRequest.cs
│ │ │ │ ├── IMSendMessageGroupResponse.cs
│ │ │ │ ├── IMSendMessageRequest.cs
│ │ │ │ └── IMSendMessageResponse.cs
│ │ │ ├── Image/
│ │ │ │ ├── ImageCreateRequest.cs
│ │ │ │ ├── ImageCreateResponse.cs
│ │ │ │ ├── ImageUploadRequest.cs
│ │ │ │ └── ImageUploadResponse.cs
│ │ │ ├── Item/
│ │ │ │ └── Comment/
│ │ │ │ ├── ItemCommentListRequest.cs
│ │ │ │ ├── ItemCommentListResponse.cs
│ │ │ │ ├── ItemCommentReplyListRequest.cs
│ │ │ │ ├── ItemCommentReplyListResponse.cs
│ │ │ │ ├── ItemCommentReplyRequest.cs
│ │ │ │ ├── ItemCommentReplyResponse.cs
│ │ │ │ ├── ItemCommentTopRequest.cs
│ │ │ │ └── ItemCommentTopResponse.cs
│ │ │ ├── JS/
│ │ │ │ ├── JSGetTicketRequest.cs
│ │ │ │ └── JSGetTicketResponse.cs
│ │ │ ├── MarketService/
│ │ │ │ ├── MarketServiceUserDeletePurchaseInfoRequest.cs
│ │ │ │ ├── MarketServiceUserDeletePurchaseInfoResponse.cs
│ │ │ │ ├── MarketServiceUserInsertPurchaseInfoRequest.cs
│ │ │ │ ├── MarketServiceUserInsertPurchaseInfoResponse.cs
│ │ │ │ ├── MarketServiceUserPurchaseListRequest.cs
│ │ │ │ ├── MarketServiceUserPurchaseListResponse.cs
│ │ │ │ ├── MarketServiceUserRemainTimesDecreaseRequest.cs
│ │ │ │ └── MarketServiceUserRemainTimesDecreaseResponse.cs
│ │ │ ├── Message/
│ │ │ │ ├── MessageOnceSendRequest.cs
│ │ │ │ └── MessageOnceSendResponse.cs
│ │ │ ├── Namek/
│ │ │ │ ├── NamekFulfilmentPrepareRequest.cs
│ │ │ │ └── NamekFulfilmentPrepareResponse.cs
│ │ │ ├── OAuth/
│ │ │ │ ├── OAuthAccessTokenRequest.cs
│ │ │ │ ├── OAuthAccessTokenResponse.cs
│ │ │ │ ├── OAuthBusinessScopesRequest.cs
│ │ │ │ ├── OAuthBusinessScopesResponse.cs
│ │ │ │ ├── OAuthBusinessTokenRequest.cs
│ │ │ │ ├── OAuthBusinessTokenResponse.cs
│ │ │ │ ├── OAuthClientTokenRequest.cs
│ │ │ │ ├── OAuthClientTokenResponse.cs
│ │ │ │ ├── OAuthRefreshBusinessTokenRequest.cs
│ │ │ │ ├── OAuthRefreshBusinessTokenResponse.cs
│ │ │ │ ├── OAuthRefreshTokenRequest.cs
│ │ │ │ ├── OAuthRefreshTokenResponse.cs
│ │ │ │ ├── OAuthRenewRefreshTokenRequest.cs
│ │ │ │ ├── OAuthRenewRefreshTokenResponse.cs
│ │ │ │ └── User/
│ │ │ │ ├── OAuthUserInfoRequest.cs
│ │ │ │ └── OAuthUserInfoResponse.cs
│ │ │ ├── Open/
│ │ │ │ ├── OpenGetTicketRequest.cs
│ │ │ │ └── OpenGetTicketResponse.cs
│ │ │ ├── POI/
│ │ │ │ ├── Coupon/
│ │ │ │ │ ├── POICouponSyncCouponAvailableV2Request.cs
│ │ │ │ │ ├── POICouponSyncCouponAvailableV2Response.cs
│ │ │ │ │ ├── POICouponSyncV2Request.cs
│ │ │ │ │ └── POICouponSyncV2Response.cs
│ │ │ │ ├── External/
│ │ │ │ │ ├── Hotel/
│ │ │ │ │ │ ├── POIExternalHotelOrderCancelRequest.cs
│ │ │ │ │ │ ├── POIExternalHotelOrderCancelResponse.cs
│ │ │ │ │ │ ├── POIExternalHotelOrderCommitRequest.cs
│ │ │ │ │ │ ├── POIExternalHotelOrderCommitResponse.cs
│ │ │ │ │ │ ├── POIExternalHotelOrderStatusRequest.cs
│ │ │ │ │ │ ├── POIExternalHotelOrderStatusResponse.cs
│ │ │ │ │ │ ├── POIExternalHotelSKURequest.cs
│ │ │ │ │ │ └── POIExternalHotelSKUResponse.cs
│ │ │ │ │ └── PresaleGroupon/
│ │ │ │ │ ├── POIExternalPresaleGrouponOrderCancelRequest.cs
│ │ │ │ │ ├── POIExternalPresaleGrouponOrderCancelResponse.cs
│ │ │ │ │ ├── POIExternalPresaleGrouponOrderCommitRequest.cs
│ │ │ │ │ ├── POIExternalPresaleGrouponOrderCommitResponse.cs
│ │ │ │ │ ├── POIExternalPresaleGrouponOrderCreateRequest.cs
│ │ │ │ │ └── POIExternalPresaleGrouponOrderCreateResponse.cs
│ │ │ │ ├── Order/
│ │ │ │ │ ├── POIOrderBillTokenRequest.cs
│ │ │ │ │ ├── POIOrderBillTokenResponse.cs
│ │ │ │ │ ├── POIOrderConfirmCancelPrepareRequest.cs
│ │ │ │ │ ├── POIOrderConfirmCancelPrepareResponse.cs
│ │ │ │ │ ├── POIOrderConfirmPrepareRequest.cs
│ │ │ │ │ ├── POIOrderConfirmPrepareResponse.cs
│ │ │ │ │ ├── POIOrderConfirmRequest.cs
│ │ │ │ │ ├── POIOrderConfirmResponse.cs
│ │ │ │ │ ├── POIOrderListTokenRequest.cs
│ │ │ │ │ ├── POIOrderListTokenResponse.cs
│ │ │ │ │ ├── POIOrderStatusRequest.cs
│ │ │ │ │ ├── POIOrderStatusResponse.cs
│ │ │ │ │ ├── POIOrderSyncRequest.cs
│ │ │ │ │ └── POIOrderSyncResponse.cs
│ │ │ │ ├── POIBaseQueryAMapRequest.cs
│ │ │ │ ├── POIBaseQueryAMapResponse.cs
│ │ │ │ ├── POIQueryRequest.cs
│ │ │ │ ├── POIQueryResponse.cs
│ │ │ │ ├── POISearchKeywordRequest.cs
│ │ │ │ ├── POISearchKeywordResponse.cs
│ │ │ │ ├── Plan/
│ │ │ │ │ ├── POICommonPlanDetailRequest.cs
│ │ │ │ │ ├── POICommonPlanDetailResponse.cs
│ │ │ │ │ ├── POICommonPlanSaveRequest.cs
│ │ │ │ │ ├── POICommonPlanSaveResponse.cs
│ │ │ │ │ ├── POICommonPlanTalentDetailRequest.cs
│ │ │ │ │ ├── POICommonPlanTalentDetailResponse.cs
│ │ │ │ │ ├── POICommonPlanTalentListRequest.cs
│ │ │ │ │ ├── POICommonPlanTalentListResponse.cs
│ │ │ │ │ ├── POICommonPlanTalentMediaListRequest.cs
│ │ │ │ │ ├── POICommonPlanTalentMediaListResponse.cs
│ │ │ │ │ ├── POICommonPlanUpdateStatusRequest.cs
│ │ │ │ │ ├── POICommonPlanUpdateStatusResponse.cs
│ │ │ │ │ ├── POIPlanListRequest.cs
│ │ │ │ │ └── POIPlanListResponse.cs
│ │ │ │ ├── SKU/
│ │ │ │ │ ├── POISKUSyncRequest.cs
│ │ │ │ │ └── POISKUSyncResponse.cs
│ │ │ │ ├── SPU/
│ │ │ │ │ ├── POISPUGetV2Request.cs
│ │ │ │ │ ├── POISPUGetV2Response.cs
│ │ │ │ │ ├── POISPUStatusSyncV2Request.cs
│ │ │ │ │ ├── POISPUStatusSyncV2Response.cs
│ │ │ │ │ ├── POISPUStockUpdateV2Request.cs
│ │ │ │ │ ├── POISPUStockUpdateV2Response.cs
│ │ │ │ │ ├── POISPUSyncV2Request.cs
│ │ │ │ │ ├── POISPUSyncV2Response.cs
│ │ │ │ │ ├── POISPUTakeRateSyncV2Request.cs
│ │ │ │ │ └── POISPUTakeRateSyncV2Response.cs
│ │ │ │ ├── ServiceProvider/
│ │ │ │ │ ├── POIServiceProviderSyncV2Request.cs
│ │ │ │ │ └── POIServiceProviderSyncV2Response.cs
│ │ │ │ └── Supplier/
│ │ │ │ ├── POISupplierMatchV2Request.cs
│ │ │ │ ├── POISupplierMatchV2Response.cs
│ │ │ │ ├── POISupplierQueryAllRequest.cs
│ │ │ │ ├── POISupplierQueryAllResponse.cs
│ │ │ │ ├── POISupplierQueryCallbackRequest.cs
│ │ │ │ ├── POISupplierQueryCallbackResponse.cs
│ │ │ │ ├── POISupplierQueryRequest.cs
│ │ │ │ ├── POISupplierQueryResponse.cs
│ │ │ │ ├── POISupplierQuerySupplierV2Request.cs
│ │ │ │ ├── POISupplierQuerySupplierV2Response.cs
│ │ │ │ ├── POISupplierQueryTaskV2Request.cs
│ │ │ │ ├── POISupplierQueryTaskV2Response.cs
│ │ │ │ ├── POISupplierSyncRequest.cs
│ │ │ │ └── POISupplierSyncResponse.cs
│ │ │ ├── Room/
│ │ │ │ ├── RoomDataAudienceGetRequest.cs
│ │ │ │ ├── RoomDataAudienceGetResponse.cs
│ │ │ │ ├── RoomDataBaseGetRequest.cs
│ │ │ │ ├── RoomDataBaseGetResponse.cs
│ │ │ │ ├── RoomDataInteractiveGetRequest.cs
│ │ │ │ ├── RoomDataInteractiveGetResponse.cs
│ │ │ │ ├── RoomDataRoomIdGetRequest.cs
│ │ │ │ └── RoomDataRoomIdGetResponse.cs
│ │ │ ├── Sandbox/
│ │ │ │ ├── SandboxWebhookEventSendRequest.cs
│ │ │ │ └── SandboxWebhookEventSendResponse.cs
│ │ │ ├── ShareId/
│ │ │ │ ├── ShareIdRequest.cs
│ │ │ │ └── ShareIdResponse.cs
│ │ │ ├── Star/
│ │ │ │ ├── StarAuthorScoreRequest.cs
│ │ │ │ ├── StarAuthorScoreResponse.cs
│ │ │ │ ├── StarAuthorScoreV2Request.cs
│ │ │ │ ├── StarAuthorScoreV2Response.cs
│ │ │ │ ├── StarHotListRequest.cs
│ │ │ │ └── StarHotListResponse.cs
│ │ │ ├── Task/
│ │ │ │ ├── TaskPostingBindVideoRequest.cs
│ │ │ │ ├── TaskPostingBindVideoResponse.cs
│ │ │ │ ├── TaskPostingCreateRequest.cs
│ │ │ │ ├── TaskPostingCreateResponse.cs
│ │ │ │ ├── TaskPostingUserRequest.cs
│ │ │ │ └── TaskPostingUserResponse.cs
│ │ │ ├── Tool/
│ │ │ │ ├── ToolImagexClientUploadRequest.cs
│ │ │ │ └── ToolImagexClientUploadResponse.cs
│ │ │ └── Video/
│ │ │ ├── Comment/
│ │ │ │ ├── VideoCommentListRequest.cs
│ │ │ │ ├── VideoCommentListResponse.cs
│ │ │ │ ├── VideoCommentReplyListRequest.cs
│ │ │ │ ├── VideoCommentReplyListResponse.cs
│ │ │ │ ├── VideoCommentReplyRequest.cs
│ │ │ │ ├── VideoCommentReplyResponse.cs
│ │ │ │ ├── VideoCommentTopRequest.cs
│ │ │ │ └── VideoCommentTopResponse.cs
│ │ │ ├── Search/
│ │ │ │ ├── VideoSearchCommentListRequest.cs
│ │ │ │ ├── VideoSearchCommentListResponse.cs
│ │ │ │ ├── VideoSearchCommentReplyListRequest.cs
│ │ │ │ ├── VideoSearchCommentReplyListResponse.cs
│ │ │ │ ├── VideoSearchCommentReplyRequest.cs
│ │ │ │ ├── VideoSearchCommentReplyResponse.cs
│ │ │ │ ├── VideoSearchRequest.cs
│ │ │ │ └── VideoSearchResponse.cs
│ │ │ ├── VideoSourceRequest.cs
│ │ │ └── VideoSourceResponse.cs
│ │ ├── README.md
│ │ ├── SKIT.FlurlHttpClient.ByteDance.DouyinOpen.csproj
│ │ ├── Settings/
│ │ │ └── Credentials.cs
│ │ └── Utilities/
│ │ ├── AESUtility.cs
│ │ ├── HMACUtility.cs
│ │ ├── MD5Utility.cs
│ │ ├── SHA1Utility.cs
│ │ ├── SHA256Utility.cs
│ │ └── [Internal]/
│ │ └── HttpContentBuilder.cs
│ ├── SKIT.FlurlHttpClient.ByteDance.DouyinShop/
│ │ ├── Constants/
│ │ │ ├── Internal/
│ │ │ │ └── FormDataFields.cs
│ │ │ └── SignAlgorithms.cs
│ │ ├── Converters/
│ │ │ └── Internal/
│ │ │ ├── Newtonsoft.Json/
│ │ │ │ └── List[String]/
│ │ │ │ └── TextualStringListWithPipeSplitConverter.cs
│ │ │ └── System.Text.Json/
│ │ │ ├── Array[String]/
│ │ │ │ └── NumericalStringArrayConverter.cs
│ │ │ └── List[String]/
│ │ │ └── TextualStringListWithPipeSplitConverter.cs
│ │ ├── DouyinShopClient.cs
│ │ ├── DouyinShopClientOptions.cs
│ │ ├── DouyinShopEndpoints.cs
│ │ ├── DouyinShopEvent.cs
│ │ ├── DouyinShopException.cs
│ │ ├── DouyinShopRequest.cs
│ │ ├── DouyinShopResponse.cs
│ │ ├── Events/
│ │ │ ├── IOPTrade/
│ │ │ │ ├── IOPTradeDistributionCancelEvent.cs
│ │ │ │ ├── IOPTradeDistributionEvent.cs
│ │ │ │ ├── IOPTradeStatusReturnEvent.cs
│ │ │ │ ├── IOPTradeUpdateReceiverEvent.cs
│ │ │ │ └── IOPTradeUpdateRemarkEvent.cs
│ │ │ ├── Product/
│ │ │ │ └── ProductChangeEvent.cs
│ │ │ ├── Refund/
│ │ │ │ ├── Arbitrate/
│ │ │ │ │ ├── RefundArbitrateAppliedEvent.cs
│ │ │ │ │ ├── RefundArbitrateAuditedEvent.cs
│ │ │ │ │ ├── RefundArbitrateCancelledEvent.cs
│ │ │ │ │ ├── RefundArbitrateDiscussUploadEvent.cs
│ │ │ │ │ ├── RefundArbitrateServiceInterveneEvent.cs
│ │ │ │ │ ├── RefundArbitrateSubmitedEvent.cs
│ │ │ │ │ └── RefundArbitrateSubmitingEvent.cs
│ │ │ │ ├── RefundAgreedEvent.cs
│ │ │ │ ├── RefundClosedEvent.cs
│ │ │ │ ├── RefundCreatedEvent.cs
│ │ │ │ ├── RefundExchangeComfirmedEvent.cs
│ │ │ │ ├── RefundExpirationChangeEvent.cs
│ │ │ │ ├── RefundModifiedEvent.cs
│ │ │ │ ├── RefundRefusedEvent.cs
│ │ │ │ ├── RefundSuccessEvent.cs
│ │ │ │ └── Return/
│ │ │ │ ├── RefundBuyerReturnGoodsEvent.cs
│ │ │ │ ├── RefundReturnAgreedEvent.cs
│ │ │ │ ├── RefundReturnApplyAgreedEvent.cs
│ │ │ │ └── RefundReturnApplyRefusedEvent.cs
│ │ │ └── Trade/
│ │ │ ├── TradeAddressChangeAppliedEvent.cs
│ │ │ ├── TradeAddressChangedEvent.cs
│ │ │ ├── TradeAmountChangedEvent.cs
│ │ │ ├── TradeAppointmentEvent.cs
│ │ │ ├── TradeCanceledEvent.cs
│ │ │ ├── TradeCreateEvent.cs
│ │ │ ├── TradeLogisticsChangedEvent.cs
│ │ │ ├── TradeMemoModifyEvent.cs
│ │ │ ├── TradePaidEvent.cs
│ │ │ ├── TradePartlySellerShipEvent.cs
│ │ │ ├── TradePendingEvent.cs
│ │ │ ├── TradeSellerShipEvent.cs
│ │ │ └── TradeSuccessEvent.cs
│ │ ├── Exceptions/
│ │ │ ├── DouyinShopEventSerializationException.cs
│ │ │ ├── DouyinShopRequestMarshalException.cs
│ │ │ ├── DouyinShopRequestSignatureException.cs
│ │ │ └── DouyinShopRequestTimeoutException.cs
│ │ ├── Extensions/
│ │ │ ├── DouyinShopClientEventExtensions.cs
│ │ │ ├── DouyinShopClientExecuteAddressExtensions.cs
│ │ │ ├── DouyinShopClientExecuteAftersaleExtensions.cs
│ │ │ ├── DouyinShopClientExecuteAllianceExtensions.cs
│ │ │ ├── DouyinShopClientExecuteAntiSpamExtensions.cs
│ │ │ ├── DouyinShopClientExecuteBTASExtensions.cs
│ │ │ ├── DouyinShopClientExecuteBuyinExtensions.cs
│ │ │ ├── DouyinShopClientExecuteCouponsExtensions.cs
│ │ │ ├── DouyinShopClientExecuteCrossBorderExtensions.cs
│ │ │ ├── DouyinShopClientExecuteDutyFreeExtensions.cs
│ │ │ ├── DouyinShopClientExecuteFreightTemplateExtensions.cs
│ │ │ ├── DouyinShopClientExecuteIOPExtensions.cs
│ │ │ ├── DouyinShopClientExecuteLogisticsExtensions.cs
│ │ │ ├── DouyinShopClientExecuteMaterialExtensions.cs
│ │ │ ├── DouyinShopClientExecuteMemberExtensions.cs
│ │ │ ├── DouyinShopClientExecuteOpportunityProductExtensions.cs
│ │ │ ├── DouyinShopClientExecuteOrderCodeExtensions.cs
│ │ │ ├── DouyinShopClientExecuteOrderExtensions.cs
│ │ │ ├── DouyinShopClientExecuteProductExtensions.cs
│ │ │ ├── DouyinShopClientExecutePromiseExtensions.cs
│ │ │ ├── DouyinShopClientExecuteRecycleExtensions.cs
│ │ │ ├── DouyinShopClientExecuteSKUExtensions.cs
│ │ │ ├── DouyinShopClientExecuteSPUExtensions.cs
│ │ │ ├── DouyinShopClientExecuteShopExtensions.cs
│ │ │ ├── DouyinShopClientExecuteStorageExtensions.cs
│ │ │ ├── DouyinShopClientExecuteTokenExtensions.cs
│ │ │ ├── DouyinShopClientExecuteWarehouseExtensions.cs
│ │ │ └── DouyinShopClientExecuteYuncExtensions.cs
│ │ ├── Interceptors/
│ │ │ ├── DouyinShopRequestFormatInterceptor.cs
│ │ │ └── DouyinShopRequestSignInterceptor.cs
│ │ ├── Models/
│ │ │ ├── Address/
│ │ │ │ ├── AddressCreateRequest.cs
│ │ │ │ ├── AddressCreateResponse.cs
│ │ │ │ ├── AddressGetAreasByProvinceRequest.cs
│ │ │ │ ├── AddressGetAreasByProvinceResponse.cs
│ │ │ │ ├── AddressGetProvinceRequest.cs
│ │ │ │ ├── AddressGetProvinceResponse.cs
│ │ │ │ ├── AddressListRequest.cs
│ │ │ │ ├── AddressListResponse.cs
│ │ │ │ ├── AddressUpdateRequest.cs
│ │ │ │ └── AddressUpdateResponse.cs
│ │ │ ├── Aftersale/
│ │ │ │ ├── AftersaleAddOrderRemarkRequest.cs
│ │ │ │ ├── AftersaleAddOrderRemarkResponse.cs
│ │ │ │ ├── AftersaleApplyLogisticsInterceptRequest.cs
│ │ │ │ ├── AftersaleApplyLogisticsInterceptResponse.cs
│ │ │ │ ├── AftersaleBuyerExchangeConfirmRequest.cs
│ │ │ │ ├── AftersaleBuyerExchangeConfirmResponse.cs
│ │ │ │ ├── AftersaleBuyerExchangeRequest.cs
│ │ │ │ ├── AftersaleBuyerExchangeResponse.cs
│ │ │ │ ├── AftersaleCancelSendGoodsSuccessRequest.cs
│ │ │ │ ├── AftersaleCancelSendGoodsSuccessResponse.cs
│ │ │ │ ├── AftersaleDetailRequest.cs
│ │ │ │ ├── AftersaleDetailResponse.cs
│ │ │ │ ├── AftersaleListRequest.cs
│ │ │ │ ├── AftersaleListResponse.cs
│ │ │ │ ├── AftersaleOpenAfterSaleChannelRequest.cs
│ │ │ │ ├── AftersaleOpenAfterSaleChannelResponse.cs
│ │ │ │ ├── AftersaleOperateRequest.cs
│ │ │ │ ├── AftersaleOperateResponse.cs
│ │ │ │ ├── AftersaleRefundListSearchRequest.cs
│ │ │ │ ├── AftersaleRefundListSearchResponse.cs
│ │ │ │ ├── AftersaleReturnGoodsToWareHouseSuccessRequest.cs
│ │ │ │ ├── AftersaleReturnGoodsToWareHouseSuccessResponse.cs
│ │ │ │ ├── AftersaleSubmitEvidenceRequest.cs
│ │ │ │ ├── AftersaleSubmitEvidenceResponse.cs
│ │ │ │ ├── AftersaleTimeExtendRequest.cs
│ │ │ │ └── AftersaleTimeExtendResponse.cs
│ │ │ ├── Alliance/
│ │ │ │ ├── AllianceGetOrderListRequest.cs
│ │ │ │ ├── AllianceGetOrderListResponse.cs
│ │ │ │ └── MaterialsProducts/
│ │ │ │ ├── AllianceMaterialsProductsDetailsRequest.cs
│ │ │ │ ├── AllianceMaterialsProductsDetailsResponse.cs
│ │ │ │ ├── AllianceMaterialsProductsSearchRequest.cs
│ │ │ │ └── AllianceMaterialsProductsSearchResponse.cs
│ │ │ ├── AntiSpam/
│ │ │ │ ├── AntiSpamOrderQueryRequest.cs
│ │ │ │ ├── AntiSpamOrderQueryResponse.cs
│ │ │ │ ├── AntiSpamOrderSendRequest.cs
│ │ │ │ ├── AntiSpamOrderSendResponse.cs
│ │ │ │ ├── AntiSpamUserLoginRequest.cs
│ │ │ │ └── AntiSpamUserLoginResponse.cs
│ │ │ ├── BTAS/
│ │ │ │ ├── BTASGetInspectionOrderRequest.cs
│ │ │ │ ├── BTASGetInspectionOrderResponse.cs
│ │ │ │ ├── BTASGetOrderInspectionResultRequest.cs
│ │ │ │ ├── BTASGetOrderInspectionResultResponse.cs
│ │ │ │ ├── BTASListBrandRequest.cs
│ │ │ │ ├── BTASListBrandResponse.cs
│ │ │ │ ├── BTASSaveInspectionInformationRequest.cs
│ │ │ │ ├── BTASSaveInspectionInformationResponse.cs
│ │ │ │ ├── BTASSaveInspectionOnlineRequest.cs
│ │ │ │ ├── BTASSaveInspectionOnlineResponse.cs
│ │ │ │ ├── BTASShippingRequest.cs
│ │ │ │ └── BTASShippingResponse.cs
│ │ │ ├── Buyin/
│ │ │ │ ├── Activity/
│ │ │ │ │ ├── BuyinActivitySearchRequest.cs
│ │ │ │ │ ├── BuyinActivitySearchResponse.cs
│ │ │ │ │ ├── BuyinApplyActivitiesRequest.cs
│ │ │ │ │ └── BuyinApplyActivitiesResponse.cs
│ │ │ │ ├── BuyinInstituteOrderAdsRequest.cs
│ │ │ │ ├── BuyinInstituteOrderAdsResponse.cs
│ │ │ │ ├── OrientPlan/
│ │ │ │ │ ├── BuyinCreateOrUpdateOrientPlanRequest.cs
│ │ │ │ │ ├── BuyinCreateOrUpdateOrientPlanResponse.cs
│ │ │ │ │ ├── BuyinOrientPlanAuditRequest.cs
│ │ │ │ │ ├── BuyinOrientPlanAuditResponse.cs
│ │ │ │ │ ├── BuyinOrientPlanAuthorsAddRequest.cs
│ │ │ │ │ ├── BuyinOrientPlanAuthorsAddResponse.cs
│ │ │ │ │ ├── BuyinOrientPlanAuthorsRequest.cs
│ │ │ │ │ ├── BuyinOrientPlanAuthorsResponse.cs
│ │ │ │ │ ├── BuyinOrientPlanControlRequest.cs
│ │ │ │ │ ├── BuyinOrientPlanControlResponse.cs
│ │ │ │ │ ├── BuyinOrientPlanListRequest.cs
│ │ │ │ │ └── BuyinOrientPlanListResponse.cs
│ │ │ │ └── Plan/
│ │ │ │ ├── BuyinExclusivePlanRequest.cs
│ │ │ │ ├── BuyinExclusivePlanResponse.cs
│ │ │ │ ├── BuyinSimplePlanRequest.cs
│ │ │ │ └── BuyinSimplePlanResponse.cs
│ │ │ ├── Coupons/
│ │ │ │ ├── CouponsAbandonRequest.cs
│ │ │ │ ├── CouponsAbandonResponse.cs
│ │ │ │ ├── CouponsCancelVerifyRequest.cs
│ │ │ │ ├── CouponsCancelVerifyResponse.cs
│ │ │ │ ├── CouponsSyncV2Request.cs
│ │ │ │ ├── CouponsSyncV2Response.cs
│ │ │ │ ├── CouponsVerifyV2Request.cs
│ │ │ │ └── CouponsVerifyV2Response.cs
│ │ │ ├── CrossBorder/
│ │ │ │ ├── CrossBorderBankAccountVerifyRequest.cs
│ │ │ │ ├── CrossBorderBankAccountVerifyResponse.cs
│ │ │ │ ├── CrossBorderOrderInterceptionRequest.cs
│ │ │ │ ├── CrossBorderOrderInterceptionResponse.cs
│ │ │ │ ├── CrossBorderOrderListRequest.cs
│ │ │ │ ├── CrossBorderOrderListResponse.cs
│ │ │ │ ├── CrossBorderQueryBalanceRequest.cs
│ │ │ │ ├── CrossBorderQueryBalanceResponse.cs
│ │ │ │ ├── CrossBorderStockTakingRequest.cs
│ │ │ │ ├── CrossBorderStockTakingResponse.cs
│ │ │ │ ├── CrossBorderStockTransformRequest.cs
│ │ │ │ ├── CrossBorderStockTransformResponse.cs
│ │ │ │ ├── CrossBorderWarehouseInOutboundEventRequest.cs
│ │ │ │ └── CrossBorderWarehouseInOutboundEventResponse.cs
│ │ │ ├── DutyFree/
│ │ │ │ ├── DutyFreeOrderConfirmRequest.cs
│ │ │ │ └── DutyFreeOrderConfirmResponse.cs
│ │ │ ├── FreightTemplate/
│ │ │ │ ├── FreightTemplateListRequest.cs
│ │ │ │ └── FreightTemplateListResponse.cs
│ │ │ ├── IOP/
│ │ │ │ ├── IOPOrderInformationRequest.cs
│ │ │ │ ├── IOPOrderInformationResponse.cs
│ │ │ │ ├── IOPOrderListRequest.cs
│ │ │ │ ├── IOPOrderListResponse.cs
│ │ │ │ ├── IOPRoleGetRequest.cs
│ │ │ │ ├── IOPRoleGetResponse.cs
│ │ │ │ ├── Seller/
│ │ │ │ │ ├── IOPSellerCancelDistributeRequest.cs
│ │ │ │ │ ├── IOPSellerCancelDistributeResponse.cs
│ │ │ │ │ ├── IOPSellerDistributeRequest.cs
│ │ │ │ │ ├── IOPSellerDistributeResponse.cs
│ │ │ │ │ ├── IOPSellerOrderInformationRequest.cs
│ │ │ │ │ ├── IOPSellerOrderInformationResponse.cs
│ │ │ │ │ ├── IOPSellerOrderListRequest.cs
│ │ │ │ │ ├── IOPSellerOrderListResponse.cs
│ │ │ │ │ ├── IOPSellerSupplierListRequest.cs
│ │ │ │ │ └── IOPSellerSupplierListResponse.cs
│ │ │ │ └── Waybill/
│ │ │ │ ├── IOPWaybillCancelRequest.cs
│ │ │ │ ├── IOPWaybillCancelResponse.cs
│ │ │ │ ├── IOPWaybillGetRequest.cs
│ │ │ │ ├── IOPWaybillGetResponse.cs
│ │ │ │ ├── IOPWaybillReturnRequest.cs
│ │ │ │ ├── IOPWaybillReturnResponse.cs
│ │ │ │ ├── IOPWaybillUpdateRequest.cs
│ │ │ │ └── IOPWaybillUpdateResponse.cs
│ │ │ ├── Logistics/
│ │ │ │ ├── LogisticsCancelOrderRequest.cs
│ │ │ │ ├── LogisticsCancelOrderResponse.cs
│ │ │ │ ├── LogisticsGetCustomTemplateListRequest.cs
│ │ │ │ ├── LogisticsGetCustomTemplateListResponse.cs
│ │ │ │ ├── LogisticsGetOutRangeRequest.cs
│ │ │ │ ├── LogisticsGetOutRangeResponse.cs
│ │ │ │ ├── LogisticsListShopNetSiteRequest.cs
│ │ │ │ ├── LogisticsListShopNetSiteResponse.cs
│ │ │ │ ├── LogisticsNewCreateOrderRequest.cs
│ │ │ │ ├── LogisticsNewCreateOrderResponse.cs
│ │ │ │ ├── LogisticsTemplateListRequest.cs
│ │ │ │ ├── LogisticsTemplateListResponse.cs
│ │ │ │ ├── LogisticsTrackNoRouteDetailRequest.cs
│ │ │ │ ├── LogisticsTrackNoRouteDetailResponse.cs
│ │ │ │ ├── LogisticsUpdateOrderRequest.cs
│ │ │ │ └── LogisticsUpdateOrderResponse.cs
│ │ │ ├── Material/
│ │ │ │ ├── Folder/
│ │ │ │ │ ├── MaterialCreateFolderRequest.cs
│ │ │ │ │ ├── MaterialCreateFolderResponse.cs
│ │ │ │ │ ├── MaterialDeleteFolderRequest.cs
│ │ │ │ │ ├── MaterialDeleteFolderResponse.cs
│ │ │ │ │ ├── MaterialEditFolderRequest.cs
│ │ │ │ │ ├── MaterialEditFolderResponse.cs
│ │ │ │ │ ├── MaterialGetFolderInformationRequest.cs
│ │ │ │ │ ├── MaterialGetFolderInformationResponse.cs
│ │ │ │ │ ├── MaterialMoveFolderToRecyleBinRequest.cs
│ │ │ │ │ ├── MaterialMoveFolderToRecyleBinResponse.cs
│ │ │ │ │ ├── MaterialRecoverFolderRequest.cs
│ │ │ │ │ ├── MaterialRecoverFolderResponse.cs
│ │ │ │ │ ├── MaterialSearchFolderRequest.cs
│ │ │ │ │ └── MaterialSearchFolderResponse.cs
│ │ │ │ ├── Material/
│ │ │ │ │ ├── MaterialDeleteMaterialRequest.cs
│ │ │ │ │ ├── MaterialDeleteMaterialResponse.cs
│ │ │ │ │ ├── MaterialEditMaterialRequest.cs
│ │ │ │ │ ├── MaterialEditMaterialResponse.cs
│ │ │ │ │ ├── MaterialMoveMaterialToRecyleBinRequest.cs
│ │ │ │ │ ├── MaterialMoveMaterialToRecyleBinResponse.cs
│ │ │ │ │ ├── MaterialQueryMaterialDetailRequest.cs
│ │ │ │ │ ├── MaterialQueryMaterialDetailResponse.cs
│ │ │ │ │ ├── MaterialRecoverMaterialRequest.cs
│ │ │ │ │ ├── MaterialRecoverMaterialResponse.cs
│ │ │ │ │ ├── MaterialSearchMaterialRequest.cs
│ │ │ │ │ └── MaterialSearchMaterialResponse.cs
│ │ │ │ ├── MaterialUploadImageSyncRequest.cs
│ │ │ │ ├── MaterialUploadImageSyncResponse.cs
│ │ │ │ ├── MaterialUploadVideoAsyncRequest.cs
│ │ │ │ └── MaterialUploadVideoAsyncResponse.cs
│ │ │ ├── Member/
│ │ │ │ ├── MemberBatchUpdateRequest.cs
│ │ │ │ ├── MemberBatchUpdateResponse.cs
│ │ │ │ ├── MemberSearchListRequest.cs
│ │ │ │ └── MemberSearchListResponse.cs
│ │ │ ├── OpportunityProduct/
│ │ │ │ ├── OpportunityProductApplyRequest.cs
│ │ │ │ ├── OpportunityProductApplyResponse.cs
│ │ │ │ ├── OpportunityProductClueRequest.cs
│ │ │ │ ├── OpportunityProductClueResponse.cs
│ │ │ │ ├── OpportunityProductGetApplyProgressRequest.cs
│ │ │ │ └── OpportunityProductGetApplyProgressResponse.cs
│ │ │ ├── Order/
│ │ │ │ ├── CrossBorder/
│ │ │ │ │ ├── OrderGetCrossBorderFulfillInformationRequest.cs
│ │ │ │ │ └── OrderGetCrossBorderFulfillInformationResponse.cs
│ │ │ │ ├── Encryption/
│ │ │ │ │ ├── OrderBatchDecryptRequest.cs
│ │ │ │ │ ├── OrderBatchDecryptResponse.cs
│ │ │ │ │ ├── OrderBatchEncryptRequest.cs
│ │ │ │ │ ├── OrderBatchEncryptResponse.cs
│ │ │ │ │ ├── OrderBatchSearchIndexRequest.cs
│ │ │ │ │ ├── OrderBatchSearchIndexResponse.cs
│ │ │ │ │ ├── OrderBatchSensitiveRequest.cs
│ │ │ │ │ └── OrderBatchSensitiveResponse.cs
│ │ │ │ ├── Insurance/
│ │ │ │ │ ├── OrderInsuranceRequest.cs
│ │ │ │ │ ├── OrderInsuranceResponse.cs
│ │ │ │ │ ├── OrderPolicyRequest.cs
│ │ │ │ │ └── OrderPolicyResponse.cs
│ │ │ │ ├── Invoice/
│ │ │ │ │ ├── OrderInvoiceListRequest.cs
│ │ │ │ │ ├── OrderInvoiceListResponse.cs
│ │ │ │ │ ├── OrderInvoiceUploadRequest.cs
│ │ │ │ │ └── OrderInvoiceUploadResponse.cs
│ │ │ │ ├── Logistics/
│ │ │ │ │ ├── OrderLogisticsAddRequest.cs
│ │ │ │ │ ├── OrderLogisticsAddResponse.cs
│ │ │ │ │ ├── OrderLogisticsCompanyListRequest.cs
│ │ │ │ │ ├── OrderLogisticsCompanyListResponse.cs
│ │ │ │ │ ├── OrderLogisticsEditRequest.cs
│ │ │ │ │ ├── OrderLogisticsEditResponse.cs
│ │ │ │ │ └── Package/
│ │ │ │ │ ├── OrderLogisticsAddMultiplePackageRequest.cs
│ │ │ │ │ ├── OrderLogisticsAddMultiplePackageResponse.cs
│ │ │ │ │ ├── OrderLogisticsAddSinglePackageRequest.cs
│ │ │ │ │ ├── OrderLogisticsAddSinglePackageResponse.cs
│ │ │ │ │ ├── OrderLogisticsEditByPackageRequest.cs
│ │ │ │ │ └── OrderLogisticsEditByPackageResponse.cs
│ │ │ │ ├── OrderAddOrderRemarkRequest.cs
│ │ │ │ ├── OrderAddOrderRemarkResponse.cs
│ │ │ │ ├── OrderAddSerialNumberRequest.cs
│ │ │ │ ├── OrderAddSerialNumberResponse.cs
│ │ │ │ ├── OrderAddressAppliedSwitchRequest.cs
│ │ │ │ ├── OrderAddressAppliedSwitchResponse.cs
│ │ │ │ ├── OrderAddressConfirmRequest.cs
│ │ │ │ ├── OrderAddressConfirmResponse.cs
│ │ │ │ ├── OrderAddressModifyRequest.cs
│ │ │ │ ├── OrderAddressModifyResponse.cs
│ │ │ │ ├── OrderAddressSwitchConfigRequest.cs
│ │ │ │ ├── OrderAddressSwitchConfigResponse.cs
│ │ │ │ ├── OrderDetailRequest.cs
│ │ │ │ ├── OrderDetailResponse.cs
│ │ │ │ ├── OrderSearchListRequest.cs
│ │ │ │ ├── OrderSearchListResponse.cs
│ │ │ │ ├── OrderUpdateOrderAmountRequest.cs
│ │ │ │ ├── OrderUpdateOrderAmountResponse.cs
│ │ │ │ ├── OrderUpdatePostAmountRequest.cs
│ │ │ │ ├── OrderUpdatePostAmountResponse.cs
│ │ │ │ ├── Service/
│ │ │ │ │ ├── OrderGetServiceListRequest.cs
│ │ │ │ │ ├── OrderGetServiceListResponse.cs
│ │ │ │ │ ├── OrderReplyServiceRequest.cs
│ │ │ │ │ ├── OrderReplyServiceResponse.cs
│ │ │ │ │ ├── OrderServiceDetailRequest.cs
│ │ │ │ │ └── OrderServiceDetailResponse.cs
│ │ │ │ └── Settle/
│ │ │ │ ├── OrderDownloadSettleItemToShopRequest.cs
│ │ │ │ ├── OrderDownloadSettleItemToShopResponse.cs
│ │ │ │ ├── OrderDownloadToShopRequest.cs
│ │ │ │ ├── OrderDownloadToShopResponse.cs
│ │ │ │ ├── OrderGetSettleBillDetailRequest.cs
│ │ │ │ ├── OrderGetSettleBillDetailResponse.cs
│ │ │ │ ├── OrderSettleRequest.cs
│ │ │ │ └── OrderSettleResponse.cs
│ │ │ ├── OrderCode/
│ │ │ │ ├── OrderCodeBatchGetOrderCodeByShopRequest.cs
│ │ │ │ ├── OrderCodeBatchGetOrderCodeByShopResponse.cs
│ │ │ │ ├── OrderCodeDownloadOrderCodeByShopRequest.cs
│ │ │ │ ├── OrderCodeDownloadOrderCodeByShopResponse.cs
│ │ │ │ ├── OrderCodeERPShopBindOrderCodeRequest.cs
│ │ │ │ └── OrderCodeERPShopBindOrderCodeResponse.cs
│ │ │ ├── Product/
│ │ │ │ ├── ProductAddV2Request.cs
│ │ │ │ ├── ProductAddV2Response.cs
│ │ │ │ ├── ProductDeleteRequest.cs
│ │ │ │ ├── ProductDeleteResponse.cs
│ │ │ │ ├── ProductDetailRequest.cs
│ │ │ │ ├── ProductDetailResponse.cs
│ │ │ │ ├── ProductEditBuyerLimitRequest.cs
│ │ │ │ ├── ProductEditBuyerLimitResponse.cs
│ │ │ │ ├── ProductEditV2Request.cs
│ │ │ │ ├── ProductEditV2Response.cs
│ │ │ │ ├── ProductGetCategoryPropertyRequest.cs
│ │ │ │ ├── ProductGetCategoryPropertyResponse.cs
│ │ │ │ ├── ProductListV2Request.cs
│ │ │ │ ├── ProductListV2Response.cs
│ │ │ │ ├── ProductSetOfflineRequest.cs
│ │ │ │ ├── ProductSetOfflineResponse.cs
│ │ │ │ ├── ProductSetOnlineRequest.cs
│ │ │ │ ├── ProductSetOnlineResponse.cs
│ │ │ │ └── Quality/
│ │ │ │ ├── ProductQualityDetailRequest.cs
│ │ │ │ ├── ProductQualityDetailResponse.cs
│ │ │ │ ├── ProductQualityListRequest.cs
│ │ │ │ ├── ProductQualityListResponse.cs
│ │ │ │ ├── ProductQualityTaskRequest.cs
│ │ │ │ └── ProductQualityTaskResponse.cs
│ │ │ ├── Promise/
│ │ │ │ ├── PromiseSetSKUShipTimeRequest.cs
│ │ │ │ └── PromiseSetSKUShipTimeResponse.cs
│ │ │ ├── Recycle/
│ │ │ │ ├── RecycleApplyChangePriceRequest.cs
│ │ │ │ ├── RecycleApplyChangePriceResponse.cs
│ │ │ │ ├── RecycleBuyerGetOrderDetailRequest.cs
│ │ │ │ ├── RecycleBuyerGetOrderDetailResponse.cs
│ │ │ │ ├── RecycleBuyerGetOrderListRequest.cs
│ │ │ │ ├── RecycleBuyerGetOrderListResponse.cs
│ │ │ │ ├── RecycleChangePriceRequest.cs
│ │ │ │ ├── RecycleChangePriceResponse.cs
│ │ │ │ ├── RecycleConfirmReceiveRequest.cs
│ │ │ │ ├── RecycleConfirmReceiveResponse.cs
│ │ │ │ ├── RecycleCreatePriceRequest.cs
│ │ │ │ ├── RecycleCreatePriceResponse.cs
│ │ │ │ ├── RecycleLogisticsBackRequest.cs
│ │ │ │ ├── RecycleLogisticsBackResponse.cs
│ │ │ │ ├── RecycleQualityTestingResultRequest.cs
│ │ │ │ ├── RecycleQualityTestingResultResponse.cs
│ │ │ │ ├── RecycleSellSucceedRequest.cs
│ │ │ │ └── RecycleSellSucceedResponse.cs
│ │ │ ├── SKU/
│ │ │ │ ├── SKUDetailRequest.cs
│ │ │ │ ├── SKUDetailResponse.cs
│ │ │ │ ├── SKUEditCodeRequest.cs
│ │ │ │ ├── SKUEditCodeResponse.cs
│ │ │ │ ├── SKUEditPriceRequest.cs
│ │ │ │ ├── SKUEditPriceResponse.cs
│ │ │ │ ├── SKUListRequest.cs
│ │ │ │ ├── SKUListResponse.cs
│ │ │ │ ├── SKUStockNumberRequest.cs
│ │ │ │ ├── SKUStockNumberResponse.cs
│ │ │ │ ├── SKUSyncStockBatchRequest.cs
│ │ │ │ ├── SKUSyncStockBatchResponse.cs
│ │ │ │ ├── SKUSyncStockRequest.cs
│ │ │ │ └── SKUSyncStockResponse.cs
│ │ │ ├── SPU/
│ │ │ │ ├── SPUAddShopSPURequest.cs
│ │ │ │ ├── SPUAddShopSPUResponse.cs
│ │ │ │ ├── SPUGetKeyPropertyByCategoryIdRequest.cs
│ │ │ │ ├── SPUGetKeyPropertyByCategoryIdResponse.cs
│ │ │ │ ├── SPUGetSPUInformationBySPUIdRequest.cs
│ │ │ │ ├── SPUGetSPUInformationBySPUIdResponse.cs
│ │ │ │ ├── SPUGetSPUTemplateRequest.cs
│ │ │ │ └── SPUGetSPUTemplateResponse.cs
│ │ │ ├── Shop/
│ │ │ │ ├── ShopBandListRequest.cs
│ │ │ │ ├── ShopBandListResponse.cs
│ │ │ │ ├── ShopGetShopCategoryRequest.cs
│ │ │ │ └── ShopGetShopCategoryResponse.cs
│ │ │ ├── Storage/
│ │ │ │ ├── StorageNotifySaleReturnStatusRequest.cs
│ │ │ │ └── StorageNotifySaleReturnStatusResponse.cs
│ │ │ ├── Token/
│ │ │ │ ├── TokenCreateRequest.cs
│ │ │ │ ├── TokenCreateResponse.cs
│ │ │ │ ├── TokenRefreshRequest.cs
│ │ │ │ └── TokenRefreshResponse.cs
│ │ │ ├── Warehouse/
│ │ │ │ ├── WarehouseAdjustInventoryRequest.cs
│ │ │ │ ├── WarehouseAdjustInventoryResponse.cs
│ │ │ │ ├── WarehouseCreateBatchRequest.cs
│ │ │ │ ├── WarehouseCreateBatchResponse.cs
│ │ │ │ ├── WarehouseCreateRequest.cs
│ │ │ │ ├── WarehouseCreateResponse.cs
│ │ │ │ ├── WarehouseEditRequest.cs
│ │ │ │ ├── WarehouseEditResponse.cs
│ │ │ │ ├── WarehouseInformationRequest.cs
│ │ │ │ ├── WarehouseInformationResponse.cs
│ │ │ │ ├── WarehouseListRequest.cs
│ │ │ │ ├── WarehouseListResponse.cs
│ │ │ │ ├── WarehouseRemoveAddressRequest.cs
│ │ │ │ ├── WarehouseRemoveAddressResponse.cs
│ │ │ │ ├── WarehouseSetAddressBatchRequest.cs
│ │ │ │ ├── WarehouseSetAddressBatchResponse.cs
│ │ │ │ ├── WarehouseSetAddressRequest.cs
│ │ │ │ ├── WarehouseSetAddressResponse.cs
│ │ │ │ ├── WarehouseSetPriorityRequest.cs
│ │ │ │ └── WarehouseSetPriorityResponse.cs
│ │ │ └── Yunc/
│ │ │ ├── ERP/
│ │ │ │ ├── YuncCancelOutboundOrderToBusinessRequest.cs
│ │ │ │ ├── YuncCancelOutboundOrderToBusinessResponse.cs
│ │ │ │ ├── YuncCreateOutboundOrderToBusinessRequest.cs
│ │ │ │ ├── YuncCreateOutboundOrderToBusinessResponse.cs
│ │ │ │ ├── YuncERPCargoSinglePushRequest.cs
│ │ │ │ ├── YuncERPCargoSinglePushResponse.cs
│ │ │ │ ├── YuncERPInboundCancelRequest.cs
│ │ │ │ ├── YuncERPInboundCancelResponse.cs
│ │ │ │ ├── YuncERPInboundCreateRequest.cs
│ │ │ │ ├── YuncERPInboundCreateResponse.cs
│ │ │ │ ├── YuncShopWarehouseRefQueryRequest.cs
│ │ │ │ └── YuncShopWarehouseRefQueryResponse.cs
│ │ │ └── WMS/
│ │ │ ├── YuncAdjustInventoryRequest.cs
│ │ │ ├── YuncAdjustInventoryResponse.cs
│ │ │ ├── YuncPushOutboundFeedbackRequest.cs
│ │ │ ├── YuncPushOutboundFeedbackResponse.cs
│ │ │ ├── YuncWMSInboundCallbackRequest.cs
│ │ │ └── YuncWMSInboundCallbackResponse.cs
│ │ ├── README.md
│ │ ├── SKIT.FlurlHttpClient.ByteDance.DouyinShop.csproj
│ │ ├── Settings/
│ │ │ └── Credentials.cs
│ │ └── Utilities/
│ │ ├── HMACUtility.cs
│ │ ├── Internal/
│ │ │ ├── FileHttpContentBuilder.cs
│ │ │ └── JsonUtility.cs
│ │ └── MD5Utility.cs
│ ├── SKIT.FlurlHttpClient.ByteDance.MicroApp/
│ │ ├── Converters/
│ │ │ └── [Internal]/
│ │ │ ├── Newtonsoft.Json/
│ │ │ │ └── DateTimeOffset/
│ │ │ │ └── CstDateTimeOffsetConverter.cs
│ │ │ └── System.Text.Json/
│ │ │ └── DateTimeOffset/
│ │ │ └── CstDateTimeOffsetConverter.cs
│ │ ├── DouyinMicroAppClient.cs
│ │ ├── DouyinMicroAppClientBuilder.cs
│ │ ├── DouyinMicroAppClientOptions.cs
│ │ ├── DouyinMicroAppEndpoints.cs
│ │ ├── DouyinMicroAppEvent.cs
│ │ ├── DouyinMicroAppException.cs
│ │ ├── DouyinMicroAppRequest.cs
│ │ ├── DouyinMicroAppResponse.cs
│ │ ├── Events/
│ │ │ └── Message/
│ │ │ ├── ImageMessageEvent.cs
│ │ │ └── TextMessageEvent.cs
│ │ ├── ExtendedSDK/
│ │ │ ├── OpenApi/
│ │ │ │ ├── DouyinMicroAppOpenApiClient.cs
│ │ │ │ ├── DouyinMicroAppOpenApiClientBuilder.cs
│ │ │ │ ├── DouyinMicroAppOpenApiClientOptions.cs
│ │ │ │ ├── DouyinMicroAppOpenApiEndpoints.cs
│ │ │ │ ├── DouyinMicroAppOpenApiEvent.cs
│ │ │ │ ├── DouyinMicroAppOpenApiRequest.cs
│ │ │ │ ├── DouyinMicroAppOpenApiResponse.cs
│ │ │ │ ├── Events/
│ │ │ │ │ ├── Auth/
│ │ │ │ │ │ ├── ComponentAuthorizedEvent.cs
│ │ │ │ │ │ ├── ComponentPushTicketEvent.cs
│ │ │ │ │ │ ├── ComponentUnauthorizedEvent.cs
│ │ │ │ │ │ └── ComponentUpdateAuthorizedEvent.cs
│ │ │ │ │ ├── MicroAppManagement/
│ │ │ │ │ │ ├── AppNameResetEvent.cs
│ │ │ │ │ │ ├── ModifyAppCategoryEvent.cs
│ │ │ │ │ │ ├── ModifyAppIconEvent.cs
│ │ │ │ │ │ ├── ModifyAppIntroductionEvent.cs
│ │ │ │ │ │ ├── ModifyAppNameEvent.cs
│ │ │ │ │ │ └── PackageAuditEvent.cs
│ │ │ │ │ └── MicroAppOperation/
│ │ │ │ │ ├── AliasAuditResultEvent.cs
│ │ │ │ │ ├── ApplyCapabilityEvent.cs
│ │ │ │ │ ├── ApplyLiveCapabilityEvent.cs
│ │ │ │ │ ├── ApplyPhoneNumberCapabilityEvent.cs
│ │ │ │ │ ├── ApplyShareTemplateEvent.cs
│ │ │ │ │ ├── ApplyVideoCapabilityEvent.cs
│ │ │ │ │ ├── AwemePermissionAuditResultEvent.cs
│ │ │ │ │ ├── AwemeVideoKeywordAuditResultEvent.cs
│ │ │ │ │ ├── BindAwemeUserEvent.cs
│ │ │ │ │ ├── CreateSubscribeNotificationTemplateResultEvent.cs
│ │ │ │ │ ├── ScopeQuotaAuditResultEvent.cs
│ │ │ │ │ ├── SearchTagAuditResultEvent.cs
│ │ │ │ │ └── SelfMountBindEvent.cs
│ │ │ │ ├── Extensions/
│ │ │ │ │ ├── DouyinMicroAppOpenApiClientEventExtensions.cs
│ │ │ │ │ ├── DouyinMicroAppOpenApiClientExecuteAppsBasicInfoExtensions.cs
│ │ │ │ │ ├── DouyinMicroAppOpenApiClientExecuteAppsCategoryExtensions.cs
│ │ │ │ │ ├── DouyinMicroAppOpenApiClientExecuteAppsCreditScoreExtensions.cs
│ │ │ │ │ ├── DouyinMicroAppOpenApiClientExecuteAppsDomainExtensions.cs
│ │ │ │ │ ├── DouyinMicroAppOpenApiClientExecuteAppsFileExtensions.cs
│ │ │ │ │ ├── DouyinMicroAppOpenApiClientExecuteAppsICPRecordExtensions.cs
│ │ │ │ │ ├── DouyinMicroAppOpenApiClientExecuteAppsMicroAppExtensions.cs
│ │ │ │ │ ├── DouyinMicroAppOpenApiClientExecuteAppsPackageVersionExtensions.cs
│ │ │ │ │ ├── DouyinMicroAppOpenApiClientExecuteAppsTrialExtensions.cs
│ │ │ │ │ ├── DouyinMicroAppOpenApiClientExecuteLegacyAuthExtensions.cs
│ │ │ │ │ ├── DouyinMicroAppOpenApiClientExecuteLegacyMicroAppExtensions.cs
│ │ │ │ │ ├── DouyinMicroAppOpenApiClientExecuteLegacySettleExtensions.cs
│ │ │ │ │ ├── DouyinMicroAppOpenApiClientExecuteLegacyThirdPartyExtensions.cs
│ │ │ │ │ ├── DouyinMicroAppOpenApiClientExecutePlatformWebhookExtensions.cs
│ │ │ │ │ ├── DouyinMicroAppOpenApiClientExecuteTpAppAuthExtensions.cs
│ │ │ │ │ ├── DouyinMicroAppOpenApiClientExecuteTpAppDomainExtensions.cs
│ │ │ │ │ ├── DouyinMicroAppOpenApiClientExecuteTpAppFileExtensions.cs
│ │ │ │ │ ├── DouyinMicroAppOpenApiClientExecuteTpAppTemplateExtensions.cs
│ │ │ │ │ └── DouyinMicroAppOpenApiClientParameterExtensions.cs
│ │ │ │ ├── Models/
│ │ │ │ │ ├── AppsBasicInfo/
│ │ │ │ │ │ ├── OpenAppsBasicInfoCheckAppNameV2Request.cs
│ │ │ │ │ │ ├── OpenAppsBasicInfoCheckAppNameV2Response.cs
│ │ │ │ │ │ ├── OpenAppsBasicInfoGetInfoV2Request.cs
│ │ │ │ │ │ ├── OpenAppsBasicInfoGetInfoV2Response.cs
│ │ │ │ │ │ ├── OpenAppsBasicInfoGetQrcodeV2Request.cs
│ │ │ │ │ │ ├── OpenAppsBasicInfoGetQrcodeV2Response.cs
│ │ │ │ │ │ ├── OpenAppsBasicInfoModifyAppIconV2Request.cs
│ │ │ │ │ │ ├── OpenAppsBasicInfoModifyAppIconV2Response.cs
│ │ │ │ │ │ ├── OpenAppsBasicInfoModifyAppIntroductionV2Request.cs
│ │ │ │ │ │ ├── OpenAppsBasicInfoModifyAppIntroductionV2Response.cs
│ │ │ │ │ │ ├── OpenAppsBasicInfoModifyAppNameV2Request.cs
│ │ │ │ │ │ └── OpenAppsBasicInfoModifyAppNameV2Response.cs
│ │ │ │ │ ├── AppsCategory/
│ │ │ │ │ │ ├── OpenAppsCategoryAddCategoriesV1Request.cs
│ │ │ │ │ │ ├── OpenAppsCategoryAddCategoriesV1Response.cs
│ │ │ │ │ │ ├── OpenAppsCategoryDeleteCategoriesV1Request.cs
│ │ │ │ │ │ ├── OpenAppsCategoryDeleteCategoriesV1Response.cs
│ │ │ │ │ │ ├── OpenAppsCategoryGetAllCategoriesV1Request.cs
│ │ │ │ │ │ ├── OpenAppsCategoryGetAllCategoriesV1Response.cs
│ │ │ │ │ │ ├── OpenAppsCategoryGetAuditCategoriesV1Request.cs
│ │ │ │ │ │ ├── OpenAppsCategoryGetAuditCategoriesV1Response.cs
│ │ │ │ │ │ ├── OpenAppsCategorySupplyCategoriesV1Request.cs
│ │ │ │ │ │ └── OpenAppsCategorySupplyCategoriesV1Response.cs
│ │ │ │ │ ├── AppsCreditScore/
│ │ │ │ │ │ ├── OpenAppsCreditScoreGetCreditScoreV2Request.cs
│ │ │ │ │ │ └── OpenAppsCreditScoreGetCreditScoreV2Response.cs
│ │ │ │ │ ├── AppsDomain/
│ │ │ │ │ │ ├── OpenAppsDomainModifyServerDomainV2Request.cs
│ │ │ │ │ │ ├── OpenAppsDomainModifyServerDomainV2Response.cs
│ │ │ │ │ │ ├── OpenAppsDomainModifyWebviewDomainV2Request.cs
│ │ │ │ │ │ └── OpenAppsDomainModifyWebviewDomainV2Response.cs
│ │ │ │ │ ├── AppsFile/
│ │ │ │ │ │ ├── OpenAppsFileUploadMaterialV2Request.cs
│ │ │ │ │ │ └── OpenAppsFileUploadMaterialV2Response.cs
│ │ │ │ │ ├── AppsICPRecord/
│ │ │ │ │ │ ├── OpenAppsICPRecordGetFacialRecognitionUrlV1Request.cs
│ │ │ │ │ │ ├── OpenAppsICPRecordGetFacialRecognitionUrlV1Response.cs
│ │ │ │ │ │ ├── OpenAppsICPRecordQueryCorpTypeListV1Request.cs
│ │ │ │ │ │ ├── OpenAppsICPRecordQueryCorpTypeListV1Response.cs
│ │ │ │ │ │ ├── OpenAppsICPRecordQueryFacialRecognitionStatusV1Request.cs
│ │ │ │ │ │ ├── OpenAppsICPRecordQueryFacialRecognitionStatusV1Response.cs
│ │ │ │ │ │ ├── OpenAppsICPRecordQueryInchargePeopleCredentialsTypeListV1Request.cs
│ │ │ │ │ │ ├── OpenAppsICPRecordQueryInchargePeopleCredentialsTypeListV1Response.cs
│ │ │ │ │ │ ├── OpenAppsICPRecordQueryPreApprovalItemTypeListV1Request.cs
│ │ │ │ │ │ ├── OpenAppsICPRecordQueryPreApprovalItemTypeListV1Response.cs
│ │ │ │ │ │ ├── OpenAppsICPRecordQueryRecordStatusV1Request.cs
│ │ │ │ │ │ ├── OpenAppsICPRecordQueryRecordStatusV1Response.cs
│ │ │ │ │ │ ├── OpenAppsICPRecordQueryRegionListV1Request.cs
│ │ │ │ │ │ ├── OpenAppsICPRecordQueryRegionListV1Response.cs
│ │ │ │ │ │ ├── OpenAppsICPRecordQueryServiceContentTypeListV1Request.cs
│ │ │ │ │ │ ├── OpenAppsICPRecordQueryServiceContentTypeListV1Response.cs
│ │ │ │ │ │ ├── OpenAppsICPRecordSendFacialRecognitionNotifyV1Request.cs
│ │ │ │ │ │ ├── OpenAppsICPRecordSendFacialRecognitionNotifyV1Response.cs
│ │ │ │ │ │ ├── OpenAppsICPRecordSubmitRecordInfoV1Request.cs
│ │ │ │ │ │ ├── OpenAppsICPRecordSubmitRecordInfoV1Response.cs
│ │ │ │ │ │ ├── OpenAppsICPRecordUploadImageV1Request.cs
│ │ │ │ │ │ └── OpenAppsICPRecordUploadImageV1Response.cs
│ │ │ │ │ ├── AppsMicroApp/
│ │ │ │ │ │ ├── OpenAppsMicroAppCode2SessionV1Request.cs
│ │ │ │ │ │ └── OpenAppsMicroAppCode2SessionV1Response.cs
│ │ │ │ │ ├── AppsPackageVersion/
│ │ │ │ │ │ ├── OpenAppsPackageVersionAuditV1Request.cs
│ │ │ │ │ │ ├── OpenAppsPackageVersionAuditV1Response.cs
│ │ │ │ │ │ ├── OpenAppsPackageVersionGetAuditHostsV1Request.cs
│ │ │ │ │ │ ├── OpenAppsPackageVersionGetAuditHostsV1Response.cs
│ │ │ │ │ │ ├── OpenAppsPackageVersionGetVersionsV1Request.cs
│ │ │ │ │ │ ├── OpenAppsPackageVersionGetVersionsV1Response.cs
│ │ │ │ │ │ ├── OpenAppsPackageVersionReleaseV1Request.cs
│ │ │ │ │ │ ├── OpenAppsPackageVersionReleaseV1Response.cs
│ │ │ │ │ │ ├── OpenAppsPackageVersionRevokeAuditV1Request.cs
│ │ │ │ │ │ ├── OpenAppsPackageVersionRevokeAuditV1Response.cs
│ │ │ │ │ │ ├── OpenAppsPackageVersionRollbackV1Request.cs
│ │ │ │ │ │ ├── OpenAppsPackageVersionRollbackV1Response.cs
│ │ │ │ │ │ ├── OpenAppsPackageVersionUploadV1Request.cs
│ │ │ │ │ │ └── OpenAppsPackageVersionUploadV1Response.cs
│ │ │ │ │ ├── AppsTrial/
│ │ │ │ │ │ ├── OpenAppsTrialGetTrialInfoV2Request.cs
│ │ │ │ │ │ └── OpenAppsTrialGetTrialInfoV2Response.cs
│ │ │ │ │ ├── Platform/
│ │ │ │ │ │ └── Webhook/
│ │ │ │ │ │ ├── OpenPlatformWebhookEventStatusListV1Request.cs
│ │ │ │ │ │ ├── OpenPlatformWebhookEventStatusListV1Response.cs
│ │ │ │ │ │ ├── OpenPlatformWebhookResetSecretV1Request.cs
│ │ │ │ │ │ ├── OpenPlatformWebhookResetSecretV1Response.cs
│ │ │ │ │ │ ├── OpenPlatformWebhookSaveCallbackUrlV1Request.cs
│ │ │ │ │ │ ├── OpenPlatformWebhookSaveCallbackUrlV1Response.cs
│ │ │ │ │ │ ├── OpenPlatformWebhookUpdateEventStatusV1Request.cs
│ │ │ │ │ │ └── OpenPlatformWebhookUpdateEventStatusV1Response.cs
│ │ │ │ │ ├── TpAppAuth/
│ │ │ │ │ │ ├── OpenAuthThirdPartyTokenV2Request.cs
│ │ │ │ │ │ ├── OpenAuthThirdPartyTokenV2Response.cs
│ │ │ │ │ │ ├── OpenTpAppAuthGenerateLinkV3Request.cs
│ │ │ │ │ │ ├── OpenTpAppAuthGenerateLinkV3Response.cs
│ │ │ │ │ │ ├── OpenTpAppAuthGetAuthAppListV2Request.cs
│ │ │ │ │ │ ├── OpenTpAppAuthGetAuthAppListV2Response.cs
│ │ │ │ │ │ ├── OpenTpAppAuthGetAuthTokenV2Request.cs
│ │ │ │ │ │ ├── OpenTpAppAuthGetAuthTokenV2Response.cs
│ │ │ │ │ │ ├── OpenTpAppAuthRetrieveAuthCodeV2Request.cs
│ │ │ │ │ │ └── OpenTpAppAuthRetrieveAuthCodeV2Response.cs
│ │ │ │ │ ├── TpAppDomain/
│ │ │ │ │ │ ├── OpenTpAppDomainGetWebviewCheckFileInfoV2Request.cs
│ │ │ │ │ │ └── OpenTpAppDomainGetWebviewCheckFileInfoV2Response.cs
│ │ │ │ │ ├── TpAppFile/
│ │ │ │ │ │ ├── OpenTpAppFileUploadMaterialV2Request.cs
│ │ │ │ │ │ └── OpenTpAppFileUploadMaterialV2Response.cs
│ │ │ │ │ ├── TpAppTemplate/
│ │ │ │ │ │ ├── OpenTpAppTemplateAddTemplateV2Request.cs
│ │ │ │ │ │ ├── OpenTpAppTemplateAddTemplateV2Response.cs
│ │ │ │ │ │ ├── OpenTpAppTemplateDeleteTemplateV2Request.cs
│ │ │ │ │ │ ├── OpenTpAppTemplateDeleteTemplateV2Response.cs
│ │ │ │ │ │ ├── OpenTpAppTemplateGetTemplateAppListV2Request.cs
│ │ │ │ │ │ ├── OpenTpAppTemplateGetTemplateAppListV2Response.cs
│ │ │ │ │ │ ├── OpenTpAppTemplateGetTemplateListV2Request.cs
│ │ │ │ │ │ └── OpenTpAppTemplateGetTemplateListV2Response.cs
│ │ │ │ │ └── _Legacy/
│ │ │ │ │ ├── Auth/
│ │ │ │ │ │ ├── OpenApiAuthGenerateLinkV2Request.cs
│ │ │ │ │ │ ├── OpenApiAuthGenerateLinkV2Response.cs
│ │ │ │ │ │ ├── OpenApiAuthPreAuthCodeV2Request.cs
│ │ │ │ │ │ ├── OpenApiAuthPreAuthCodeV2Response.cs
│ │ │ │ │ │ ├── OpenApiAuthRetrieveV1Request.cs
│ │ │ │ │ │ ├── OpenApiAuthRetrieveV1Response.cs
│ │ │ │ │ │ ├── OpenApiAuthThirdPartyTokenV1Request.cs
│ │ │ │ │ │ ├── OpenApiAuthThirdPartyTokenV1Response.cs
│ │ │ │ │ │ ├── OpenApiOAuthTokenV1Request.cs
│ │ │ │ │ │ └── OpenApiOAuthTokenV1Response.cs
│ │ │ │ │ ├── MicroApp/
│ │ │ │ │ │ ├── App/
│ │ │ │ │ │ │ ├── Category/
│ │ │ │ │ │ │ │ ├── OpenApiMicroAppAppAddCategoriesV1Request.cs
│ │ │ │ │ │ │ │ ├── OpenApiMicroAppAppAddCategoriesV1Response.cs
│ │ │ │ │ │ │ │ ├── OpenApiMicroAppAppAllCategoriesV1Request.cs
│ │ │ │ │ │ │ │ ├── OpenApiMicroAppAppAllCategoriesV1Response.cs
│ │ │ │ │ │ │ │ ├── OpenApiMicroAppAppCategoriesV1Request.cs
│ │ │ │ │ │ │ │ ├── OpenApiMicroAppAppCategoriesV1Response.cs
│ │ │ │ │ │ │ │ ├── OpenApiMicroAppAppDeleteCategoriesV1Request.cs
│ │ │ │ │ │ │ │ ├── OpenApiMicroAppAppDeleteCategoriesV1Response.cs
│ │ │ │ │ │ │ │ ├── OpenApiMicroAppAppSupplyCategoriesV1Request.cs
│ │ │ │ │ │ │ │ └── OpenApiMicroAppAppSupplyCategoriesV1Response.cs
│ │ │ │ │ │ │ ├── OpenApiMicroAppAppCheckAppNameV1Request.cs
│ │ │ │ │ │ │ ├── OpenApiMicroAppAppCheckAppNameV1Response.cs
│ │ │ │ │ │ │ ├── OpenApiMicroAppAppCreditScoreV1Request.cs
│ │ │ │ │ │ │ ├── OpenApiMicroAppAppCreditScoreV1Response.cs
│ │ │ │ │ │ │ ├── OpenApiMicroAppAppInfoV1Request.cs
│ │ │ │ │ │ │ ├── OpenApiMicroAppAppInfoV1Response.cs
│ │ │ │ │ │ │ ├── OpenApiMicroAppAppModifyAppIconV1Request.cs
│ │ │ │ │ │ │ ├── OpenApiMicroAppAppModifyAppIconV1Response.cs
│ │ │ │ │ │ │ ├── OpenApiMicroAppAppModifyAppIntroductionV1Request.cs
│ │ │ │ │ │ │ ├── OpenApiMicroAppAppModifyAppIntroductionV1Response.cs
│ │ │ │ │ │ │ ├── OpenApiMicroAppAppModifyAppNameV1Request.cs
│ │ │ │ │ │ │ ├── OpenApiMicroAppAppModifyAppNameV1Response.cs
│ │ │ │ │ │ │ ├── OpenApiMicroAppAppModifyServerDomainV1Request.cs
│ │ │ │ │ │ │ ├── OpenApiMicroAppAppModifyServerDomainV1Response.cs
│ │ │ │ │ │ │ ├── OpenApiMicroAppAppModifyWebviewDomainV1Request.cs
│ │ │ │ │ │ │ ├── OpenApiMicroAppAppModifyWebviewDomainV1Response.cs
│ │ │ │ │ │ │ ├── OpenApiMicroAppAppQrcodeV1Request.cs
│ │ │ │ │ │ │ ├── OpenApiMicroAppAppQrcodeV1Response.cs
│ │ │ │ │ │ │ ├── OpenApiMicroAppAppQualityRatingV1Request.cs
│ │ │ │ │ │ │ └── OpenApiMicroAppAppQualityRatingV1Response.cs
│ │ │ │ │ │ ├── OpenApiMicroAppCode2SessionV1Request.cs
│ │ │ │ │ │ ├── OpenApiMicroAppCode2SessionV1Response.cs
│ │ │ │ │ │ ├── OpenApiMicroAppUploadMaterialV1Request.cs
│ │ │ │ │ │ ├── OpenApiMicroAppUploadMaterialV1Response.cs
│ │ │ │ │ │ ├── Operation/
│ │ │ │ │ │ │ ├── Application/
│ │ │ │ │ │ │ │ ├── OpenApiMicroAppOperationLiveApplicationStatusV1Request.cs
│ │ │ │ │ │ │ │ ├── OpenApiMicroAppOperationLiveApplicationStatusV1Response.cs
│ │ │ │ │ │ │ │ ├── OpenApiMicroAppOperationLiveApplicationV1Request.cs
│ │ │ │ │ │ │ │ ├── OpenApiMicroAppOperationLiveApplicationV1Response.cs
│ │ │ │ │ │ │ │ ├── OpenApiMicroAppOperationPhoneNumberApplicationStatusV1Request.cs
│ │ │ │ │ │ │ │ ├── OpenApiMicroAppOperationPhoneNumberApplicationStatusV1Response.cs
│ │ │ │ │ │ │ │ ├── OpenApiMicroAppOperationPhoneNumberApplicationV1Request.cs
│ │ │ │ │ │ │ │ ├── OpenApiMicroAppOperationPhoneNumberApplicationV1Response.cs
│ │ │ │ │ │ │ │ ├── OpenApiMicroAppOperationVideoApplicationStatusV1Request.cs
│ │ │ │ │ │ │ │ ├── OpenApiMicroAppOperationVideoApplicationStatusV1Response.cs
│ │ │ │ │ │ │ │ ├── OpenApiMicroAppOperationVideoApplicationV1Request.cs
│ │ │ │ │ │ │ │ └── OpenApiMicroAppOperationVideoApplicationV1Response.cs
│ │ │ │ │ │ │ ├── ShareTemplate/
│ │ │ │ │ │ │ │ ├── OpenApiMicroAppOperationAddShareTemplateV1Request.cs
│ │ │ │ │ │ │ │ ├── OpenApiMicroAppOperationAddShareTemplateV1Response.cs
│ │ │ │ │ │ │ │ ├── OpenApiMicroAppOperationDeleteShareTemplateV1Request.cs
│ │ │ │ │ │ │ │ ├── OpenApiMicroAppOperationDeleteShareTemplateV1Response.cs
│ │ │ │ │ │ │ │ ├── OpenApiMicroAppOperationModifyShareTemplateV1Request.cs
│ │ │ │ │ │ │ │ ├── OpenApiMicroAppOperationModifyShareTemplateV1Response.cs
│ │ │ │ │ │ │ │ ├── OpenApiMicroAppOperationSetDefaultShareTemplateV1Request.cs
│ │ │ │ │ │ │ │ ├── OpenApiMicroAppOperationSetDefaultShareTemplateV1Response.cs
│ │ │ │ │ │ │ │ ├── OpenApiMicroAppOperationShareTemplateListV1Request.cs
│ │ │ │ │ │ │ │ └── OpenApiMicroAppOperationShareTemplateListV1Response.cs
│ │ │ │ │ │ │ └── ShopMaterial/
│ │ │ │ │ │ │ ├── OpenApiMicroAppOperationAddShopMaterialV1Request.cs
│ │ │ │ │ │ │ ├── OpenApiMicroAppOperationAddShopMaterialV1Response.cs
│ │ │ │ │ │ │ ├── OpenApiMicroAppOperationQueryShopMaterialV1Request.cs
│ │ │ │ │ │ │ └── OpenApiMicroAppOperationQueryShopMaterialV1Response.cs
│ │ │ │ │ │ └── Package/
│ │ │ │ │ │ ├── OpenApiMicroAppPackageAuditHostsV1Request.cs
│ │ │ │ │ │ ├── OpenApiMicroAppPackageAuditHostsV1Response.cs
│ │ │ │ │ │ ├── OpenApiMicroAppPackageAuditV2Request.cs
│ │ │ │ │ │ ├── OpenApiMicroAppPackageAuditV2Response.cs
│ │ │ │ │ │ ├── OpenApiMicroAppPackageReleaseV1Request.cs
│ │ │ │ │ │ ├── OpenApiMicroAppPackageReleaseV1Response.cs
│ │ │ │ │ │ ├── OpenApiMicroAppPackageRevokeAuditV1Request.cs
│ │ │ │ │ │ ├── OpenApiMicroAppPackageRevokeAuditV1Response.cs
│ │ │ │ │ │ ├── OpenApiMicroAppPackageRollbackV1Request.cs
│ │ │ │ │ │ ├── OpenApiMicroAppPackageRollbackV1Response.cs
│ │ │ │ │ │ ├── OpenApiMicroAppPackageUploadV1Request.cs
│ │ │ │ │ │ ├── OpenApiMicroAppPackageUploadV1Response.cs
│ │ │ │ │ │ ├── OpenApiMicroAppPackageVersionsV1Request.cs
│ │ │ │ │ │ └── OpenApiMicroAppPackageVersionsV1Response.cs
│ │ │ │ │ ├── Settle/
│ │ │ │ │ │ ├── OpenApiSettleApplyV1Request.cs
│ │ │ │ │ │ ├── OpenApiSettleApplyV1Response.cs
│ │ │ │ │ │ ├── OpenApiSettleGetApplyStatusV1Request.cs
│ │ │ │ │ │ ├── OpenApiSettleGetApplyStatusV1Response.cs
│ │ │ │ │ │ ├── OpenApiSettlePreCheckV1Request.cs
│ │ │ │ │ │ └── OpenApiSettlePreCheckV1Response.cs
│ │ │ │ │ ├── ThirdParty/
│ │ │ │ │ │ ├── Domain/
│ │ │ │ │ │ │ ├── OpenApiThirdPartyDownloadWebviewFileV1Request.cs
│ │ │ │ │ │ │ └── OpenApiThirdPartyDownloadWebviewFileV1Response.cs
│ │ │ │ │ │ ├── OpenApiThirdPartyAuthAppListV1Request.cs
│ │ │ │ │ │ ├── OpenApiThirdPartyAuthAppListV1Response.cs
│ │ │ │ │ │ ├── OpenApiThirdPartyUploadPictureMaterialV1Request.cs
│ │ │ │ │ │ ├── OpenApiThirdPartyUploadPictureMaterialV1Response.cs
│ │ │ │ │ │ ├── POI/
│ │ │ │ │ │ │ ├── OpenApiThirdPartyPOIBaseQueryAMapV1Request.cs
│ │ │ │ │ │ │ ├── OpenApiThirdPartyPOIBaseQueryAMapV1Response.cs
│ │ │ │ │ │ │ ├── OpenApiThirdPartyPOISupplierMatchV1Request.cs
│ │ │ │ │ │ │ ├── OpenApiThirdPartyPOISupplierMatchV1Response.cs
│ │ │ │ │ │ │ ├── OpenApiThirdPartyPOISupplierQueryMatchTaskV1Request.cs
│ │ │ │ │ │ │ ├── OpenApiThirdPartyPOISupplierQueryMatchTaskV1Response.cs
│ │ │ │ │ │ │ ├── OpenApiThirdPartyPOISupplierQueryMatchV1Request.cs
│ │ │ │ │ │ │ ├── OpenApiThirdPartyPOISupplierQueryMatchV1Response.cs
│ │ │ │ │ │ │ ├── OpenApiThirdPartyPOISupplierQueryV1Request.cs
│ │ │ │ │ │ │ ├── OpenApiThirdPartyPOISupplierQueryV1Response.cs
│ │ │ │ │ │ │ ├── OpenApiThirdPartyPOISupplierSyncV1Request.cs
│ │ │ │ │ │ │ └── OpenApiThirdPartyPOISupplierSyncV1Response.cs
│ │ │ │ │ │ └── Template/
│ │ │ │ │ │ ├── OpenApiThirdPartyTemplateAddTemplateV1Request.cs
│ │ │ │ │ │ ├── OpenApiThirdPartyTemplateAddTemplateV1Response.cs
│ │ │ │ │ │ ├── OpenApiThirdPartyTemplateDeleteTemplateV1Request.cs
│ │ │ │ │ │ ├── OpenApiThirdPartyTemplateDeleteTemplateV1Response.cs
│ │ │ │ │ │ ├── OpenApiThirdPartyTemplateGetTemplateAppListV1Request.cs
│ │ │ │ │ │ ├── OpenApiThirdPartyTemplateGetTemplateAppListV1Response.cs
│ │ │ │ │ │ ├── OpenApiThirdPartyTemplateGetTemplateListV1Request.cs
│ │ │ │ │ │ └── OpenApiThirdPartyTemplateGetTemplateListV1Response.cs
│ │ │ │ │ └── __Abstractions/
│ │ │ │ │ └── DouyinMicroAppOpenApiLegacyResponseBase.cs
│ │ │ │ └── Settings/
│ │ │ │ └── Credentials.cs
│ │ │ ├── ProductApi/
│ │ │ │ ├── DouyinMicroAppProductApiClient.cs
│ │ │ │ ├── DouyinMicroAppProductApiClientBuilder.cs
│ │ │ │ ├── DouyinMicroAppProductApiClientOptions.cs
│ │ │ │ ├── DouyinMicroAppProductApiEndpoints.cs
│ │ │ │ ├── DouyinMicroAppProductApiEvent.cs
│ │ │ │ ├── DouyinMicroAppProductApiRequest.cs
│ │ │ │ ├── DouyinMicroAppProductApiResponse.cs
│ │ │ │ ├── Events/
│ │ │ │ │ ├── ProductEvent.cs
│ │ │ │ │ ├── ProductFulfilmentEvent.cs
│ │ │ │ │ ├── ProductQualificationEvent.cs
│ │ │ │ │ └── ProductResourceEvent.cs
│ │ │ │ ├── Extensions/
│ │ │ │ │ ├── DouyinMicroAppProductApiClientEventExtensions.cs
│ │ │ │ │ ├── DouyinMicroAppProductApiClientExecuteCallbackExtensions.cs
│ │ │ │ │ ├── DouyinMicroAppProductApiClientExecuteProductExtensions.cs
│ │ │ │ │ ├── DouyinMicroAppProductApiClientExecuteQualificationExtensions.cs
│ │ │ │ │ ├── DouyinMicroAppProductApiClientExecuteRefundRuleExtensions.cs
│ │ │ │ │ └── DouyinMicroAppProductApiClientExecuteResourceExtensions.cs
│ │ │ │ ├── Models/
│ │ │ │ │ ├── Callback/
│ │ │ │ │ │ ├── ProductSyncCallbackUrlRequest.cs
│ │ │ │ │ │ └── ProductSyncCallbackUrlResponse.cs
│ │ │ │ │ ├── Product/
│ │ │ │ │ │ ├── ProductAddRequest.cs
│ │ │ │ │ │ ├── ProductAddResponse.cs
│ │ │ │ │ │ ├── ProductModifyNoAuditRequest.cs
│ │ │ │ │ │ ├── ProductModifyNoAuditResponse.cs
│ │ │ │ │ │ ├── ProductModifyRequest.cs
│ │ │ │ │ │ ├── ProductModifyResponse.cs
│ │ │ │ │ │ ├── ProductModifyStatusRequest.cs
│ │ │ │ │ │ ├── ProductModifyStatusResponse.cs
│ │ │ │ │ │ ├── ProductQueryClassInfoRequest.cs
│ │ │ │ │ │ ├── ProductQueryClassInfoResponse.cs
│ │ │ │ │ │ ├── ProductQueryRequest.cs
│ │ │ │ │ │ ├── ProductQueryResponse.cs
│ │ │ │ │ │ ├── ProductQueryReviewRequest.cs
│ │ │ │ │ │ ├── ProductQueryReviewResponse.cs
│ │ │ │ │ │ ├── ProductQueryTemplateInfoRequest.cs
│ │ │ │ │ │ └── ProductQueryTemplateInfoResponse.cs
│ │ │ │ │ ├── Qualification/
│ │ │ │ │ │ ├── ProductAddQualificationRequest.cs
│ │ │ │ │ │ ├── ProductAddQualificationResponse.cs
│ │ │ │ │ │ ├── ProductModifyQualificationRequest.cs
│ │ │ │ │ │ ├── ProductModifyQualificationResponse.cs
│ │ │ │ │ │ ├── ProductQueryQualificationRequest.cs
│ │ │ │ │ │ └── ProductQueryQualificationResponse.cs
│ │ │ │ │ ├── RefundRule/
│ │ │ │ │ │ ├── ProductModifyRefundRuleRequest.cs
│ │ │ │ │ │ ├── ProductModifyRefundRuleResponse.cs
│ │ │ │ │ │ ├── ProductQueryRefundRuleMetaRequest.cs
│ │ │ │ │ │ └── ProductQueryRefundRuleMetaResponse.cs
│ │ │ │ │ └── Resource/
│ │ │ │ │ ├── ProductQueryResourceStatusRequest.cs
│ │ │ │ │ ├── ProductQueryResourceStatusResponse.cs
│ │ │ │ │ ├── ProductUploadResourceRequest.cs
│ │ │ │ │ └── ProductUploadResourceResponse.cs
│ │ │ │ └── Settings/
│ │ │ │ └── Credentials.cs
│ │ │ ├── RoleApi/
│ │ │ │ ├── DouyinMicroAppRoleApiClient.cs
│ │ │ │ ├── DouyinMicroAppRoleApiClientBuilder.cs
│ │ │ │ ├── DouyinMicroAppRoleApiClientOptions.cs
│ │ │ │ ├── DouyinMicroAppRoleApiEndpoints.cs
│ │ │ │ ├── DouyinMicroAppRoleApiRequest.cs
│ │ │ │ ├── DouyinMicroAppRoleApiResponse.cs
│ │ │ │ ├── Extensions/
│ │ │ │ │ └── DouyinMicroAppRoleApiClientExecuteRoleExtensions.cs
│ │ │ │ ├── Models/
│ │ │ │ │ ├── Auth/
│ │ │ │ │ │ ├── AuthEntityAddClassAuthRequest.cs
│ │ │ │ │ │ ├── AuthEntityAddClassAuthResponse.cs
│ │ │ │ │ │ ├── AuthEntityByPartnerRequest.cs
│ │ │ │ │ │ ├── AuthEntityByPartnerResponse.cs
│ │ │ │ │ │ ├── AuthEntityBySelfRequest.cs
│ │ │ │ │ │ ├── AuthEntityBySelfResponse.cs
│ │ │ │ │ │ ├── AuthEntityGetAuditDetailRequest.cs
│ │ │ │ │ │ ├── AuthEntityGetAuditDetailResponse.cs
│ │ │ │ │ │ ├── AuthEntityGetBasicAuthRequest.cs
│ │ │ │ │ │ ├── AuthEntityGetBasicAuthResponse.cs
│ │ │ │ │ │ ├── AuthEntityGetClassAuthRequest.cs
│ │ │ │ │ │ ├── AuthEntityGetClassAuthResponse.cs
│ │ │ │ │ │ ├── AuthEntityUpdateBasicAuthRequest.cs
│ │ │ │ │ │ ├── AuthEntityUpdateBasicAuthResponse.cs
│ │ │ │ │ │ ├── AuthEntityUpdateClassAuthRequest.cs
│ │ │ │ │ │ └── AuthEntityUpdateClassAuthResponse.cs
│ │ │ │ │ ├── AuthEntityQueryEntityInfoRequest.cs
│ │ │ │ │ ├── AuthEntityQueryEntityInfoResponse.cs
│ │ │ │ │ ├── AuthEntityUploadMaterialRequest.cs
│ │ │ │ │ ├── AuthEntityUploadMaterialResponse.cs
│ │ │ │ │ ├── Bind/
│ │ │ │ │ │ ├── AuthEntityEnableMountScopeRequest.cs
│ │ │ │ │ │ ├── AuthEntityEnableMountScopeResponse.cs
│ │ │ │ │ │ ├── AuthEntityQueryBindToCListRequest.cs
│ │ │ │ │ │ ├── AuthEntityQueryBindToCListResponse.cs
│ │ │ │ │ │ ├── AuthEntityQueryMountScopeRequest.cs
│ │ │ │ │ │ ├── AuthEntityQueryMountScopeResponse.cs
│ │ │ │ │ │ ├── AuthEntityUnbindAccountRequest.cs
│ │ │ │ │ │ └── AuthEntityUnbindAccountResponse.cs
│ │ │ │ │ ├── MerchantCode/
│ │ │ │ │ │ ├── AuthEntityActivateMerchantCodeRequest.cs
│ │ │ │ │ │ ├── AuthEntityActivateMerchantCodeResponse.cs
│ │ │ │ │ │ ├── AuthEntityQueryMerchantCodeStatusRequest.cs
│ │ │ │ │ │ └── AuthEntityQueryMerchantCodeStatusResponse.cs
│ │ │ │ │ └── Role/
│ │ │ │ │ ├── AuthEntityAddRoleRequest.cs
│ │ │ │ │ ├── AuthEntityAddRoleResponse.cs
│ │ │ │ │ ├── AuthEntityAuthRoleRequest.cs
│ │ │ │ │ ├── AuthEntityAuthRoleResponse.cs
│ │ │ │ │ ├── AuthEntityBindRoleRequest.cs
│ │ │ │ │ ├── AuthEntityBindRoleResponse.cs
│ │ │ │ │ ├── AuthEntityGetAppIdAuthRequest.cs
│ │ │ │ │ ├── AuthEntityGetAppIdAuthResponse.cs
│ │ │ │ │ ├── AuthEntityGetBindListRequest.cs
│ │ │ │ │ ├── AuthEntityGetBindListResponse.cs
│ │ │ │ │ ├── AuthEntityUnauthRoleRequest.cs
│ │ │ │ │ ├── AuthEntityUnauthRoleResponse.cs
│ │ │ │ │ ├── AuthEntityUnbindRoleRequest.cs
│ │ │ │ │ ├── AuthEntityUnbindRoleResponse.cs
│ │ │ │ │ ├── AuthEntityUpdateAuthLetterRequest.cs
│ │ │ │ │ └── AuthEntityUpdateAuthLetterResponse.cs
│ │ │ │ └── Settings/
│ │ │ │ └── Credentials.cs
│ │ │ └── Webcast/
│ │ │ ├── DouyinMicroAppWebcastClient.cs
│ │ │ ├── DouyinMicroAppWebcastClientBuilder.cs
│ │ │ ├── DouyinMicroAppWebcastClientOptions.cs
│ │ │ ├── DouyinMicroAppWebcastEndpoints.cs
│ │ │ ├── DouyinMicroAppWebcastRequest.cs
│ │ │ ├── DouyinMicroAppWebcastResponse.cs
│ │ │ ├── Extensions/
│ │ │ │ ├── DouyinMicroAppWebcastClientExecuteAudienceExtensions.cs
│ │ │ │ ├── DouyinMicroAppWebcastClientExecuteBusinessExtensions.cs
│ │ │ │ ├── DouyinMicroAppWebcastClientExecuteCardExtensions.cs
│ │ │ │ ├── DouyinMicroAppWebcastClientExecuteFileExtensions.cs
│ │ │ │ ├── DouyinMicroAppWebcastClientExecuteGamingConExtensions.cs
│ │ │ │ ├── DouyinMicroAppWebcastClientExecuteGiftExtensions.cs
│ │ │ │ ├── DouyinMicroAppWebcastClientExecuteLinkMicExtensions.cs
│ │ │ │ ├── DouyinMicroAppWebcastClientExecuteLiveDataExtensions.cs
│ │ │ │ ├── DouyinMicroAppWebcastClientExecuteQuizExtensions.cs
│ │ │ │ ├── DouyinMicroAppWebcastClientExecuteWebcastMateExtensions.cs
│ │ │ │ └── DouyinMicroAppWebcastClientResponseVerificationExtensions.cs
│ │ │ ├── Interceptors/
│ │ │ │ └── DouyinMicroAppWebcastRequestSigningInterceptor.cs
│ │ │ ├── Models/
│ │ │ │ ├── Audience/
│ │ │ │ │ ├── WebcastAudienceJoinGameRequest.cs
│ │ │ │ │ ├── WebcastAudienceJoinGameResponse.cs
│ │ │ │ │ ├── WebcastAudienceLeaveGameRequest.cs
│ │ │ │ │ └── WebcastAudienceLeaveGameResponse.cs
│ │ │ │ ├── Business/
│ │ │ │ │ ├── WebcastBusinessDiamondOrderAckRequest.cs
│ │ │ │ │ ├── WebcastBusinessDiamondOrderAckResponse.cs
│ │ │ │ │ ├── WebcastBusinessDiamondQueryRequest.cs
│ │ │ │ │ ├── WebcastBusinessDiamondQueryResponse.cs
│ │ │ │ │ ├── WebcastBusinessDiamondReconciliationRequest.cs
│ │ │ │ │ ├── WebcastBusinessDiamondReconciliationResponse.cs
│ │ │ │ │ ├── WebcastBusinessOrderPrecreateRequest.cs
│ │ │ │ │ └── WebcastBusinessOrderPrecreateResponse.cs
│ │ │ │ ├── Card/
│ │ │ │ │ ├── WebcastCardDefaultGetRequest.cs
│ │ │ │ │ ├── WebcastCardDefaultGetResponse.cs
│ │ │ │ │ ├── WebcastCardDefaultSetRequest.cs
│ │ │ │ │ ├── WebcastCardDefaultSetResponse.cs
│ │ │ │ │ ├── WebcastCardDeleteRequest.cs
│ │ │ │ │ ├── WebcastCardDeleteResponse.cs
│ │ │ │ │ ├── WebcastCardGetAllCardsForUserRequest.cs
│ │ │ │ │ ├── WebcastCardGetAllCardsForUserResponse.cs
│ │ │ │ │ ├── WebcastCardGetRequest.cs
│ │ │ │ │ ├── WebcastCardGetResponse.cs
│ │ │ │ │ ├── WebcastCardSetRequest.cs
│ │ │ │ │ ├── WebcastCardSetResponse.cs
│ │ │ │ │ ├── WebcastCardUpdateRequest.cs
│ │ │ │ │ └── WebcastCardUpdateResponse.cs
│ │ │ │ ├── File/
│ │ │ │ │ ├── WebcastFileCardImageDeleteRequest.cs
│ │ │ │ │ ├── WebcastFileCardImageDeleteResponse.cs
│ │ │ │ │ ├── WebcastFileCardImageGetRequest.cs
│ │ │ │ │ ├── WebcastFileCardImageGetResponse.cs
│ │ │ │ │ ├── WebcastFileCardImageUploadRequest.cs
│ │ │ │ │ └── WebcastFileCardImageUploadResponse.cs
│ │ │ │ ├── GamingCon/
│ │ │ │ │ ├── WebcastGamingConRoundCoGameUploadUserDataRequest.cs
│ │ │ │ │ ├── WebcastGamingConRoundCoGameUploadUserDataResponse.cs
│ │ │ │ │ ├── WebcastGamingConRoundCompleteUploadUserResultRequest.cs
│ │ │ │ │ ├── WebcastGamingConRoundCompleteUploadUserResultResponse.cs
│ │ │ │ │ ├── WebcastGamingConRoundSyncStatusRequest.cs
│ │ │ │ │ ├── WebcastGamingConRoundSyncStatusResponse.cs
│ │ │ │ │ ├── WebcastGamingConRoundUploadRankListRequest.cs
│ │ │ │ │ ├── WebcastGamingConRoundUploadRankListResponse.cs
│ │ │ │ │ ├── WebcastGamingConRoundUploadUserGroupInfoRequest.cs
│ │ │ │ │ ├── WebcastGamingConRoundUploadUserGroupInfoResponse.cs
│ │ │ │ │ ├── WebcastGamingConRoundUploadUserResultRequest.cs
│ │ │ │ │ ├── WebcastGamingConRoundUploadUserResultResponse.cs
│ │ │ │ │ ├── WebcastGamingConWorldRankCompleteUploadUserResultRequest.cs
│ │ │ │ │ ├── WebcastGamingConWorldRankCompleteUploadUserResultResponse.cs
│ │ │ │ │ ├── WebcastGamingConWorldRankSetValidVersionRequest.cs
│ │ │ │ │ ├── WebcastGamingConWorldRankSetValidVersionResponse.cs
│ │ │ │ │ ├── WebcastGamingConWorldRankUploadRankListRequest.cs
│ │ │ │ │ ├── WebcastGamingConWorldRankUploadRankListResponse.cs
│ │ │ │ │ ├── WebcastGamingConWorldRankUploadUserResultRequest.cs
│ │ │ │ │ └── WebcastGamingConWorldRankUploadUserResultResponse.cs
│ │ │ │ ├── Gift/
│ │ │ │ │ ├── WebcastGiftTopGiftRequest.cs
│ │ │ │ │ └── WebcastGiftTopGiftResponse.cs
│ │ │ │ ├── LinkMic/
│ │ │ │ │ ├── WebcastLinkMicQueryRequest.cs
│ │ │ │ │ └── WebcastLinkMicQueryResponse.cs
│ │ │ │ ├── LiveData/
│ │ │ │ │ ├── WebcastLiveDataTaskFailDataGetRequest.cs
│ │ │ │ │ ├── WebcastLiveDataTaskFailDataGetResponse.cs
│ │ │ │ │ ├── WebcastLiveDataTaskGetRequest.cs
│ │ │ │ │ ├── WebcastLiveDataTaskGetResponse.cs
│ │ │ │ │ ├── WebcastLiveDataTaskStartRequest.cs
│ │ │ │ │ ├── WebcastLiveDataTaskStartResponse.cs
│ │ │ │ │ ├── WebcastLiveDataTaskStopRequest.cs
│ │ │ │ │ └── WebcastLiveDataTaskStopResponse.cs
│ │ │ │ ├── Quiz/
│ │ │ │ │ ├── WebcastQuizGetRequest.cs
│ │ │ │ │ └── WebcastQuizGetResponse.cs
│ │ │ │ └── WebcastMate/
│ │ │ │ ├── WebcastWebcastMateInfoRequest.cs
│ │ │ │ └── WebcastWebcastMateInfoResponse.cs
│ │ │ └── Settings/
│ │ │ └── Credentials.cs
│ │ ├── Extensions/
│ │ │ ├── DouyinMicroAppClientEventExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteAppsAdPlacementExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteAppsAuthExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteAppsCapacityExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteAppsCategoryExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteAppsCensorExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteAppsDeveloperToolboxExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteAppsDouyinExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteAppsECPayExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteAppsItemExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteAppsLiveBookingExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteAppsPlayletBusinessExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteAppsPrivacySettingExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteAppsQrcodeExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteAppsSearchExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteAppsShareExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteAppsTaskExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteAppsTradeExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteAppsTrafficPermissionExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteAppsUrlLinkExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteAppsUrlSchemaExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteAppsUserExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteAppsVideoExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteECommerceExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteGiftExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteLegacyAppsECPayExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteLegacyAppsExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteLegacyAppsGameExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteLegacyAppsStorageExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteLegacyAppsTradeExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteLegacyCommentExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteLegacyTagsExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteLiveBookingExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteMatchTaskBoxExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteNotificationSubscriptionExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecutePlatformDataAnalysisExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteProductExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecutePromotionExtensions.cs
│ │ │ ├── DouyinMicroAppClientExecuteTradeAuthDeveloperExtensions.cs
│ │ │ └── DouyinMicroAppClientExecuteTradeBasicDeveloperExtensions.cs
│ │ ├── Models/
│ │ │ ├── AppsAdPlacement/
│ │ │ │ ├── AppsAdPlacementAddV1Request.cs
│ │ │ │ ├── AppsAdPlacementAddV1Response.cs
│ │ │ │ ├── AppsAdPlacementQueryV1Request.cs
│ │ │ │ ├── AppsAdPlacementQueryV1Response.cs
│ │ │ │ ├── AppsAdPlacementUpdateV1Request.cs
│ │ │ │ └── AppsAdPlacementUpdateV1Response.cs
│ │ │ ├── AppsAuth/
│ │ │ │ ├── AppsAuthGetRelatedIdV1Request.cs
│ │ │ │ └── AppsAuthGetRelatedIdV1Response.cs
│ │ │ ├── AppsCapacity/
│ │ │ │ ├── Ad/
│ │ │ │ │ ├── AppsCapacityQueryAdIncomeV3Request.cs
│ │ │ │ │ ├── AppsCapacityQueryAdIncomeV3Response.cs
│ │ │ │ │ ├── AppsCapacityQueryAdSettlementListV3Request.cs
│ │ │ │ │ └── AppsCapacityQueryAdSettlementListV3Response.cs
│ │ │ │ ├── AwemeBind/
│ │ │ │ │ ├── AppsCapacityBindAwemeRelationV1Request.cs
│ │ │ │ │ ├── AppsCapacityBindAwemeRelationV1Response.cs
│ │ │ │ │ ├── AppsCapacityGetAwemeBindTemplateInfoV1Request.cs
│ │ │ │ │ ├── AppsCapacityGetAwemeBindTemplateInfoV1Response.cs
│ │ │ │ │ ├── AppsCapacityGetAwemeBindTemplateListV1Request.cs
│ │ │ │ │ ├── AppsCapacityGetAwemeBindTemplateListV1Response.cs
│ │ │ │ │ ├── AppsCapacityGetAwemeRelationBindQrcodeV1Request.cs
│ │ │ │ │ ├── AppsCapacityGetAwemeRelationBindQrcodeV1Response.cs
│ │ │ │ │ ├── AppsCapacityQueryAwemeRelationListV1Request.cs
│ │ │ │ │ ├── AppsCapacityQueryAwemeRelationListV1Response.cs
│ │ │ │ │ ├── AppsCapacityUnbindAwemeRelationV1Request.cs
│ │ │ │ │ └── AppsCapacityUnbindAwemeRelationV1Response.cs
│ │ │ │ ├── AwemeKeyword/
│ │ │ │ │ ├── AppsCapacityAddAwemeVideoKeywordV1Request.cs
│ │ │ │ │ ├── AppsCapacityAddAwemeVideoKeywordV1Response.cs
│ │ │ │ │ ├── AppsCapacityDeleteAwemeVideoKeywordV1Request.cs
│ │ │ │ │ ├── AppsCapacityDeleteAwemeVideoKeywordV1Response.cs
│ │ │ │ │ ├── AppsCapacityQueryAwemeVideoKeywordListV1Request.cs
│ │ │ │ │ └── AppsCapacityQueryAwemeVideoKeywordListV1Response.cs
│ │ │ │ ├── Delivery/
│ │ │ │ │ ├── AppsCapacityCreateAliasV1Request.cs
│ │ │ │ │ ├── AppsCapacityCreateAliasV1Response.cs
│ │ │ │ │ ├── AppsCapacityDeleteAliasV1Request.cs
│ │ │ │ │ ├── AppsCapacityDeleteAliasV1Response.cs
│ │ │ │ │ ├── AppsCapacityListAliasV1Request.cs
│ │ │ │ │ ├── AppsCapacityListAliasV1Response.cs
│ │ │ │ │ ├── AppsCapacityModifyAliasV1Request.cs
│ │ │ │ │ ├── AppsCapacityModifyAliasV1Response.cs
│ │ │ │ │ ├── AppsCapacityQuerySearchTagListV1Request.cs
│ │ │ │ │ ├── AppsCapacityQuerySearchTagListV1Response.cs
│ │ │ │ │ ├── AppsCapacitySetSearchTagV1Request.cs
│ │ │ │ │ └── AppsCapacitySetSearchTagV1Response.cs
│ │ │ │ ├── SimpleQrcode/
│ │ │ │ │ ├── AppsCapacityAddSimpleQrcodeBindV2Request.cs
│ │ │ │ │ ├── AppsCapacityAddSimpleQrcodeBindV2Response.cs
│ │ │ │ │ ├── AppsCapacityDeleteSimpleQrcodeBindV2Request.cs
│ │ │ │ │ ├── AppsCapacityDeleteSimpleQrcodeBindV2Response.cs
│ │ │ │ │ ├── AppsCapacityQuerySimpleQrcodeBindListV2Request.cs
│ │ │ │ │ ├── AppsCapacityQuerySimpleQrcodeBindListV2Response.cs
│ │ │ │ │ ├── AppsCapacityUpdateSimpleQrcodeBindStatusV2Request.cs
│ │ │ │ │ ├── AppsCapacityUpdateSimpleQrcodeBindStatusV2Response.cs
│ │ │ │ │ ├── AppsCapacityUpdateSimpleQrcodeBindV2Request.cs
│ │ │ │ │ └── AppsCapacityUpdateSimpleQrcodeBindV2Response.cs
│ │ │ │ └── SubService/
│ │ │ │ ├── AppsCapacityCreateMicroAppSubServiceV1Request.cs
│ │ │ │ ├── AppsCapacityCreateMicroAppSubServiceV1Response.cs
│ │ │ │ ├── AppsCapacityQueryMicroAppSubServiceV1Request.cs
│ │ │ │ └── AppsCapacityQueryMicroAppSubServiceV1Response.cs
│ │ │ ├── AppsCategory/
│ │ │ │ ├── AppsCategoryQueryAppCategoriesV1Request.cs
│ │ │ │ └── AppsCategoryQueryAppCategoriesV1Response.cs
│ │ │ ├── AppsCensor/
│ │ │ │ ├── AppsCensorImageV1Request.cs
│ │ │ │ └── AppsCensorImageV1Response.cs
│ │ │ ├── AppsDeveloperToolbox/
│ │ │ │ ├── AppsDeveloperToolboxImageMaterialFunctionConfigAddV1Request.cs
│ │ │ │ ├── AppsDeveloperToolboxImageMaterialFunctionConfigAddV1Response.cs
│ │ │ │ ├── AppsDeveloperToolboxImageMaterialFunctionConfigQueryStatusV1Request.cs
│ │ │ │ ├── AppsDeveloperToolboxImageMaterialFunctionConfigQueryStatusV1Response.cs
│ │ │ │ ├── AppsDeveloperToolboxImageMaterialUploadV1Request.cs
│ │ │ │ └── AppsDeveloperToolboxImageMaterialUploadV1Response.cs
│ │ │ ├── AppsDouyin/
│ │ │ │ ├── InteractTask/
│ │ │ │ │ ├── AppsDouyinCreateInteractTaskV1Request.cs
│ │ │ │ │ ├── AppsDouyinCreateInteractTaskV1Response.cs
│ │ │ │ │ ├── AppsDouyinQueryUserInteractTaskV1Request.cs
│ │ │ │ │ └── AppsDouyinQueryUserInteractTaskV1Response.cs
│ │ │ │ └── Task/
│ │ │ │ ├── AppsDouyinCreateTaskV1Request.cs
│ │ │ │ ├── AppsDouyinCreateTaskV1Response.cs
│ │ │ │ ├── AppsDouyinQueryUserTaskV1Request.cs
│ │ │ │ └── AppsDouyinQueryUserTaskV1Response.cs
│ │ │ ├── AppsECPay/
│ │ │ │ ├── Bill/
│ │ │ │ │ ├── AppsBillsV3Request.cs
│ │ │ │ │ ├── AppsBillsV3Response.cs
│ │ │ │ │ ├── AppsFundBillsV3Request.cs
│ │ │ │ │ └── AppsFundBillsV3Response.cs
│ │ │ │ └── SaaS/
│ │ │ │ ├── Applyment/
│ │ │ │ │ ├── AppsECPaySaaSCreateMerchantV3Request.cs
│ │ │ │ │ ├── AppsECPaySaaSCreateMerchantV3Response.cs
│ │ │ │ │ ├── AppsECPaySaaSImageUploadV3Request.cs
│ │ │ │ │ ├── AppsECPaySaaSImageUploadV3Response.cs
│ │ │ │ │ ├── AppsECPaySaaSQueryMerchantStatusV3Request.cs
│ │ │ │ │ └── AppsECPaySaaSQueryMerchantStatusV3Response.cs
│ │ │ │ ├── Links/
│ │ │ │ │ ├── AppsECPaySaaSAddMerchantV3Request.cs
│ │ │ │ │ ├── AppsECPaySaaSAddMerchantV3Response.cs
│ │ │ │ │ ├── AppsECPaySaaSAddSubMerchantV3Request.cs
│ │ │ │ │ ├── AppsECPaySaaSAddSubMerchantV3Response.cs
│ │ │ │ │ ├── AppsECPaySaaSAppAddSubMerchantV3Request.cs
│ │ │ │ │ ├── AppsECPaySaaSAppAddSubMerchantV3Response.cs
│ │ │ │ │ ├── AppsECPaySaaSGetAppMerchantV3Request.cs
│ │ │ │ │ └── AppsECPaySaaSGetAppMerchantV3Response.cs
│ │ │ │ └── Withdraw/
│ │ │ │ ├── AppsECPaySaaSMerchantWithdrawV3Request.cs
│ │ │ │ ├── AppsECPaySaaSMerchantWithdrawV3Response.cs
│ │ │ │ ├── AppsECPaySaaSQueryMerchantBalanceV3Request.cs
│ │ │ │ ├── AppsECPaySaaSQueryMerchantBalanceV3Response.cs
│ │ │ │ ├── AppsECPaySaaSQueryWithdrawOrderV3Request.cs
│ │ │ │ └── AppsECPaySaaSQueryWithdrawOrderV3Response.cs
│ │ │ ├── AppsItem/
│ │ │ │ ├── AppsItemBCGetBaseV1Request.cs
│ │ │ │ ├── AppsItemBCGetBaseV1Response.cs
│ │ │ │ ├── AppsItemBCGetCommentV1Request.cs
│ │ │ │ ├── AppsItemBCGetCommentV1Response.cs
│ │ │ │ ├── AppsItemBCGetLikeV1Request.cs
│ │ │ │ ├── AppsItemBCGetLikeV1Response.cs
│ │ │ │ ├── AppsItemBCGetPlayV1Request.cs
│ │ │ │ ├── AppsItemBCGetPlayV1Response.cs
│ │ │ │ ├── AppsItemBCGetShareV1Request.cs
│ │ │ │ ├── AppsItemBCGetShareV1Response.cs
│ │ │ │ ├── AppsItemGetBaseV1Request.cs
│ │ │ │ ├── AppsItemGetBaseV1Response.cs
│ │ │ │ ├── AppsItemGetCommentV1Request.cs
│ │ │ │ ├── AppsItemGetCommentV1Response.cs
│ │ │ │ ├── AppsItemGetLikeV1Request.cs
│ │ │ │ ├── AppsItemGetLikeV1Response.cs
│ │ │ │ ├── AppsItemGetPlayV1Request.cs
│ │ │ │ ├── AppsItemGetPlayV1Response.cs
│ │ │ │ ├── AppsItemGetShareV1Request.cs
│ │ │ │ ├── AppsItemGetShareV1Response.cs
│ │ │ │ └── Comment/
│ │ │ │ ├── AppsItemBCListCommentReplyV1Request.cs
│ │ │ │ ├── AppsItemBCListCommentReplyV1Response.cs
│ │ │ │ ├── AppsItemBCListCommentV1Request.cs
│ │ │ │ ├── AppsItemBCListCommentV1Response.cs
│ │ │ │ ├── AppsItemBCReplyCommentV1Request.cs
│ │ │ │ ├── AppsItemBCReplyCommentV1Response.cs
│ │ │ │ ├── AppsItemBCTopCommentV1Request.cs
│ │ │ │ ├── AppsItemBCTopCommentV1Response.cs
│ │ │ │ ├── AppsItemListCommentReplyV1Request.cs
│ │ │ │ ├── AppsItemListCommentReplyV1Response.cs
│ │ │ │ ├── AppsItemListCommentV1Request.cs
│ │ │ │ ├── AppsItemListCommentV1Response.cs
│ │ │ │ ├── AppsItemReplyCommentV1Request.cs
│ │ │ │ ├── AppsItemReplyCommentV1Response.cs
│ │ │ │ ├── AppsItemTopCommentV1Request.cs
│ │ │ │ └── AppsItemTopCommentV1Response.cs
│ │ │ ├── AppsLiveBooking/
│ │ │ │ ├── AppsLiveBookingVideoCancelV2Request.cs
│ │ │ │ ├── AppsLiveBookingVideoCancelV2Response.cs
│ │ │ │ ├── AppsLiveBookingVideoCreateV2Request.cs
│ │ │ │ └── AppsLiveBookingVideoCreateV2Response.cs
│ │ │ ├── AppsPlayletBusiness/
│ │ │ │ ├── AppsPlayletBusinessUploadV1Request.cs
│ │ │ │ └── AppsPlayletBusinessUploadV1Response.cs
│ │ │ ├── AppsPrivacySetting/
│ │ │ │ ├── AppsPrivacySettingAddV1Request.cs
│ │ │ │ ├── AppsPrivacySettingAddV1Response.cs
│ │ │ │ ├── AppsPrivacySettingQueryV1Request.cs
│ │ │ │ └── AppsPrivacySettingQueryV1Response.cs
│ │ │ ├── AppsQrcode/
│ │ │ │ ├── AppsQrcodeCreateV1Request.cs
│ │ │ │ └── AppsQrcodeCreateV1Response.cs
│ │ │ ├── AppsSearch/
│ │ │ │ ├── AppsSearchDeleteIndexV1Request.cs
│ │ │ │ ├── AppsSearchDeleteIndexV1Response.cs
│ │ │ │ ├── AppsSearchUploadSitemapV1Request.cs
│ │ │ │ └── AppsSearchUploadSitemapV1Response.cs
│ │ │ ├── AppsShare/
│ │ │ │ └── Task/
│ │ │ │ ├── AppsShareCreateTaskV1Request.cs
│ │ │ │ ├── AppsShareCreateTaskV1Response.cs
│ │ │ │ ├── AppsShareQueryUserTaskV1Request.cs
│ │ │ │ └── AppsShareQueryUserTaskV1Response.cs
│ │ │ ├── AppsTask/
│ │ │ │ ├── AppsTaskCreateLiveV2Request.cs
│ │ │ │ ├── AppsTaskCreateLiveV2Response.cs
│ │ │ │ ├── AppsTaskCreateVideoV2Request.cs
│ │ │ │ ├── AppsTaskCreateVideoV2Response.cs
│ │ │ │ ├── AppsTaskWriteoffLiveV2Request.cs
│ │ │ │ ├── AppsTaskWriteoffLiveV2Response.cs
│ │ │ │ ├── AppsTaskWriteoffVideoV2Request.cs
│ │ │ │ └── AppsTaskWriteoffVideoV2Response.cs
│ │ │ ├── AppsTrade/
│ │ │ │ ├── AppsTradeToolkitButtonWhiteSettingV2Request.cs
│ │ │ │ ├── AppsTradeToolkitButtonWhiteSettingV2Response.cs
│ │ │ │ ├── AppsTradeToolkitQueryTextV2Request.cs
│ │ │ │ ├── AppsTradeToolkitQueryTextV2Response.cs
│ │ │ │ ├── AppsTradeToolkitUpdateMerchantConfigV2Request.cs
│ │ │ │ ├── AppsTradeToolkitUpdateMerchantConfigV2Response.cs
│ │ │ │ ├── AppsTradeToolkitUpdateMerchantPathV2Request.cs
│ │ │ │ └── AppsTradeToolkitUpdateMerchantPathV2Response.cs
│ │ │ ├── AppsTrafficPermission/
│ │ │ │ ├── AppsTrafficPermissionOpenV1Request.cs
│ │ │ │ ├── AppsTrafficPermissionOpenV1Response.cs
│ │ │ │ ├── AppsTrafficPermissionQueryV1Request.cs
│ │ │ │ └── AppsTrafficPermissionQueryV1Response.cs
│ │ │ ├── AppsUrlLink/
│ │ │ │ ├── AppsUrlLinkGenerateV1Request.cs
│ │ │ │ ├── AppsUrlLinkGenerateV1Response.cs
│ │ │ │ ├── AppsUrlLinkQueryInfoV1Request.cs
│ │ │ │ ├── AppsUrlLinkQueryInfoV1Response.cs
│ │ │ │ ├── AppsUrlLinkQueryQuotaV1Request.cs
│ │ │ │ └── AppsUrlLinkQueryQuotaV1Response.cs
│ │ │ ├── AppsUrlSchema/
│ │ │ │ ├── AppsUrlGenerateSchemaV1Request.cs
│ │ │ │ ├── AppsUrlGenerateSchemaV1Response.cs
│ │ │ │ ├── AppsUrlQuerySchemaQuotaV1Request.cs
│ │ │ │ ├── AppsUrlQuerySchemaQuotaV1Response.cs
│ │ │ │ ├── AppsUrlQuerySchemaV1Request.cs
│ │ │ │ └── AppsUrlQuerySchemaV1Response.cs
│ │ │ ├── AppsUser/
│ │ │ │ ├── AppsUserBCGetCommentV1Request.cs
│ │ │ │ ├── AppsUserBCGetCommentV1Response.cs
│ │ │ │ ├── AppsUserBCGetFansV1Request.cs
│ │ │ │ ├── AppsUserBCGetFansV1Response.cs
│ │ │ │ ├── AppsUserBCGetItemV1Request.cs
│ │ │ │ ├── AppsUserBCGetItemV1Response.cs
│ │ │ │ ├── AppsUserBCGetLikeV1Request.cs
│ │ │ │ ├── AppsUserBCGetLikeV1Response.cs
│ │ │ │ ├── AppsUserBCGetProfileV1Request.cs
│ │ │ │ ├── AppsUserBCGetProfileV1Response.cs
│ │ │ │ ├── AppsUserBCGetShareV1Request.cs
│ │ │ │ ├── AppsUserBCGetShareV1Response.cs
│ │ │ │ ├── AppsUserGetCommentV1Request.cs
│ │ │ │ ├── AppsUserGetCommentV1Response.cs
│ │ │ │ ├── AppsUserGetFansV1Request.cs
│ │ │ │ ├── AppsUserGetFansV1Response.cs
│ │ │ │ ├── AppsUserGetItemV1Request.cs
│ │ │ │ ├── AppsUserGetItemV1Response.cs
│ │ │ │ ├── AppsUserGetLikeV1Request.cs
│ │ │ │ ├── AppsUserGetLikeV1Response.cs
│ │ │ │ ├── AppsUserGetProfileV1Request.cs
│ │ │ │ ├── AppsUserGetProfileV1Response.cs
│ │ │ │ ├── AppsUserGetShareV1Request.cs
│ │ │ │ └── AppsUserGetShareV1Response.cs
│ │ │ ├── AppsVideo/
│ │ │ │ ├── AppsConvertOpenItemIdToEncryptIdV1Request.cs
│ │ │ │ ├── AppsConvertOpenItemIdToEncryptIdV1Response.cs
│ │ │ │ ├── AppsConvertVideoIdToOpenItemIdV1Request.cs
│ │ │ │ ├── AppsConvertVideoIdToOpenItemIdV1Response.cs
│ │ │ │ ├── AppsVideoBCQueryV1Request.cs
│ │ │ │ ├── AppsVideoBCQueryV1Response.cs
│ │ │ │ ├── AppsVideoQueryV1Request.cs
│ │ │ │ └── AppsVideoQueryV1Response.cs
│ │ │ ├── ECommerce/
│ │ │ │ ├── ECommerceConfigLimitOperatePointV1Request.cs
│ │ │ │ ├── ECommerceConfigLimitOperatePointV1Response.cs
│ │ │ │ ├── ECommerceConfigRegisterMicroAppV1Request.cs
│ │ │ │ ├── ECommerceConfigRegisterMicroAppV1Response.cs
│ │ │ │ ├── ECommerceCustomizationQueryStatusV1Request.cs
│ │ │ │ ├── ECommerceCustomizationQueryStatusV1Response.cs
│ │ │ │ ├── ECommerceShopMemberLeaveV1Request.cs
│ │ │ │ └── ECommerceShopMemberLeaveV1Response.cs
│ │ │ ├── Gift/
│ │ │ │ ├── GiftReceiveRewardRequest.cs
│ │ │ │ └── GiftReceiveRewardResponse.cs
│ │ │ ├── LiveBooking/
│ │ │ │ ├── LiveBookingTextCloseRequest.cs
│ │ │ │ ├── LiveBookingTextCloseResponse.cs
│ │ │ │ ├── LiveBookingTextCreateRequest.cs
│ │ │ │ ├── LiveBookingTextCreateResponse.cs
│ │ │ │ ├── LiveBookingTextDetailRequest.cs
│ │ │ │ ├── LiveBookingTextDetailResponse.cs
│ │ │ │ ├── LiveBookingVideoListRequest.cs
│ │ │ │ └── LiveBookingVideoListResponse.cs
│ │ │ ├── MatchTaskBox/
│ │ │ │ ├── MatchTaskBoxAddRoomTaskV2Request.cs
│ │ │ │ ├── MatchTaskBoxAddRoomTaskV2Response.cs
│ │ │ │ ├── MatchTaskBoxAddTaskV2Request.cs
│ │ │ │ ├── MatchTaskBoxAddTaskV2Response.cs
│ │ │ │ ├── MatchTaskBoxQueryAppTaskIdV2Request.cs
│ │ │ │ ├── MatchTaskBoxQueryAppTaskIdV2Response.cs
│ │ │ │ ├── MatchTaskBoxQueryBillLinkV2Request.cs
│ │ │ │ ├── MatchTaskBoxQueryBillLinkV2Response.cs
│ │ │ │ ├── MatchTaskBoxQueryTaskInfoV2Request.cs
│ │ │ │ ├── MatchTaskBoxQueryTaskInfoV2Response.cs
│ │ │ │ ├── MatchTaskBoxQueryVideoSummaryDataV2Request.cs
│ │ │ │ ├── MatchTaskBoxQueryVideoSummaryDataV2Response.cs
│ │ │ │ ├── MatchTaskBoxUpdateStatusV2Request.cs
│ │ │ │ ├── MatchTaskBoxUpdateStatusV2Response.cs
│ │ │ │ ├── MatchTaskBoxUpdateTaskV2Request.cs
│ │ │ │ └── MatchTaskBoxUpdateTaskV2Response.cs
│ │ │ ├── NotificationSubscription/
│ │ │ │ ├── NotificationSubscriptionAddAppTemplateV2Request.cs
│ │ │ │ ├── NotificationSubscriptionAddAppTemplateV2Response.cs
│ │ │ │ ├── NotificationSubscriptionCreateTemplateV2Request.cs
│ │ │ │ ├── NotificationSubscriptionCreateTemplateV2Response.cs
│ │ │ │ ├── NotificationSubscriptionDeleteAppTemplateV2Request.cs
│ │ │ │ ├── NotificationSubscriptionDeleteAppTemplateV2Response.cs
│ │ │ │ ├── NotificationSubscriptionNotifyUserV2Request.cs
│ │ │ │ ├── NotificationSubscriptionNotifyUserV2Response.cs
│ │ │ │ ├── NotificationSubscriptionQueryAppTemplateV2Request.cs
│ │ │ │ ├── NotificationSubscriptionQueryAppTemplateV2Response.cs
│ │ │ │ ├── NotificationSubscriptionQueryCreatedTemplateListV2Request.cs
│ │ │ │ ├── NotificationSubscriptionQueryCreatedTemplateListV2Response.cs
│ │ │ │ ├── NotificationSubscriptionQueryTemplateListV2Request.cs
│ │ │ │ └── NotificationSubscriptionQueryTemplateListV2Response.cs
│ │ │ ├── PlatformDataAnalysis/
│ │ │ │ ├── Component/
│ │ │ │ │ ├── PlatformDataAnalysisQueryComponentWithDataV2Request.cs
│ │ │ │ │ ├── PlatformDataAnalysisQueryComponentWithDataV2Response.cs
│ │ │ │ │ ├── PlatformDataAnalysisQueryComponentWithDetailV2Request.cs
│ │ │ │ │ ├── PlatformDataAnalysisQueryComponentWithDetailV2Response.cs
│ │ │ │ │ ├── PlatformDataAnalysisQueryComponentWithOverviewV2Request.cs
│ │ │ │ │ ├── PlatformDataAnalysisQueryComponentWithOverviewV2Response.cs
│ │ │ │ │ ├── PlatformDataAnalysisQueryComponentWithSourceV2Request.cs
│ │ │ │ │ └── PlatformDataAnalysisQueryComponentWithSourceV2Response.cs
│ │ │ │ ├── Live/
│ │ │ │ │ ├── PlatformDataAnalysisQueryLiveWithShortIdV2Request.cs
│ │ │ │ │ └── PlatformDataAnalysisQueryLiveWithShortIdV2Response.cs
│ │ │ │ ├── SmallRoom/
│ │ │ │ │ ├── PlatformDataAnalysisQuerySmallHomeOrderDataV2Request.cs
│ │ │ │ │ ├── PlatformDataAnalysisQuerySmallHomeOrderDataV2Response.cs
│ │ │ │ │ ├── PlatformDataAnalysisQuerySmallHomeOverviewDataV2Request.cs
│ │ │ │ │ ├── PlatformDataAnalysisQuerySmallHomeOverviewDataV2Response.cs
│ │ │ │ │ ├── PlatformDataAnalysisQuerySmallHomeRoomDataV2Request.cs
│ │ │ │ │ └── PlatformDataAnalysisQuerySmallHomeRoomDataV2Response.cs
│ │ │ │ ├── Transaction/
│ │ │ │ │ ├── PlatformDataAnalysisQueryDealDataWithConversionV2Request.cs
│ │ │ │ │ ├── PlatformDataAnalysisQueryDealDataWithConversionV2Response.cs
│ │ │ │ │ ├── PlatformDataAnalysisQueryDealOverviewDataV2Request.cs
│ │ │ │ │ ├── PlatformDataAnalysisQueryDealOverviewDataV2Response.cs
│ │ │ │ │ ├── PlatformDataAnalysisQueryLiveDealDataV2Request.cs
│ │ │ │ │ ├── PlatformDataAnalysisQueryLiveDealDataV2Response.cs
│ │ │ │ │ ├── PlatformDataAnalysisQueryLiveRoomDataV2Request.cs
│ │ │ │ │ ├── PlatformDataAnalysisQueryLiveRoomDataV2Response.cs
│ │ │ │ │ ├── PlatformDataAnalysisQueryLiveRoomV2Request.cs
│ │ │ │ │ ├── PlatformDataAnalysisQueryLiveRoomV2Response.cs
│ │ │ │ │ ├── PlatformDataAnalysisQueryProductDealDataV2Request.cs
│ │ │ │ │ ├── PlatformDataAnalysisQueryProductDealDataV2Response.cs
│ │ │ │ │ ├── PlatformDataAnalysisQueryVideoDealDataV2Request.cs
│ │ │ │ │ └── PlatformDataAnalysisQueryVideoDealDataV2Response.cs
│ │ │ │ ├── User/
│ │ │ │ │ ├── PlatformDataAnalysisQueryBehaviorDataV2Request.cs
│ │ │ │ │ ├── PlatformDataAnalysisQueryBehaviorDataV2Response.cs
│ │ │ │ │ ├── PlatformDataAnalysisQueryClientDataV2Request.cs
│ │ │ │ │ ├── PlatformDataAnalysisQueryClientDataV2Response.cs
│ │ │ │ │ ├── PlatformDataAnalysisQueryPageDataV2Request.cs
│ │ │ │ │ ├── PlatformDataAnalysisQueryPageDataV2Response.cs
│ │ │ │ │ ├── PlatformDataAnalysisQueryRealTimeUserDataV2Request.cs
│ │ │ │ │ ├── PlatformDataAnalysisQueryRealTimeUserDataV2Response.cs
│ │ │ │ │ ├── PlatformDataAnalysisQueryRetentionDataV2Request.cs
│ │ │ │ │ ├── PlatformDataAnalysisQueryRetentionDataV2Response.cs
│ │ │ │ │ ├── PlatformDataAnalysisQuerySceneDataV2Request.cs
│ │ │ │ │ ├── PlatformDataAnalysisQuerySceneDataV2Response.cs
│ │ │ │ │ ├── PlatformDataAnalysisQueryUserPortraitDataV2Request.cs
│ │ │ │ │ └── PlatformDataAnalysisQueryUserPortraitDataV2Response.cs
│ │ │ │ └── Video/
│ │ │ │ ├── PlatformDataAnalysisQueryShortLiveDataWithIdV2Request.cs
│ │ │ │ ├── PlatformDataAnalysisQueryShortLiveDataWithIdV2Response.cs
│ │ │ │ ├── PlatformDataAnalysisQueryShortLiveIdWithAwemeIdV2Request.cs
│ │ │ │ ├── PlatformDataAnalysisQueryShortLiveIdWithAwemeIdV2Response.cs
│ │ │ │ ├── PlatformDataAnalysisQueryVideoDataV2Request.cs
│ │ │ │ ├── PlatformDataAnalysisQueryVideoDataV2Response.cs
│ │ │ │ ├── PlatformDataAnalysisQueryVideoWithSourceV2Request.cs
│ │ │ │ └── PlatformDataAnalysisQueryVideoWithSourceV2Response.cs
│ │ │ ├── Product/
│ │ │ │ └── Region/
│ │ │ │ ├── ProductAppRegionAddV1Request.cs
│ │ │ │ ├── ProductAppRegionAddV1Response.cs
│ │ │ │ ├── ProductAppRegionDeleteV1Request.cs
│ │ │ │ ├── ProductAppRegionDeleteV1Response.cs
│ │ │ │ ├── ProductAppRegionModifyV1Request.cs
│ │ │ │ └── ProductAppRegionModifyV1Response.cs
│ │ │ ├── Promotion/
│ │ │ │ ├── Activity/
│ │ │ │ │ ├── PromotionActivityAddSelfTestAccountsV2Request.cs
│ │ │ │ │ ├── PromotionActivityAddSelfTestAccountsV2Response.cs
│ │ │ │ │ ├── PromotionActivityBindUserToSidebarActivityV2Request.cs
│ │ │ │ │ ├── PromotionActivityBindUserToSidebarActivityV2Response.cs
│ │ │ │ │ ├── PromotionActivityCreatePromotionActivityV2Request.cs
│ │ │ │ │ ├── PromotionActivityCreatePromotionActivityV2Response.cs
│ │ │ │ │ ├── PromotionActivityModifyPromotionActivityV2Request.cs
│ │ │ │ │ ├── PromotionActivityModifyPromotionActivityV2Response.cs
│ │ │ │ │ ├── PromotionActivityQueryBindedUserV2Request.cs
│ │ │ │ │ ├── PromotionActivityQueryBindedUserV2Response.cs
│ │ │ │ │ ├── PromotionActivityQueryPromotionActivityV2Request.cs
│ │ │ │ │ ├── PromotionActivityQueryPromotionActivityV2Response.cs
│ │ │ │ │ ├── PromotionActivityUpdatePromotionActivityStatusV2Request.cs
│ │ │ │ │ ├── PromotionActivityUpdatePromotionActivityStatusV2Response.cs
│ │ │ │ │ ├── PromotionActivityUploadPopupScreenshotV2Request.cs
│ │ │ │ │ └── PromotionActivityUploadPopupScreenshotV2Response.cs
│ │ │ │ ├── Coupon/
│ │ │ │ │ ├── DeveloperActivity/
│ │ │ │ │ │ ├── PromotionCouponCreateDeveloperActivityV1Request.cs
│ │ │ │ │ │ ├── PromotionCouponCreateDeveloperActivityV1Response.cs
│ │ │ │ │ │ ├── PromotionCouponDeleteDeveloperActivityV1Request.cs
│ │ │ │ │ │ └── PromotionCouponDeleteDeveloperActivityV1Response.cs
│ │ │ │ │ ├── PromotionCouponBatchConsumeCouponV1Request.cs
│ │ │ │ │ ├── PromotionCouponBatchConsumeCouponV1Response.cs
│ │ │ │ │ ├── PromotionCouponBatchRollbackConsumeCouponV1Request.cs
│ │ │ │ │ ├── PromotionCouponBatchRollbackConsumeCouponV1Response.cs
│ │ │ │ │ ├── PromotionCouponGetBillDownloadUrlV1Request.cs
│ │ │ │ │ ├── PromotionCouponGetBillDownloadUrlV1Response.cs
│ │ │ │ │ ├── PromotionCouponGetCouponReceiveInfoV1Request.cs
│ │ │ │ │ ├── PromotionCouponGetCouponReceiveInfoV1Response.cs
│ │ │ │ │ ├── PromotionCouponGetTalentCouponV1Request.cs
│ │ │ │ │ ├── PromotionCouponGetTalentCouponV1Response.cs
│ │ │ │ │ ├── PromotionCouponSendCouponToDesignatedUserV1Request.cs
│ │ │ │ │ ├── PromotionCouponSendCouponToDesignatedUserV1Response.cs
│ │ │ │ │ ├── PromotionCouponSetTalentCouponV1Request.cs
│ │ │ │ │ ├── PromotionCouponSetTalentCouponV1Response.cs
│ │ │ │ │ ├── PromotionCouponUpdateTalentCouponStatusV1Request.cs
│ │ │ │ │ ├── PromotionCouponUpdateTalentCouponStatusV1Response.cs
│ │ │ │ │ ├── PromotionCouponUpdateTalentCouponStockV1Request.cs
│ │ │ │ │ └── PromotionCouponUpdateTalentCouponStockV1Response.cs
│ │ │ │ └── CouponMeta/
│ │ │ │ ├── PromotionCouponCreateCouponMetaV2Request.cs
│ │ │ │ ├── PromotionCouponCreateCouponMetaV2Response.cs
│ │ │ │ ├── PromotionCouponDeleteCouponMetaV1Request.cs
│ │ │ │ ├── PromotionCouponDeleteCouponMetaV1Response.cs
│ │ │ │ ├── PromotionCouponGetCouponMetaStatisticsV1Request.cs
│ │ │ │ ├── PromotionCouponGetCouponMetaStatisticsV1Response.cs
│ │ │ │ ├── PromotionCouponModifyCouponMetaV2Request.cs
│ │ │ │ ├── PromotionCouponModifyCouponMetaV2Response.cs
│ │ │ │ ├── PromotionCouponQueryActivityMetaDataV1Request.cs
│ │ │ │ ├── PromotionCouponQueryActivityMetaDataV1Response.cs
│ │ │ │ ├── PromotionCouponQueryCouponMetaV2Request.cs
│ │ │ │ ├── PromotionCouponQueryCouponMetaV2Response.cs
│ │ │ │ ├── PromotionCouponUpdateCouponMetaStatusV1Request.cs
│ │ │ │ ├── PromotionCouponUpdateCouponMetaStatusV1Response.cs
│ │ │ │ ├── PromotionCouponUpdateCouponMetaStockV1Request.cs
│ │ │ │ └── PromotionCouponUpdateCouponMetaStockV1Response.cs
│ │ │ ├── TradeAuthDeveloper/
│ │ │ │ ├── AuthDeposit/
│ │ │ │ │ ├── Auth/
│ │ │ │ │ │ ├── TradeAuthDeveloperCancelAuthOrderV1Request.cs
│ │ │ │ │ │ ├── TradeAuthDeveloperCancelAuthOrderV1Response.cs
│ │ │ │ │ │ ├── TradeAuthDeveloperCreateAuthOrderV1Request.cs
│ │ │ │ │ │ ├── TradeAuthDeveloperCreateAuthOrderV1Response.cs
│ │ │ │ │ │ ├── TradeAuthDeveloperFinishAuthOrderV1Request.cs
│ │ │ │ │ │ ├── TradeAuthDeveloperFinishAuthOrderV1Response.cs
│ │ │ │ │ │ ├── TradeAuthDeveloperQueryAdmissibleAuthV1Request.cs
│ │ │ │ │ │ ├── TradeAuthDeveloperQueryAdmissibleAuthV1Response.cs
│ │ │ │ │ │ ├── TradeAuthDeveloperQueryAuthOrderV1Request.cs
│ │ │ │ │ │ └── TradeAuthDeveloperQueryAuthOrderV1Response.cs
│ │ │ │ │ ├── Pay/
│ │ │ │ │ │ ├── TradeAuthDeveloperClosePayOrderV1Request.cs
│ │ │ │ │ │ ├── TradeAuthDeveloperClosePayOrderV1Response.cs
│ │ │ │ │ │ ├── TradeAuthDeveloperCreatePayOrderV1Request.cs
│ │ │ │ │ │ ├── TradeAuthDeveloperCreatePayOrderV1Response.cs
│ │ │ │ │ │ ├── TradeAuthDeveloperQueryPayOrderV1Request.cs
│ │ │ │ │ │ └── TradeAuthDeveloperQueryPayOrderV1Response.cs
│ │ │ │ │ └── Refund/
│ │ │ │ │ ├── TradeAuthDeveloperCreateRefundV1Request.cs
│ │ │ │ │ ├── TradeAuthDeveloperCreateRefundV1Response.cs
│ │ │ │ │ ├── TradeAuthDeveloperQueryRefundV1Request.cs
│ │ │ │ │ └── TradeAuthDeveloperQueryRefundV1Response.cs
│ │ │ │ └── PeriodicDeduction/
│ │ │ │ ├── Pay/
│ │ │ │ │ ├── TradeAuthDeveloperCreateSignPayV1Request.cs
│ │ │ │ │ ├── TradeAuthDeveloperCreateSignPayV1Response.cs
│ │ │ │ │ ├── TradeAuthDeveloperQuerySignPayV1Request.cs
│ │ │ │ │ └── TradeAuthDeveloperQuerySignPayV1Response.cs
│ │ │ │ ├── Refund/
│ │ │ │ │ ├── TradeAuthDeveloperCreateSignRefundV1Request.cs
│ │ │ │ │ ├── TradeAuthDeveloperCreateSignRefundV1Response.cs
│ │ │ │ │ ├── TradeAuthDeveloperQuerySignRefundV1Request.cs
│ │ │ │ │ └── TradeAuthDeveloperQuerySignRefundV1Response.cs
│ │ │ │ └── Sign/
│ │ │ │ ├── TradeAuthDeveloperQuerySignOrderV1Request.cs
│ │ │ │ ├── TradeAuthDeveloperQuerySignOrderV1Response.cs
│ │ │ │ ├── TradeAuthDeveloperTerminateSignV1Request.cs
│ │ │ │ └── TradeAuthDeveloperTerminateSignV1Response.cs
│ │ │ ├── TradeBasicDeveloper/
│ │ │ │ ├── TradeBasicDeveloperFulfillPushStatusV1Request.cs
│ │ │ │ ├── TradeBasicDeveloperFulfillPushStatusV1Response.cs
│ │ │ │ ├── TradeBasicDeveloperOrderQueryV1Request.cs
│ │ │ │ ├── TradeBasicDeveloperOrderQueryV1Response.cs
│ │ │ │ ├── TradeBasicDeveloperQueryCPSV1Request.cs
│ │ │ │ ├── TradeBasicDeveloperQueryCPSV1Response.cs
│ │ │ │ ├── TradeBasicDeveloperRefundAuditCallbackV1Request.cs
│ │ │ │ ├── TradeBasicDeveloperRefundAuditCallbackV1Response.cs
│ │ │ │ ├── TradeBasicDeveloperRefundCreateV1Request.cs
│ │ │ │ ├── TradeBasicDeveloperRefundCreateV1Response.cs
│ │ │ │ ├── TradeBasicDeveloperRefundQueryV1Request.cs
│ │ │ │ ├── TradeBasicDeveloperRefundQueryV1Response.cs
│ │ │ │ ├── TradeBasicDeveloperSettleCreateV1Request.cs
│ │ │ │ ├── TradeBasicDeveloperSettleCreateV1Response.cs
│ │ │ │ ├── TradeBasicDeveloperSettleQueryV1Request.cs
│ │ │ │ ├── TradeBasicDeveloperSettleQueryV1Response.cs
│ │ │ │ ├── TradeBasicDeveloperTagQueryV1Request.cs
│ │ │ │ └── TradeBasicDeveloperTagQueryV1Response.cs
│ │ │ └── _Legacy/
│ │ │ ├── Apps/
│ │ │ │ ├── AppsJsCode2SessionV2Request.cs
│ │ │ │ ├── AppsJsCode2SessionV2Response.cs
│ │ │ │ ├── AppsTokenV2Request.cs
│ │ │ │ ├── AppsTokenV2Response.cs
│ │ │ │ ├── Capacity/
│ │ │ │ │ ├── AppsCapacityUploadMaterialV1Request.cs
│ │ │ │ │ ├── AppsCapacityUploadMaterialV1Response.cs
│ │ │ │ │ ├── ClueComponent/
│ │ │ │ │ │ ├── AppsCapacityCreateClueComponentInfoV1Request.cs
│ │ │ │ │ │ ├── AppsCapacityCreateClueComponentInfoV1Response.cs
│ │ │ │ │ │ ├── AppsCapacityDeleteClueComponentInfoV1Request.cs
│ │ │ │ │ │ ├── AppsCapacityDeleteClueComponentInfoV1Response.cs
│ │ │ │ │ │ ├── AppsCapacityQueryClueComponentInfoV1Request.cs
│ │ │ │ │ │ ├── AppsCapacityQueryClueComponentInfoV1Response.cs
│ │ │ │ │ │ ├── AppsCapacityUpdateClueComponentInfoV1Request.cs
│ │ │ │ │ │ └── AppsCapacityUpdateClueComponentInfoV1Response.cs
│ │ │ │ │ ├── Doudian/
│ │ │ │ │ │ ├── AppsCapacityBindDoudianAccountV1Request.cs
│ │ │ │ │ │ ├── AppsCapacityBindDoudianAccountV1Response.cs
│ │ │ │ │ │ ├── AppsCapacityCreateDoudianAppV1Request.cs
│ │ │ │ │ │ ├── AppsCapacityCreateDoudianAppV1Response.cs
│ │ │ │ │ │ ├── AppsCapacityQueryBindDoudianAccountV1Request.cs
│ │ │ │ │ │ ├── AppsCapacityQueryBindDoudianAccountV1Response.cs
│ │ │ │ │ │ ├── AppsCapacityQueryDoudianAppV1Request.cs
│ │ │ │ │ │ ├── AppsCapacityQueryDoudianAppV1Response.cs
│ │ │ │ │ │ ├── AppsCapacityQueryDoudianShopInfoV1Request.cs
│ │ │ │ │ │ └── AppsCapacityQueryDoudianShopInfoV1Response.cs
│ │ │ │ │ └── Mount/
│ │ │ │ │ ├── AppsCapacityApplyCapacityV1Request.cs
│ │ │ │ │ ├── AppsCapacityApplyCapacityV1Response.cs
│ │ │ │ │ ├── AppsCapacityQueryApplyStatusV1Request.cs
│ │ │ │ │ └── AppsCapacityQueryApplyStatusV1Response.cs
│ │ │ │ ├── Censor/
│ │ │ │ │ ├── AppsCensorImageRequest.cs
│ │ │ │ │ └── AppsCensorImageResponse.cs
│ │ │ │ ├── Chat/
│ │ │ │ │ ├── AppsChatCustomerServiceUrlRequest.cs
│ │ │ │ │ └── AppsChatCustomerServiceUrlResponse.cs
│ │ │ │ ├── CustomerService/
│ │ │ │ │ ├── AppsCustomerServiceUrlRequest.cs
│ │ │ │ │ └── AppsCustomerServiceUrlResponse.cs
│ │ │ │ ├── Live/
│ │ │ │ │ ├── AppsLiveSetBlackWhiteListV1Request.cs
│ │ │ │ │ ├── AppsLiveSetBlackWhiteListV1Response.cs
│ │ │ │ │ ├── AppsUploadLiveImageRequest.cs
│ │ │ │ │ └── AppsUploadLiveImageResponse.cs
│ │ │ │ ├── Message/
│ │ │ │ │ ├── AppsMessageCustomSendRequest.cs
│ │ │ │ │ └── AppsMessageCustomSendResponse.cs
│ │ │ │ ├── Order/
│ │ │ │ │ ├── AppsOrderDeleteRequest.cs
│ │ │ │ │ ├── AppsOrderDeleteResponse.cs
│ │ │ │ │ ├── AppsOrderPushV2Request.cs
│ │ │ │ │ └── AppsOrderPushV2Response.cs
│ │ │ │ ├── Qrcode/
│ │ │ │ │ ├── AppsQrcodeRequest.cs
│ │ │ │ │ └── AppsQrcodeResponse.cs
│ │ │ │ ├── ShareConfig/
│ │ │ │ │ ├── AppsShareConfigRequest.cs
│ │ │ │ │ └── AppsShareConfigResponse.cs
│ │ │ │ ├── SubscribeNotification/
│ │ │ │ │ ├── AppsSubscribeNotificationDeveloperNotifyV1Request.cs
│ │ │ │ │ └── AppsSubscribeNotificationDeveloperNotifyV1Response.cs
│ │ │ │ ├── TaskBox/
│ │ │ │ │ ├── AppsTaskBoxAddTaskRequest.cs
│ │ │ │ │ ├── AppsTaskBoxAddTaskResponse.cs
│ │ │ │ │ ├── AppsTaskBoxQueryAppTaskIdRequest.cs
│ │ │ │ │ ├── AppsTaskBoxQueryAppTaskIdResponse.cs
│ │ │ │ │ ├── AppsTaskBoxQueryTaskVideoDataRequest.cs
│ │ │ │ │ ├── AppsTaskBoxQueryTaskVideoDataResponse.cs
│ │ │ │ │ ├── AppsTaskBoxUpdateOrientTalentsRequest.cs
│ │ │ │ │ ├── AppsTaskBoxUpdateOrientTalentsResponse.cs
│ │ │ │ │ ├── AppsTaskBoxUpdateStatusRequest.cs
│ │ │ │ │ ├── AppsTaskBoxUpdateStatusResponse.cs
│ │ │ │ │ ├── AppsTaskBoxUpdateTaskRequest.cs
│ │ │ │ │ ├── AppsTaskBoxUpdateTaskResponse.cs
│ │ │ │ │ └── __Abstractions/
│ │ │ │ │ ├── AppsTaskBoxRequestBase.cs
│ │ │ │ │ └── AppsTaskBoxResponseBase.cs
│ │ │ │ └── Video/
│ │ │ │ ├── AppsConvertOpenItemIdToEncryptIdRequest.cs
│ │ │ │ ├── AppsConvertOpenItemIdToEncryptIdResponse.cs
│ │ │ │ ├── AppsConvertVideoIdToOpenItemIdRequest.cs
│ │ │ │ └── AppsConvertVideoIdToOpenItemIdResponse.cs
│ │ │ ├── AppsECPay/
│ │ │ │ ├── Bills/
│ │ │ │ │ ├── AppsBillsRequest.cs
│ │ │ │ │ ├── AppsBillsResponse.cs
│ │ │ │ │ ├── AppsFundBillsRequest.cs
│ │ │ │ │ └── AppsFundBillsResponse.cs
│ │ │ │ ├── Order/
│ │ │ │ │ ├── AppsECPayCreateOrderV1Request.cs
│ │ │ │ │ ├── AppsECPayCreateOrderV1Response.cs
│ │ │ │ │ ├── AppsECPayCreateRefundV1Request.cs
│ │ │ │ │ ├── AppsECPayCreateRefundV1Response.cs
│ │ │ │ │ ├── AppsECPayCreateReturnV1Request.cs
│ │ │ │ │ ├── AppsECPayCreateReturnV1Response.cs
│ │ │ │ │ ├── AppsECPayQueryOrderV1Request.cs
│ │ │ │ │ ├── AppsECPayQueryOrderV1Response.cs
│ │ │ │ │ ├── AppsECPayQueryPlatformOrderV1Request.cs
│ │ │ │ │ ├── AppsECPayQueryPlatformOrderV1Response.cs
│ │ │ │ │ ├── AppsECPayQueryRefundV1Request.cs
│ │ │ │ │ ├── AppsECPayQueryRefundV1Response.cs
│ │ │ │ │ ├── AppsECPayQueryReturnV1Request.cs
│ │ │ │ │ ├── AppsECPayQueryReturnV1Response.cs
│ │ │ │ │ ├── AppsECPayQuerySettleV1Request.cs
│ │ │ │ │ ├── AppsECPayQuerySettleV1Response.cs
│ │ │ │ │ ├── AppsECPaySettleV1Request.cs
│ │ │ │ │ └── AppsECPaySettleV1Response.cs
│ │ │ │ └── SaaS/
│ │ │ │ ├── Apply/
│ │ │ │ │ ├── AppsECPaySaaSCreateMerchantRequest.cs
│ │ │ │ │ ├── AppsECPaySaaSCreateMerchantResponse.cs
│ │ │ │ │ ├── AppsECPaySaaSImageUploadRequest.cs
│ │ │ │ │ ├── AppsECPaySaaSImageUploadResponse.cs
│ │ │ │ │ ├── AppsECPaySaaSQueryMerchantStatusRequest.cs
│ │ │ │ │ └── AppsECPaySaaSQueryMerchantStatusResponse.cs
│ │ │ │ ├── PageLinks/
│ │ │ │ │ ├── AppsECPaySaaSAddMerchantRequest.cs
│ │ │ │ │ ├── AppsECPaySaaSAddMerchantResponse.cs
│ │ │ │ │ ├── AppsECPaySaaSAddSubMerchantRequest.cs
│ │ │ │ │ ├── AppsECPaySaaSAddSubMerchantResponse.cs
│ │ │ │ │ ├── AppsECPaySaaSAppAddSubMerchantRequest.cs
│ │ │ │ │ ├── AppsECPaySaaSAppAddSubMerchantResponse.cs
│ │ │ │ │ ├── AppsECPaySaaSGetAppMerchantRequest.cs
│ │ │ │ │ └── AppsECPaySaaSGetAppMerchantResponse.cs
│ │ │ │ └── Withdraw/
│ │ │ │ ├── AppsECPaySaaSMerchantWithdrawRequest.cs
│ │ │ │ ├── AppsECPaySaaSMerchantWithdrawResponse.cs
│ │ │ │ ├── AppsECPaySaaSQueryMerchantBalanceRequest.cs
│ │ │ │ ├── AppsECPaySaaSQueryMerchantBalanceResponse.cs
│ │ │ │ ├── AppsECPaySaaSQueryWithdrawOrderRequest.cs
│ │ │ │ └── AppsECPaySaaSQueryWithdrawOrderResponse.cs
│ │ │ ├── AppsGame/
│ │ │ │ ├── AppsGameWalletAddCoinRequest.cs
│ │ │ │ ├── AppsGameWalletAddCoinResponse.cs
│ │ │ │ ├── AppsGameWalletGamePayRequest.cs
│ │ │ │ ├── AppsGameWalletGamePayResponse.cs
│ │ │ │ ├── AppsGameWalletGetBalanceRequest.cs
│ │ │ │ ├── AppsGameWalletGetBalanceResponse.cs
│ │ │ │ └── __Abstractions/
│ │ │ │ ├── AppsGameWalletRequestBase.cs
│ │ │ │ └── AppsGameWalletResponseBase.cs
│ │ │ ├── AppsStorage/
│ │ │ │ ├── AppsRemoveUserStorageRequest.cs
│ │ │ │ ├── AppsRemoveUserStorageResponse.cs
│ │ │ │ ├── AppsSetUserStorageRequest.cs
│ │ │ │ └── AppsSetUserStorageResponse.cs
│ │ │ ├── AppsTrade/
│ │ │ │ ├── PreOrder/
│ │ │ │ │ ├── AppsTradeCreateOrderV2Request.cs
│ │ │ │ │ ├── AppsTradeCreateOrderV2Response.cs
│ │ │ │ │ ├── AppsTradeQueryCPSV2Request.cs
│ │ │ │ │ ├── AppsTradeQueryCPSV2Response.cs
│ │ │ │ │ ├── AppsTradeQueryOrderV2Request.cs
│ │ │ │ │ └── AppsTradeQueryOrderV2Response.cs
│ │ │ │ ├── Refund/
│ │ │ │ │ ├── AppsTradeCreateRefundV2Request.cs
│ │ │ │ │ ├── AppsTradeCreateRefundV2Response.cs
│ │ │ │ │ ├── AppsTradeMerchantAuditCallbackV2Request.cs
│ │ │ │ │ ├── AppsTradeMerchantAuditCallbackV2Response.cs
│ │ │ │ │ ├── AppsTradeQueryRefundV2Request.cs
│ │ │ │ │ └── AppsTradeQueryRefundV2Response.cs
│ │ │ │ ├── Settlement/
│ │ │ │ │ ├── AppsTradeCreateSettleV2Request.cs
│ │ │ │ │ ├── AppsTradeCreateSettleV2Response.cs
│ │ │ │ │ ├── AppsTradeQuerySettleV2Request.cs
│ │ │ │ │ └── AppsTradeQuerySettleV2Response.cs
│ │ │ │ └── WriteOff/
│ │ │ │ ├── AppsTradeDeliveryPrepareV2Request.cs
│ │ │ │ ├── AppsTradeDeliveryPrepareV2Response.cs
│ │ │ │ ├── AppsTradeDeliveryVerifyV2Request.cs
│ │ │ │ ├── AppsTradeDeliveryVerifyV2Response.cs
│ │ │ │ ├── AppsTradePushDeliveryV2Request.cs
│ │ │ │ ├── AppsTradePushDeliveryV2Response.cs
│ │ │ │ ├── AppsTradeQueryItemOrderInfoV2Request.cs
│ │ │ │ └── AppsTradeQueryItemOrderInfoV2Response.cs
│ │ │ ├── Comment/
│ │ │ │ ├── CommentDeveloperDeleteRequest.cs
│ │ │ │ ├── CommentDeveloperDeleteResponse.cs
│ │ │ │ ├── CommentDeveloperReplyRequest.cs
│ │ │ │ ├── CommentDeveloperReplyResponse.cs
│ │ │ │ ├── CommentOpenGetRequest.cs
│ │ │ │ └── CommentOpenGetResponse.cs
│ │ │ └── Tags/
│ │ │ ├── TagsImageV2Request.cs
│ │ │ ├── TagsImageV2Response.cs
│ │ │ ├── TagsTextAntiDirtV2Request.cs
│ │ │ └── TagsTextAntiDirtV2Response.cs
│ │ ├── README.md
│ │ ├── SKIT.FlurlHttpClient.ByteDance.MicroApp.csproj
│ │ ├── Settings/
│ │ │ └── Credentials.cs
│ │ └── Utilities/
│ │ ├── AESUtility.cs
│ │ ├── HMACUtility.cs
│ │ ├── MD5Utility.cs
│ │ ├── RSAUtility.cs
│ │ ├── SHA1Utility.cs
│ │ └── [Internal]/
│ │ ├── DyMsgCryptor.cs
│ │ ├── HttpContentBuilder.cs
│ │ └── XmlHelper.cs
│ ├── SKIT.FlurlHttpClient.ByteDance.OceanEngine/
│ │ ├── Extensions/
│ │ │ ├── OceanEngineClientExecuteAdvertiserExtensions.cs
│ │ │ ├── OceanEngineClientExecuteAdvertisingExtensions.cs
│ │ │ ├── OceanEngineClientExecuteAgentExtensions.cs
│ │ │ ├── OceanEngineClientExecuteBusinessPlatformExtensions.cs
│ │ │ ├── OceanEngineClientExecuteCampaignExtensions.cs
│ │ │ ├── OceanEngineClientExecuteCreativeExtensions.cs
│ │ │ ├── OceanEngineClientExecuteCustomerCenterExtensions.cs
│ │ │ ├── OceanEngineClientExecuteEnterpriseExtensions.cs
│ │ │ ├── OceanEngineClientExecuteFileExtensions.cs
│ │ │ ├── OceanEngineClientExecuteFundExtensions.cs
│ │ │ ├── OceanEngineClientExecuteMajordomoExtensions.cs
│ │ │ ├── OceanEngineClientExecuteOAuth2Extensions.cs
│ │ │ ├── OceanEngineClientExecuteToolsExtensions.cs
│ │ │ └── OceanEngineClientExecuteUserExtensions.cs
│ │ ├── Models/
│ │ │ ├── Advertiser/
│ │ │ │ ├── AdvertiserInfoRequest.cs
│ │ │ │ ├── AdvertiserInfoResponse.cs
│ │ │ │ ├── AdvertiserPublicInfoRequest.cs
│ │ │ │ ├── AdvertiserPublicInfoResponse.cs
│ │ │ │ ├── Avatar/
│ │ │ │ │ ├── AdvertiserAvatarGetRequest.cs
│ │ │ │ │ ├── AdvertiserAvatarGetResponse.cs
│ │ │ │ │ ├── AdvertiserAvatarSubmitRequest.cs
│ │ │ │ │ └── AdvertiserAvatarSubmitResponse.cs
│ │ │ │ ├── Budget/
│ │ │ │ │ ├── AdvertiserBudgetGetRequest.cs
│ │ │ │ │ ├── AdvertiserBudgetGetResponse.cs
│ │ │ │ │ ├── AdvertiserUpdateBudgetRequest.cs
│ │ │ │ │ └── AdvertiserUpdateBudgetResponse.cs
│ │ │ │ ├── Fund/
│ │ │ │ │ ├── AdvertiserFundDailyStatisticsRequest.cs
│ │ │ │ │ ├── AdvertiserFundDailyStatisticsResponse.cs
│ │ │ │ │ ├── AdvertiserFundGetRequest.cs
│ │ │ │ │ ├── AdvertiserFundGetResponse.cs
│ │ │ │ │ ├── AdvertiserFundTransactionGetRequest.cs
│ │ │ │ │ └── AdvertiserFundTransactionGetResponse.cs
│ │ │ │ └── Qualification/
│ │ │ │ ├── AdvertiserQualificationCreateV2Request.cs
│ │ │ │ ├── AdvertiserQualificationCreateV2Response.cs
│ │ │ │ ├── AdvertiserQualificationGetRequest.cs
│ │ │ │ ├── AdvertiserQualificationGetResponse.cs
│ │ │ │ ├── AdvertiserQualificationSelectV2Request.cs
│ │ │ │ ├── AdvertiserQualificationSelectV2Response.cs
│ │ │ │ ├── AdvertiserQualificationSubmitRequest.cs
│ │ │ │ └── AdvertiserQualificationSubmitResponse.cs
│ │ │ ├── Advertising/
│ │ │ │ ├── AdvertisingCostProtectStatusGetRequest.cs
│ │ │ │ ├── AdvertisingCostProtectStatusGetResponse.cs
│ │ │ │ ├── AdvertisingCreateRequest.cs
│ │ │ │ ├── AdvertisingCreateResponse.cs
│ │ │ │ ├── AdvertisingGetRequest.cs
│ │ │ │ ├── AdvertisingGetResponse.cs
│ │ │ │ ├── AdvertisingRejectReasonRequest.cs
│ │ │ │ ├── AdvertisingRejectReasonResponse.cs
│ │ │ │ ├── AdvertisingUpdateBidRequest.cs
│ │ │ │ ├── AdvertisingUpdateBidResponse.cs
│ │ │ │ ├── AdvertisingUpdateBudgetRequest.cs
│ │ │ │ ├── AdvertisingUpdateBudgetResponse.cs
│ │ │ │ ├── AdvertisingUpdateRequest.cs
│ │ │ │ ├── AdvertisingUpdateResponse.cs
│ │ │ │ ├── AdvertisingUpdateStatusRequest.cs
│ │ │ │ └── AdvertisingUpdateStatusResponse.cs
│ │ │ ├── Agent/
│ │ │ │ ├── Advertiser/
│ │ │ │ │ ├── AgentAdvertiserCreateV2Request.cs
│ │ │ │ │ ├── AgentAdvertiserCreateV2Response.cs
│ │ │ │ │ ├── AgentAdvertiserRechargeRequest.cs
│ │ │ │ │ ├── AgentAdvertiserRechargeResponse.cs
│ │ │ │ │ ├── AgentAdvertiserRefundRequest.cs
│ │ │ │ │ ├── AgentAdvertiserRefundResponse.cs
│ │ │ │ │ ├── AgentAdvertiserSelectRequest.cs
│ │ │ │ │ ├── AgentAdvertiserSelectResponse.cs
│ │ │ │ │ ├── AgentAdvertiserUpdateRequest.cs
│ │ │ │ │ └── AgentAdvertiserUpdateResponse.cs
│ │ │ │ ├── AgentChildAgentSelectRequest.cs
│ │ │ │ ├── AgentChildAgentSelectResponse.cs
│ │ │ │ ├── AgentInfoRequest.cs
│ │ │ │ └── AgentInfoResponse.cs
│ │ │ ├── BusinessPlatform/
│ │ │ │ ├── BusinessPlatformPartnerOrganizationListRequest.cs
│ │ │ │ └── BusinessPlatformPartnerOrganizationListResponse.cs
│ │ │ ├── Campaign/
│ │ │ │ ├── CampaignCreateRequest.cs
│ │ │ │ ├── CampaignCreateResponse.cs
│ │ │ │ ├── CampaignGetRequest.cs
│ │ │ │ ├── CampaignGetResponse.cs
│ │ │ │ ├── CampaignUpdateRequest.cs
│ │ │ │ ├── CampaignUpdateResponse.cs
│ │ │ │ ├── CampaignUpdateStatusRequest.cs
│ │ │ │ └── CampaignUpdateStatusResponse.cs
│ │ │ ├── Creative/
│ │ │ │ ├── CreativeCreateV2Request.cs
│ │ │ │ ├── CreativeCreateV2Response.cs
│ │ │ │ ├── CreativeGetRequest.cs
│ │ │ │ └── CreativeGetResponse.cs
│ │ │ ├── CustomerCenter/
│ │ │ │ └── Advertiser/
│ │ │ │ ├── CustomerCenterAdvertiserListRequest.cs
│ │ │ │ └── CustomerCenterAdvertiserListResponse.cs
│ │ │ ├── Enterprise/
│ │ │ │ ├── EnterpriseInfoRequest.cs
│ │ │ │ └── EnterpriseInfoResponse.cs
│ │ │ ├── File/
│ │ │ │ ├── FileImageAdvertiserGetRequest.cs
│ │ │ │ ├── FileImageAdvertiserGetResponse.cs
│ │ │ │ ├── FileImageAdvertiserRequest.cs
│ │ │ │ ├── FileImageAdvertiserResponse.cs
│ │ │ │ ├── FileImageAdvertisingRequest.cs
│ │ │ │ ├── FileImageAdvertisingResponse.cs
│ │ │ │ ├── FileImageGetRequest.cs
│ │ │ │ ├── FileImageGetResponse.cs
│ │ │ │ ├── FileMaterialBindRequest.cs
│ │ │ │ ├── FileMaterialBindResponse.cs
│ │ │ │ ├── FileVideoAdvertiserGetRequest.cs
│ │ │ │ ├── FileVideoAdvertiserGetResponse.cs
│ │ │ │ ├── FileVideoAdvertisingRequest.cs
│ │ │ │ ├── FileVideoAdvertisingResponse.cs
│ │ │ │ ├── FileVideoDeleteRequest.cs
│ │ │ │ ├── FileVideoDeleteResponse.cs
│ │ │ │ ├── FileVideoGetRequest.cs
│ │ │ │ ├── FileVideoGetResponse.cs
│ │ │ │ ├── FileVideoUpdateRequest.cs
│ │ │ │ └── FileVideoUpdateResponse.cs
│ │ │ ├── Fund/
│ │ │ │ ├── FundSharedWalletBalanceGetRequest.cs
│ │ │ │ └── FundSharedWalletBalanceGetResponse.cs
│ │ │ ├── Majordomo/
│ │ │ │ └── Advertiser/
│ │ │ │ ├── MajordomoAdvertiserSelectRequest.cs
│ │ │ │ └── MajordomoAdvertiserSelectResponse.cs
│ │ │ ├── OAuth2/
│ │ │ │ ├── OAuth2AccessTokenRequest.cs
│ │ │ │ ├── OAuth2AccessTokenResponse.cs
│ │ │ │ ├── OAuth2AdvertiserGetRequest.cs
│ │ │ │ ├── OAuth2AdvertiserGetResponse.cs
│ │ │ │ ├── OAuth2AppAccessTokenRequest.cs
│ │ │ │ ├── OAuth2AppAccessTokenResponse.cs
│ │ │ │ ├── OAuth2RefreshTokenRequest.cs
│ │ │ │ └── OAuth2RefreshTokenResponse.cs
│ │ │ ├── Tools/
│ │ │ │ └── VideoCover/
│ │ │ │ ├── ToolsVideoCoverSuggestRequest.cs
│ │ │ │ └── ToolsVideoCoverSuggestResponse.cs
│ │ │ └── User/
│ │ │ ├── UserInfoRequest.cs
│ │ │ └── UserInfoResponse.cs
│ │ ├── OceanEngineClient.cs
│ │ ├── OceanEngineClientOptions.cs
│ │ ├── OceanEngineEndpoints.cs
│ │ ├── OceanEngineException.cs
│ │ ├── OceanEngineRequest.cs
│ │ ├── OceanEngineResponse.cs
│ │ ├── README.md
│ │ ├── SKIT.FlurlHttpClient.ByteDance.OceanEngine.csproj
│ │ ├── Settings/
│ │ │ └── Credentials.cs
│ │ └── Utilities/
│ │ └── MD5Utility.cs
│ ├── SKIT.FlurlHttpClient.ByteDance.TikTokGlobal/
│ │ ├── Extensions/
│ │ │ ├── TikTokV2ClientExecuteOAuthExtensions.cs
│ │ │ ├── TikTokV2ClientExecutePostExtensions.cs
│ │ │ ├── TikTokV2ClientExecuteResearchExtensions.cs
│ │ │ ├── TikTokV2ClientExecuteUserExtensions.cs
│ │ │ └── TikTokV2ClientExecuteVideoExtensions.cs
│ │ ├── Models/
│ │ │ ├── OAuth/
│ │ │ │ ├── OAuthAccessTokenRequest.cs
│ │ │ │ ├── OAuthAccessTokenResponse.cs
│ │ │ │ ├── OAuthRefreshTokenRequest.cs
│ │ │ │ ├── OAuthRefreshTokenResponse.cs
│ │ │ │ ├── OAuthRevokeTokenRequest.cs
│ │ │ │ ├── OAuthRevokeTokenResponse.cs
│ │ │ │ └── Qrcode/
│ │ │ │ ├── OAuthCheckQrcodeRequest.cs
│ │ │ │ ├── OAuthCheckQrcodeResponse.cs
│ │ │ │ ├── OAuthGetQrcodeRequest.cs
│ │ │ │ └── OAuthGetQrcodeResponse.cs
│ │ │ ├── Post/
│ │ │ │ ├── PostPublishContentInitRequest.cs
│ │ │ │ ├── PostPublishContentInitResponse.cs
│ │ │ │ ├── PostPublishCreatorInfoQueryRequest.cs
│ │ │ │ ├── PostPublishCreatorInfoQueryResponse.cs
│ │ │ │ ├── PostPublishInboxVideoInitRequest.cs
│ │ │ │ ├── PostPublishInboxVideoInitResponse.cs
│ │ │ │ ├── PostPublishStatusFetchRequest.cs
│ │ │ │ ├── PostPublishStatusFetchResponse.cs
│ │ │ │ ├── PostPublishVideoInitRequest.cs
│ │ │ │ ├── PostPublishVideoInitResponse.cs
│ │ │ │ ├── PostUploadVideoRequest.cs
│ │ │ │ └── PostUploadVideoResponse.cs
│ │ │ ├── Research/
│ │ │ │ ├── Adlib/
│ │ │ │ │ ├── ResearchAdlibAdDetailRequest.cs
│ │ │ │ │ ├── ResearchAdlibAdDetailResponse.cs
│ │ │ │ │ ├── ResearchAdlibAdQueryRequest.cs
│ │ │ │ │ ├── ResearchAdlibAdQueryResponse.cs
│ │ │ │ │ ├── ResearchAdlibAdReportRequest.cs
│ │ │ │ │ ├── ResearchAdlibAdReportResponse.cs
│ │ │ │ │ ├── ResearchAdlibAdvertiserQueryRequest.cs
│ │ │ │ │ ├── ResearchAdlibAdvertiserQueryResponse.cs
│ │ │ │ │ ├── ResearchAdlibCommercialContentQueryRequest.cs
│ │ │ │ │ └── ResearchAdlibCommercialContentQueryResponse.cs
│ │ │ │ ├── Playlist/
│ │ │ │ │ ├── ResearchPlaylistInfoRequest.cs
│ │ │ │ │ └── ResearchPlaylistInfoResponse.cs
│ │ │ │ ├── User/
│ │ │ │ │ ├── ResearchUserFollowersRequest.cs
│ │ │ │ │ ├── ResearchUserFollowersResponse.cs
│ │ │ │ │ ├── ResearchUserFollowingRequest.cs
│ │ │ │ │ ├── ResearchUserFollowingResponse.cs
│ │ │ │ │ ├── ResearchUserInfoRequest.cs
│ │ │ │ │ ├── ResearchUserInfoResponse.cs
│ │ │ │ │ ├── ResearchUserLikedVideosRequest.cs
│ │ │ │ │ ├── ResearchUserLikedVideosResponse.cs
│ │ │ │ │ ├── ResearchUserPinnedVideosRequest.cs
│ │ │ │ │ ├── ResearchUserPinnedVideosResponse.cs
│ │ │ │ │ ├── ResearchUserRepostedVideosRequest.cs
│ │ │ │ │ └── ResearchUserRepostedVideosResponse.cs
│ │ │ │ └── Video/
│ │ │ │ ├── ResearchVideoCommentListRequest.cs
│ │ │ │ ├── ResearchVideoCommentListResponse.cs
│ │ │ │ ├── ResearchVideoQueryRequest.cs
│ │ │ │ └── ResearchVideoQueryResponse.cs
│ │ │ ├── User/
│ │ │ │ ├── Data/
│ │ │ │ │ ├── UserDataAddRequest.cs
│ │ │ │ │ ├── UserDataAddResponse.cs
│ │ │ │ │ ├── UserDataCancelRequest.cs
│ │ │ │ │ ├── UserDataCancelResponse.cs
│ │ │ │ │ ├── UserDataCheckRequest.cs
│ │ │ │ │ ├── UserDataCheckResponse.cs
│ │ │ │ │ ├── UserDataDownloadRequest.cs
│ │ │ │ │ └── UserDataDownloadResponse.cs
│ │ │ │ ├── UserInfoRequest.cs
│ │ │ │ └── UserInfoResponse.cs
│ │ │ └── Video/
│ │ │ ├── VideoListRequest.cs
│ │ │ ├── VideoListResponse.cs
│ │ │ ├── VideoQueryRequest.cs
│ │ │ └── VideoQueryResponse.cs
│ │ ├── README.md
│ │ ├── SKIT.FlurlHttpClient.ByteDance.TikTokGlobal.csproj
│ │ ├── Settings/
│ │ │ └── Credentials.cs
│ │ ├── TikTokV2Client.cs
│ │ ├── TikTokV2ClientBuilder.cs
│ │ ├── TikTokV2ClientOptions.cs
│ │ ├── TikTokV2Endpoints.cs
│ │ ├── TikTokV2Exception.cs
│ │ ├── TikTokV2Request.cs
│ │ ├── TikTokV2Response.cs
│ │ └── Utilities/
│ │ └── [Internal]/
│ │ └── HttpContentBuilder.cs
│ └── SKIT.FlurlHttpClient.ByteDance.TikTokGlobalShop/
│ ├── Events/
│ │ ├── CancellationStatusChangeEvent.cs
│ │ ├── OrderStatusChangeEvent.cs
│ │ ├── PackageUpdateEvent.cs
│ │ ├── ProductCreationEvent.cs
│ │ ├── ProductInformationChangeEvent.cs
│ │ ├── ProductStatusChangeEvent.cs
│ │ ├── RecipientAddressUpdateEvent.cs
│ │ ├── ReturnStatusChangeEvent.cs
│ │ ├── SellerDeauthorizationEvent.cs
│ │ └── UpcomingAuthorizationExpirationEvent.cs
│ ├── Extensions/
│ │ ├── TikTokShopClientEventExtensions.cs
│ │ ├── TikTokShopClientExecuteAuthExtensions.cs
│ │ ├── TikTokShopClientExecuteAuthorizationExtensions.cs
│ │ ├── TikTokShopClientExecuteCustomerServiceExtensions.cs
│ │ ├── TikTokShopClientExecuteEventExtensions.cs
│ │ ├── TikTokShopClientExecuteFBTExtensions.cs
│ │ ├── TikTokShopClientExecuteFinanceExtensions.cs
│ │ ├── TikTokShopClientExecuteFulfillmentExtensions.cs
│ │ ├── TikTokShopClientExecuteLogisticsExtensions.cs
│ │ ├── TikTokShopClientExecuteOrderExtensions.cs
│ │ ├── TikTokShopClientExecuteProductExtensions.cs
│ │ ├── TikTokShopClientExecutePromotionExtensions.cs
│ │ ├── TikTokShopClientExecuteReturnRefundExtensions.cs
│ │ ├── TikTokShopClientExecuteSellerExtensions.cs
│ │ └── TikTokShopClientExecuteSupplyChainExtensions.cs
│ ├── Interceptors/
│ │ └── TikTokShopRequestSigningInterceptor.cs
│ ├── Models/
│ │ ├── Auth/
│ │ │ ├── AuthGetTokenRequest.cs
│ │ │ ├── AuthGetTokenResponse.cs
│ │ │ ├── AuthRefreshTokenRequest.cs
│ │ │ └── AuthRefreshTokenResponse.cs
│ │ ├── Authorization/
│ │ │ ├── AuthorizationGetCategoryAssetsRequest.cs
│ │ │ ├── AuthorizationGetCategoryAssetsResponse.cs
│ │ │ ├── AuthorizationGetShopsRequest.cs
│ │ │ └── AuthorizationGetShopsResponse.cs
│ │ ├── CustomerService/
│ │ │ ├── Agents/
│ │ │ │ ├── CustomerServiceGetAgentSettingsRequest.cs
│ │ │ │ ├── CustomerServiceGetAgentSettingsResponse.cs
│ │ │ │ ├── CustomerServiceUpdateAgentSettingsRequest.cs
│ │ │ │ └── CustomerServiceUpdateAgentSettingsResponse.cs
│ │ │ ├── CustomerServiceCreateConversationMessageRequest.cs
│ │ │ ├── CustomerServiceCreateConversationMessageResponse.cs
│ │ │ ├── CustomerServiceCreateConversationRequest.cs
│ │ │ ├── CustomerServiceCreateConversationResponse.cs
│ │ │ ├── CustomerServiceGetConversationMessagesRequest.cs
│ │ │ ├── CustomerServiceGetConversationMessagesResponse.cs
│ │ │ ├── CustomerServiceGetConversationsRequest.cs
│ │ │ ├── CustomerServiceGetConversationsResponse.cs
│ │ │ ├── CustomerServiceReadConversationMessageRequest.cs
│ │ │ ├── CustomerServiceReadConversationMessageResponse.cs
│ │ │ ├── CustomerServiceUploadImageRequest.cs
│ │ │ ├── CustomerServiceUploadImageResponse.cs
│ │ │ └── Performance/
│ │ │ ├── CustomerServiceGetPerformanceRequest.cs
│ │ │ └── CustomerServiceGetPerformanceResponse.cs
│ │ ├── Event/
│ │ │ ├── EventDeleteWebhookRequest.cs
│ │ │ ├── EventDeleteWebhookResponse.cs
│ │ │ ├── EventGetWebhooksRequest.cs
│ │ │ ├── EventGetWebhooksResponse.cs
│ │ │ ├── EventUpdateWebhookRequest.cs
│ │ │ └── EventUpdateWebhookResponse.cs
│ │ ├── FBT/
│ │ │ ├── FBTGetGoodsRequest.cs
│ │ │ ├── FBTGetGoodsResponse.cs
│ │ │ ├── FBTGetInboundOrdersRequest.cs
│ │ │ ├── FBTGetInboundOrdersResponse.cs
│ │ │ ├── FBTGetInventoriesRequest.cs
│ │ │ ├── FBTGetInventoriesResponse.cs
│ │ │ ├── FBTGetInventoryRecordsRequest.cs
│ │ │ ├── FBTGetInventoryRecordsResponse.cs
│ │ │ ├── FBTGetMerchantOnboardedRegionsRequest.cs
│ │ │ ├── FBTGetMerchantOnboardedRegionsResponse.cs
│ │ │ ├── FBTGetWarehousesRequest.cs
│ │ │ └── FBTGetWarehousesResponse.cs
│ │ ├── Finance/
│ │ │ ├── FinanceGetOrderStatementTransactionsRequest.cs
│ │ │ ├── FinanceGetOrderStatementTransactionsResponse.cs
│ │ │ ├── FinanceGetPaymentsRequest.cs
│ │ │ ├── FinanceGetPaymentsResponse.cs
│ │ │ ├── FinanceGetStatementTransactionsRequest.cs
│ │ │ ├── FinanceGetStatementTransactionsResponse.cs
│ │ │ ├── FinanceGetStatementsRequest.cs
│ │ │ ├── FinanceGetStatementsResponse.cs
│ │ │ ├── FinanceGetWithdrawalsRequest.cs
│ │ │ └── FinanceGetWithdrawalsResponse.cs
│ │ ├── Fulfillment/
│ │ │ ├── Bundle/
│ │ │ │ ├── FulfillmentCreateBundleRequest.cs
│ │ │ │ └── FulfillmentCreateBundleResponse.cs
│ │ │ ├── Orders/
│ │ │ │ ├── FulfillmentGetOrderSplitAttributesRequest.cs
│ │ │ │ ├── FulfillmentGetOrderSplitAttributesResponse.cs
│ │ │ │ ├── FulfillmentGetOrderTrackingRequest.cs
│ │ │ │ ├── FulfillmentGetOrderTrackingResponse.cs
│ │ │ │ ├── FulfillmentSearchOrderShippingServicesRequest.cs
│ │ │ │ ├── FulfillmentSearchOrderShippingServicesResponse.cs
│ │ │ │ ├── FulfillmentSplitOrderRequest.cs
│ │ │ │ ├── FulfillmentSplitOrderResponse.cs
│ │ │ │ ├── FulfillmentUpdateOrderPackagesRequest.cs
│ │ │ │ ├── FulfillmentUpdateOrderPackagesResponse.cs
│ │ │ │ ├── FulfillmentUpdateOrderShippingInfoRequest.cs
│ │ │ │ └── FulfillmentUpdateOrderShippingInfoResponse.cs
│ │ │ ├── Packages/
│ │ │ │ ├── Combine/
│ │ │ │ │ ├── FulfillmentCombinePackageRequest.cs
│ │ │ │ │ ├── FulfillmentCombinePackageResponse.cs
│ │ │ │ │ ├── FulfillmentSearchCombinablePackagesRequest.cs
│ │ │ │ │ ├── FulfillmentSearchCombinablePackagesResponse.cs
│ │ │ │ │ ├── FulfillmentUncombinePackageRequest.cs
│ │ │ │ │ └── FulfillmentUncombinePackageResponse.cs
│ │ │ │ ├── FulfillmentBatchShipPackagesRequest.cs
│ │ │ │ ├── FulfillmentBatchShipPackagesResponse.cs
│ │ │ │ ├── FulfillmentBatchUpdatePackagesDeliveryStatusRequest.cs
│ │ │ │ ├── FulfillmentBatchUpdatePackagesDeliveryStatusResponse.cs
│ │ │ │ ├── FulfillmentCreatePackageRequest.cs
│ │ │ │ ├── FulfillmentCreatePackageResponse.cs
│ │ │ │ ├── FulfillmentGetPackageDetailRequest.cs
│ │ │ │ ├── FulfillmentGetPackageDetailResponse.cs
│ │ │ │ ├── FulfillmentGetPackageHandoverTimeSlotsRequest.cs
│ │ │ │ ├── FulfillmentGetPackageHandoverTimeSlotsResponse.cs
│ │ │ │ ├── FulfillmentGetPackageShippingDocumentsRequest.cs
│ │ │ │ ├── FulfillmentGetPackageShippingDocumentsResponse.cs
│ │ │ │ ├── FulfillmentSearchPackagesRequest.cs
│ │ │ │ ├── FulfillmentSearchPackagesResponse.cs
│ │ │ │ ├── FulfillmentShipPackageRequest.cs
│ │ │ │ ├── FulfillmentShipPackageResponse.cs
│ │ │ │ ├── FulfillmentUpdatePackageShippingInfoRequest.cs
│ │ │ │ └── FulfillmentUpdatePackageShippingInfoResponse.cs
│ │ │ └── Upload/
│ │ │ ├── FulfillmentUploadFileRequest.cs
│ │ │ ├── FulfillmentUploadFileResponse.cs
│ │ │ ├── FulfillmentUploadImageRequest.cs
│ │ │ └── FulfillmentUploadImageResponse.cs
│ │ ├── Logistics/
│ │ │ ├── LogisticsGetDeliveryOptionShippingProvidersRequest.cs
│ │ │ ├── LogisticsGetDeliveryOptionShippingProvidersResponse.cs
│ │ │ ├── LogisticsGetGlobalWarehousesRequest.cs
│ │ │ ├── LogisticsGetGlobalWarehousesResponse.cs
│ │ │ ├── LogisticsGetWarehouseDeliveryOptionsRequest.cs
│ │ │ ├── LogisticsGetWarehouseDeliveryOptionsResponse.cs
│ │ │ ├── LogisticsGetWarehousesRequest.cs
│ │ │ └── LogisticsGetWarehousesResponse.cs
│ │ ├── Order/
│ │ │ ├── ExternalOrder/
│ │ │ │ ├── OrderCreateExternalOrderRequest.cs
│ │ │ │ ├── OrderCreateExternalOrderResponse.cs
│ │ │ │ ├── OrderGetExternalOrdersRequest.cs
│ │ │ │ ├── OrderGetExternalOrdersResponse.cs
│ │ │ │ ├── OrderSearchExternalOrdersRequest.cs
│ │ │ │ └── OrderSearchExternalOrdersResponse.cs
│ │ │ ├── OrderBatchGetOrderDetailRequest.cs
│ │ │ ├── OrderBatchGetOrderDetailResponse.cs
│ │ │ ├── OrderGetOrderPriceDetailRequest.cs
│ │ │ ├── OrderGetOrderPriceDetailResponse.cs
│ │ │ ├── OrderSearchOrdersRequest.cs
│ │ │ └── OrderSearchOrdersResponse.cs
│ │ ├── Product/
│ │ │ ├── Brand/
│ │ │ │ ├── ProductCreateBrandRequest.cs
│ │ │ │ ├── ProductCreateBrandResponse.cs
│ │ │ │ ├── ProductGetBrandsRequest.cs
│ │ │ │ └── ProductGetBrandsResponse.cs
│ │ │ ├── Category/
│ │ │ │ ├── ProductGetCategoriesRequest.cs
│ │ │ │ ├── ProductGetCategoriesResponse.cs
│ │ │ │ ├── ProductGetCategoryAttributesRequest.cs
│ │ │ │ ├── ProductGetCategoryAttributesResponse.cs
│ │ │ │ ├── ProductGetCategoryRulesRequest.cs
│ │ │ │ ├── ProductGetCategoryRulesResponse.cs
│ │ │ │ ├── ProductRecommendCategoriesRequest.cs
│ │ │ │ └── ProductRecommendCategoriesResponse.cs
│ │ │ ├── Compliance/
│ │ │ │ ├── ProductCreateComplianceManufacturerRequest.cs
│ │ │ │ ├── ProductCreateComplianceManufacturerResponse.cs
│ │ │ │ ├── ProductCreateComplianceResponsiblePersonRequest.cs
│ │ │ │ ├── ProductCreateComplianceResponsiblePersonResponse.cs
│ │ │ │ ├── ProductSearchComplianceManufacturersRequest.cs
│ │ │ │ ├── ProductSearchComplianceManufacturersResponse.cs
│ │ │ │ ├── ProductSearchComplianceResponsiblePersonsRequest.cs
│ │ │ │ ├── ProductSearchComplianceResponsiblePersonsResponse.cs
│ │ │ │ ├── ProductUpdateComplianceManufacturerPartiallyRequest.cs
│ │ │ │ ├── ProductUpdateComplianceManufacturerPartiallyResponse.cs
│ │ │ │ ├── ProductUpdateComplianceResponsiblePersonPartiallyRequest.cs
│ │ │ │ └── ProductUpdateComplianceResponsiblePersonPartiallyResponse.cs
│ │ │ ├── Global/
│ │ │ │ ├── Category/
│ │ │ │ │ ├── ProductGetGlobalCategoriesRequest.cs
│ │ │ │ │ ├── ProductGetGlobalCategoriesResponse.cs
│ │ │ │ │ ├── ProductGetGlobalCategoryAttributesRequest.cs
│ │ │ │ │ ├── ProductGetGlobalCategoryAttributesResponse.cs
│ │ │ │ │ ├── ProductGetGlobalCategoryRulesRequest.cs
│ │ │ │ │ ├── ProductGetGlobalCategoryRulesResponse.cs
│ │ │ │ │ ├── ProductRecommendGlobalCategoriesRequest.cs
│ │ │ │ │ └── ProductRecommendGlobalCategoriesResponse.cs
│ │ │ │ ├── ProductCreateGlobalProductRequest.cs
│ │ │ │ ├── ProductCreateGlobalProductResponse.cs
│ │ │ │ ├── ProductDeleteGlobalProductsRequest.cs
│ │ │ │ ├── ProductDeleteGlobalProductsResponse.cs
│ │ │ │ ├── ProductGetGlobalProductDetailRequest.cs
│ │ │ │ ├── ProductGetGlobalProductDetailResponse.cs
│ │ │ │ ├── ProductPublishGlobalProductRequest.cs
│ │ │ │ ├── ProductPublishGlobalProductResponse.cs
│ │ │ │ ├── ProductSearchGlobalProductsRequest.cs
│ │ │ │ ├── ProductSearchGlobalProductsResponse.cs
│ │ │ │ ├── ProductUpdateGlobalProductInventoryRequest.cs
│ │ │ │ ├── ProductUpdateGlobalProductInventoryResponse.cs
│ │ │ │ ├── ProductUpdateGlobalProductRequest.cs
│ │ │ │ └── ProductUpdateGlobalProductResponse.cs
│ │ │ ├── ProductActivateProductsRequest.cs
│ │ │ ├── ProductActivateProductsResponse.cs
│ │ │ ├── ProductCreateProductCategoryUpgradeTaskRequest.cs
│ │ │ ├── ProductCreateProductCategoryUpgradeTaskResponse.cs
│ │ │ ├── ProductCreateProductListingCheckRequest.cs
│ │ │ ├── ProductCreateProductListingCheckResponse.cs
│ │ │ ├── ProductCreateProductRequest.cs
│ │ │ ├── ProductCreateProductResponse.cs
│ │ │ ├── ProductDeactivateProductsRequest.cs
│ │ │ ├── ProductDeactivateProductsResponse.cs
│ │ │ ├── ProductDeleteProductsRequest.cs
│ │ │ ├── ProductDeleteProductsResponse.cs
│ │ │ ├── ProductGetInventoriesRequest.cs
│ │ │ ├── ProductGetInventoriesResponse.cs
│ │ │ ├── ProductGetListingSchemasRequest.cs
│ │ │ ├── ProductGetListingSchemasResponse.cs
│ │ │ ├── ProductGetPrerequisitesRequest.cs
│ │ │ ├── ProductGetPrerequisitesResponse.cs
│ │ │ ├── ProductGetProductDetailRequest.cs
│ │ │ ├── ProductGetProductDetailResponse.cs
│ │ │ ├── ProductGetProductDiagnosesRequest.cs
│ │ │ ├── ProductGetProductDiagnosesResponse.cs
│ │ │ ├── ProductGetProductSEOWordsRequest.cs
│ │ │ ├── ProductGetProductSEOWordsResponse.cs
│ │ │ ├── ProductGetProductSuggestionsRequest.cs
│ │ │ ├── ProductGetProductSuggestionsResponse.cs
│ │ │ ├── ProductRecoverProductsRequest.cs
│ │ │ ├── ProductRecoverProductsResponse.cs
│ │ │ ├── ProductSearchProductsRequest.cs
│ │ │ ├── ProductSearchProductsResponse.cs
│ │ │ ├── ProductUpdateProductInventoryRequest.cs
│ │ │ ├── ProductUpdateProductInventoryResponse.cs
│ │ │ ├── ProductUpdateProductPartiallyRequest.cs
│ │ │ ├── ProductUpdateProductPartiallyResponse.cs
│ │ │ ├── ProductUpdateProductPriceRequest.cs
│ │ │ ├── ProductUpdateProductPriceResponse.cs
│ │ │ ├── ProductUpdateProductRequest.cs
│ │ │ ├── ProductUpdateProductResponse.cs
│ │ │ ├── SizeChart/
│ │ │ │ ├── ProductSearchSizeChartsRequest.cs
│ │ │ │ └── ProductSearchSizeChartsResponse.cs
│ │ │ └── Upload/
│ │ │ ├── ProductOptimizeImagesRequest.cs
│ │ │ ├── ProductOptimizeImagesResponse.cs
│ │ │ ├── ProductUploadFileRequest.cs
│ │ │ ├── ProductUploadFileResponse.cs
│ │ │ ├── ProductUploadImageRequest.cs
│ │ │ └── ProductUploadImageResponse.cs
│ │ ├── Promotion/
│ │ │ ├── Activity/
│ │ │ │ ├── PromotionCreateActivityRequest.cs
│ │ │ │ ├── PromotionCreateActivityResponse.cs
│ │ │ │ ├── PromotionDeactivateActivityRequest.cs
│ │ │ │ ├── PromotionDeactivateActivityResponse.cs
│ │ │ │ ├── PromotionDeleteActivityProductsRequest.cs
│ │ │ │ ├── PromotionDeleteActivityProductsResponse.cs
│ │ │ │ ├── PromotionGetActivityDetailRequest.cs
│ │ │ │ ├── PromotionGetActivityDetailResponse.cs
│ │ │ │ ├── PromotionSearchActivitiesRequest.cs
│ │ │ │ ├── PromotionSearchActivitiesResponse.cs
│ │ │ │ ├── PromotionUpdateActivityProductsRequest.cs
│ │ │ │ ├── PromotionUpdateActivityProductsResponse.cs
│ │ │ │ ├── PromotionUpdateActivityRequest.cs
│ │ │ │ └── PromotionUpdateActivityResponse.cs
│ │ │ └── Coupon/
│ │ │ ├── PromotionGetCouponDetailRequest.cs
│ │ │ ├── PromotionGetCouponDetailResponse.cs
│ │ │ ├── PromotionSearchCouponsRequest.cs
│ │ │ └── PromotionSearchCouponsResponse.cs
│ │ ├── ReturnRefund/
│ │ │ ├── Cancellations/
│ │ │ │ ├── ReturnRefundApproveCancellationRequest.cs
│ │ │ │ ├── ReturnRefundApproveCancellationResponse.cs
│ │ │ │ ├── ReturnRefundCreateCancellationRequest.cs
│ │ │ │ ├── ReturnRefundCreateCancellationResponse.cs
│ │ │ │ ├── ReturnRefundRejectCancellationRequest.cs
│ │ │ │ ├── ReturnRefundRejectCancellationResponse.cs
│ │ │ │ ├── ReturnRefundSearchCancellationsRequest.cs
│ │ │ │ └── ReturnRefundSearchCancellationsResponse.cs
│ │ │ ├── Orders/
│ │ │ │ ├── ReturnRefundGetOrderAftersaleEligibilityRequest.cs
│ │ │ │ └── ReturnRefundGetOrderAftersaleEligibilityResponse.cs
│ │ │ ├── Refunds/
│ │ │ │ ├── ReturnRefundCalculateRefundRequest.cs
│ │ │ │ └── ReturnRefundCalculateRefundResponse.cs
│ │ │ ├── ReturnRefundGetRejectReasonsRequest.cs
│ │ │ ├── ReturnRefundGetRejectReasonsResponse.cs
│ │ │ └── Returns/
│ │ │ ├── ReturnRefundApproveReturnRequest.cs
│ │ │ ├── ReturnRefundApproveReturnResponse.cs
│ │ │ ├── ReturnRefundCreateReturnRequest.cs
│ │ │ ├── ReturnRefundCreateReturnResponse.cs
│ │ │ ├── ReturnRefundGetReturnRecordsRequest.cs
│ │ │ ├── ReturnRefundGetReturnRecordsResponse.cs
│ │ │ ├── ReturnRefundRejectReturnRequest.cs
│ │ │ ├── ReturnRefundRejectReturnResponse.cs
│ │ │ ├── ReturnRefundSearchReturnsRequest.cs
│ │ │ └── ReturnRefundSearchReturnsResponse.cs
│ │ ├── Seller/
│ │ │ ├── SellerGetPermissionsRequest.cs
│ │ │ ├── SellerGetPermissionsResponse.cs
│ │ │ ├── SellerGetShopsRequest.cs
│ │ │ └── SellerGetShopsResponse.cs
│ │ └── SupplyChain/
│ │ ├── SupplyChainSyncPackagesRequest.cs
│ │ └── SupplyChainSyncPackagesResponse.cs
│ ├── README.md
│ ├── SKIT.FlurlHttpClient.ByteDance.TikTokGlobalShop.csproj
│ ├── Settings/
│ │ └── Credentials.cs
│ ├── TikTokShopClient.cs
│ ├── TikTokShopClientBuilder.cs
│ ├── TikTokShopClientOptions.cs
│ ├── TikTokShopEndpoints.cs
│ ├── TikTokShopEvent.cs
│ ├── TikTokShopException.cs
│ ├── TikTokShopRequest.cs
│ ├── TikTokShopResponse.cs
│ └── Utilities/
│ ├── HMACUtility.cs
│ └── [Internal]/
│ └── HttpContentBuilder.cs
└── test/
├── NuGet.config
├── SKIT.FlurlHttpClient.ByteDance.DouyinOpen.UnitTests/
│ ├── .gitignore
│ ├── EventSamples/
│ │ ├── GoodLife/
│ │ │ ├── LifeMemberJoinEvent.json
│ │ │ ├── LifeMemberLeaveEvent.json
│ │ │ ├── LifeProductAuditEvent.json
│ │ │ ├── LifeTradeCertificateNotifyEvent.json
│ │ │ └── LifeTradeOrderNotifyEvent.json
│ │ ├── IM/
│ │ │ ├── EnterGroupAuditChangeEvent.json
│ │ │ ├── GroupFansEventEvent.json
│ │ │ ├── IMAuthorizeEvent.json
│ │ │ ├── IMEnterDirectMessageEvent.json
│ │ │ ├── IMGroupReceiveMessageEvent.json
│ │ │ └── IMReceiveMessageEvent.json
│ │ ├── Interaction/
│ │ │ ├── NewFollowActionEvent.json
│ │ │ └── NewVideoDiggEvent.json
│ │ ├── UnionAuth/
│ │ │ ├── UnionAuthInfoForBEvent.json
│ │ │ └── UnionAuthInfoForCEvent.json
│ │ └── Webhook/
│ │ ├── AuthorizeEvent.json
│ │ ├── CreateVideoEvent.json
│ │ ├── DialogPhoneEvent.json
│ │ ├── ItemCommentReplyEvent.json
│ │ ├── PersonalTabContactEvent.json
│ │ ├── ReceiveMessageEvent.json
│ │ ├── UnauthorizeEvent.json
│ │ ├── VerifyWebhookEvent.json
│ │ └── WebsiteContactEvent.json
│ ├── IMPORTANT_CodeAnalyzeTests.cs
│ ├── ModelSamples/
│ │ ├── ApiAppsAuth/
│ │ │ ├── AppsAuthGetOpenIdByCV1Request.json
│ │ │ └── AppsAuthGetOpenIdByCV1Response.json
│ │ ├── ApiAppsTrade/
│ │ │ ├── AppsTradeBookCreateBookV2Request.json
│ │ │ ├── AppsTradeBookCreateBookV2Response.json
│ │ │ ├── AppsTradeBookMerchantCancelBookV2Request.json
│ │ │ ├── AppsTradeBookQueryBookV2Request.json
│ │ │ ├── AppsTradeBookQueryBookV2Response.json
│ │ │ ├── AppsTradeBookResultCallbackV2Request.json
│ │ │ ├── AppsTradeBookUserCancelBookV2Request.json
│ │ │ ├── AppsTradeFulfillmentDeliveryPrepareV2Request.json
│ │ │ ├── AppsTradeFulfillmentDeliveryPrepareV2Response.json
│ │ │ ├── AppsTradeFulfillmentDeliveryVerifyV2Request.json
│ │ │ ├── AppsTradeFulfillmentDeliveryVerifyV2Response.json
│ │ │ ├── AppsTradeFulfillmentOrderCanUseV2Request.json
│ │ │ ├── AppsTradeFulfillmentOrderCanUseV2Response.json
│ │ │ ├── AppsTradeFulfillmentPushDeliveryV2Request.json
│ │ │ ├── AppsTradeFulfillmentPushDeliveryV2Response.json
│ │ │ ├── AppsTradeFulfillmentQueryUserCertificatesV2Request.json
│ │ │ ├── AppsTradeFulfillmentQueryUserCertificatesV2Response.json
│ │ │ ├── AppsTradeFulfillmentVerifyCancelV2Request.json
│ │ │ ├── AppsTradeOrderCloseOrderV2Request.json
│ │ │ ├── AppsTradeOrderCreateOrderV2Request.json
│ │ │ ├── AppsTradeOrderCreateOrderV2Response.json
│ │ │ ├── AppsTradeOrderQueryCPSV2Request.json
│ │ │ ├── AppsTradeOrderQueryCPSV2Response.json
│ │ │ ├── AppsTradeOrderQueryItemOrderInfoV2Request.json
│ │ │ ├── AppsTradeOrderQueryItemOrderInfoV2Response.json
│ │ │ ├── AppsTradeOrderQueryOrderV2Request.json
│ │ │ ├── AppsTradeOrderQueryOrderV2Response.json
│ │ │ ├── AppsTradeRefundCreateRefundV2Request.json
│ │ │ ├── AppsTradeRefundCreateRefundV2Response.json
│ │ │ ├── AppsTradeRefundMerchantAuditCallbackV2Request.json
│ │ │ ├── AppsTradeRefundQueryRefundV2Request.json
│ │ │ ├── AppsTradeRefundQueryRefundV2Response.json
│ │ │ ├── AppsTradeSettleCreateSettleV2Request.json
│ │ │ ├── AppsTradeSettleCreateSettleV2Response.json
│ │ │ ├── AppsTradeSettleQuerySettleV2Request.json
│ │ │ └── AppsTradeSettleQuerySettleV2Response.json
│ │ ├── ApiDouyinAuth/
│ │ │ ├── DouyinAuthGetOpenIdByBV1Request.json
│ │ │ ├── DouyinAuthGetOpenIdByBV1Response.json
│ │ │ ├── DouyinAuthGetOpenIdByCV1Request.json
│ │ │ ├── DouyinAuthGetOpenIdByCV1Response.json
│ │ │ ├── DouyinAuthGetRelatedIdV1Request.json
│ │ │ └── DouyinAuthGetRelatedIdV1Response.json
│ │ ├── ApiDouyinIM/
│ │ │ ├── DouyinIMGetAppletTemplateV1Request.json
│ │ │ ├── DouyinIMGetAppletTemplateV1Response.json
│ │ │ ├── DouyinIMSetAppletTemplateV1Request.json
│ │ │ └── DouyinIMSetAppletTemplateV1Response.json
│ │ ├── ApiDouyinInteractive/
│ │ │ └── DouyinInteractiveIntentionLogListV1Response.json
│ │ ├── ApiDouyinRole/
│ │ │ ├── DouyinRoleCheckV1Request.json
│ │ │ └── DouyinRoleCheckV1Response.json
│ │ ├── ApiDouyinSchema/
│ │ │ ├── DouyinSchemaGetChatV1Request.json
│ │ │ ├── DouyinSchemaGetChatV1Response.json
│ │ │ ├── DouyinSchemaGetItemInfoV1Request.json
│ │ │ ├── DouyinSchemaGetItemInfoV1Response.json
│ │ │ ├── DouyinSchemaGetLiveV1Request.json
│ │ │ ├── DouyinSchemaGetLiveV1Response.json
│ │ │ ├── DouyinSchemaGetShareV1Request.json
│ │ │ ├── DouyinSchemaGetShareV1Response.json
│ │ │ ├── DouyinSchemaGetUserProfileV1Request.json
│ │ │ └── DouyinSchemaGetUserProfileV1Response.json
│ │ ├── ApiDouyinUser/
│ │ │ └── DouyinUserFansDataV1Response.json
│ │ ├── ApiDouyinVideo/
│ │ │ ├── DouyinVideoBasicInfoV1Request.json
│ │ │ ├── DouyinVideoBasicInfoV1Response.json
│ │ │ ├── DouyinVideoCreateVideoV1Response.json
│ │ │ ├── DouyinVideoDataV1Response.json
│ │ │ ├── DouyinVideoListV1Response.json
│ │ │ ├── DouyinVideoUploadVideoV1Response.json
│ │ │ ├── Iframe/
│ │ │ │ ├── DouyinVideoGetIframeByItemV1Response.json
│ │ │ │ └── DouyinVideoGetIframeByVideoV1Response.json
│ │ │ ├── Image/
│ │ │ │ ├── DouyinVideoCreateImageTextV1Request.json
│ │ │ │ ├── DouyinVideoCreateImageTextV1Response.json
│ │ │ │ └── DouyinVideoUploadImageV1Response.json
│ │ │ └── Part/
│ │ │ ├── DouyinVideoCompleteVideoPartUploadV1Response.json
│ │ │ └── DouyinVideoInitVideoPartUploadV1Response.json
│ │ ├── ApiIM/
│ │ │ └── IMMessageResourcesResponse.json
│ │ ├── ApiIndustry/
│ │ │ ├── AppTestRelation/
│ │ │ │ ├── IndustrySolutionAddAppTestRelationV1Request.json
│ │ │ │ ├── IndustrySolutionAddAppTestRelationV1Response.json
│ │ │ │ ├── IndustrySolutionDeleteAppTestRelationV1Request.json
│ │ │ │ ├── IndustrySolutionDeleteAppTestRelationV1Response.json
│ │ │ │ ├── IndustrySolutionQueryAppTestRelationV1Request.json
│ │ │ │ └── IndustrySolutionQueryAppTestRelationV1Response.json
│ │ │ └── Implementation/
│ │ │ ├── IndustrySolutionQueryImplementationV1Request.json
│ │ │ └── IndustrySolutionQueryImplementationV1Response.json
│ │ ├── ApiMatch/
│ │ │ ├── MatchTaskboxAgencyQueryBillLinkV2Request.json
│ │ │ ├── MatchTaskboxAgencyQueryBillLinkV2Response.json
│ │ │ ├── MatchTaskboxAgencyQueryVideoSummaryDataV2Request.json
│ │ │ ├── MatchTaskboxAgencyQueryVideoSummaryDataV2Response.json
│ │ │ ├── MatchTaskboxChangeUserBindAgentV1Request.json
│ │ │ ├── MatchTaskboxGenerateAgentLinkV1Request.json
│ │ │ ├── MatchTaskboxGenerateAgentLinkV1Response.json
│ │ │ ├── MatchTaskboxGetAgencyUserBindRecordV1Request.json
│ │ │ ├── MatchTaskboxGetAgencyUserBindRecordV1Response.json
│ │ │ ├── MatchTaskboxQueryAppTaskIdV1Request.json
│ │ │ ├── MatchTaskboxQueryAppTaskIdV1Response.json
│ │ │ ├── MatchTaskboxQueryTaskInfoV1Request.json
│ │ │ ├── MatchTaskboxQueryTaskInfoV1Response.json
│ │ │ ├── MatchTaskboxQueryTaskVideoStatusV2Request.json
│ │ │ ├── MatchTaskboxQueryTaskVideoStatusV2Response.json
│ │ │ ├── MatchTaskboxQueryViolateTalentListV2Response.json
│ │ │ ├── MatchTaskboxSaveAgentV1Request.json
│ │ │ └── MatchTaskboxSaveAgentV1Response.json
│ │ ├── DataExternal/
│ │ │ ├── Anchor/
│ │ │ │ └── DataExternalAnchorMpItemClickDistributionResponse.json
│ │ │ ├── Billboard/
│ │ │ │ ├── HotVideo/
│ │ │ │ │ └── DataExternalBillboardHotVideoResponse.json
│ │ │ │ ├── Live/
│ │ │ │ │ └── DataExternalBillboardLiveResponse.json
│ │ │ │ ├── Music/
│ │ │ │ │ └── DataExternalBillboardMusicHotResponse.json
│ │ │ │ ├── Prop/
│ │ │ │ │ └── DataExternalBillboardPropResponse.json
│ │ │ │ ├── Sport/
│ │ │ │ │ ├── DataExternalBillboardSportBasketballResponse.json
│ │ │ │ │ ├── DataExternalBillboardSportComprehensiveResponse.json
│ │ │ │ │ ├── DataExternalBillboardSportCultureResponse.json
│ │ │ │ │ ├── DataExternalBillboardSportFitnessResponse.json
│ │ │ │ │ ├── DataExternalBillboardSportOutdoorsResponse.json
│ │ │ │ │ ├── DataExternalBillboardSportOverallResponse.json
│ │ │ │ │ ├── DataExternalBillboardSportSoccerResponse.json
│ │ │ │ │ └── DataExternalBillboardSportTableTennisResponse.json
│ │ │ │ ├── Stars/
│ │ │ │ │ └── DataExternalBillboardStarsResponse.json
│ │ │ │ └── Topic/
│ │ │ │ └── DataExternalBillboardTopicResponse.json
│ │ │ ├── Fans/
│ │ │ │ ├── DataExternalFansFavouriteResponse.json
│ │ │ │ └── DataExternalFansSourceResponse.json
│ │ │ ├── Item/
│ │ │ │ ├── DataExternalItemBaseResponse.json
│ │ │ │ ├── DataExternalItemCommentResponse.json
│ │ │ │ ├── DataExternalItemLikeResponse.json
│ │ │ │ ├── DataExternalItemPlayResponse.json
│ │ │ │ └── DataExternalItemShareResponse.json
│ │ │ ├── POI/
│ │ │ │ ├── DataExternalPOIBaseResponse.json
│ │ │ │ ├── DataExternalPOIBillboardResponse.json
│ │ │ │ ├── DataExternalPOIClaimListResponse.json
│ │ │ │ ├── DataExternalPOIServiceBaseResponse.json
│ │ │ │ ├── DataExternalPOIServiceUserResponse.json
│ │ │ │ └── DataExternalPOIUserResponse.json
│ │ │ └── User/
│ │ │ ├── DataExternalUserCommentResponse.json
│ │ │ ├── DataExternalUserFansResponse.json
│ │ │ ├── DataExternalUserItemResponse.json
│ │ │ ├── DataExternalUserLikeResponse.json
│ │ │ ├── DataExternalUserProfileResponse.json
│ │ │ └── DataExternalUserShareResponse.json
│ │ ├── DevTool/
│ │ │ └── DevToolMicroAppIsLegalResponse.json
│ │ ├── Discovery/
│ │ │ ├── DiscoveryEntertainmentRankItemResponse.json
│ │ │ └── DiscoveryEntertainmentRankVersionResponse.json
│ │ ├── Enterprise/
│ │ │ └── Media/
│ │ │ ├── EnterpriseMediaDeleteResponse.json
│ │ │ ├── EnterpriseMediaListResponse.json
│ │ │ ├── EnterpriseMediaTempUploadResponse.json
│ │ │ └── EnterpriseMediaUploadResponse.json
│ │ ├── Event/
│ │ │ ├── EventStatusListResponse.json
│ │ │ └── EventStatusUpdateResponse.json
│ │ ├── Fans/
│ │ │ └── FansCheckResponse.json
│ │ ├── GoodLife/
│ │ │ ├── Aftersale/
│ │ │ │ ├── Audit/
│ │ │ │ │ └── GoodLifeAftersaleAuditNotifyV1Request.json
│ │ │ │ └── Order/
│ │ │ │ ├── GoodLifeAftersaleOrderApplyRefundV1Request.json
│ │ │ │ └── GoodLifeAftersaleOrderMerchantRejectV1Request.json
│ │ │ ├── Fulfilment/
│ │ │ │ ├── Certificate/
│ │ │ │ │ ├── GoodLifeFulfilmentCertificateGetV1Response.json
│ │ │ │ │ ├── GoodLifeFulfilmentCertificateQueryV1Response.json
│ │ │ │ │ ├── GoodLifeFulfilmentCertificateVerifyRecordQueryV1Response.json
│ │ │ │ │ ├── GoodLifeFulfilmentCertificateVerifyV1Request.json
│ │ │ │ │ └── GoodLifeFulfilmentCertificateVerifyV1Response.json
│ │ │ │ ├── Distribution/
│ │ │ │ │ └── GoodLifeFulfilmentDistributionOrderSyncStatusV1Request.json
│ │ │ │ └── ReserveCode/
│ │ │ │ ├── GoodLifeFulfilmentReserveCodeBatchImportV1Request.json
│ │ │ │ ├── GoodLifeFulfilmentReserveCodeBindOrderInfoV1Request.json
│ │ │ │ └── GoodLifeFulfilmentReserveCodeBindOrderInfoV1Response.json
│ │ │ ├── Goods/
│ │ │ │ ├── Calendar/
│ │ │ │ │ ├── GoodLifeGoodsCalendarAmountGroupSaveV1Request.json
│ │ │ │ │ ├── GoodLifeGoodsCalendarStaticAttributeGroupSaveV1Request.json
│ │ │ │ │ └── GoodLifeGoodsCalendarStockGroupSaveV1Request.json
│ │ │ │ ├── Product/
│ │ │ │ │ ├── GoodLifeGoodsProductDraftGetV1Response.json
│ │ │ │ │ ├── GoodLifeGoodsProductDraftQueryV1Response.json
│ │ │ │ │ ├── GoodLifeGoodsProductFreeAuditV1Request.json
│ │ │ │ │ ├── GoodLifeGoodsProductOnlineGetV1Response.json
│ │ │ │ │ ├── GoodLifeGoodsProductOnlineQueryV1Response.json
│ │ │ │ │ ├── GoodLifeGoodsProductOperateV1Request.json
│ │ │ │ │ ├── GoodLifeGoodsProductSaveV1Request.json
│ │ │ │ │ └── GoodLifeGoodsProductSaveV1Response.json
│ │ │ │ ├── SKU/
│ │ │ │ │ └── GoodLifeGoodsSKUBatchSaveV1Request.json
│ │ │ │ ├── SPU/
│ │ │ │ │ ├── GoodLifeGoodsSPUSaveV1Request.json
│ │ │ │ │ └── GoodLifeGoodsSPUSaveV1Response.json
│ │ │ │ ├── Stock/
│ │ │ │ │ └── GoodLifeGoodsStockSyncV1Request.json
│ │ │ │ └── Template/
│ │ │ │ └── GoodLifeGoodsTemplateGetV1Response.json
│ │ │ ├── Member/
│ │ │ │ ├── GoodLifeMemberUnionIdGetV1Request.json
│ │ │ │ ├── GoodLifeMemberUnionIdGetV1Response.json
│ │ │ │ └── GoodLifeMemberUserUpdateV1Request.json
│ │ │ ├── POI/
│ │ │ │ ├── Crowd/
│ │ │ │ │ └── GoodLifePOICrowdSaveV1Request.json
│ │ │ │ ├── GoodLifePOIClaimV1Request.json
│ │ │ │ ├── GoodLifePOIClaimV1Response.json
│ │ │ │ ├── GoodLifePOIMatchRelationQueryV1Response.json
│ │ │ │ ├── GoodLifePOIMatchTaskQueryV1Response.json
│ │ │ │ ├── GoodLifePOIMatchTaskSubmitV1Request.json
│ │ │ │ ├── GoodLifePOIMatchTaskSubmitV1Response.json
│ │ │ │ ├── GoodLifePOISyncV1Request.json
│ │ │ │ └── GoodLifePOISyncV1Response.json
│ │ │ ├── Partner/
│ │ │ │ ├── Commission/
│ │ │ │ │ ├── GoodLifePartnerCommissionRecordGetV1Response.json
│ │ │ │ │ ├── GoodLifePartnerCommissionRecordQueryV1Response.json
│ │ │ │ │ ├── GoodLifePartnerProductCommissionQueryV1Response.json
│ │ │ │ │ ├── GoodLifePartnerProductCommissionSaveV1Request.json
│ │ │ │ │ └── GoodLifePartnerProductCommissionSaveV1Response.json
│ │ │ │ └── Order/
│ │ │ │ ├── GoodLifePartnerOrderCreateV1Request.json
│ │ │ │ ├── GoodLifePartnerOrderCreateV1Response.json
│ │ │ │ ├── GoodLifePartnerOrderGetV1Response.json
│ │ │ │ └── GoodLifePartnerOrderQueryV1Response.json
│ │ │ ├── Settle/
│ │ │ │ ├── GoodLifeSettleLedgerDetailedQueryByOrderV1Response.json
│ │ │ │ ├── GoodLifeSettleLedgerDetailedQueryV1Response.json
│ │ │ │ ├── GoodLifeSettleLedgerQueryByOrderV1Response.json
│ │ │ │ ├── GoodLifeSettleLedgerQueryRecordByCertificateV1Response.json
│ │ │ │ └── GoodLifeSettleLedgerQueryV1Response.json
│ │ │ ├── Shop/
│ │ │ │ └── GoodLifeShopPOIQueryV1Response.json
│ │ │ └── Trade/
│ │ │ ├── GoodLifeTradeBookGetV1Response.json
│ │ │ ├── GoodLifeTradeBuyMerchantConfirmOrderV1Request.json
│ │ │ └── GoodLifeTradeOrderQueryV1Response.json
│ │ ├── HotSearch/
│ │ │ ├── HotSearchSentencesResponse.json
│ │ │ ├── HotSearchTrendingSentencesResponse.json
│ │ │ └── HotSearchVideosResponse.json
│ │ ├── IM/
│ │ │ ├── Authorize/
│ │ │ │ ├── IMAuthorizeStatusRequest.json
│ │ │ │ ├── IMAuthorizeStatusResponse.json
│ │ │ │ ├── IMAuthorizeUserListRequest.json
│ │ │ │ └── IMAuthorizeUserListResponse.json
│ │ │ ├── Card/
│ │ │ │ ├── IMGetRetainConsultCardResponse.json
│ │ │ │ ├── IMSaveRetainConsultCardRequest.json
│ │ │ │ └── IMSaveRetainConsultCardResponse.json
│ │ │ ├── Group/
│ │ │ │ ├── IMGroupEnterAuditGetResponse.json
│ │ │ │ ├── IMGroupEnterAuditSetRequest.json
│ │ │ │ ├── IMGroupEnterAuditSetResponse.json
│ │ │ │ ├── IMGroupFansCountResponse.json
│ │ │ │ ├── IMGroupFansCreateRequest.json
│ │ │ │ ├── IMGroupFansCreateResponse.json
│ │ │ │ ├── IMGroupFansListResponse.json
│ │ │ │ ├── IMGroupSettingDisableRequest.json
│ │ │ │ └── IMGroupSettingSetRequest.json
│ │ │ └── Message/
│ │ │ ├── IMRecallMessageRequest.json
│ │ │ ├── IMSendMessageGroupRequest.json
│ │ │ ├── IMSendMessageGroupResponse.json
│ │ │ ├── IMSendMessageRequest.json
│ │ │ └── IMSendMessageResponse.json
│ │ ├── Image/
│ │ │ ├── ImageCreateResponse.json
│ │ │ └── ImageUploadResponse.json
│ │ ├── Item/
│ │ │ └── Comment/
│ │ │ ├── ItemCommentListResponse.json
│ │ │ ├── ItemCommentReplyListResponse.json
│ │ │ └── ItemCommentReplyResponse.json
│ │ ├── JS/
│ │ │ └── JSGetTicketResponse.json
│ │ ├── MarketService/
│ │ │ ├── MarketServiceUserDeletePurchaseInfoRequest.json
│ │ │ ├── MarketServiceUserInsertPurchaseInfoRequest.json
│ │ │ ├── MarketServiceUserPurchaseListResponse.json
│ │ │ └── MarketServiceUserRemainTimesDecreaseRequest.json
│ │ ├── Message/
│ │ │ ├── MessageOnceSendRequest.json
│ │ │ └── MessageOnceSendResponse.json
│ │ ├── Namek/
│ │ │ └── NamekFulfilmentPrepareResponse.json
│ │ ├── OAuth/
│ │ │ ├── OAuthAccessTokenResponse.json
│ │ │ ├── OAuthBusinessScopesResponse.json
│ │ │ ├── OAuthBusinessTokenRequest.json
│ │ │ ├── OAuthBusinessTokenResponse.json
│ │ │ ├── OAuthClientTokenResponse.json
│ │ │ ├── OAuthRefreshBusinessTokenRequest.json
│ │ │ ├── OAuthRefreshBusinessTokenResponse.json
│ │ │ ├── OAuthRefreshTokenResponse.json
│ │ │ ├── OAuthRenewRefreshTokenResponse.json
│ │ │ └── User/
│ │ │ ├── OAuthUserInfoRequest.json
│ │ │ └── OAuthUserInfoResponse.json
│ │ ├── Open/
│ │ │ └── OpenGetTicketResponse.json
│ │ ├── POI/
│ │ │ ├── External/
│ │ │ │ ├── Hotel/
│ │ │ │ │ ├── POIExternalHotelOrderCancelRequest.json
│ │ │ │ │ ├── POIExternalHotelOrderCancelResponse.json
│ │ │ │ │ ├── POIExternalHotelOrderCommitRequest.json
│ │ │ │ │ ├── POIExternalHotelOrderCommitResponse.json
│ │ │ │ │ ├── POIExternalHotelOrderStatusRequest.json
│ │ │ │ │ ├── POIExternalHotelOrderStatusResponse.json
│ │ │ │ │ └── POIExternalHotelSKUResponse.json
│ │ │ │ └── PresaleGroupon/
│ │ │ │ ├── POIExternalPresaleGrouponOrderCancelRequest.json
│ │ │ │ ├── POIExternalPresaleGrouponOrderCancelResponse.json
│ │ │ │ ├── POIExternalPresaleGrouponOrderCommitRequest.json
│ │ │ │ ├── POIExternalPresaleGrouponOrderCommitResponse.json
│ │ │ │ ├── POIExternalPresaleGrouponOrderCreateRequest.json
│ │ │ │ └── POIExternalPresaleGrouponOrderCreateResponse.json
│ │ │ ├── Order/
│ │ │ │ ├── POIOrderBillTokenResponse.json
│ │ │ │ ├── POIOrderConfirmCancelPrepareRequest.json
│ │ │ │ ├── POIOrderConfirmCancelPrepareResponse.json
│ │ │ │ ├── POIOrderConfirmPrepareRequest.json
│ │ │ │ ├── POIOrderConfirmPrepareResponse.json
│ │ │ │ ├── POIOrderConfirmRequest.json
│ │ │ │ ├── POIOrderConfirmResponse.json
│ │ │ │ ├── POIOrderListTokenResponse.json
│ │ │ │ ├── POIOrderStatusRequest.json
│ │ │ │ ├── POIOrderStatusResponse.json
│ │ │ │ ├── POIOrderSyncRequest.json
│ │ │ │ └── POIOrderSyncResponse.json
│ │ │ ├── POIBaseQueryAMapResponse.json
│ │ │ ├── POIQueryResponse.json
│ │ │ ├── POISearchKeywordResponse.json
│ │ │ ├── Plan/
│ │ │ │ ├── POICommonPlanDetailRequest.json
│ │ │ │ ├── POICommonPlanDetailResponse.json
│ │ │ │ ├── POICommonPlanSaveRequest.json
│ │ │ │ ├── POICommonPlanSaveResponse.json
│ │ │ │ ├── POICommonPlanTalentDetailRequest.json
│ │ │ │ ├── POICommonPlanTalentDetailResponse.json
│ │ │ │ ├── POICommonPlanTalentListRequest.json
│ │ │ │ ├── POICommonPlanTalentListResponse.json
│ │ │ │ ├── POICommonPlanTalentMediaListRequest.json
│ │ │ │ └── POICommonPlanTalentMediaListResponse.json
│ │ │ ├── SKU/
│ │ │ │ ├── POISKUSyncRequest.json
│ │ │ │ └── POISKUSyncResponse.json
│ │ │ ├── SPU/
│ │ │ │ ├── POISPUGetV2Response.json
│ │ │ │ ├── POISPUStatusSyncV2Request.json
│ │ │ │ ├── POISPUStatusSyncV2Response.json
│ │ │ │ ├── POISPUStockUpdateV2Request.json
│ │ │ │ ├── POISPUStockUpdateV2Response.json
│ │ │ │ ├── POISPUSyncV2Request.json
│ │ │ │ ├── POISPUSyncV2Response.json
│ │ │ │ ├── POISPUTakeRateSyncV2Request.json
│ │ │ │ └── POISPUTakeRateSyncV2Response.json
│ │ │ ├── ServiceProvider/
│ │ │ │ ├── POIServiceProviderSyncV2Request.json
│ │ │ │ └── POIServiceProviderSyncV2Response.json
│ │ │ └── Supplier/
│ │ │ ├── POISupplierMatchV2Request.json
│ │ │ ├── POISupplierMatchV2Response.json
│ │ │ ├── POISupplierQueryAllResponse.json
│ │ │ ├── POISupplierQueryCallbackResponse.json
│ │ │ ├── POISupplierQueryResponse.json
│ │ │ ├── POISupplierQuerySupplierV2Response.json
│ │ │ ├── POISupplierQueryTaskV2Response.json
│ │ │ ├── POISupplierSyncRequest.json
│ │ │ └── POISupplierSyncResponse.json
│ │ ├── Room/
│ │ │ ├── RoomDataAudienceGetResponse.json
│ │ │ ├── RoomDataBaseGetResponse.json
│ │ │ ├── RoomDataInteractiveGetResponse.json
│ │ │ └── RoomDataRoomIdGetResponse.json
│ │ ├── Sandbox/
│ │ │ └── SandboxWebhookEventSendResponse.json
│ │ ├── ShareId/
│ │ │ └── ShareIdResponse.json
│ │ ├── Star/
│ │ │ ├── StarAuthorScoreResponse.json
│ │ │ ├── StarAuthorScoreV2Response.json
│ │ │ └── StarHotListResponse.json
│ │ ├── Task/
│ │ │ ├── TaskPostingBindVideoRequest.json
│ │ │ ├── TaskPostingCreateRequest.json
│ │ │ ├── TaskPostingCreateResponse.json
│ │ │ ├── TaskPostingUserRequest.json
│ │ │ └── TaskPostingUserResponse.json
│ │ ├── Tool/
│ │ │ └── ToolImagexClientUploadResponse.json
│ │ └── Video/
│ │ ├── Comment/
│ │ │ ├── VideoCommentListResponse.json
│ │ │ ├── VideoCommentReplyListResponse.json
│ │ │ └── VideoCommentReplyResponse.json
│ │ └── Search/
│ │ ├── VideoSearchCommentListResponse.json
│ │ ├── VideoSearchCommentReplyListResponse.json
│ │ ├── VideoSearchCommentReplyResponse.json
│ │ └── VideoSearchResponse.json
│ ├── SKIT.FlurlHttpClient.ByteDance.DouyinOpen.UnitTests.csproj
│ ├── TestCase_ApiExecuteOAuthTests.cs
│ ├── TestCase_DecryptionTests.cs
│ ├── TestClients.cs
│ ├── TestConfigs.cs
│ └── appsettings.json
├── SKIT.FlurlHttpClient.ByteDance.DouyinShop.UnitTests/
│ ├── .gitignore
│ ├── EventSamples/
│ │ ├── IOPTrade/
│ │ │ ├── IOPTradeDistributionEvent.json
│ │ │ ├── IOPTradeStatusReturnEvent.json
│ │ │ ├── IOPTradeUpdateReceiverEvent.json
│ │ │ └── IOPTradeUpdateRemarkEvent.json
│ │ ├── Product/
│ │ │ └── ProductChangeEvent.json
│ │ ├── Refund/
│ │ │ ├── Arbitrate/
│ │ │ │ ├── RefundArbitrateAppliedEvent.json
│ │ │ │ ├── RefundArbitrateAuditedEvent.json
│ │ │ │ ├── RefundArbitrateDiscussUploadEvent.json
│ │ │ │ └── RefundArbitrateServiceInterveneEvent.json
│ │ │ ├── RefundClosedEvent.json
│ │ │ ├── RefundCreatedEvent.json
│ │ │ ├── RefundExchangeComfirmedEvent.json
│ │ │ ├── RefundExpirationChangeEvent.json
│ │ │ ├── RefundModifiedEvent.json
│ │ │ ├── RefundRefusedEvent.json
│ │ │ ├── RefundSuccessEvent.json
│ │ │ └── Return/
│ │ │ ├── RefundBuyerReturnGoodsEvent.json
│ │ │ ├── RefundReturnAgreedEvent.json
│ │ │ ├── RefundReturnApplyAgreedEvent.json
│ │ │ └── RefundReturnApplyRefusedEvent.json
│ │ └── Trade/
│ │ ├── TradeAddressChangeAppliedEvent.json
│ │ ├── TradeAmountChangedEvent.json
│ │ ├── TradeAppointmentEvent.json
│ │ ├── TradeCanceledEvent.json
│ │ ├── TradeCreateEvent.json
│ │ ├── TradeMemoModifyEvent.json
│ │ ├── TradePaidEvent.json
│ │ ├── TradePartlySellerShipEvent.json
│ │ ├── TradePendingEvent.json
│ │ └── TradeSuccessEvent.json
│ ├── ModelSamples/
│ │ ├── Address/
│ │ │ ├── AddressCreateRequest.json
│ │ │ ├── AddressCreateResponse.json
│ │ │ ├── AddressGetAreasByProvinceRequest.json
│ │ │ ├── AddressGetAreasByProvinceResponse.json
│ │ │ ├── AddressGetProvinceResponse.json
│ │ │ ├── AddressListRequest.json
│ │ │ ├── AddressListResponse.json
│ │ │ └── AddressUpdateRequest.json
│ │ ├── Aftersale/
│ │ │ ├── AftersaleAddOrderRemarkRequest.json
│ │ │ ├── AftersaleApplyLogisticsInterceptRequest.json
│ │ │ ├── AftersaleApplyLogisticsInterceptResponse.json
│ │ │ ├── AftersaleBuyerExchangeConfirmRequest.json
│ │ │ ├── AftersaleBuyerExchangeRequest.json
│ │ │ ├── AftersaleDetailRequest.json
│ │ │ ├── AftersaleDetailResponse.json
│ │ │ ├── AftersaleListRequest.json
│ │ │ ├── AftersaleListResponse.json
│ │ │ ├── AftersaleOpenAfterSaleChannelRequest.json
│ │ │ ├── AftersaleOpenAfterSaleChannelResponse.json
│ │ │ ├── AftersaleOperateRequest.json
│ │ │ ├── AftersaleOperateResponse.json
│ │ │ ├── AftersaleRefundListSearchRequest.json
│ │ │ ├── AftersaleRefundListSearchResponse.json
│ │ │ ├── AftersaleReturnGoodsToWareHouseSuccessRequest.json
│ │ │ ├── AftersaleSubmitEvidenceRequest.json
│ │ │ └── AftersaleTimeExtendRequest.json
│ │ ├── Alliance/
│ │ │ ├── AllianceGetOrderListRequest.json
│ │ │ ├── AllianceGetOrderListResponse.json
│ │ │ └── MaterialsProducts/
│ │ │ ├── AllianceMaterialsProductsDetailsRequest.json
│ │ │ ├── AllianceMaterialsProductsDetailsResponse.json
│ │ │ ├── AllianceMaterialsProductsSearchRequest.json
│ │ │ └── AllianceMaterialsProductsSearchResponse.json
│ │ ├── AntiSpam/
│ │ │ ├── AntiSpamUserLoginRequest.json
│ │ │ └── AntiSpamUserLoginResponse.json
│ │ ├── BTAS/
│ │ │ ├── BTASGetInspectionOrderRequest.json
│ │ │ ├── BTASGetInspectionOrderResponse.json
│ │ │ ├── BTASGetOrderInspectionResultRequest.json
│ │ │ ├── BTASGetOrderInspectionResultResponse.json
│ │ │ ├── BTASListBrandResponse.json
│ │ │ ├── BTASSaveInspectionInformationRequest.json
│ │ │ ├── BTASSaveInspectionOnlineRequest.json
│ │ │ └── BTASShippingRequest.json
│ │ ├── Buyin/
│ │ │ ├── Activity/
│ │ │ │ ├── BuyinApplyActivitiesRequest.json
│ │ │ │ └── BuyinApplyActivitiesResponse.json
│ │ │ ├── BuyinInstituteOrderAdsRequest.json
│ │ │ ├── BuyinInstituteOrderAdsResponse.json
│ │ │ ├── OrientPlan/
│ │ │ │ ├── BuyinCreateOrUpdateOrientPlanRequest.json
│ │ │ │ ├── BuyinCreateOrUpdateOrientPlanResponse.json
│ │ │ │ ├── BuyinOrientPlanAuditRequest.json
│ │ │ │ ├── BuyinOrientPlanAuthorsAddRequest.json
│ │ │ │ ├── BuyinOrientPlanAuthorsAddResponse.json
│ │ │ │ ├── BuyinOrientPlanAuthorsRequest.json
│ │ │ │ ├── BuyinOrientPlanAuthorsResponse.json
│ │ │ │ ├── BuyinOrientPlanControlRequest.json
│ │ │ │ ├── BuyinOrientPlanListRequest.json
│ │ │ │ └── BuyinOrientPlanListResponse.json
│ │ │ └── Plan/
│ │ │ ├── BuyinExclusivePlanRequest.json
│ │ │ ├── BuyinExclusivePlanResponse.json
│ │ │ ├── BuyinSimplePlanRequest.json
│ │ │ └── BuyinSimplePlanResponse.json
│ │ ├── Coupons/
│ │ │ ├── CouponsAbandonRequest.json
│ │ │ ├── CouponsCancelVerifyRequest.json
│ │ │ ├── CouponsSyncV2Request.json
│ │ │ └── CouponsVerifyV2Request.json
│ │ ├── CrossBorder/
│ │ │ ├── CrossBorderBankAccountVerifyRequest.json
│ │ │ ├── CrossBorderBankAccountVerifyResponse.json
│ │ │ ├── CrossBorderOrderInterceptionRequest.json
│ │ │ ├── CrossBorderOrderInterceptionResponse.json
│ │ │ ├── CrossBorderOrderListRequest.json
│ │ │ ├── CrossBorderOrderListResponse.json
│ │ │ ├── CrossBorderQueryBalanceRequest.json
│ │ │ ├── CrossBorderQueryBalanceResponse.json
│ │ │ ├── CrossBorderStockTakingRequest.json
│ │ │ ├── CrossBorderStockTakingResponse.json
│ │ │ ├── CrossBorderStockTransformRequest.json
│ │ │ ├── CrossBorderStockTransformResponse.json
│ │ │ ├── CrossBorderWarehouseInOutboundEventRequest.json
│ │ │ └── CrossBorderWarehouseInOutboundEventResponse.json
│ │ ├── DutyFree/
│ │ │ └── DutyFreeOrderConfirmRequest.json
│ │ ├── FreightTemplate/
│ │ │ ├── FreightTemplateListRequest.json
│ │ │ └── FreightTemplateListResponse.json
│ │ ├── IOP/
│ │ │ ├── IOPOrderInformationRequest.json
│ │ │ ├── IOPOrderInformationResponse.json
│ │ │ ├── IOPOrderListRequest.json
│ │ │ ├── IOPOrderListResponse.json
│ │ │ ├── IOPRoleGetResponse.json
│ │ │ ├── Seller/
│ │ │ │ ├── IOPSellerCancelDistributeRequest.json
│ │ │ │ ├── IOPSellerCancelDistributeResponse.json
│ │ │ │ ├── IOPSellerDistributeRequest.json
│ │ │ │ ├── IOPSellerDistributeResponse.json
│ │ │ │ ├── IOPSellerOrderInformationRequest.json
│ │ │ │ ├── IOPSellerOrderInformationResponse.json
│ │ │ │ ├── IOPSellerOrderListRequest.json
│ │ │ │ ├── IOPSellerOrderListResponse.json
│ │ │ │ ├── IOPSellerSupplierListRequest.json
│ │ │ │ └── IOPSellerSupplierListResponse.json
│ │ │ └── Waybill/
│ │ │ ├── IOPWaybillCancelRequest.json
│ │ │ ├── IOPWaybillCancelResponse.json
│ │ │ ├── IOPWaybillGetRequest.json
│ │ │ ├── IOPWaybillGetResponse.json
│ │ │ ├── IOPWaybillReturnRequest.json
│ │ │ ├── IOPWaybillReturnResponse.json
│ │ │ ├── IOPWaybillUpdateRequest.json
│ │ │ └── IOPWaybillUpdateResponse.json
│ │ ├── Logistics/
│ │ │ ├── LogisticsCancelOrderRequest.json
│ │ │ ├── LogisticsCancelOrderResponse.json
│ │ │ ├── LogisticsGetCustomTemplateListRequest.json
│ │ │ ├── LogisticsGetCustomTemplateListResponse.json
│ │ │ ├── LogisticsGetOutRangeRequest.json
│ │ │ ├── LogisticsGetOutRangeResponse.json
│ │ │ ├── LogisticsListShopNetSiteRequest.json
│ │ │ ├── LogisticsListShopNetSiteResponse.json
│ │ │ ├── LogisticsNewCreateOrderRequest.json
│ │ │ ├── LogisticsNewCreateOrderResponse.json
│ │ │ ├── LogisticsTemplateListResponse.json
│ │ │ ├── LogisticsTrackNoRouteDetailRequest.json
│ │ │ └── LogisticsTrackNoRouteDetailResponse.json
│ │ ├── Material/
│ │ │ ├── Folder/
│ │ │ │ ├── MaterialCreateFolderRequest.json
│ │ │ │ ├── MaterialCreateFolderResponse.json
│ │ │ │ ├── MaterialDeleteFolderRequest.json
│ │ │ │ ├── MaterialDeleteFolderResponse.json
│ │ │ │ ├── MaterialEditFolderRequest.json
│ │ │ │ ├── MaterialGetFolderInformationRequest.json
│ │ │ │ ├── MaterialGetFolderInformationResponse.json
│ │ │ │ ├── MaterialMoveFolderToRecyleBinRequest.json
│ │ │ │ ├── MaterialMoveFolderToRecyleBinResponse.json
│ │ │ │ ├── MaterialSearchFolderRequest.json
│ │ │ │ └── MaterialSearchFolderResponse.json
│ │ │ ├── Material/
│ │ │ │ ├── MaterialDeleteMaterialRequest.json
│ │ │ │ ├── MaterialDeleteMaterialResponse.json
│ │ │ │ ├── MaterialEditMaterialRequest.json
│ │ │ │ ├── MaterialQueryMaterialDetailRequest.json
│ │ │ │ ├── MaterialQueryMaterialDetailResponse.json
│ │ │ │ ├── MaterialSearchMaterialRequest.json
│ │ │ │ └── MaterialSearchMaterialResponse.json
│ │ │ ├── MaterialUploadImageSyncRequest.json
│ │ │ ├── MaterialUploadImageSyncResponse.json
│ │ │ ├── MaterialUploadVideoAsyncRequest.json
│ │ │ └── MaterialUploadVideoAsyncResponse.json
│ │ ├── Member/
│ │ │ ├── MemberBatchUpdateRequest.json
│ │ │ ├── MemberSearchListRequest.json
│ │ │ └── MemberSearchListResponse.json
│ │ ├── OpportunityProduct/
│ │ │ ├── OpportunityProductApplyRequest.json
│ │ │ ├── OpportunityProductClueRequest.json
│ │ │ ├── OpportunityProductClueResponse.json
│ │ │ ├── OpportunityProductGetApplyProgressRequest.json
│ │ │ └── OpportunityProductGetApplyProgressResponse.json
│ │ ├── Order/
│ │ │ ├── CrossBorder/
│ │ │ │ ├── OrderGetCrossBorderFulfillInformationRequest.json
│ │ │ │ └── OrderGetCrossBorderFulfillInformationResponse.json
│ │ │ ├── Encryption/
│ │ │ │ ├── OrderBatchDecryptRequest.json
│ │ │ │ ├── OrderBatchDecryptResponse.json
│ │ │ │ ├── OrderBatchEncryptRequest.json
│ │ │ │ ├── OrderBatchEncryptResponse.json
│ │ │ │ ├── OrderBatchSearchIndexRequest.json
│ │ │ │ ├── OrderBatchSearchIndexResponse.json
│ │ │ │ ├── OrderBatchSensitiveRequest.json
│ │ │ │ └── OrderBatchSensitiveResponse.json
│ │ │ ├── Insurance/
│ │ │ │ ├── OrderInsuranceRequest.json
│ │ │ │ └── OrderInsuranceResponse.json
│ │ │ ├── Invoice/
│ │ │ │ └── OrderInvoiceUploadRequest.json
│ │ │ ├── Logistics/
│ │ │ │ ├── OrderLogisticsAddRequest.json
│ │ │ │ ├── OrderLogisticsCompanyListResponse.json
│ │ │ │ ├── OrderLogisticsEditRequest.json
│ │ │ │ └── Package/
│ │ │ │ ├── OrderLogisticsAddMultiplePackageRequest.json
│ │ │ │ ├── OrderLogisticsAddMultiplePackageResponse.json
│ │ │ │ ├── OrderLogisticsAddSinglePackageRequest.json
│ │ │ │ ├── OrderLogisticsAddSinglePackageResponse.json
│ │ │ │ └── OrderLogisticsEditByPackageRequest.json
│ │ │ ├── OrderAddOrderRemarkRequest.json
│ │ │ ├── OrderAddSerialNumberRequest.json
│ │ │ ├── OrderAddressAppliedSwitchRequest.json
│ │ │ ├── OrderAddressConfirmRequest.json
│ │ │ ├── OrderAddressModifyRequest.json
│ │ │ ├── OrderAddressSwitchConfigResponse.json
│ │ │ ├── OrderDetailRequest.json
│ │ │ ├── OrderDetailResponse.json
│ │ │ ├── OrderSearchListRequest.json
│ │ │ ├── OrderSearchListResponse.json
│ │ │ ├── OrderUpdateOrderAmountRequest.json
│ │ │ ├── OrderUpdatePostAmountRequest.json
│ │ │ ├── Service/
│ │ │ │ ├── OrderGetServiceListRequest.json
│ │ │ │ ├── OrderGetServiceListResponse.json
│ │ │ │ ├── OrderReplyServiceRequest.json
│ │ │ │ ├── OrderServiceDetailRequest.json
│ │ │ │ └── OrderServiceDetailResponse.json
│ │ │ └── Settle/
│ │ │ ├── OrderDownloadSettleItemToShopRequest.json
│ │ │ ├── OrderDownloadSettleItemToShopResponse.json
│ │ │ ├── OrderDownloadToShopRequest.json
│ │ │ ├── OrderDownloadToShopResponse.json
│ │ │ ├── OrderGetSettleBillDetailRequest.json
│ │ │ ├── OrderGetSettleBillDetailResponse.json
│ │ │ ├── OrderSettleRequest.json
│ │ │ └── OrderSettleResponse.json
│ │ ├── OrderCode/
│ │ │ ├── OrderCodeBatchGetOrderCodeByShopRequest.json
│ │ │ ├── OrderCodeBatchGetOrderCodeByShopResponse.json
│ │ │ ├── OrderCodeDownloadOrderCodeByShopRequest.json
│ │ │ ├── OrderCodeDownloadOrderCodeByShopResponse.json
│ │ │ └── OrderCodeERPShopBindOrderCodeRequest.json
│ │ ├── Product/
│ │ │ ├── ProductAddV2Request.json
│ │ │ ├── ProductAddV2Response.json
│ │ │ ├── ProductDeleteRequest.json
│ │ │ ├── ProductDetailRequest.json
│ │ │ ├── ProductDetailResponse.json
│ │ │ ├── ProductEditBuyerLimitRequest.json
│ │ │ ├── ProductGetCategoryPropertyRequest.json
│ │ │ ├── ProductGetCategoryPropertyResponse.json
│ │ │ ├── ProductSetOfflineRequest.json
│ │ │ ├── ProductSetOnlineRequest.json
│ │ │ └── Quality/
│ │ │ ├── ProductQualityDetailRequest.json
│ │ │ ├── ProductQualityDetailResponse.json
│ │ │ ├── ProductQualityListRequest.json
│ │ │ ├── ProductQualityListResponse.json
│ │ │ ├── ProductQualityTaskRequest.json
│ │ │ └── ProductQualityTaskResponse.json
│ │ ├── Recycle/
│ │ │ ├── RecycleApplyChangePriceRequest.json
│ │ │ ├── RecycleApplyChangePriceResponse.json
│ │ │ ├── RecycleChangePriceRequest.json
│ │ │ ├── RecycleConfirmReceiveRequest.json
│ │ │ ├── RecycleCreatePriceRequest.json
│ │ │ ├── RecycleLogisticsBackRequest.json
│ │ │ ├── RecycleLogisticsBackResponse.json
│ │ │ ├── RecycleQualityTestingResultRequest.json
│ │ │ └── RecycleSellSucceedRequest.json
│ │ ├── SKU/
│ │ │ ├── SKUEditCodeRequest.json
│ │ │ ├── SKUEditPriceRequest.json
│ │ │ ├── SKUListRequest.json
│ │ │ ├── SKUListResponse.json
│ │ │ ├── SKUStockNumberRequest.json
│ │ │ ├── SKUStockNumberResponse.json
│ │ │ └── SKUSyncStockRequest.json
│ │ ├── SPU/
│ │ │ ├── SPUAddShopSPURequest.json
│ │ │ ├── SPUAddShopSPUResponse.json
│ │ │ ├── SPUGetKeyPropertyByCategoryIdRequest.json
│ │ │ ├── SPUGetKeyPropertyByCategoryIdResponse.json
│ │ │ ├── SPUGetSPUInformationBySPUIdRequest.json
│ │ │ ├── SPUGetSPUInformationBySPUIdResponse.json
│ │ │ ├── SPUGetSPUTemplateRequest.json
│ │ │ └── SPUGetSPUTemplateResponse.json
│ │ ├── Shop/
│ │ │ ├── ShopBandListResponse.json
│ │ │ └── ShopGetShopCategoryResponse.json
│ │ ├── Storage/
│ │ │ └── StorageNotifySaleReturnStatusRequest.json
│ │ ├── Token/
│ │ │ ├── TokenCreateRequest.json
│ │ │ └── TokenCreateResponse.json
│ │ └── Warehouse/
│ │ ├── WarehouseCreateBatchRequest.json
│ │ ├── WarehouseCreateBatchResponse.json
│ │ ├── WarehouseCreateRequest.json
│ │ ├── WarehouseCreateResponse.json
│ │ ├── WarehouseEditRequest.json
│ │ ├── WarehouseInformationRequest.json
│ │ ├── WarehouseInformationResponse.json
│ │ ├── WarehouseListRequest.json
│ │ ├── WarehouseListResponse.json
│ │ ├── WarehouseRemoveAddressRequest.json
│ │ ├── WarehouseSetAddressRequest.json
│ │ └── WarehouseSetPriorityRequest.json
│ ├── SKIT.FlurlHttpClient.ByteDance.DouyinShop.UnitTests.csproj
│ ├── TestCase_ApiExecuteTokenTests.cs
│ ├── TestCase_CodeReview.cs
│ ├── TestClients.cs
│ ├── TestConfigs.cs
│ └── appsettings.json
├── SKIT.FlurlHttpClient.ByteDance.MicroApp.UnitTests/
│ ├── .gitignore
│ ├── EventSamples/
│ │ ├── OpenApi/
│ │ │ ├── Auth/
│ │ │ │ ├── ComponentAuthorizedEvent.json
│ │ │ │ ├── ComponentPushTicketEvent.json
│ │ │ │ ├── ComponentUnauthorizedEvent.json
│ │ │ │ └── ComponentUpdateAuthorizedEvent.json
│ │ │ ├── MicroAppManagement/
│ │ │ │ ├── AppNameResetEvent.json
│ │ │ │ ├── ModifyAppCategoryEvent.json
│ │ │ │ ├── ModifyAppIconEvent.json
│ │ │ │ ├── ModifyAppIntroductionEvent.json
│ │ │ │ ├── ModifyAppNameEvent.json
│ │ │ │ └── PackageAuditEvent.json
│ │ │ └── MicroAppOperation/
│ │ │ ├── AliasAuditResultEvent.json
│ │ │ ├── ApplyCapabilityEvent.json
│ │ │ ├── ApplyLiveCapabilityEvent.json
│ │ │ ├── ApplyPhoneNumberCapabilityEvent.json
│ │ │ ├── ApplyShareTemplateEvent.json
│ │ │ ├── ApplyVideoCapabilityEvent.json
│ │ │ ├── AwemePermissionAuditResultEvent.json
│ │ │ ├── AwemeVideoKeywordAuditResultEvent.json
│ │ │ ├── BindAwemeUserEvent.json
│ │ │ ├── CreateSubscribeNotificationTemplateResultEvent.json
│ │ │ ├── ScopeQuotaAuditResultEvent.json
│ │ │ ├── SearchTagAuditResultEvent.json
│ │ │ └── SelfMountBindEvent.json
│ │ ├── ProductApi/
│ │ │ ├── ProductEvent.json
│ │ │ ├── ProductFulfilmentEvent.json
│ │ │ ├── ProductQualificationEvent.json
│ │ │ └── ProductResourceEvent.json
│ │ └── _/
│ │ └── Message/
│ │ ├── ImageMessageEvent.json
│ │ ├── ImageMessageEvent.xml
│ │ ├── TextMessageEvent.json
│ │ └── TextMessageEvent.xml
│ ├── IMPORTANT_CodeAnalyzeTests.cs
│ ├── ModelSamples/
│ │ ├── OpenApi/
│ │ │ ├── AppsBasicInfo/
│ │ │ │ ├── OpenAppsBasicInfoGetInfoV2Response.json
│ │ │ │ ├── OpenAppsBasicInfoGetQrcodeV2Request.json
│ │ │ │ ├── OpenAppsBasicInfoGetQrcodeV2Response.json
│ │ │ │ ├── OpenAppsBasicInfoModifyAppIntroductionV2Request.json
│ │ │ │ └── OpenAppsBasicInfoModifyAppNameV2Request.json
│ │ │ ├── AppsCategory/
│ │ │ │ ├── OpenAppsCategoryAddCategoriesV1Request.json
│ │ │ │ ├── OpenAppsCategoryDeleteCategoriesV1Request.json
│ │ │ │ ├── OpenAppsCategoryGetAllCategoriesV1Response.json
│ │ │ │ ├── OpenAppsCategoryGetAuditCategoriesV1Response.json
│ │ │ │ └── OpenAppsCategorySupplyCategoriesV1Request.json
│ │ │ ├── AppsCreditScore/
│ │ │ │ └── OpenAppsCreditScoreGetCreditScoreV2Response.json
│ │ │ ├── AppsDomain/
│ │ │ │ ├── OpenAppsDomainModifyServerDomainV2Request.json
│ │ │ │ ├── OpenAppsDomainModifyServerDomainV2Response.json
│ │ │ │ ├── OpenAppsDomainModifyWebviewDomainV2Request.json
│ │ │ │ └── OpenAppsDomainModifyWebviewDomainV2Response.json
│ │ │ ├── AppsICPRecord/
│ │ │ │ ├── OpenAppsICPRecordGetFacialRecognitionUrlV1Response.json
│ │ │ │ ├── OpenAppsICPRecordQueryCorpTypeListV1Response.json
│ │ │ │ ├── OpenAppsICPRecordQueryFacialRecognitionStatusV1Response.json
│ │ │ │ ├── OpenAppsICPRecordQueryInchargePeopleCredentialsTypeListV1Response.json
│ │ │ │ ├── OpenAppsICPRecordQueryPreApprovalItemTypeListV1Response.json
│ │ │ │ ├── OpenAppsICPRecordQueryRecordStatusV1Response.json
│ │ │ │ ├── OpenAppsICPRecordQueryRegionListV1Response.json
│ │ │ │ ├── OpenAppsICPRecordQueryServiceContentTypeListV1Response.json
│ │ │ │ ├── OpenAppsICPRecordSendFacialRecognitionNotifyV1Request.json
│ │ │ │ ├── OpenAppsICPRecordSendFacialRecognitionNotifyV1Response.json
│ │ │ │ ├── OpenAppsICPRecordSubmitRecordInfoV1Request.json
│ │ │ │ └── OpenAppsICPRecordUploadImageV1Response.json
│ │ │ ├── AppsMicroApp/
│ │ │ │ ├── OpenAppsMicroAppCode2SessionV1Request.json
│ │ │ │ └── OpenAppsMicroAppCode2SessionV1Response.json
│ │ │ ├── AppsPackageVersion/
│ │ │ │ ├── OpenAppsPackageVersionAuditV1Request.json
│ │ │ │ ├── OpenAppsPackageVersionGetAuditHostsV1Response.json
│ │ │ │ ├── OpenAppsPackageVersionGetVersionsV1Response.json
│ │ │ │ └── OpenAppsPackageVersionUploadV1Request.json
│ │ │ ├── AppsTrial/
│ │ │ │ └── OpenAppsTrialGetTrialInfoV2Response.json
│ │ │ ├── Platform/
│ │ │ │ └── Webhook/
│ │ │ │ ├── OpenPlatformWebhookEventStatusListV1Response.json
│ │ │ │ ├── OpenPlatformWebhookResetSecretV1Response.json
│ │ │ │ ├── OpenPlatformWebhookSaveCallbackUrlV1Request.json
│ │ │ │ └── OpenPlatformWebhookUpdateEventStatusV1Request.json
│ │ │ ├── TpAppAuth/
│ │ │ │ ├── OpenAuthThirdPartyTokenV2Response.json
│ │ │ │ ├── OpenTpAppAuthGenerateLinkV3Request.json
│ │ │ │ ├── OpenTpAppAuthGenerateLinkV3Response.json
│ │ │ │ ├── OpenTpAppAuthGetAuthAppListV2Response.json
│ │ │ │ ├── OpenTpAppAuthGetAuthTokenV2Response.json
│ │ │ │ ├── OpenTpAppAuthRetrieveAuthCodeV2Request.json
│ │ │ │ └── OpenTpAppAuthRetrieveAuthCodeV2Response.json
│ │ │ ├── TpAppDomain/
│ │ │ │ └── OpenTpAppDomainGetWebviewCheckFileInfoV2Response.json
│ │ │ ├── TpAppFile/
│ │ │ │ └── OpenTpAppFileUploadMaterialV2Response.json
│ │ │ ├── TpAppTemplate/
│ │ │ │ ├── OpenTpAppTemplateAddTemplateV2Request.json
│ │ │ │ ├── OpenTpAppTemplateDeleteTemplateV2Request.json
│ │ │ │ ├── OpenTpAppTemplateGetTemplateAppListV2Response.json
│ │ │ │ └── OpenTpAppTemplateGetTemplateListV2Response.json
│ │ │ └── _Legacy/
│ │ │ ├── Auth/
│ │ │ │ ├── OpenApiAuthGenerateLinkV2Response.json
│ │ │ │ ├── OpenApiAuthPreAuthCodeV2Request.json
│ │ │ │ ├── OpenApiAuthPreAuthCodeV2Response.json
│ │ │ │ ├── OpenApiAuthRetrieveV1Response.json
│ │ │ │ ├── OpenApiAuthThirdPartyTokenV1Response.json
│ │ │ │ └── OpenApiOAuthTokenV1Response.json
│ │ │ ├── MicroApp/
│ │ │ │ ├── App/
│ │ │ │ │ ├── Category/
│ │ │ │ │ │ ├── OpenApiMicroAppAppAddCategoriesV1Request.json
│ │ │ │ │ │ ├── OpenApiMicroAppAppAllCategoriesV1Response.json
│ │ │ │ │ │ ├── OpenApiMicroAppAppCategoriesV1Response.json
│ │ │ │ │ │ ├── OpenApiMicroAppAppDeleteCategoriesV1Request.json
│ │ │ │ │ │ └── OpenApiMicroAppAppSupplyCategoriesV1Request.json
│ │ │ │ │ ├── OpenApiMicroAppAppCreditScoreV1Response.json
│ │ │ │ │ ├── OpenApiMicroAppAppInfoV1Response.json
│ │ │ │ │ ├── OpenApiMicroAppAppModifyAppIconV1Request.json
│ │ │ │ │ ├── OpenApiMicroAppAppModifyAppIntroductionV1Request.json
│ │ │ │ │ ├── OpenApiMicroAppAppModifyAppNameV1Request.json
│ │ │ │ │ ├── OpenApiMicroAppAppModifyServerDomainV1Request.json
│ │ │ │ │ ├── OpenApiMicroAppAppModifyServerDomainV1Response.json
│ │ │ │ │ ├── OpenApiMicroAppAppModifyWebviewDomainV1Request.json
│ │ │ │ │ ├── OpenApiMicroAppAppModifyWebviewDomainV1Response.json
│ │ │ │ │ ├── OpenApiMicroAppAppQrcodeV1Request.json
│ │ │ │ │ └── OpenApiMicroAppAppQualityRatingV1Response.json
│ │ │ │ ├── OpenApiMicroAppCode2SessionV1Response.json
│ │ │ │ ├── OpenApiMicroAppUploadMaterialV1Response.json
│ │ │ │ ├── Operation/
│ │ │ │ │ ├── Application/
│ │ │ │ │ │ ├── OpenApiMicroAppOperationLiveApplicationStatusV1Response.json
│ │ │ │ │ │ ├── OpenApiMicroAppOperationLiveApplicationV1Request.json
│ │ │ │ │ │ ├── OpenApiMicroAppOperationPhoneNumberApplicationStatusV1Response.json
│ │ │ │ │ │ ├── OpenApiMicroAppOperationPhoneNumberApplicationV1Request.json
│ │ │ │ │ │ ├── OpenApiMicroAppOperationVideoApplicationStatusV1Response.json
│ │ │ │ │ │ └── OpenApiMicroAppOperationVideoApplicationV1Request.json
│ │ │ │ │ ├── ShareTemplate/
│ │ │ │ │ │ ├── OpenApiMicroAppOperationAddShareTemplateV1Request.json
│ │ │ │ │ │ ├── OpenApiMicroAppOperationDeleteShareTemplateV1Request.json
│ │ │ │ │ │ ├── OpenApiMicroAppOperationModifyShareTemplateV1Request.json
│ │ │ │ │ │ ├── OpenApiMicroAppOperationSetDefaultShareTemplateV1Request.json
│ │ │ │ │ │ └── OpenApiMicroAppOperationShareTemplateListV1Response.json
│ │ │ │ │ └── ShopMaterial/
│ │ │ │ │ ├── OpenApiMicroAppOperationAddShopMaterialV1Request.json
│ │ │ │ │ └── OpenApiMicroAppOperationQueryShopMaterialV1Response.json
│ │ │ │ └── Package/
│ │ │ │ ├── OpenApiMicroAppPackageAuditHostsV1Response.json
│ │ │ │ ├── OpenApiMicroAppPackageAuditV2Request.json
│ │ │ │ ├── OpenApiMicroAppPackageUploadV1Request.json
│ │ │ │ └── OpenApiMicroAppPackageVersionsV1Response.json
│ │ │ ├── Settle/
│ │ │ │ ├── OpenApiSettleApplyV1Request.json
│ │ │ │ ├── OpenApiSettleApplyV1Response.json
│ │ │ │ ├── OpenApiSettleGetApplyStatusV1Response.json
│ │ │ │ └── OpenApiSettlePreCheckV1Request.json
│ │ │ └── ThirdParty/
│ │ │ ├── OpenApiThirdPartyAuthAppListV1Response.json
│ │ │ ├── OpenApiThirdPartyUploadPictureMaterialV1Response.json
│ │ │ ├── POI/
│ │ │ │ ├── OpenApiThirdPartyPOIBaseQueryAMapV1Response.json
│ │ │ │ ├── OpenApiThirdPartyPOISupplierMatchV1Request.json
│ │ │ │ ├── OpenApiThirdPartyPOISupplierMatchV1Response.json
│ │ │ │ ├── OpenApiThirdPartyPOISupplierQueryMatchTaskV1Response.json
│ │ │ │ ├── OpenApiThirdPartyPOISupplierQueryMatchV1Response.json
│ │ │ │ ├── OpenApiThirdPartyPOISupplierQueryV1Response.json
│ │ │ │ └── OpenApiThirdPartyPOISupplierSyncV1Request.json
│ │ │ └── Template/
│ │ │ ├── OpenApiThirdPartyTemplateAddTemplateV1Request.json
│ │ │ ├── OpenApiThirdPartyTemplateDeleteTemplateV1Request.json
│ │ │ ├── OpenApiThirdPartyTemplateGetTemplateAppListV1Response.json
│ │ │ └── OpenApiThirdPartyTemplateGetTemplateListV1Response.json
│ │ ├── ProductApi/
│ │ │ ├── Callback/
│ │ │ │ ├── ProductSyncCallbackUrlRequest.json
│ │ │ │ └── ProductSyncCallbackUrlResponse.json
│ │ │ ├── Product/
│ │ │ │ ├── ProductAddRequest.json
│ │ │ │ ├── ProductAddResponse.json
│ │ │ │ ├── ProductModifyNoAuditRequest.json
│ │ │ │ ├── ProductModifyNoAuditResponse.json
│ │ │ │ ├── ProductModifyRequest.json
│ │ │ │ ├── ProductModifyResponse.json
│ │ │ │ ├── ProductModifyStatusRequest.json
│ │ │ │ ├── ProductModifyStatusResponse.json
│ │ │ │ ├── ProductQueryClassInfoRequest.json
│ │ │ │ ├── ProductQueryClassInfoResponse.json
│ │ │ │ ├── ProductQueryRequest.json
│ │ │ │ ├── ProductQueryResponse.json
│ │ │ │ ├── ProductQueryReviewRequest.json
│ │ │ │ ├── ProductQueryReviewResponse.json
│ │ │ │ ├── ProductQueryTemplateInfoRequest.json
│ │ │ │ └── ProductQueryTemplateInfoResponse.json
│ │ │ ├── Qualification/
│ │ │ │ ├── ProductAddQualificationRequest.json
│ │ │ │ ├── ProductAddQualificationResponse.json
│ │ │ │ ├── ProductModifyQualificationRequest.json
│ │ │ │ ├── ProductModifyQualificationResponse.json
│ │ │ │ ├── ProductQueryQualificationRequest.json
│ │ │ │ └── ProductQueryQualificationResponse.json
│ │ │ ├── RefundRule/
│ │ │ │ ├── ProductModifyRefundRuleRequest.json
│ │ │ │ ├── ProductQueryRefundRuleMetaRequest.json
│ │ │ │ └── ProductQueryRefundRuleMetaResponse.json
│ │ │ └── Resource/
│ │ │ ├── ProductQueryResourceStatusRequest.json
│ │ │ ├── ProductQueryResourceStatusResponse.json
│ │ │ ├── ProductUploadResourceRequest.json
│ │ │ └── ProductUploadResourceResponse.json
│ │ ├── RoleApi/
│ │ │ ├── Auth/
│ │ │ │ ├── AuthEntityAddClassAuthRequest.json
│ │ │ │ ├── AuthEntityAddClassAuthResponse.json
│ │ │ │ ├── AuthEntityByPartnerRequest.json
│ │ │ │ ├── AuthEntityByPartnerResponse.json
│ │ │ │ ├── AuthEntityBySelfRequest.json
│ │ │ │ ├── AuthEntityBySelfResponse.json
│ │ │ │ ├── AuthEntityGetAuditDetailRequest.json
│ │ │ │ ├── AuthEntityGetAuditDetailResponse.json
│ │ │ │ ├── AuthEntityGetBasicAuthRequest.json
│ │ │ │ ├── AuthEntityGetBasicAuthResponse.json
│ │ │ │ ├── AuthEntityGetClassAuthRequest.json
│ │ │ │ ├── AuthEntityGetClassAuthResponse.json
│ │ │ │ ├── AuthEntityUpdateBasicAuthRequest.json
│ │ │ │ ├── AuthEntityUpdateBasicAuthResponse.json
│ │ │ │ ├── AuthEntityUpdateClassAuthRequest.json
│ │ │ │ └── AuthEntityUpdateClassAuthResponse.json
│ │ │ ├── AuthEntityQueryEntityInfoRequest.json
│ │ │ ├── AuthEntityQueryEntityInfoResponse.json
│ │ │ ├── AuthEntityUploadMaterialResponse.json
│ │ │ ├── Bind/
│ │ │ │ ├── AuthEntityEnableMountScopeRequest.json
│ │ │ │ ├── AuthEntityQueryBindToCListRequest.json
│ │ │ │ ├── AuthEntityQueryBindToCListResponse.json
│ │ │ │ ├── AuthEntityQueryMountScopeRequest.json
│ │ │ │ ├── AuthEntityQueryMountScopeResponse.json
│ │ │ │ └── AuthEntityUnbindAccountRequest.json
│ │ │ ├── MerchantCode/
│ │ │ │ ├── AuthEntityActivateMerchantCodeRequest.json
│ │ │ │ ├── AuthEntityQueryMerchantCodeStatusRequest.json
│ │ │ │ └── AuthEntityQueryMerchantCodeStatusResponse.json
│ │ │ └── Role/
│ │ │ ├── AuthEntityAddRoleRequest.json
│ │ │ ├── AuthEntityAddRoleResponse.json
│ │ │ ├── AuthEntityAuthRoleRequest.json
│ │ │ ├── AuthEntityAuthRoleResponse.json
│ │ │ ├── AuthEntityBindRoleRequest.json
│ │ │ ├── AuthEntityGetAppIdAuthRequest.json
│ │ │ ├── AuthEntityGetAppIdAuthResponse.json
│ │ │ ├── AuthEntityGetBindListRequest.json
│ │ │ ├── AuthEntityGetBindListResponse.json
│ │ │ ├── AuthEntityUnauthRoleRequest.json
│ │ │ ├── AuthEntityUnbindRoleRequest.json
│ │ │ ├── AuthEntityUpdateAuthLetterRequest.json
│ │ │ └── AuthEntityUpdateAuthLetterResponse.json
│ │ ├── Webcast/
│ │ │ ├── Audience/
│ │ │ │ ├── WebcastAudienceJoinGameRequest.json
│ │ │ │ └── WebcastAudienceLeaveGameRequest.json
│ │ │ ├── Business/
│ │ │ │ ├── WebcastBusinessDiamondOrderAckRequest.json
│ │ │ │ ├── WebcastBusinessDiamondOrderAckResponse.json
│ │ │ │ ├── WebcastBusinessDiamondQueryRequest.json
│ │ │ │ ├── WebcastBusinessDiamondQueryResponse.json
│ │ │ │ ├── WebcastBusinessDiamondReconciliationRequest.json
│ │ │ │ ├── WebcastBusinessDiamondReconciliationResponse.json
│ │ │ │ ├── WebcastBusinessOrderPrecreateRequest.json
│ │ │ │ └── WebcastBusinessOrderPrecreateResponse.json
│ │ │ ├── Card/
│ │ │ │ ├── WebcastCardDefaultGetResponse.json
│ │ │ │ ├── WebcastCardDefaultSetRequest.json
│ │ │ │ ├── WebcastCardDefaultSetResponse.json
│ │ │ │ ├── WebcastCardDeleteRequest.json
│ │ │ │ ├── WebcastCardDeleteResponse.json
│ │ │ │ ├── WebcastCardGetAllCardsForUserResponse.json
│ │ │ │ ├── WebcastCardGetRequest.json
│ │ │ │ ├── WebcastCardGetResponse.json
│ │ │ │ ├── WebcastCardSetRequest.json
│ │ │ │ ├── WebcastCardSetResponse.json
│ │ │ │ ├── WebcastCardUpdateRequest.json
│ │ │ │ └── WebcastCardUpdateResponse.json
│ │ │ ├── File/
│ │ │ │ ├── WebcastFileCardImageGetRequest.json
│ │ │ │ ├── WebcastFileCardImageGetResponse.json
│ │ │ │ └── WebcastFileCardImageUploadResponse.json
│ │ │ ├── GamingCon/
│ │ │ │ ├── WebcastGamingConRoundCoGameUploadUserDataRequest.json
│ │ │ │ ├── WebcastGamingConRoundCompleteUploadUserResultRequest.json
│ │ │ │ ├── WebcastGamingConRoundSyncStatusRequest.json
│ │ │ │ ├── WebcastGamingConRoundUploadRankListRequest.json
│ │ │ │ ├── WebcastGamingConRoundUploadUserGroupInfoRequest.json
│ │ │ │ ├── WebcastGamingConRoundUploadUserResultRequest.json
│ │ │ │ ├── WebcastGamingConWorldRankCompleteUploadUserResultRequest.json
│ │ │ │ ├── WebcastGamingConWorldRankSetValidVersionRequest.json
│ │ │ │ ├── WebcastGamingConWorldRankUploadRankListRequest.json
│ │ │ │ └── WebcastGamingConWorldRankUploadUserResultRequest.json
│ │ │ ├── Gift/
│ │ │ │ ├── WebcastGiftTopGiftRequest.json
│ │ │ │ └── WebcastGiftTopGiftResponse.json
│ │ │ ├── LinkMic/
│ │ │ │ ├── WebcastLinkMicQueryRequest.json
│ │ │ │ └── WebcastLinkMicQueryResponse.json
│ │ │ ├── LiveData/
│ │ │ │ ├── WebcastLiveDataTaskFailDataGetResponse.json
│ │ │ │ ├── WebcastLiveDataTaskGetResponse.json
│ │ │ │ ├── WebcastLiveDataTaskStartRequest.json
│ │ │ │ ├── WebcastLiveDataTaskStartResponse.json
│ │ │ │ └── WebcastLiveDataTaskStopRequest.json
│ │ │ ├── Quiz/
│ │ │ │ └── WebcastQuizGetResponse.json
│ │ │ └── WebcastMate/
│ │ │ ├── WebcastWebcastMateInfoRequest.json
│ │ │ └── WebcastWebcastMateInfoResponse.json
│ │ └── _/
│ │ ├── AppsAdPlacement/
│ │ │ ├── AppsAdPlacementAddV1Request.json
│ │ │ ├── AppsAdPlacementQueryV1Response.json
│ │ │ └── AppsAdPlacementUpdateV1Request.json
│ │ ├── AppsAuth/
│ │ │ ├── AppsAuthGetRelatedIdV1Request.json
│ │ │ └── AppsAuthGetRelatedIdV1Response.json
│ │ ├── AppsCapacity/
│ │ │ ├── Ad/
│ │ │ │ ├── AppsCapacityQueryAdIncomeV3Response.json
│ │ │ │ └── AppsCapacityQueryAdSettlementListV3Response.json
│ │ │ ├── AwemeBind/
│ │ │ │ ├── AppsCapacityBindAwemeRelationV1Request.json
│ │ │ │ ├── AppsCapacityGetAwemeBindTemplateInfoV1Request.json
│ │ │ │ ├── AppsCapacityGetAwemeBindTemplateInfoV1Response.json
│ │ │ │ ├── AppsCapacityGetAwemeBindTemplateListV1Request.json
│ │ │ │ ├── AppsCapacityGetAwemeBindTemplateListV1Response.json
│ │ │ │ ├── AppsCapacityGetAwemeRelationBindQrcodeV1Response.json
│ │ │ │ ├── AppsCapacityQueryAwemeRelationListV1Response.json
│ │ │ │ └── AppsCapacityUnbindAwemeRelationV1Request.json
│ │ │ ├── AwemeKeyword/
│ │ │ │ ├── AppsCapacityAddAwemeVideoKeywordV1Request.json
│ │ │ │ ├── AppsCapacityDeleteAwemeVideoKeywordV1Request.json
│ │ │ │ └── AppsCapacityQueryAwemeVideoKeywordListV1Response.json
│ │ │ ├── Delivery/
│ │ │ │ ├── AppsCapacityCreateAliasV1Request.json
│ │ │ │ ├── AppsCapacityDeleteAliasV1Request.json
│ │ │ │ ├── AppsCapacityListAliasV1Response.json
│ │ │ │ ├── AppsCapacityModifyAliasV1Request.json
│ │ │ │ ├── AppsCapacityQuerySearchTagListV1Response.json
│ │ │ │ └── AppsCapacitySetSearchTagV1Request.json
│ │ │ ├── SimpleQrcode/
│ │ │ │ ├── AppsCapacityAddSimpleQrcodeBindV2Request.json
│ │ │ │ ├── AppsCapacityDeleteSimpleQrcodeBindV2Request.json
│ │ │ │ ├── AppsCapacityQuerySimpleQrcodeBindListV2Response.json
│ │ │ │ ├── AppsCapacityUpdateSimpleQrcodeBindStatusV2Request.json
│ │ │ │ └── AppsCapacityUpdateSimpleQrcodeBindV2Request.json
│ │ │ └── SubService/
│ │ │ ├── AppsCapacityCreateMicroAppSubServiceV1Request.json
│ │ │ └── AppsCapacityQueryMicroAppSubServiceV1Response.json
│ │ ├── AppsCategory/
│ │ │ └── AppsCategoryQueryAppCategoriesV1Response.json
│ │ ├── AppsCensor/
│ │ │ ├── AppsCensorImageV1Request.json
│ │ │ └── AppsCensorImageV1Response.json
│ │ ├── AppsDeveloperToolbox/
│ │ │ ├── AppsDeveloperToolboxImageMaterialFunctionConfigAddV1Request.json
│ │ │ ├── AppsDeveloperToolboxImageMaterialFunctionConfigQueryStatusV1Response.json
│ │ │ ├── AppsDeveloperToolboxImageMaterialUploadV1Request.json
│ │ │ └── AppsDeveloperToolboxImageMaterialUploadV1Response.json
│ │ ├── AppsDouyin/
│ │ │ ├── InteractTask/
│ │ │ │ ├── AppsDouyinCreateInteractTaskV1Request.json
│ │ │ │ ├── AppsDouyinCreateInteractTaskV1Response.json
│ │ │ │ ├── AppsDouyinQueryUserInteractTaskV1Request.json
│ │ │ │ └── AppsDouyinQueryUserInteractTaskV1Response.json
│ │ │ └── Task/
│ │ │ ├── AppsDouyinCreateTaskV1Request.json
│ │ │ ├── AppsDouyinCreateTaskV1Response.json
│ │ │ ├── AppsDouyinQueryUserTaskV1Request.json
│ │ │ └── AppsDouyinQueryUserTaskV1Response.json
│ │ ├── AppsECPay/
│ │ │ ├── Bill/
│ │ │ │ ├── AppsBillsV3Request.json
│ │ │ │ ├── AppsBillsV3Response.json
│ │ │ │ ├── AppsFundBillsV3Request.json
│ │ │ │ └── AppsFundBillsV3Response.json
│ │ │ └── SaaS/
│ │ │ ├── Applyment/
│ │ │ │ ├── AppsECPaySaaSCreateMerchantV3Request.json
│ │ │ │ ├── AppsECPaySaaSCreateMerchantV3Response.json
│ │ │ │ ├── AppsECPaySaaSImageUploadV3Response.json
│ │ │ │ ├── AppsECPaySaaSQueryMerchantStatusV3Request.json
│ │ │ │ └── AppsECPaySaaSQueryMerchantStatusV3Response.json
│ │ │ ├── Links/
│ │ │ │ ├── AppsECPaySaaSAddMerchantV3Request.json
│ │ │ │ ├── AppsECPaySaaSAddMerchantV3Response.json
│ │ │ │ ├── AppsECPaySaaSAddSubMerchantV3Request.json
│ │ │ │ ├── AppsECPaySaaSAddSubMerchantV3Response.json
│ │ │ │ ├── AppsECPaySaaSAppAddSubMerchantV3Request.json
│ │ │ │ ├── AppsECPaySaaSAppAddSubMerchantV3Response.json
│ │ │ │ ├── AppsECPaySaaSGetAppMerchantV3Request.json
│ │ │ │ └── AppsECPaySaaSGetAppMerchantV3Response.json
│ │ │ └── Withdraw/
│ │ │ ├── AppsECPaySaaSMerchantWithdrawV3Request.json
│ │ │ ├── AppsECPaySaaSMerchantWithdrawV3Response.json
│ │ │ ├── AppsECPaySaaSQueryMerchantBalanceV3Request.json
│ │ │ ├── AppsECPaySaaSQueryMerchantBalanceV3Response.json
│ │ │ ├── AppsECPaySaaSQueryWithdrawOrderV3Request.json
│ │ │ └── AppsECPaySaaSQueryWithdrawOrderV3Response.json
│ │ ├── AppsItem/
│ │ │ ├── AppsItemBCGetBaseV1Response.json
│ │ │ ├── AppsItemBCGetCommentV1Response.json
│ │ │ ├── AppsItemBCGetLikeV1Response.json
│ │ │ ├── AppsItemBCGetPlayV1Response.json
│ │ │ ├── AppsItemBCGetShareV1Response.json
│ │ │ ├── AppsItemGetBaseV1Response.json
│ │ │ ├── AppsItemGetCommentV1Response.json
│ │ │ ├── AppsItemGetLikeV1Response.json
│ │ │ ├── AppsItemGetPlayV1Response.json
│ │ │ ├── AppsItemGetShareV1Response.json
│ │ │ └── Comment/
│ │ │ ├── AppsItemBCListCommentReplyV1Response.json
│ │ │ ├── AppsItemBCListCommentV1Response.json
│ │ │ ├── AppsItemBCReplyCommentV1Request.json
│ │ │ ├── AppsItemBCReplyCommentV1Response.json
│ │ │ ├── AppsItemBCTopCommentV1Request.json
│ │ │ ├── AppsItemListCommentReplyV1Response.json
│ │ │ ├── AppsItemListCommentV1Response.json
│ │ │ ├── AppsItemReplyCommentV1Request.json
│ │ │ ├── AppsItemReplyCommentV1Response.json
│ │ │ └── AppsItemTopCommentV1Request.json
│ │ ├── AppsLiveBooking/
│ │ │ ├── AppsLiveBookingVideoCancelV2Request.json
│ │ │ ├── AppsLiveBookingVideoCancelV2Response.json
│ │ │ ├── AppsLiveBookingVideoCreateV2Request.json
│ │ │ └── AppsLiveBookingVideoCreateV2Response.json
│ │ ├── AppsPlayletBusiness/
│ │ │ ├── AppsPlayletBusinessUploadV1Request.json
│ │ │ └── AppsPlayletBusinessUploadV1Response.json
│ │ ├── AppsPrivacySetting/
│ │ │ ├── AppsPrivacySettingAddV1Request.json
│ │ │ └── AppsPrivacySettingQueryV1Response.json
│ │ ├── AppsQrcode/
│ │ │ ├── AppsQrcodeCreateV1Request.json
│ │ │ └── AppsQrcodeCreateV1Response.json
│ │ ├── AppsSearch/
│ │ │ ├── AppsSearchDeleteIndexV1Request.json
│ │ │ └── AppsSearchUploadSitemapV1Request.json
│ │ ├── AppsShare/
│ │ │ └── Task/
│ │ │ ├── AppsShareCreateTaskV1Request.json
│ │ │ ├── AppsShareCreateTaskV1Response.json
│ │ │ ├── AppsShareQueryUserTaskV1Request.json
│ │ │ └── AppsShareQueryUserTaskV1Response.json
│ │ ├── AppsTask/
│ │ │ ├── AppsTaskCreateLiveV2Request.json
│ │ │ ├── AppsTaskCreateLiveV2Response.json
│ │ │ ├── AppsTaskCreateVideoV2Request.json
│ │ │ ├── AppsTaskCreateVideoV2Response.json
│ │ │ ├── AppsTaskWriteoffLiveV2Request.json
│ │ │ └── AppsTaskWriteoffVideoV2Request.json
│ │ ├── AppsTrade/
│ │ │ ├── AppsTradeToolkitButtonWhiteSettingV2Request.json
│ │ │ ├── AppsTradeToolkitQueryTextV2Request.json
│ │ │ ├── AppsTradeToolkitQueryTextV2Response.json
│ │ │ ├── AppsTradeToolkitUpdateMerchantConfigV2Request.json
│ │ │ └── AppsTradeToolkitUpdateMerchantPathV2Request.json
│ │ ├── AppsTrafficPermission/
│ │ │ ├── AppsTrafficPermissionOpenV1Request.json
│ │ │ └── AppsTrafficPermissionQueryV1Response.json
│ │ ├── AppsUrlLink/
│ │ │ ├── AppsUrlLinkGenerateV1Request.json
│ │ │ ├── AppsUrlLinkGenerateV1Response.json
│ │ │ ├── AppsUrlLinkQueryInfoV1Request.json
│ │ │ ├── AppsUrlLinkQueryInfoV1Response.json
│ │ │ ├── AppsUrlLinkQueryQuotaV1Request.json
│ │ │ └── AppsUrlLinkQueryQuotaV1Response.json
│ │ ├── AppsUrlSchema/
│ │ │ ├── AppsUrlGenerateSchemaV1Request.json
│ │ │ ├── AppsUrlGenerateSchemaV1Response.json
│ │ │ ├── AppsUrlQuerySchemaQuotaV1Request.json
│ │ │ ├── AppsUrlQuerySchemaQuotaV1Response.json
│ │ │ ├── AppsUrlQuerySchemaV1Request.json
│ │ │ └── AppsUrlQuerySchemaV1Response.json
│ │ ├── AppsUser/
│ │ │ ├── AppsUserBCGetCommentV1Response.json
│ │ │ ├── AppsUserBCGetFansV1Response.json
│ │ │ ├── AppsUserBCGetItemV1Response.json
│ │ │ ├── AppsUserBCGetLikeV1Response.json
│ │ │ ├── AppsUserBCGetProfileV1Response.json
│ │ │ ├── AppsUserBCGetShareV1Response.json
│ │ │ ├── AppsUserGetCommentV1Response.json
│ │ │ ├── AppsUserGetFansV1Response.json
│ │ │ ├── AppsUserGetItemV1Response.json
│ │ │ ├── AppsUserGetLikeV1Response.json
│ │ │ ├── AppsUserGetProfileV1Response.json
│ │ │ └── AppsUserGetShareV1Response.json
│ │ ├── AppsVideo/
│ │ │ ├── AppsConvertOpenItemIdToEncryptIdV1Request.json
│ │ │ ├── AppsConvertOpenItemIdToEncryptIdV1Response.json
│ │ │ ├── AppsConvertVideoIdToOpenItemIdV1Request.json
│ │ │ ├── AppsConvertVideoIdToOpenItemIdV1Response.json
│ │ │ ├── AppsVideoBCQueryV1Request.json
│ │ │ ├── AppsVideoBCQueryV1Response.json
│ │ │ ├── AppsVideoQueryV1Request.json
│ │ │ └── AppsVideoQueryV1Response.json
│ │ ├── ECommerce/
│ │ │ ├── ECommerceConfigLimitOperatePointV1Request.json
│ │ │ ├── ECommerceConfigRegisterMicroAppV1Request.json
│ │ │ ├── ECommerceCustomizationQueryStatusV1Request.json
│ │ │ └── ECommerceCustomizationQueryStatusV1Response.json
│ │ ├── Gift/
│ │ │ ├── GiftReceiveRewardRequest.json
│ │ │ └── GiftReceiveRewardResponse.json
│ │ ├── LiveBooking/
│ │ │ ├── LiveBookingTextCloseResponse.json
│ │ │ ├── LiveBookingTextCreateRequest.json
│ │ │ ├── LiveBookingTextCreateResponse.json
│ │ │ ├── LiveBookingTextDetailResponse.json
│ │ │ └── LiveBookingVideoListResponse.json
│ │ ├── MatchTaskBox/
│ │ │ ├── MatchTaskBoxAddRoomTaskV2Request.json
│ │ │ ├── MatchTaskBoxAddRoomTaskV2Response.json
│ │ │ ├── MatchTaskBoxAddTaskV2Request.json
│ │ │ ├── MatchTaskBoxAddTaskV2Response.json
│ │ │ ├── MatchTaskBoxQueryAppTaskIdV2Request.json
│ │ │ ├── MatchTaskBoxQueryAppTaskIdV2Response.json
│ │ │ ├── MatchTaskBoxQueryBillLinkV2Request.json
│ │ │ ├── MatchTaskBoxQueryBillLinkV2Response.json
│ │ │ ├── MatchTaskBoxQueryTaskInfoV2Request.json
│ │ │ ├── MatchTaskBoxQueryTaskInfoV2Response.json
│ │ │ ├── MatchTaskBoxQueryVideoSummaryDataV2Request.json
│ │ │ ├── MatchTaskBoxQueryVideoSummaryDataV2Response.json
│ │ │ ├── MatchTaskBoxUpdateStatusV2Request.json
│ │ │ ├── MatchTaskBoxUpdateStatusV2Response.json
│ │ │ ├── MatchTaskBoxUpdateTaskV2Request.json
│ │ │ └── MatchTaskBoxUpdateTaskV2Response.json
│ │ ├── NotificationSubscription/
│ │ │ ├── NotificationSubscriptionAddAppTemplateV2Request.json
│ │ │ ├── NotificationSubscriptionAddAppTemplateV2Response.json
│ │ │ ├── NotificationSubscriptionCreateTemplateV2Request.json
│ │ │ ├── NotificationSubscriptionNotifyUserV2Request.json
│ │ │ ├── NotificationSubscriptionQueryAppTemplateV2Response.json
│ │ │ ├── NotificationSubscriptionQueryCreatedTemplateListV2Response.json
│ │ │ └── NotificationSubscriptionQueryTemplateListV2Response.json
│ │ ├── PlatformDataAnalysis/
│ │ │ ├── Component/
│ │ │ │ ├── PlatformDataAnalysisQueryComponentWithDataV2Request.json
│ │ │ │ ├── PlatformDataAnalysisQueryComponentWithDataV2Response.json
│ │ │ │ ├── PlatformDataAnalysisQueryComponentWithDetailV2Request.json
│ │ │ │ ├── PlatformDataAnalysisQueryComponentWithDetailV2Response.json
│ │ │ │ ├── PlatformDataAnalysisQueryComponentWithOverviewV2Request.json
│ │ │ │ ├── PlatformDataAnalysisQueryComponentWithOverviewV2Response.json
│ │ │ │ ├── PlatformDataAnalysisQueryComponentWithSourceV2Request.json
│ │ │ │ └── PlatformDataAnalysisQueryComponentWithSourceV2Response.json
│ │ │ ├── Live/
│ │ │ │ ├── PlatformDataAnalysisQueryLiveWithShortIdV2Request.json
│ │ │ │ └── PlatformDataAnalysisQueryLiveWithShortIdV2Response.json
│ │ │ ├── SmallRoom/
│ │ │ │ ├── PlatformDataAnalysisQuerySmallHomeOrderDataV2Response.json
│ │ │ │ ├── PlatformDataAnalysisQuerySmallHomeOverviewDataV2Response.json
│ │ │ │ └── PlatformDataAnalysisQuerySmallHomeRoomDataV2Response.json
│ │ │ ├── Transaction/
│ │ │ │ ├── PlatformDataAnalysisQueryDealDataWithConversionV2Request.json
│ │ │ │ ├── PlatformDataAnalysisQueryDealDataWithConversionV2Response.json
│ │ │ │ ├── PlatformDataAnalysisQueryDealOverviewDataV2Response.json
│ │ │ │ ├── PlatformDataAnalysisQueryLiveDealDataV2Response.json
│ │ │ │ ├── PlatformDataAnalysisQueryLiveRoomDataV2Response.json
│ │ │ │ ├── PlatformDataAnalysisQueryLiveRoomV2Response.json
│ │ │ │ ├── PlatformDataAnalysisQueryProductDealDataV2Response.json
│ │ │ │ └── PlatformDataAnalysisQueryVideoDealDataV2Response.json
│ │ │ ├── User/
│ │ │ │ ├── PlatformDataAnalysisQueryBehaviorDataV2Response.json
│ │ │ │ ├── PlatformDataAnalysisQueryClientDataV2Response.json
│ │ │ │ ├── PlatformDataAnalysisQueryPageDataV2Response.json
│ │ │ │ ├── PlatformDataAnalysisQueryRealTimeUserDataV2Response.json
│ │ │ │ ├── PlatformDataAnalysisQueryRetentionDataV2Response.json
│ │ │ │ ├── PlatformDataAnalysisQuerySceneDataV2Response.json
│ │ │ │ └── PlatformDataAnalysisQueryUserPortraitDataV2Response.json
│ │ │ └── Video/
│ │ │ ├── PlatformDataAnalysisQueryShortLiveDataWithIdV2Request.json
│ │ │ ├── PlatformDataAnalysisQueryShortLiveDataWithIdV2Response.json
│ │ │ ├── PlatformDataAnalysisQueryShortLiveIdWithAwemeIdV2Request.json
│ │ │ ├── PlatformDataAnalysisQueryShortLiveIdWithAwemeIdV2Response.json
│ │ │ ├── PlatformDataAnalysisQueryVideoDataV2Request.json
│ │ │ ├── PlatformDataAnalysisQueryVideoDataV2Response.json
│ │ │ ├── PlatformDataAnalysisQueryVideoWithSourceV2Request.json
│ │ │ └── PlatformDataAnalysisQueryVideoWithSourceV2Response.json
│ │ ├── Product/
│ │ │ └── Region/
│ │ │ ├── ProductAppRegionAddV1Request.json
│ │ │ ├── ProductAppRegionAddV1Response.json
│ │ │ └── ProductAppRegionModifyV1Request.json
│ │ ├── Promotion/
│ │ │ ├── Activity/
│ │ │ │ ├── PromotionActivityAddSelfTestAccountsV2Request.json
│ │ │ │ ├── PromotionActivityBindUserToSidebarActivityV2Request.json
│ │ │ │ ├── PromotionActivityCreatePromotionActivityV2Request.json
│ │ │ │ ├── PromotionActivityCreatePromotionActivityV2Response.json
│ │ │ │ ├── PromotionActivityModifyPromotionActivityV2Request.json
│ │ │ │ ├── PromotionActivityQueryBindedUserV2Request.json
│ │ │ │ ├── PromotionActivityQueryBindedUserV2Response.json
│ │ │ │ ├── PromotionActivityQueryPromotionActivityV2Request.json
│ │ │ │ ├── PromotionActivityQueryPromotionActivityV2Response.json
│ │ │ │ └── PromotionActivityUpdatePromotionActivityStatusV2Request.json
│ │ │ ├── Coupon/
│ │ │ │ ├── DeveloperActivity/
│ │ │ │ │ ├── PromotionCouponCreateDeveloperActivityV1Request.json
│ │ │ │ │ ├── PromotionCouponCreateDeveloperActivityV1Response.json
│ │ │ │ │ └── PromotionCouponDeleteDeveloperActivityV1Request.json
│ │ │ │ ├── PromotionCouponBatchConsumeCouponV1Request.json
│ │ │ │ ├── PromotionCouponBatchConsumeCouponV1Response.json
│ │ │ │ ├── PromotionCouponBatchRollbackConsumeCouponV1Request.json
│ │ │ │ ├── PromotionCouponBatchRollbackConsumeCouponV1Response.json
│ │ │ │ ├── PromotionCouponGetBillDownloadUrlV1Request.json
│ │ │ │ ├── PromotionCouponGetBillDownloadUrlV1Response.json
│ │ │ │ ├── PromotionCouponGetCouponReceiveInfoV1Request.json
│ │ │ │ ├── PromotionCouponGetCouponReceiveInfoV1Response.json
│ │ │ │ ├── PromotionCouponGetTalentCouponV1Request.json
│ │ │ │ ├── PromotionCouponGetTalentCouponV1Response.json
│ │ │ │ ├── PromotionCouponSendCouponToDesignatedUserV1Request.json
│ │ │ │ ├── PromotionCouponSendCouponToDesignatedUserV1Response.json
│ │ │ │ ├── PromotionCouponSetTalentCouponV1Request.json
│ │ │ │ ├── PromotionCouponUpdateTalentCouponStatusV1Request.json
│ │ │ │ └── PromotionCouponUpdateTalentCouponStockV1Request.json
│ │ │ └── CouponMeta/
│ │ │ ├── PromotionCouponCreateCouponMetaV2Request.json
│ │ │ ├── PromotionCouponCreateCouponMetaV2Response.json
│ │ │ ├── PromotionCouponDeleteCouponMetaV1Request.json
│ │ │ ├── PromotionCouponGetCouponMetaStatisticsV1Request.json
│ │ │ ├── PromotionCouponGetCouponMetaStatisticsV1Response.json
│ │ │ ├── PromotionCouponModifyCouponMetaV2Request.json
│ │ │ ├── PromotionCouponQueryActivityMetaDataV1Request.json
│ │ │ ├── PromotionCouponQueryActivityMetaDataV1Response.json
│ │ │ ├── PromotionCouponQueryCouponMetaV2Request.json
│ │ │ ├── PromotionCouponQueryCouponMetaV2Response.json
│ │ │ ├── PromotionCouponUpdateCouponMetaStatusV1Request.json
│ │ │ └── PromotionCouponUpdateCouponMetaStockV1Request.json
│ │ ├── TradeAuthDeveloper/
│ │ │ ├── AuthDeposit/
│ │ │ │ ├── Auth/
│ │ │ │ │ ├── TradeAuthDeveloperCancelAuthOrderV1Request.json
│ │ │ │ │ ├── TradeAuthDeveloperCreateAuthOrderV1Request.json
│ │ │ │ │ ├── TradeAuthDeveloperCreateAuthOrderV1Response.json
│ │ │ │ │ ├── TradeAuthDeveloperFinishAuthOrderV1Request.json
│ │ │ │ │ ├── TradeAuthDeveloperQueryAdmissibleAuthV1Request.json
│ │ │ │ │ ├── TradeAuthDeveloperQueryAdmissibleAuthV1Response.json
│ │ │ │ │ ├── TradeAuthDeveloperQueryAuthOrderV1Request.json
│ │ │ │ │ └── TradeAuthDeveloperQueryAuthOrderV1Response.json
│ │ │ │ ├── Pay/
│ │ │ │ │ ├── TradeAuthDeveloperClosePayOrderV1Request.json
│ │ │ │ │ ├── TradeAuthDeveloperCreatePayOrderV1Request.json
│ │ │ │ │ ├── TradeAuthDeveloperCreatePayOrderV1Response.json
│ │ │ │ │ ├── TradeAuthDeveloperQueryPayOrderV1Request.json
│ │ │ │ │ └── TradeAuthDeveloperQueryPayOrderV1Response.json
│ │ │ │ └── Refund/
│ │ │ │ ├── TradeAuthDeveloperCreateRefundV1Request.json
│ │ │ │ ├── TradeAuthDeveloperCreateRefundV1Response.json
│ │ │ │ ├── TradeAuthDeveloperQueryRefundV1Request.json
│ │ │ │ └── TradeAuthDeveloperQueryRefundV1Response.json
│ │ │ └── PeriodicDeduction/
│ │ │ ├── Pay/
│ │ │ │ ├── TradeAuthDeveloperCreateSignPayV1Request.json
│ │ │ │ ├── TradeAuthDeveloperCreateSignPayV1Response.json
│ │ │ │ ├── TradeAuthDeveloperQuerySignPayV1Request.json
│ │ │ │ └── TradeAuthDeveloperQuerySignPayV1Response.json
│ │ │ ├── Refund/
│ │ │ │ ├── TradeAuthDeveloperCreateSignRefundV1Request.json
│ │ │ │ ├── TradeAuthDeveloperCreateSignRefundV1Response.json
│ │ │ │ ├── TradeAuthDeveloperQuerySignRefundV1Request.json
│ │ │ │ └── TradeAuthDeveloperQuerySignRefundV1Response.json
│ │ │ └── Sign/
│ │ │ ├── TradeAuthDeveloperQuerySignOrderV1Request.json
│ │ │ ├── TradeAuthDeveloperQuerySignOrderV1Response.json
│ │ │ └── TradeAuthDeveloperTerminateSignV1Request.json
│ │ ├── TradeBasicDeveloper/
│ │ │ ├── TradeBasicDeveloperFulfillPushStatusV1Request.json
│ │ │ ├── TradeBasicDeveloperOrderQueryV1Request.json
│ │ │ ├── TradeBasicDeveloperOrderQueryV1Response.json
│ │ │ ├── TradeBasicDeveloperQueryCPSV1Request.json
│ │ │ ├── TradeBasicDeveloperQueryCPSV1Response.json
│ │ │ ├── TradeBasicDeveloperRefundAuditCallbackV1Request.json
│ │ │ ├── TradeBasicDeveloperRefundCreateV1Request.json
│ │ │ ├── TradeBasicDeveloperRefundCreateV1Response.json
│ │ │ ├── TradeBasicDeveloperRefundQueryV1Request.json
│ │ │ ├── TradeBasicDeveloperRefundQueryV1Response.json
│ │ │ ├── TradeBasicDeveloperSettleCreateV1Request.json
│ │ │ ├── TradeBasicDeveloperSettleCreateV1Response.json
│ │ │ ├── TradeBasicDeveloperSettleQueryV1Request.json
│ │ │ ├── TradeBasicDeveloperSettleQueryV1Response.json
│ │ │ ├── TradeBasicDeveloperTagQueryV1Request.json
│ │ │ └── TradeBasicDeveloperTagQueryV1Response.json
│ │ └── _Legacy/
│ │ ├── Apps/
│ │ │ ├── AppsJsCode2SessionV2Request.json
│ │ │ ├── AppsJsCode2SessionV2Response.json
│ │ │ ├── AppsTokenV2Request.json
│ │ │ ├── AppsTokenV2Response.json
│ │ │ ├── Capacity/
│ │ │ │ ├── AppsCapacityUploadMaterialV1Response.json
│ │ │ │ ├── ClueComponent/
│ │ │ │ │ ├── AppsCapacityCreateClueComponentInfoV1Request.json
│ │ │ │ │ ├── AppsCapacityCreateClueComponentInfoV1Response.json
│ │ │ │ │ ├── AppsCapacityDeleteClueComponentInfoV1Request.json
│ │ │ │ │ ├── AppsCapacityQueryClueComponentInfoV1Response.json
│ │ │ │ │ └── AppsCapacityUpdateClueComponentInfoV1Request.json
│ │ │ │ ├── Doudian/
│ │ │ │ │ ├── AppsCapacityBindDoudianAccountV1Response.json
│ │ │ │ │ ├── AppsCapacityCreateDoudianAppV1Request.json
│ │ │ │ │ ├── AppsCapacityCreateDoudianAppV1Response.json
│ │ │ │ │ ├── AppsCapacityQueryBindDoudianAccountV1Response.json
│ │ │ │ │ ├── AppsCapacityQueryDoudianAppV1Response.json
│ │ │ │ │ └── AppsCapacityQueryDoudianShopInfoV1Response.json
│ │ │ │ └── Mount/
│ │ │ │ ├── AppsCapacityApplyCapacityV1Request.json
│ │ │ │ └── AppsCapacityQueryApplyStatusV1Response.json
│ │ │ ├── Censor/
│ │ │ │ ├── AppsCensorImageRequest.json
│ │ │ │ └── AppsCensorImageResponse.json
│ │ │ ├── Chat/
│ │ │ │ └── AppsChatCustomerServiceUrlResponse.json
│ │ │ ├── CustomerService/
│ │ │ │ └── AppsCustomerServiceUrlResponse.json
│ │ │ ├── Live/
│ │ │ │ └── AppsLiveSetBlackWhiteListV1Request.json
│ │ │ ├── Message/
│ │ │ │ └── AppsMessageCustomSendRequest.json
│ │ │ ├── Order/
│ │ │ │ ├── AppsOrderDeleteRequest.json
│ │ │ │ ├── AppsOrderPushV2Request.json
│ │ │ │ └── AppsOrderPushV2Response.json
│ │ │ ├── Qrcode/
│ │ │ │ └── AppsQrcodeRequest.json
│ │ │ ├── ShareConfig/
│ │ │ │ ├── AppsShareConfigRequest.json
│ │ │ │ └── AppsShareConfigResponse.json
│ │ │ ├── SubscribeNotification/
│ │ │ │ └── AppsSubscribeNotificationDeveloperNotifyV1Request.json
│ │ │ ├── TaskBox/
│ │ │ │ ├── AppsTaskBoxAddTaskRequest.json
│ │ │ │ ├── AppsTaskBoxAddTaskResponse.json
│ │ │ │ ├── AppsTaskBoxQueryAppTaskIdRequest.json
│ │ │ │ ├── AppsTaskBoxQueryAppTaskIdResponse.json
│ │ │ │ ├── AppsTaskBoxQueryTaskVideoDataRequest.json
│ │ │ │ ├── AppsTaskBoxQueryTaskVideoDataResponse.json
│ │ │ │ ├── AppsTaskBoxUpdateOrientTalentsRequest.json
│ │ │ │ ├── AppsTaskBoxUpdateOrientTalentsResponse.json
│ │ │ │ ├── AppsTaskBoxUpdateStatusRequest.json
│ │ │ │ ├── AppsTaskBoxUpdateStatusResponse.json
│ │ │ │ ├── AppsTaskBoxUpdateTaskRequest.json
│ │ │ │ └── AppsTaskBoxUpdateTaskResponse.json
│ │ │ └── Video/
│ │ │ ├── AppsConvertOpenItemIdToEncryptIdRequest.json
│ │ │ ├── AppsConvertOpenItemIdToEncryptIdResponse.json
│ │ │ ├── AppsConvertVideoIdToOpenItemIdRequest.json
│ │ │ └── AppsConvertVideoIdToOpenItemIdResponse.json
│ │ ├── AppsECPay/
│ │ │ ├── Order/
│ │ │ │ ├── AppsECPayCreateOrderV1Request.json
│ │ │ │ ├── AppsECPayCreateOrderV1Response.json
│ │ │ │ ├── AppsECPayCreateRefundV1Request.json
│ │ │ │ ├── AppsECPayCreateRefundV1Response.json
│ │ │ │ ├── AppsECPayCreateReturnV1Request.json
│ │ │ │ ├── AppsECPayCreateReturnV1Response.json
│ │ │ │ ├── AppsECPayQueryOrderV1Request.json
│ │ │ │ ├── AppsECPayQueryOrderV1Response.json
│ │ │ │ ├── AppsECPayQueryRefundV1Request.json
│ │ │ │ ├── AppsECPayQueryRefundV1Response.json
│ │ │ │ ├── AppsECPayQueryReturnV1Request.json
│ │ │ │ ├── AppsECPayQueryReturnV1Response.json
│ │ │ │ ├── AppsECPayQuerySettleV1Request.json
│ │ │ │ ├── AppsECPayQuerySettleV1Response.json
│ │ │ │ ├── AppsECPaySettleV1Request.json
│ │ │ │ └── AppsECPaySettleV1Response.json
│ │ │ └── SaaS/
│ │ │ ├── Apply/
│ │ │ │ ├── AppsECPaySaaSCreateMerchantRequest.json
│ │ │ │ ├── AppsECPaySaaSCreateMerchantResponse.json
│ │ │ │ ├── AppsECPaySaaSQueryMerchantStatusRequest.json
│ │ │ │ └── AppsECPaySaaSQueryMerchantStatusResponse.json
│ │ │ ├── PageLinks/
│ │ │ │ ├── AppsECPaySaaSAddMerchantRequest.json
│ │ │ │ ├── AppsECPaySaaSAddMerchantResponse.json
│ │ │ │ ├── AppsECPaySaaSAddSubMerchantRequest.json
│ │ │ │ ├── AppsECPaySaaSAddSubMerchantResponse.json
│ │ │ │ ├── AppsECPaySaaSAppAddSubMerchantRequest.json
│ │ │ │ ├── AppsECPaySaaSAppAddSubMerchantResponse.json
│ │ │ │ ├── AppsECPaySaaSGetAppMerchantRequest.json
│ │ │ │ └── AppsECPaySaaSGetAppMerchantResponse.json
│ │ │ └── Withdraw/
│ │ │ ├── AppsECPaySaaSMerchantWithdrawRequest.json
│ │ │ ├── AppsECPaySaaSMerchantWithdrawResponse.json
│ │ │ ├── AppsECPaySaaSQueryMerchantBalanceRequest.json
│ │ │ ├── AppsECPaySaaSQueryMerchantBalanceResponse.json
│ │ │ ├── AppsECPaySaaSQueryWithdrawOrderRequest.json
│ │ │ └── AppsECPaySaaSQueryWithdrawOrderResponse.json
│ │ ├── AppsGame/
│ │ │ ├── AppsGameWalletAddCoinRequest.json
│ │ │ ├── AppsGameWalletAddCoinResponse.json
│ │ │ ├── AppsGameWalletGamePayRequest.json
│ │ │ ├── AppsGameWalletGamePayResponse.json
│ │ │ ├── AppsGameWalletGetBalanceRequest.json
│ │ │ └── AppsGameWalletGetBalanceResponse.json
│ │ ├── AppsStorage/
│ │ │ ├── AppsRemoveUserStorageRequest.json
│ │ │ └── AppsSetUserStorageRequest.json
│ │ ├── AppsTrade/
│ │ │ ├── PreOrder/
│ │ │ │ ├── AppsTradeCreateOrderV2Request.json
│ │ │ │ ├── AppsTradeCreateOrderV2Response.json
│ │ │ │ ├── AppsTradeQueryCPSV2Request.json
│ │ │ │ ├── AppsTradeQueryCPSV2Response.json
│ │ │ │ ├── AppsTradeQueryOrderV2Request.json
│ │ │ │ └── AppsTradeQueryOrderV2Response.json
│ │ │ ├── Refund/
│ │ │ │ ├── AppsTradeCreateRefundV2Request.json
│ │ │ │ ├── AppsTradeCreateRefundV2Response.json
│ │ │ │ ├── AppsTradeMerchantAuditCallbackV2Request.json
│ │ │ │ ├── AppsTradeQueryRefundV2Request.json
│ │ │ │ └── AppsTradeQueryRefundV2Response.json
│ │ │ ├── Settlement/
│ │ │ │ ├── AppsTradeCreateSettleV2Request.json
│ │ │ │ ├── AppsTradeCreateSettleV2Response.json
│ │ │ │ ├── AppsTradeQuerySettleV2Request.json
│ │ │ │ └── AppsTradeQuerySettleV2Response.json
│ │ │ └── WriteOff/
│ │ │ ├── AppsTradeDeliveryPrepareV2Request.json
│ │ │ ├── AppsTradeDeliveryPrepareV2Response.json
│ │ │ ├── AppsTradeDeliveryVerifyV2Request.json
│ │ │ ├── AppsTradeDeliveryVerifyV2Response.json
│ │ │ ├── AppsTradePushDeliveryV2Request.json
│ │ │ ├── AppsTradePushDeliveryV2Response.json
│ │ │ ├── AppsTradeQueryItemOrderInfoV2Request.json
│ │ │ └── AppsTradeQueryItemOrderInfoV2Response.json
│ │ ├── Comment/
│ │ │ ├── CommentDeveloperDeleteRequest.json
│ │ │ ├── CommentDeveloperDeleteResponse.json
│ │ │ ├── CommentDeveloperReplyRequest.json
│ │ │ ├── CommentDeveloperReplyResponse.json
│ │ │ ├── CommentOpenGetRequest.json
│ │ │ └── CommentOpenGetResponse.json
│ │ └── Tags/
│ │ ├── TagsImageV2Request.json
│ │ ├── TagsImageV2Response.json
│ │ ├── TagsTextAntiDirtV2Request.json
│ │ └── TagsTextAntiDirtV2Response.json
│ ├── SKIT.FlurlHttpClient.ByteDance.MicroApp.UnitTests.csproj
│ ├── TestCase_ApiExecuteAppsECPayTests.cs
│ ├── TestCase_ApiExecuteTokenTests.cs
│ ├── TestCase_EventVerificationTests.cs
│ ├── TestClients.cs
│ ├── TestConfigs.cs
│ └── appsettings.json
├── SKIT.FlurlHttpClient.ByteDance.OceanEngine.UnitTests/
│ ├── .gitignore
│ ├── IMPORTANT_CodeAnalyzeTests.cs
│ ├── ModelSamples/
│ │ ├── Advertiser/
│ │ │ ├── AdvertiserInfoRequest.json
│ │ │ ├── AdvertiserInfoResponse.json
│ │ │ ├── AdvertiserPublicInfoRequest.json
│ │ │ ├── AdvertiserPublicInfoResponse.json
│ │ │ ├── Avatar/
│ │ │ │ ├── AdvertiserAvatarGetRequest.json
│ │ │ │ ├── AdvertiserAvatarGetResponse.json
│ │ │ │ ├── AdvertiserAvatarSubmitRequest.json
│ │ │ │ └── AdvertiserAvatarSubmitResponse.json
│ │ │ ├── Budget/
│ │ │ │ ├── AdvertiserBudgetGetRequest.json
│ │ │ │ ├── AdvertiserBudgetGetResponse.json
│ │ │ │ ├── AdvertiserUpdateBudgetRequest.json
│ │ │ │ └── AdvertiserUpdateBudgetResponse.json
│ │ │ ├── Fund/
│ │ │ │ ├── AdvertiserFundDailyStatisticsRequest.json
│ │ │ │ ├── AdvertiserFundDailyStatisticsResponse.json
│ │ │ │ ├── AdvertiserFundGetRequest.json
│ │ │ │ ├── AdvertiserFundGetResponse.json
│ │ │ │ ├── AdvertiserFundTransactionGetRequest.json
│ │ │ │ └── AdvertiserFundTransactionGetResponse.json
│ │ │ └── Qualification/
│ │ │ ├── AdvertiserQualificationCreateV2Request.json
│ │ │ ├── AdvertiserQualificationCreateV2Response.json
│ │ │ ├── AdvertiserQualificationGetRequest.json
│ │ │ ├── AdvertiserQualificationGetResponse.json
│ │ │ ├── AdvertiserQualificationSelectV2Request.json
│ │ │ ├── AdvertiserQualificationSelectV2Response.json
│ │ │ ├── AdvertiserQualificationSubmitRequest.json
│ │ │ └── AdvertiserQualificationSubmitResponse.json
│ │ ├── Advertising/
│ │ │ ├── AdvertisingCostProtectStatusGetRequest.json
│ │ │ ├── AdvertisingCostProtectStatusGetResponse.json
│ │ │ ├── AdvertisingCreateRequest.json
│ │ │ ├── AdvertisingCreateResponse.json
│ │ │ ├── AdvertisingGetRequest.json
│ │ │ ├── AdvertisingGetResponse.json
│ │ │ ├── AdvertisingRejectReasonRequest.json
│ │ │ ├── AdvertisingRejectReasonResponse.json
│ │ │ ├── AdvertisingUpdateBidRequest.json
│ │ │ ├── AdvertisingUpdateBidResponse.json
│ │ │ ├── AdvertisingUpdateBudgetRequest.json
│ │ │ ├── AdvertisingUpdateBudgetResponse.json
│ │ │ ├── AdvertisingUpdateRequest.json
│ │ │ ├── AdvertisingUpdateResponse.json
│ │ │ ├── AdvertisingUpdateStatusRequest.json
│ │ │ └── AdvertisingUpdateStatusResponse.json
│ │ ├── Agent/
│ │ │ ├── Advertiser/
│ │ │ │ ├── AgentAdvertiserCreateV2Request.json
│ │ │ │ ├── AgentAdvertiserCreateV2Response.json
│ │ │ │ ├── AgentAdvertiserRechargeRequest.json
│ │ │ │ ├── AgentAdvertiserRechargeResponse.json
│ │ │ │ ├── AgentAdvertiserRefundRequest.json
│ │ │ │ ├── AgentAdvertiserRefundResponse.json
│ │ │ │ ├── AgentAdvertiserSelectRequest.json
│ │ │ │ ├── AgentAdvertiserSelectResponse.json
│ │ │ │ ├── AgentAdvertiserUpdateRequest.json
│ │ │ │ └── AgentAdvertiserUpdateResponse.json
│ │ │ ├── AgentChildAgentSelectRequest.json
│ │ │ ├── AgentChildAgentSelectResponse.json
│ │ │ ├── AgentInfoRequest.json
│ │ │ └── AgentInfoResponse.json
│ │ ├── BusinessPlatform/
│ │ │ ├── BusinessPlatformPartnerOrganizationListRequest.json
│ │ │ └── BusinessPlatformPartnerOrganizationListResponse.json
│ │ ├── Campaign/
│ │ │ ├── CampaignCreateRequest.json
│ │ │ ├── CampaignCreateResponse.json
│ │ │ ├── CampaignGetRequest.json
│ │ │ ├── CampaignGetResponse.json
│ │ │ ├── CampaignUpdateRequest.json
│ │ │ ├── CampaignUpdateResponse.json
│ │ │ ├── CampaignUpdateStatusRequest.json
│ │ │ └── CampaignUpdateStatusResponse.json
│ │ ├── Creative/
│ │ │ ├── CreativeCreateV2Request.json
│ │ │ ├── CreativeCreateV2Response.json
│ │ │ ├── CreativeGetRequest.json
│ │ │ └── CreativeGetResponse.json
│ │ ├── CustomerCenter/
│ │ │ └── Advertiser/
│ │ │ ├── CustomerCenterAdvertiserListRequest.json
│ │ │ └── CustomerCenterAdvertiserListResponse.json
│ │ ├── Enterprise/
│ │ │ ├── EnterpriseInfoRequest.json
│ │ │ └── EnterpriseInfoResponse.json
│ │ ├── File/
│ │ │ ├── FileImageAdvertiserGetRequest.json
│ │ │ ├── FileImageAdvertiserGetResponse.json
│ │ │ ├── FileImageAdvertiserResponse.json
│ │ │ ├── FileImageAdvertisingResponse.json
│ │ │ ├── FileImageGetRequest.json
│ │ │ ├── FileImageGetResponse.json
│ │ │ ├── FileMaterialBindRequest.json
│ │ │ ├── FileMaterialBindResponse.json
│ │ │ ├── FileVideoAdvertiserGetRequest.json
│ │ │ ├── FileVideoAdvertiserGetResponse.json
│ │ │ ├── FileVideoAdvertisingResponse.json
│ │ │ ├── FileVideoDeleteRequest.json
│ │ │ ├── FileVideoDeleteResponse.json
│ │ │ ├── FileVideoGetRequest.json
│ │ │ ├── FileVideoGetResponse.json
│ │ │ ├── FileVideoUpdateRequest.json
│ │ │ └── FileVideoUpdateResponse.json
│ │ ├── Fund/
│ │ │ ├── FundSharedWalletBalanceGetRequest.json
│ │ │ └── FundSharedWalletBalanceGetResponse.json
│ │ ├── Majordomo/
│ │ │ └── Advertiser/
│ │ │ ├── MajordomoAdvertiserSelectRequest.json
│ │ │ └── MajordomoAdvertiserSelectResponse.json
│ │ ├── OAuth2/
│ │ │ ├── OAuth2AccessTokenRequest.json
│ │ │ ├── OAuth2AccessTokenResponse.json
│ │ │ ├── OAuth2AdvertiserGetRequest.json
│ │ │ ├── OAuth2AdvertiserGetResponse.json
│ │ │ ├── OAuth2AppAccessTokenRequest.json
│ │ │ ├── OAuth2AppAccessTokenResponse.json
│ │ │ ├── OAuth2RefreshTokenRequest.json
│ │ │ └── OAuth2RefreshTokenResponse.json
│ │ ├── Tools/
│ │ │ └── VideoCover/
│ │ │ ├── ToolsVideoCoverSuggestRequest.json
│ │ │ └── ToolsVideoCoverSuggestResponse.json
│ │ └── User/
│ │ └── UserInfoResponse.json
│ ├── SKIT.FlurlHttpClient.ByteDance.OceanEngine.UnitTests.csproj
│ ├── TestClients.cs
│ ├── TestConfigs.cs
│ └── appsettings.json
├── SKIT.FlurlHttpClient.ByteDance.TikTokGlobal.UnitTests/
│ ├── .gitignore
│ ├── IMPORTANT_CodeAnalyzeTests.cs
│ ├── ModelSamples/
│ │ ├── OAuth/
│ │ │ ├── OAuthAccessTokenRequest.json
│ │ │ ├── OAuthAccessTokenResponse.json
│ │ │ ├── OAuthRefreshTokenRequest.json
│ │ │ ├── OAuthRefreshTokenResponse.json
│ │ │ ├── OAuthRevokeTokenRequest.json
│ │ │ └── Qrcode/
│ │ │ ├── OAuthCheckQrcodeRequest.json
│ │ │ ├── OAuthCheckQrcodeResponse.json
│ │ │ ├── OAuthGetQrcodeRequest.json
│ │ │ └── OAuthGetQrcodeResponse.json
│ │ ├── Post/
│ │ │ ├── PostPublishContentInitRequest.json
│ │ │ ├── PostPublishContentInitResponse.json
│ │ │ ├── PostPublishCreatorInfoQueryResponse.json
│ │ │ ├── PostPublishInboxVideoInitRequest.json
│ │ │ ├── PostPublishInboxVideoInitResponse.json
│ │ │ ├── PostPublishStatusFetchRequest.json
│ │ │ ├── PostPublishStatusFetchResponse.json
│ │ │ ├── PostPublishVideoInitRequest.json
│ │ │ └── PostPublishVideoInitResponse.json
│ │ ├── Research/
│ │ │ ├── Adlib/
│ │ │ │ ├── ResearchAdlibAdDetailRequest.json
│ │ │ │ ├── ResearchAdlibAdDetailResponse.json
│ │ │ │ ├── ResearchAdlibAdQueryRequest.json
│ │ │ │ ├── ResearchAdlibAdQueryResponse.json
│ │ │ │ ├── ResearchAdlibAdReportRequest.json
│ │ │ │ ├── ResearchAdlibAdReportResponse.json
│ │ │ │ ├── ResearchAdlibAdvertiserQueryRequest.json
│ │ │ │ ├── ResearchAdlibAdvertiserQueryResponse.json
│ │ │ │ ├── ResearchAdlibCommercialContentQueryRequest.json
│ │ │ │ └── ResearchAdlibCommercialContentQueryResponse.json
│ │ │ ├── Playlist/
│ │ │ │ ├── ResearchPlaylistInfoRequest.json
│ │ │ │ └── ResearchPlaylistInfoResponse.json
│ │ │ ├── User/
│ │ │ │ ├── ResearchUserFollowersRequest.json
│ │ │ │ ├── ResearchUserFollowersResponse.json
│ │ │ │ ├── ResearchUserFollowingRequest.json
│ │ │ │ ├── ResearchUserFollowingResponse.json
│ │ │ │ ├── ResearchUserInfoRequest.json
│ │ │ │ ├── ResearchUserInfoResponse.json
│ │ │ │ ├── ResearchUserLikedVideosRequest.json
│ │ │ │ ├── ResearchUserLikedVideosResponse.json
│ │ │ │ ├── ResearchUserPinnedVideosRequest.json
│ │ │ │ ├── ResearchUserPinnedVideosResponse.json
│ │ │ │ ├── ResearchUserRepostedVideosRequest.json
│ │ │ │ └── ResearchUserRepostedVideosResponse.json
│ │ │ └── Video/
│ │ │ ├── ResearchVideoCommentListRequest.json
│ │ │ ├── ResearchVideoCommentListResponse.json
│ │ │ ├── ResearchVideoQueryRequest.json
│ │ │ └── ResearchVideoQueryResponse.json
│ │ ├── User/
│ │ │ ├── Data/
│ │ │ │ ├── UserDataAddRequest.json
│ │ │ │ ├── UserDataAddResponse.json
│ │ │ │ ├── UserDataCancelRequest.json
│ │ │ │ ├── UserDataCheckRequest.json
│ │ │ │ ├── UserDataCheckResponse.json
│ │ │ │ └── UserDataDownloadRequest.json
│ │ │ └── UserInfoResponse.json
│ │ └── Video/
│ │ ├── VideoListResponse.json
│ │ ├── VideoQueryRequest.json
│ │ └── VideoQueryResponse.json
│ ├── SKIT.FlurlHttpClient.ByteDance.TikTokGlobal.UnitTests.csproj
│ ├── TestClients.cs
│ ├── TestConfigs.cs
│ └── appsettings.json
└── SKIT.FlurlHttpClient.ByteDance.TikTokGlobalShop.UnitTests/
├── .gitignore
├── EventSamples/
│ └── _/
│ ├── CancellationStatusChangeEvent.json
│ ├── OrderStatusChangeEvent.json
│ ├── PackageUpdateEvent.json
│ ├── ProductCreationEvent.json
│ ├── ProductInformationChangeEvent.json
│ ├── ProductStatusChangeEvent.json
│ ├── RecipientAddressUpdateEvent.json
│ ├── ReturnStatusChangeEvent.json
│ ├── SellerDeauthorizationEvent.json
│ └── UpcomingAuthorizationExpirationEvent.json
├── IMPORTANT_CodeAnalyzeTests.cs
├── ModelSamples/
│ ├── Legacy/
│ │ ├── Auth/
│ │ │ ├── AuthGetTokenResponse.json
│ │ │ └── AuthRefreshTokenResponse.json
│ │ ├── Finance/
│ │ │ ├── FinanceGetOrderSettlementListResponse.json
│ │ │ ├── FinanceSearchSettlementsRequest.json
│ │ │ ├── FinanceSearchSettlementsResponse.json
│ │ │ ├── FinanceSearchTransactionsRequest.json
│ │ │ └── FinanceSearchTransactionsResponse.json
│ │ ├── Fulfillment/
│ │ │ ├── FulfillmentBatchShipPackageRequest.json
│ │ │ ├── FulfillmentBatchShipPackageResponse.json
│ │ │ ├── FulfillmentCreateLabelRequest.json
│ │ │ ├── FulfillmentCreateLabelResponse.json
│ │ │ ├── FulfillmentGetPackageDetailResponse.json
│ │ │ ├── FulfillmentGetPackagePickupConfigResponse.json
│ │ │ ├── FulfillmentGetPackageShippingDocumentResponse.json
│ │ │ ├── FulfillmentGetPackageShippingInfoResponse.json
│ │ │ ├── FulfillmentGetShippingServiceRequest.json
│ │ │ ├── FulfillmentGetShippingServiceResponse.json
│ │ │ ├── FulfillmentSearchPackagesRequest.json
│ │ │ ├── FulfillmentSearchPackagesResponse.json
│ │ │ ├── FulfillmentShipPackageRequest.json
│ │ │ ├── FulfillmentShipPackageResponse.json
│ │ │ ├── FulfillmentUpdatePackageDeliveryStatusRequest.json
│ │ │ ├── FulfillmentUpdatePackageDeliveryStatusResponse.json
│ │ │ ├── FulfillmentUpdatePackageShippingInfoRequest.json
│ │ │ ├── FulfillmentUpdatePackageShippingInfoResponse.json
│ │ │ ├── Order/
│ │ │ │ ├── FulfillmentConfirmOrderSplitRequest.json
│ │ │ │ ├── FulfillmentConfirmOrderSplitResponse.json
│ │ │ │ ├── FulfillmentRemovePackageOrdersRequest.json
│ │ │ │ ├── FulfillmentRemovePackageOrdersResponse.json
│ │ │ │ ├── FulfillmentVerifyOrderSplitRequest.json
│ │ │ │ └── FulfillmentVerifyOrderSplitResponse.json
│ │ │ ├── PreCombinePackage/
│ │ │ │ ├── FulfillmentConfirmPreCombinePackageRequest.json
│ │ │ │ ├── FulfillmentConfirmPreCombinePackageResponse.json
│ │ │ │ └── FulfillmentSearchPreCombinePackagesResponse.json
│ │ │ └── Upload/
│ │ │ ├── FulfillmentUploadFileRequest.json
│ │ │ ├── FulfillmentUploadFileResponse.json
│ │ │ ├── FulfillmentUploadImageRequest.json
│ │ │ └── FulfillmentUploadImageResponse.json
│ │ ├── GlobalProduct/
│ │ │ ├── Category/
│ │ │ │ ├── GlobalProductGetAttributeListResponse.json
│ │ │ │ ├── GlobalProductGetCategoryListResponse.json
│ │ │ │ └── GlobalProductGetCategoryRulesResponse.json
│ │ │ ├── GlobalProductCreateProductRequest.json
│ │ │ ├── GlobalProductCreateProductResponse.json
│ │ │ ├── GlobalProductDeleteProductsRequest.json
│ │ │ ├── GlobalProductDeleteProductsResponse.json
│ │ │ ├── GlobalProductGetProductDetailResponse.json
│ │ │ ├── GlobalProductPublishProductRequest.json
│ │ │ ├── GlobalProductPublishProductResponse.json
│ │ │ ├── GlobalProductSearchProductsRequest.json
│ │ │ ├── GlobalProductSearchProductsResponse.json
│ │ │ ├── GlobalProductUpdateProductPriceRequest.json
│ │ │ ├── GlobalProductUpdateProductPriceResponse.json
│ │ │ ├── GlobalProductUpdateProductRequest.json
│ │ │ └── GlobalProductUpdateProductResponse.json
│ │ ├── Logistics/
│ │ │ ├── LogisticsGetShippingDocumentResponse.json
│ │ │ ├── LogisticsGetShippingInfoResponse.json
│ │ │ ├── LogisticsGetShippingProviderListResponse.json
│ │ │ ├── LogisticsGetSubscribedDeliveryOptionsRequest.json
│ │ │ ├── LogisticsGetSubscribedDeliveryOptionsResponse.json
│ │ │ ├── LogisticsGetWarehouseListResponse.json
│ │ │ └── LogisticsUpdateShippingInfoRequest.json
│ │ ├── Order/
│ │ │ ├── OrderGetOrderDetailRequest.json
│ │ │ ├── OrderGetOrderDetailResponse.json
│ │ │ ├── OrderSearchOrdersRequest.json
│ │ │ ├── OrderSearchOrdersResponse.json
│ │ │ └── OrderShipOrderRequest.json
│ │ ├── Product/
│ │ │ ├── Category/
│ │ │ │ ├── ProductCreateBrandRequest.json
│ │ │ │ ├── ProductCreateBrandResponse.json
│ │ │ │ ├── ProductGetAttributeListResponse.json
│ │ │ │ ├── ProductGetBrandListResponse.json
│ │ │ │ ├── ProductGetCategoryListResponse.json
│ │ │ │ ├── ProductGetCategoryRulesResponse.json
│ │ │ │ ├── ProductRecommendCategoryRequest.json
│ │ │ │ └── ProductRecommendCategoryResponse.json
│ │ │ ├── ProductActivateProductsRequest.json
│ │ │ ├── ProductActivateProductsResponse.json
│ │ │ ├── ProductCreateProductRequest.json
│ │ │ ├── ProductCreateProductResponse.json
│ │ │ ├── ProductDeactivateProductsRequest.json
│ │ │ ├── ProductDeactivateProductsResponse.json
│ │ │ ├── ProductDeleteProductsRequest.json
│ │ │ ├── ProductDeleteProductsResponse.json
│ │ │ ├── ProductGetProductDetailResponse.json
│ │ │ ├── ProductGetProductStocksRequest.json
│ │ │ ├── ProductGetProductStocksResponse.json
│ │ │ ├── ProductPrecheckResponse.json
│ │ │ ├── ProductRecoverProductsRequest.json
│ │ │ ├── ProductRecoverProductsResponse.json
│ │ │ ├── ProductSearchProductsRequest.json
│ │ │ ├── ProductSearchProductsResponse.json
│ │ │ ├── ProductUpdateProductPriceRequest.json
│ │ │ ├── ProductUpdateProductPriceResponse.json
│ │ │ ├── ProductUpdateProductRequest.json
│ │ │ ├── ProductUpdateProductResponse.json
│ │ │ ├── ProductUpdateProductStockRequest.json
│ │ │ ├── ProductUpdateProductStockResponse.json
│ │ │ └── Upload/
│ │ │ ├── ProductUploadFileRequest.json
│ │ │ ├── ProductUploadFileResponse.json
│ │ │ ├── ProductUploadImageRequest.json
│ │ │ └── ProductUploadImageResponse.json
│ │ ├── Promotion/
│ │ │ ├── Items/
│ │ │ │ ├── PromotionAddOrUpdateActivityItemsRequest.json
│ │ │ │ ├── PromotionAddOrUpdateActivityItemsResponse.json
│ │ │ │ ├── PromotionRemoveActivityItemsRequest.json
│ │ │ │ └── PromotionRemoveActivityItemsResponse.json
│ │ │ ├── PromotionCreateActivityRequest.json
│ │ │ ├── PromotionCreateActivityResponse.json
│ │ │ ├── PromotionDeactivateActivityRequest.json
│ │ │ ├── PromotionDeactivateActivityResponse.json
│ │ │ ├── PromotionGetActivityDetailResponse.json
│ │ │ ├── PromotionSearchActivitiesRequest.json
│ │ │ ├── PromotionSearchActivitiesResponse.json
│ │ │ ├── PromotionUpdateActivityRequest.json
│ │ │ └── PromotionUpdateActivityResponse.json
│ │ ├── Reverse/
│ │ │ ├── ReverseCancelOrderRequest.json
│ │ │ ├── ReverseCancelOrderResponse.json
│ │ │ ├── ReverseConfirmReverseRequestRequest.json
│ │ │ ├── ReverseGetRejectReasonListResponse.json
│ │ │ ├── ReverseRejectReverseRequestRequest.json
│ │ │ ├── ReverseSearchReverseOrdersRequest.json
│ │ │ └── ReverseSearchReverseOrdersResponse.json
│ │ ├── Seller/
│ │ │ ├── SellerCheckGlobalProductModeResponse.json
│ │ │ └── SellerGetGlobalActiveShopListResponse.json
│ │ ├── Shop/
│ │ │ └── ShopGetAuthorizedShopListResponse.json
│ │ └── SupplyChain/
│ │ ├── SupplyChainSyncPackageFulfillmentDataRequest.json
│ │ └── SupplyChainSyncPackageFulfillmentDataResponse.json
│ └── _/
│ ├── Auth/
│ │ ├── AuthGetTokenResponse.json
│ │ └── AuthRefreshTokenResponse.json
│ ├── Authorization/
│ │ ├── AuthorizationGetCategoryAssetsResponse.json
│ │ └── AuthorizationGetShopsResponse.json
│ ├── CustomerService/
│ │ ├── Agents/
│ │ │ ├── CustomerServiceGetAgentSettingsResponse.json
│ │ │ └── CustomerServiceUpdateAgentSettingsRequest.json
│ │ ├── CustomerServiceCreateConversationMessageRequest.json
│ │ ├── CustomerServiceCreateConversationMessageResponse.json
│ │ ├── CustomerServiceCreateConversationRequest.json
│ │ ├── CustomerServiceCreateConversationResponse.json
│ │ ├── CustomerServiceGetConversationMessagesResponse.json
│ │ ├── CustomerServiceGetConversationsResponse.json
│ │ ├── CustomerServiceUploadImageResponse.json
│ │ └── Performance/
│ │ └── CustomerServiceGetPerformanceResponse.json
│ ├── Event/
│ │ ├── EventDeleteWebhookRequest.json
│ │ ├── EventGetWebhooksResponse.json
│ │ └── EventUpdateWebhookRequest.json
│ ├── FBT/
│ │ ├── FBTGetGoodsRequest.json
│ │ ├── FBTGetGoodsResponse.json
│ │ ├── FBTGetInboundOrdersResponse.json
│ │ ├── FBTGetInventoriesRequest.json
│ │ ├── FBTGetInventoriesResponse.json
│ │ ├── FBTGetInventoryRecordsRequest.json
│ │ ├── FBTGetInventoryRecordsResponse.json
│ │ ├── FBTGetMerchantOnboardedRegionsResponse.json
│ │ └── FBTGetWarehousesResponse.json
│ ├── Finance/
│ │ ├── FinanceGetOrderStatementTransactionsResponse.json
│ │ ├── FinanceGetPaymentsResponse.json
│ │ ├── FinanceGetStatementTransactionsResponse.json
│ │ ├── FinanceGetStatementsResponse.json
│ │ └── FinanceGetWithdrawalsResponse.json
│ ├── Fulfillment/
│ │ ├── Bundle/
│ │ │ ├── FulfillmentCreateBundleRequest.json
│ │ │ └── FulfillmentCreateBundleResponse.json
│ │ ├── Orders/
│ │ │ ├── FulfillmentGetOrderSplitAttributesResponse.json
│ │ │ ├── FulfillmentGetOrderTrackingResponse.json
│ │ │ ├── FulfillmentSearchOrderShippingServicesRequest.json
│ │ │ ├── FulfillmentSearchOrderShippingServicesResponse.json
│ │ │ ├── FulfillmentSplitOrderRequest.json
│ │ │ ├── FulfillmentSplitOrderResponse.json
│ │ │ ├── FulfillmentUpdateOrderPackagesRequest.json
│ │ │ ├── FulfillmentUpdateOrderPackagesResponse.json
│ │ │ └── FulfillmentUpdateOrderShippingInfoRequest.json
│ │ ├── Packages/
│ │ │ ├── Combine/
│ │ │ │ ├── FulfillmentCombinePackageRequest.json
│ │ │ │ ├── FulfillmentCombinePackageResponse.json
│ │ │ │ ├── FulfillmentSearchCombinablePackagesResponse.json
│ │ │ │ ├── FulfillmentUncombinePackageRequest.json
│ │ │ │ └── FulfillmentUncombinePackageResponse.json
│ │ │ ├── FulfillmentBatchShipPackagesRequest.json
│ │ │ ├── FulfillmentBatchShipPackagesResponse.json
│ │ │ ├── FulfillmentBatchUpdatePackagesDeliveryStatusRequest.json
│ │ │ ├── FulfillmentBatchUpdatePackagesDeliveryStatusResponse.json
│ │ │ ├── FulfillmentCreatePackageRequest.json
│ │ │ ├── FulfillmentCreatePackageResponse.json
│ │ │ ├── FulfillmentGetPackageDetailResponse.json
│ │ │ ├── FulfillmentGetPackageHandoverTimeSlotsResponse.json
│ │ │ ├── FulfillmentGetPackageShippingDocumentsResponse.json
│ │ │ ├── FulfillmentSearchPackagesRequest.json
│ │ │ ├── FulfillmentSearchPackagesResponse.json
│ │ │ ├── FulfillmentShipPackageRequest.json
│ │ │ └── FulfillmentUpdatePackageShippingInfoRequest.json
│ │ └── Upload/
│ │ ├── FulfillmentUploadFileResponse.json
│ │ └── FulfillmentUploadImageResponse.json
│ ├── Logistics/
│ │ ├── LogisticsGetDeliveryOptionShippingProvidersResponse.json
│ │ ├── LogisticsGetGlobalWarehousesResponse.json
│ │ ├── LogisticsGetWarehouseDeliveryOptionsResponse.json
│ │ └── LogisticsGetWarehousesResponse.json
│ ├── Order/
│ │ ├── ExternalOrder/
│ │ │ ├── OrderCreateExternalOrderRequest.json
│ │ │ ├── OrderCreateExternalOrderResponse.json
│ │ │ ├── OrderGetExternalOrdersResponse.json
│ │ │ └── OrderSearchExternalOrdersResponse.json
│ │ ├── OrderBatchGetOrderDetailResponse.json
│ │ ├── OrderGetOrderPriceDetailResponse.json
│ │ ├── OrderSearchOrdersRequest.json
│ │ └── OrderSearchOrdersResponse.json
│ ├── Product/
│ │ ├── Brand/
│ │ │ ├── ProductCreateBrandRequest.json
│ │ │ ├── ProductCreateBrandResponse.json
│ │ │ └── ProductGetBrandsResponse.json
│ │ ├── Category/
│ │ │ ├── ProductGetCategoriesResponse.json
│ │ │ ├── ProductGetCategoryAttributesResponse.json
│ │ │ ├── ProductGetCategoryRulesResponse.json
│ │ │ ├── ProductRecommendCategoriesRequest.json
│ │ │ └── ProductRecommendCategoriesResponse.json
│ │ ├── Compliance/
│ │ │ ├── ProductCreateComplianceManufacturerRequest.json
│ │ │ ├── ProductCreateComplianceManufacturerResponse.json
│ │ │ ├── ProductCreateComplianceResponsiblePersonRequest.json
│ │ │ ├── ProductCreateComplianceResponsiblePersonResponse.json
│ │ │ ├── ProductSearchComplianceManufacturersRequest.json
│ │ │ ├── ProductSearchComplianceManufacturersResponse.json
│ │ │ ├── ProductSearchComplianceResponsiblePersonsRequest.json
│ │ │ ├── ProductSearchComplianceResponsiblePersonsResponse.json
│ │ │ ├── ProductUpdateComplianceManufacturerPartiallyRequest.json
│ │ │ └── ProductUpdateComplianceResponsiblePersonPartiallyRequest.json
│ │ ├── Global/
│ │ │ ├── Category/
│ │ │ │ ├── ProductGetGlobalCategoriesResponse.json
│ │ │ │ ├── ProductGetGlobalCategoryAttributesResponse.json
│ │ │ │ ├── ProductGetGlobalCategoryRulesResponse.json
│ │ │ │ ├── ProductRecommendGlobalCategoriesRequest.json
│ │ │ │ └── ProductRecommendGlobalCategoriesResponse.json
│ │ │ ├── ProductCreateGlobalProductRequest.json
│ │ │ ├── ProductCreateGlobalProductResponse.json
│ │ │ ├── ProductDeleteGlobalProductsRequest.json
│ │ │ ├── ProductDeleteGlobalProductsResponse.json
│ │ │ ├── ProductGetGlobalProductDetailResponse.json
│ │ │ ├── ProductPublishGlobalProductRequest.json
│ │ │ ├── ProductPublishGlobalProductResponse.json
│ │ │ ├── ProductSearchGlobalProductsRequest.json
│ │ │ ├── ProductSearchGlobalProductsResponse.json
│ │ │ ├── ProductUpdateGlobalProductInventoryRequest.json
│ │ │ ├── ProductUpdateGlobalProductRequest.json
│ │ │ └── ProductUpdateGlobalProductResponse.json
│ │ ├── ProductActivateProductsRequest.json
│ │ ├── ProductActivateProductsResponse.json
│ │ ├── ProductCreateProductListingCheckRequest.json
│ │ ├── ProductCreateProductListingCheckResponse.json
│ │ ├── ProductCreateProductRequest.json
│ │ ├── ProductCreateProductResponse.json
│ │ ├── ProductDeactivateProductsRequest.json
│ │ ├── ProductDeactivateProductsResponse.json
│ │ ├── ProductDeleteProductsRequest.json
│ │ ├── ProductDeleteProductsResponse.json
│ │ ├── ProductGetInventoriesRequest.json
│ │ ├── ProductGetInventoriesResponse.json
│ │ ├── ProductGetListingSchemasResponse.json
│ │ ├── ProductGetPrerequisitesResponse.json
│ │ ├── ProductGetProductDetailResponse.json
│ │ ├── ProductGetProductDiagnosesResponse.json
│ │ ├── ProductGetProductSEOWordsResponse.json
│ │ ├── ProductGetProductSuggestionsResponse.json
│ │ ├── ProductRecoverProductsRequest.json
│ │ ├── ProductRecoverProductsResponse.json
│ │ ├── ProductSearchProductsRequest.json
│ │ ├── ProductSearchProductsResponse.json
│ │ ├── ProductUpdateProductInventoryRequest.json
│ │ ├── ProductUpdateProductInventoryResponse.json
│ │ ├── ProductUpdateProductPartiallyRequest.json
│ │ ├── ProductUpdateProductPartiallyResponse.json
│ │ ├── ProductUpdateProductPriceRequest.json
│ │ ├── ProductUpdateProductRequest.json
│ │ ├── ProductUpdateProductResponse.json
│ │ ├── SizeChart/
│ │ │ ├── ProductSearchSizeChartsRequest.json
│ │ │ └── ProductSearchSizeChartsResponse.json
│ │ └── Upload/
│ │ ├── ProductOptimizeImagesRequest.json
│ │ ├── ProductOptimizeImagesResponse.json
│ │ ├── ProductUploadFileResponse.json
│ │ └── ProductUploadImageResponse.json
│ ├── Promotion/
│ │ ├── Activity/
│ │ │ ├── PromotionCreateActivityRequest.json
│ │ │ ├── PromotionCreateActivityResponse.json
│ │ │ ├── PromotionDeactivateActivityResponse.json
│ │ │ ├── PromotionDeleteActivityProductsRequest.json
│ │ │ ├── PromotionDeleteActivityProductsResponse.json
│ │ │ ├── PromotionGetActivityDetailResponse.json
│ │ │ ├── PromotionSearchActivitiesRequest.json
│ │ │ ├── PromotionSearchActivitiesResponse.json
│ │ │ ├── PromotionUpdateActivityProductsRequest.json
│ │ │ ├── PromotionUpdateActivityProductsResponse.json
│ │ │ ├── PromotionUpdateActivityRequest.json
│ │ │ └── PromotionUpdateActivityResponse.json
│ │ └── Coupon/
│ │ ├── PromotionGetCouponDetailResponse.json
│ │ ├── PromotionSearchCouponsRequest.json
│ │ └── PromotionSearchCouponsResponse.json
│ ├── ReturnRefund/
│ │ ├── Cancellations/
│ │ │ ├── ReturnRefundCreateCancellationRequest.json
│ │ │ ├── ReturnRefundCreateCancellationResponse.json
│ │ │ ├── ReturnRefundRejectCancellationRequest.json
│ │ │ ├── ReturnRefundSearchCancellationsRequest.json
│ │ │ └── ReturnRefundSearchCancellationsResponse.json
│ │ ├── Orders/
│ │ │ └── ReturnRefundGetOrderAftersaleEligibilityResponse.json
│ │ ├── Refunds/
│ │ │ ├── ReturnRefundCalculateRefundRequest.json
│ │ │ └── ReturnRefundCalculateRefundResponse.json
│ │ ├── ReturnRefundGetRejectReasonsResponse.json
│ │ └── Returns/
│ │ ├── ReturnRefundApproveReturnRequest.json
│ │ ├── ReturnRefundCreateReturnRequest.json
│ │ ├── ReturnRefundCreateReturnResponse.json
│ │ ├── ReturnRefundGetReturnRecordsResponse.json
│ │ ├── ReturnRefundRejectReturnRequest.json
│ │ ├── ReturnRefundSearchReturnsRequest.json
│ │ └── ReturnRefundSearchReturnsResponse.json
│ ├── Seller/
│ │ ├── SellerGetPermissionsResponse.json
│ │ └── SellerGetShopsResponse.json
│ ├── Shop/
│ │ └── AuthorizationGetShopsResponse.json
│ └── SupplyChain/
│ ├── SupplyChainSyncPackagesRequest.json
│ └── SupplyChainSyncPackagesResponse.json
├── SKIT.FlurlHttpClient.ByteDance.TikTokGlobalShop.UnitTests.csproj
├── TestCase_RequestSigningTests.cs
├── TestClients.cs
├── TestConfigs.cs
└── appsettings.json
================================================
FILE CONTENTS
================================================
================================================
FILE: .editorconfig
================================================
root = true
[*]
charset = utf-8
end_of_line = crlf
indent_size = 4
indent_style = space
tab_width = 4
trim_trailing_whitespace = true
insert_final_newline = true
[*.cs]
dotnet_diagnostic.CS1570.severity = none
dotnet_diagnostic.CS1591.severity = suggestion
================================================
FILE: .gitee/ISSUE_TEMPLATE.zh-CN.md
================================================
> **⚠⚠ 请注意:不符合格式要求的 Issue 可能会被直接关闭。**
---
**问题类型**
请在此选择你的问题类型:
- [ ] 报告缺陷:发现源代码中的漏洞、运行发生的异常、或文档里的错误。
- [ ] 请求新功能:需要某些新功能,或对现有实现提出更好的建议。
- [ ] 其他类型 Issue:遇到了问题,需要帮助。
---
**关于问题或建议的简单描述**
请在此填写你遇到的问题或你想要的功能。
---
**与问题或建议相关的源代码**
对于报告缺陷,请在此粘贴与问题相关的代码,或提供可复现问题的最小化项目(可提供仓库地址或 GitHub Gist)。
对于请求新功能,请在此粘贴已有实现思路或解决方案。
注意,请不要以截图形式提供代码。
```csharp
// Source Code
```
---
**异常堆栈或异常原因**
请在此填写你遇到的问题抛出错误时的异常消息和堆栈跟踪(如果有的话)。
---
**发生问题的运行环境**
请在此填写以下几项内容:
1. 操作系统:请填写发生问题的操作系统环境信息(如:Windows Server 2012 R2)
2. .NET 版本:请填写发生问题的 .NET 环境信息(如:.NET Framework 4.7.2 / .NET 5.0)
3. 使用的模块及版本:请填写发生问题的模块信息(如:SKIT.FlurlHttpClient.ByteDance.TikTok 1.0.0)
4. 其他环境信息。
---
**补充说明**
请在此填写任何其他可以定位问题或帮助说明的信息。
================================================
FILE: .gitee/PULL_REQUEST_TEMPLATE.zh-CN.md
================================================
> **⚠⚠ 请注意:不符合格式要求的 PR 可能会被直接关闭。**
---
感谢您对 SKIT.FlurlHttpClient.ByteDance 项目的贡献。
在提交此 PR 之前,请确保:
- [ ] 检查新的代码是否遵循了本项目的现有代码格式和命名标准。
- [ ] 编写新的单元测试、并运行已有的单元测试来验证你的更改,所有功能和修复的错误都必须进行以验证它们是否有效。
- [ ] 规范 Commit Log。
以上内容规范请参阅 [CONTRIBUTING](https://gitee.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.ByteDance/blob/main/CONTRIBUTING.md)。
---
**PR 类型**
请在此选择你的 PR 类型:
- [ ] 修复缺陷:修复源代码中的漏洞、运行发生的异常、或文档里的错误。
- [ ] 增强或优化:增加某些新功能,或对现有实现做出更好的优化。
---
**关于 PR 的简单描述**
请在此填写你所提交代码的简要描述。
---
**关联的 Issue**
请在此填写与此 PR 相关的 Issue。
---
**关于新功能的用法**
请在此给出一个你所新增功能的代码示例(如果有的话)。
```csharp
// Source Code
```
---
**是否有破坏性变化?(Breaking Change)**
如果你所提交的代码会造成一些破坏性的变化(即已使用了本库的项目,在更新代码后需要做出代码调整才可通过构建),请在此描述与变化有关的代码,并试图说明为何需要此变更。
================================================
FILE: .github/ISSUE_TEMPLATE/1_bug_report.md
================================================
---
name: 报告缺陷
about: 发现源代码中的漏洞、运行发生的异常、或文档里的错误。
title: '[BUG] 请一句话描述此缺陷'
labels: bug
assignees: ''
---
> **⚠⚠ 请注意:不符合格式要求的 Issue 可能会被直接关闭。**
---
**关于问题的简单描述**
请在此填写你遇到的问题。
---
**与问题相关的源代码**
请在此粘贴与问题相关的代码,或提供可复现问题的最小化项目(可提供仓库地址或 GitHub Gist)。
注意,请不要以截图形式提供代码。
```csharp
// Source Code
```
---
**异常堆栈或异常原因**
请在此填写你遇到的问题抛出错误时的异常消息和堆栈跟踪(如果有的话)。
---
**发生问题的运行环境**
请在此填写以下几项内容:
1. 操作系统:请填写发生问题的操作系统环境信息(如:Windows Server 2012 R2)
2. .NET 版本:请填写发生问题的 .NET 环境信息(如:.NET Framework 4.7.2 / .NET 5.0)
3. 使用的模块及版本:请填写发生问题的模块信息(如:SKIT.FlurlHttpClient.ByteDance.TikTok 1.0.0)
4. 其他环境信息。
---
**补充说明**
请在此填写任何其他可以定位问题的信息。
================================================
FILE: .github/ISSUE_TEMPLATE/2_feature_request.md
================================================
---
name: 请求新功能
about: 需要某些新功能,或对现有实现提出更好的建议。
title: '[FEATURE] 请一句话描述此建议'
labels: enhancement
assignees: ''
---
> **⚠⚠ 请注意:不符合格式要求的 Issue 可能会被直接关闭。**
---
**关于建议的简单描述**
请在此简要描述你想要的功能。
---
**实现思路或解决方案**
如果你已有实现思路或解决方案,请在此贴出。
---
**补充说明**
请在此填写任何其他可以帮助说明的信息。
================================================
FILE: .github/ISSUE_TEMPLATE/3_custom.md
================================================
---
name: 其他类型 Issue
about: 遇到了问题,需要帮助。
title: ''
labels: question
assignees: ''
---
请简要描述你所遇到的问题。
================================================
FILE: .github/PULL_REQUEST_TEMPLATE/1_bugfix.md
================================================
---
name: 修复缺陷
about: 修复源代码中的漏洞、运行发生的异常、或文档里的错误。
title: '[BUGFIX] 请一句话描述此 PR 修复的缺陷'
labels: bug
assignees: ''
---
> **⚠⚠ 请注意:不符合格式要求的 PR 可能会被直接关闭。**
---
感谢您对 SKIT.FlurlHttpClient.ByteDance 项目的贡献。
在提交此 PR 之前,请确保:
- [ ] 检查新的代码是否遵循了本项目的现有代码格式和命名标准。
- [ ] 编写新的单元测试、并运行已有的单元测试来验证你的更改,所有功能和修复的错误都必须进行以验证它们是否有效。
- [ ] 规范 Commit Log。
以上内容规范请参阅 [CONTRIBUTING](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.ByteDance/blob/main/CONTRIBUTING.md)。
---
**关于 PR 的简单描述**
请在此填写你所提交代码的简要描述。
---
**关联的 Issue**
请在此填写与此 PR 相关的 Issue。
---
**是否有破坏性变化?(Breaking Change)**
如果你所提交的代码会造成一些破坏性的变化(即已使用了本库的项目,在更新代码后需要做出代码调整才可通过构建),请在此描述与变化有关的代码,并试图说明为何需要此变更。
================================================
FILE: .github/PULL_REQUEST_TEMPLATE/2_enhancement.md
================================================
---
name: 增强或优化
about: 增加某些新功能,或对现有实现做出更好的优化。
title: '[ENHANCEMENT] 请一句话描述此 PR 提供的内容'
labels: enhancement
assignees: ''
---
> **⚠⚠ 请注意:不符合格式要求的 PR 可能会被直接关闭。**
---
感谢您对 SKIT.FlurlHttpClient.ByteDance 项目的贡献。
在提交此 PR 之前,请确保:
- [ ] 检查新的代码是否遵循了本项目的现有代码格式和命名标准。
- [ ] 编写新的单元测试、并运行已有的单元测试来验证你的更改,所有功能和修复的错误都必须进行以验证它们是否有效。
- [ ] 规范 Commit Log。
以上内容规范请参阅 [CONTRIBUTING](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.ByteDance/blob/main/CONTRIBUTING.md)。
---
**关于 PR 的简单描述**
请在此填写你所提交代码的简要描述。
---
**关于新功能的用法**
请在此给出一个你所新增功能的代码示例。
```csharp
// Source Code
```
---
**关联的 Issue**
请在此填写与此 PR 相关的 Issue。
---
**是否有破坏性变化?(Breaking Change)**
如果你所提交的代码会造成一些破坏性的变化(即已使用了本库的项目,在更新代码后需要做出代码调整才可通过构建),请在此描述与变化有关的代码,并试图说明为何需要此变更。
================================================
FILE: .github/workflows/codeql-analysis.yml
================================================
# For more information, see:
# https://github.com/github/codeql
name: CodeQL
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
language: [csharp]
steps:
- name: Checkout Repository
uses: actions/checkout@v2
with:
fetch-depth: 1
- name: Setup .NET
uses: actions/setup-dotnet@v1
with:
dotnet-version: 6.0.x
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
queries: security-and-quality
- name: Autobuild
uses: github/codeql-action/autobuild@v1
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
================================================
FILE: .github/workflows/super-linter.yml
================================================
# For more information, see:
# https://github.com/github/super-linter
name: CodeLint
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
run-lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v2
with:
fetch-depth: 1
- name: Lint Code Base
uses: github/super-linter@v4
env:
VALIDATE_ALL_CODEBASE: false
DEFAULT_BRANCH: main
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.sln.docstates
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
x64/
build/
bld/
[Bb]in/
[Oo]bj/
# Roslyn cache directories
*.ide/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
#NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile
# Visual Studio profiler
*.psess
*.vsp
*.vspx
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding addin-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# NCrunch
_NCrunch_*
.*crunch*.local.xml
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
## TODO: Comment the next line if you want to checkin your
## web deploy settings but do note that will include unencrypted
## passwords
#*.pubxml
# NuGet Packages Directory
packages/*
## TODO: If the tool you use requires repositories.config
## uncomment the next line
#!packages/repositories.config
# Enable "build/" folder in the NuGet Packages folder since
# NuGet packages use it for MSBuild targets.
# This line needs to be after the ignore of the build folder
# (and the packages folder if the line above has been uncommented)
!packages/build/
# Windows Azure Build Output
csx/
*.build.csdef
# Windows Store app package directory
AppPackages/
# Others
sql/
*.Cache
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
# LightSwitch generated files
GeneratedArtifacts/
_Pvt_Extensions/
ModelManifest.xml
# Visual Studio temporary files
.vs
*.nupkg
================================================
FILE: CHANGELOG.md
================================================
# CHANGELOG
### 版本说明
各 SDK 的版本号将遵循语义化版本规则。
在更新日志中会包含以下几种名词:
1. “**新增**”:
- 追加了新功能;
- 一般不会产生破坏性更新。
2. “**变更**”:
- 可能重新实现了已有的功能,通常会带来使用方式上的变化;
- 可能升、降级了第三方依赖库的版本。
- 一般会产生破坏性更新。
3. “**修复**”:
- 修复了已知的一些问题;
- 一般不会产生破坏性更新。
注意,预发行版(版本号将以 `-alpha`、`-beta`、`-rc` 结尾)不会在更新日志中呈现。如非必要,请不要将预发行版应用于生产项目。
自 v2.0.0 版本起,各 SDK 将与[公共组件](https://www.nuget.org/packages/SKIT.FlurlHttpClient.Common)的主版本号保持对齐关系,即:
- SDK v2.x.x 将依赖公共组件 v2.x.x;
- SDK v3.x.x 将依赖公共组件 v3.x.x。
- 依此类推。
---
### 模块 `SKIT.FlurlHttpClient.ByteDance.MicroApp` 更新日志
[展开查看]
- Release 3.7.0 (2024-11-08)
- **新增**:新增获取用户唯一标识接口。
- **新增**:新增小程序设置关联地区相关接口。
- **新增**:新增小游戏礼包福袋接口。
- **新增**:新增直播小玩法礼物进阶互动效果、用户战绩与排行榜、用户快捷选队、观众一键同玩能力等相关接口。
- **新增**:新增服务商平台获取域名校验文件信息接口。
- **新增**:随官方更新担保支付退款结果查询接口模型。(_via_ [Gitee #IAWCCD](https://gitee.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.ByteDance/issues/IAWCCD))
- **新增**:随官方更新短视频数据分析和直播数据分析相关接口模型。
- Release 3.6.1 (2024-07-15)
- **修复**:修复小游戏担保支付签名逻辑错误。影响版本:v3.6.0。
- Release 3.6.0 (2024-07-14)
- **新增**:新增开发者回复评价、删除评价等接口。
- **变更**:升级公共组件至 v3.1.0。
- **修复**:修复小游戏支付接口请求签名错误。(_via_ [GitHub #33](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.ByteDance/issues/33))
- Release 3.5.0 (2024-06-17)
- **新增**:新增素材库相关接口。
- **新增**:新增直播小玩法获取直播信息接口。
- **新增**:新增服务商平台代商家管理小程序小程序登录 V2 版接口。
- Release 3.4.0 (2024-05-31)
- **新增**:新增小程序券相关接口。
- **新增**:新增交易工具周期代扣、交易工具信用免押等相关接口。
- **新增**:新增通用交易系统、行业交易系统等相关接口。
- **新增**:新增短视频分析、直播分析、小房子直播分析、留资分析等相关接口。
- **新增**:随官方更新数据分析相关接口模型。
- **变更**:升级依赖 `BouncyCastle.Cryptography` 至 v2.4.0。
- Release 3.3.0 (2024-05-26)
- **新增**:新增小程序文字直播预约公告、Web 化接入、抖店绑定、电商等相关接口。
- **新增**:随官方更新流量主相关接口模型。
- **变更**:变更入口点路径。
- **变更**:移除部分已废弃接口。
- Release 3.2.0 (2024-05-17)
- **新增**:新增小程序隐私协议相关接口。
- **新增**:新增小程序直播预约相关接口。
- **变更**:升级依赖 `BouncyCastle.Cryptography` 至 v2.3.1。
- Release 3.1.0 (2024-05-08)
- **新增**:新增上传短剧权益事件接口。
- **修复**:修复部分接口 Content-Type 请求标头设置错误。影响版本:v3.0.0 ~ v3.0.1。
- **修复**:修复服务商平台代开发小程序备案查询服务内容类型接口 URL 错误。影响版本:v3.0.0 ~ v3.0.1。
- Release 3.0.1 (2024-03-10)
- **修复**:修复部分以反斜杠结尾的接口地址错误。影响版本:v3.0.0。
- Release 3.0.0 (2024-03-09)
- **新增**:新增 URL Link v2、URL Schema v2、二维码 v2、订阅消息 v2、推广计划 v2、流量主 v2 等相关接口。
- **新增**:新增内容安全图片检测 v3、普通二维码绑定 v3 等相关接口。
- **新增**:新增线索组件、视频能力、搜索能力、任务能力、用户信息、分享等相关接口。
- **新增**:新增小程序能力申请、抖音号绑定等相关接口。
- **新增**:新增泛知识角色系统抖音号绑定相关接口。
- **新增**:新增服务商平台代开发小程序授权 v2、代开发小程序模板管理 v2、代开发小程序基础信息管理 v2、代开发小程序开发管理 v2 等相关接口。
- **新增**:新增服务商平台代开发小程序备案相关接口。
- **新增**:独立化直播小玩法 API 客户端,支持自动生成请求签名。
- **变更**:升级公共组件至 v3.0.0。完整变更说明请参阅迁移指南。
- **变更**:重命名客户端 `ByteDanceMicroAppClient` 为 `DouyinMicroAppClient`。
- **变更**:移除部分已废弃接口。
- **修复**:修复泛知识课程库添加课程接口模型定义错误。
- **修复**:修复担保支付相关接口 GET 请求签名错误。(_via_ [GitHub #20](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.ByteDance/pull/20))
- Release 2.5.0 (2023-07-17)
- **新增**:新增担保支付自动结算结果查询接口。(_via_ [GitHub #12](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.ByteDance/pull/12))
- **新增**:新增泛知识角色系统相关接口。(_via_ [GitHub #16](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.ByteDance/pull/16))
- **新增**:随官方更新泛知识课程库添加和修改泛课程接口模型。(_via_ [GitHub #18](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.ByteDance/pull/18))
- Release 2.4.1 (2023-06-23)
- **修复**:修复部分服务商授权相关接口模型定义错误。(_via_ [GitHub #11](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.ByteDance/pull/11))
- **修复**:修复回调通知事件验证签名错误。(_via_ [GitHub #11](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.ByteDance/pull/11))
- Release 2.4.0 (2023-03-28)
- **新增**:新增担保支付账单相关接口。
- **新增**:新增直播小玩法相关接口。
- Release 2.3.0 (2023-02-21)
- **新增**:新增若干服务商平台代商家管理小程序相关的回调通知事件模型。
- **变更**:独立化泛知识课程库相关接口。
- **变更**:独立化服务商平台相关接口。
- **修复**:修复泛知识课程库接入点错误。
- Release 2.2.0 (2023-02-20)
- **新增**:新增小程序获取已设置的服务类目、上传资源、订阅消息模板库、剪映视频模板、抖音开放能力、普通二维码绑定、流量主等相关接口。
- **新增**:新增泛知识课程库查询退款规则、修改退款规则、查询课程审核、设置回调通知等接口。
- **新增**:新增第三方小程序应用上传资源接口。
- **新增**:新增服务商平台代商家入驻抖音开放平台相关接口。
- **变更**:移除部分已废弃接口。
- Release 2.1.0 (2023-01-17)
- **新增**:新增小程序挂载、分发、引导关注抖音号、数据分析等相关接口。
- **新增**:新增服务商平台代开发小程序获取模板小程序列表、提审代码、删除订单、获取官方客服链接等接口。
- **变更**:标记获取粉丝列表、获取关注列表接口为已废弃。
- Release 2.0.0 (2022-12-06)
- **变更**:升级公共组件至 v2.6.0。
- Release 1.4.0 (2022-12-04)
- **新增**:新增 UrlLink 分享相关接口。
- **新增**:新增获取官方平台客服链接接口。
- **新增**:新增获取评价数据接口。
- **新增**:新增小程序推广计划短视频任务相关接口。
- **变更**:标记 v1 版授权登录接口为已废弃。
- Release 1.3.0 (2022-08-24)
- **新增**:新增担保支付进件、退分账、提现相关接口。
- **新增**:随官方更新担保支付接口获取页面链接相关接口。
- Release 1.2.0 (2022-05-02)
- **新增**:新增独立的小游戏接入点。
- **变更**:重命名部分接口模型,将路由中的版本号信息后置。
- Release 1.1.0 (2022-05-02)
- **新增**:新增小程序任务后台任务上传接口。
- **新增**:新增课程库资质管理相关接口。
- **新增**:新增 v2 版授权登录接口。
- **新增**:随官方更新担保支付相关接口模型。
- **变更**:升级公共组件至 v2.5.0。
- **变更**:统一接口响应模型中关于错误代码的字段。
- Release 1.0.0 (2022-03-01)
- 首次发布。
---
### 模块 `SKIT.FlurlHttpClient.ByteDance.DouyinOpen` 更新日志
[展开查看]
- Release 3.4.0 (2024-11-08)
- **新增**:新增获取用户唯一标识接口。
- **新增**:随官方更新视频评论相关接口。
- Release 3.3.0 (2024-07-14)
- **新增**:新增获取消息中的多媒体资源接口。
- **新增**:随官方更新获取评论列表接口模型。
- **变更**:升级公共组件至 v3.1.0。
- Release 3.2.0 (2024-05-31)
- **新增**:新增生活服务交易系统相关接口。
- **新增**:新增行业解决方案开放能力配置相关接口。
- **新增**:随官方更新创建视频、视频详情页跳转链接获取等接口模型。
- Release 3.1.0 (2024-05-09)
- **新增**:新增小程序推广计划相关接口。
- **修复**:修复部分接口 Content-Type 请求标头设置错误。影响版本:v3.0.0。
- Release 3.0.0 (2024-03-12)
- **新增**:新增联合授权、用户经营身份管理、嵌入式播放、投稿任务、直播数据、经营工具等相关接口。
- **新增**:新增评论管理、私信管理、群聊管理、意向用户管理等相关接口。
- **新增**:新增获取 OpenTicket 接口。
- **新增**:随官方更新获取用户公开信息接口模型。
- **新增**:随官方更新团购核算验券准备接口模型。(_via_ [GitHub #23](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.ByteDance/pull/23))
- **变更**:升级公共组件至 v3.0.0。完整变更说明请参阅迁移指南。
- **变更**:规范化部分接口模型命名,并移除部分已废弃接口。
- **修复**:修复部分以反斜杠结尾的接口地址错误。
- **修复**:修复部分接口 AccessToken 传参方式错误。
- Release 2.4.0 (2023-05-25)
- **新增**:新增创建图文相关接口。
- **新增**:随官方上传视频、分片上传视频、创建视频等接口地址。
- Release 2.3.0 (2023-04-15)
- **新增**:新增互动管理场景跳转相关接口。
- **新增**:随官方更新查询授权账号视频列表、查询特定视频的视频数据、获取用户粉丝数据等接口地址。
- **变更**:移除头条视频、西瓜视频相关接口。
- Release 2.2.1 (2023-02-28)
- **修复**:修复生活服务开放能力门店信息查询接口响应模型定义错误。(_via_ [Gitee #I6IG50](https://gitee.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.ByteDance/issues/I6IG50))
- Release 2.2.0 (2023-02-27)
- **新增**:新增部分抖音生活服务相关 Webhook 事件模型。
- **新增**:新增抖音生活服务 SPI 验签及解密相关扩展方法。
- **变更**:重命名扩展方法 `DouyinOpenClient.DecryptMobileNumber` 为 `DouyinOpenClient.DecryptOAuthUserInfoMobileNumber`。
- Release 2.1.0 (2023-02-21)
- **新增**:新增物料配置相关接口。
- **新增**:新增抖音生活服务创建适用人群、代运营、外卖等相关接口。
- Release 2.0.1 (2023-02-06)
- **修复**:修复刷新接口调用凭证接口模型定义错误。
- Release 2.0.0 (2022-12-06)
- **变更**:升级公共组件至 v2.6.0。
- Release 1.4.0 (2022-12-05)
- **新增**:新增部分生活服务开放能力抖音生活服务相关接口。
- **新增**:新增抖音生活服务开放能力会员相关 Webhook 事件模型。
- **修复**:修复 `TikTokClientResponseExtra` 类型的拼写错误。
- Release 1.3.0 (2022-12-04)
- **新增**:随官方更新抖音视频相关接口模型。
- **新增**:随官方更新评论回复 Webhook 事件模型。
- **变更**:移除部分已废弃接口。
- Release 1.2.0 (2022-08-25)
- **新增**:新增服务市场开放能力相关接口。
- **新增**:新增生活服务开放能力 CPS 佣金相关接口。
- **新增**:新增生活服务开放能力抖音生活服务门店查询、团购核销、团购对账、会员接入、订单查询相关接口。
- **变更**:调整 `TikTokClientOptions.Endpoints` 的默认值。
- Release 1.1.0 (2022-05-02)
- **新增**:新增生活服务开放能力商品库接入相关接口。
- **新增**:新增生活服务开放能力交易系统接入相关接口。
- **变更**:升级公共组件至 v2.5.0。
- Release 1.0.0 (2022-03-07)
- 首次发布。
---
### 模块 `SKIT.FlurlHttpClient.ByteDance.TikTokGlobal` 更新日志
[展开查看]
- Release 3.2.0 (2024-11-07)
- **新增**:随官方更新调研(Research)相关接口。
- Release 3.1.0 (2024-07-14)
- **变更**:升级公共组件至 v3.1.0。
- Release 3.0.1 (2024-03-10)
- **修复**:修复部分以反斜杠结尾的接口地址错误。影响版本:v3.0.0。
- Release 3.0.0 (2024-03-04)
- **新增**:新增内容发布(Content Posting)、个人数据可携带权(Data Portability)、调研(Research)、商业化内容(Commercial Content)等相关接口。
- **变更**:移除原 v1 版 API 客户端。
- **变更**:升级公共组件至 v3.0.0。完整变更说明请参阅迁移指南。
- Release 2.1.0 (2023-03-11)
- **新增**:支持 OAuth、用户等相关的 v2 版 API。
- Release 2.0.0 (2022-12-06)
- 首次发布。
---
### 模块 `SKIT.FlurlHttpClient.ByteDance.TikTokGlobalShop` 更新日志
[展开查看]
- Release 3.5.0 (2025-03-31)
- **变更**:移除已废弃的旧版本 API。
- **修复**:修复因大小写敏感导致的请求签名错误。(_via_ [GitHub #37](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.ByteDance/issues/37))
- Release 3.4.0 (2024-11-14)
- **新增**:新增商品制造商与责任人相关接口。
- **新增**:新增外部订单相关接口。
- **新增**:新增优惠券相关接口。
- **新增**:新增 FBT 相关接口。
- **新增**:新增获取授权的类目资产列表、搜索产品尺码表模板、发起商品分类升级任务、获取客服统计数据、创建履约起步价套餐等接口。
- **新增**:随官方更新商品、订单、财务等相关接口模型。
- Release 3.3.0 (2024-07-14)
- **新增**:随官方更新商品 SKU 相关接口模型。
- **变更**:升级公共组件至 v3.1.0。
- Release 3.2.0 (2024-06-12)
- **新增**:新增商品信息质检相关接口。
- **新增**:随官方更新授权认证、商品分类等相关接口模型。
- Release 3.1.0 (2024-05-15)
- **新增**:接入新版本 API(即 v202309 API)。
- **新增**:新增反序列化 Webhook 事件相关的工具方法。
- **变更**:独立化旧版本 API。
- Release 3.0.0 (2024-03-04)
- **新增**:新增获取商品库存列表接口。
- **新增**:新增商品预检接口。
- **新增**:新增获取运输服务接口。
- **新增**:随官方更新商品、订单等相关接口模型。
- **变更**:升级公共组件至 v3.0.0。完整变更说明请参阅迁移指南。
- Release 2.1.0 (2023-05-09)
- **新增**:新增创建品牌接口。
- Release 2.0.0 (2023-03-28)
- 首次发布。
================================================
FILE: CONTRIBUTING.md
================================================
# CONTRIBUTING
在你参与贡献本项目之前,请先阅读如下指南:
- [如何提问?](#question)
- [如何报告缺陷?](#bug-report)
- [如何提出功能建议?](#feature-request)
- [如何发起拉取请求(Pull Request)?](#pull-request)
---
## 如何提问?
如果你对如何使用本库有疑问,请先阅读本项目提供的开发文档,并在 Issue 列表中尝试搜索。
如果你的疑问仍不能得到解决,请开启一个新的 Issue。
---
## 如何报告缺陷?
如果你发现源代码中的漏洞、运行发生的异常、或文档里的错误,你可以通过提交 Issue 来指出。当然,如果你可以提交修复后的 PR 就再好不过了。
提交 Issue 时,请包含以下内容:
1. 关于问题的简单描述。
2. 发生问题的运行环境(如:操作系统版本,.NET Runtime 版本,引用本库的版本,等等)。
3. 与问题相关的代码,或可复现问题的最小化项目(可上传至代码托管仓库或使用 GitHub Gist)。
4. 抛出错误时的异常消息和堆栈跟踪。
请谨记,你所提供的信息越丰富,对于我们的帮助就越大,修复的可能性也就越高。
---
## 如何提出功能建议?
如果你需要某些新功能,或对现有实现提出更好的建议,你可以通过提交 Issue 来说明。
提交 Issue 前,请注意以下几点:
1. 本库只专注于 API 的封装,更偏向于 SDK 而非一个完整的 Web 框架,请不要提出本应该在框架层实现的功能。
2. 本库提供了很多可扩展的接口,请评估是否可以在不修改本项目的前提下实现你想要的功能。
3. 稳定性至关重要,请谨慎提出需要大量破坏性变化的功能。
---
## 如何发起拉取请求?
在向本项目发起 PR 时,请确保已执行了以下操作:
1. 检查新的代码是否遵循了本项目的现有代码格式和命名标准:
- **禁止**:源代码中不得包含连续的空白行,字段、属性、方法之间应保留一个空白行;
- **必须**:应确保目录结构与现有目录结构一致;
- **必须**:应使用大驼峰命名方式命名类(即 Class)、属性(即 Property)和方法(即 Method),具体可参考已有模型;
- **必须**:应遵循开发文档中关于 API 模型命名的方式来提供新的 API,具体可参考已有模型;
- **必须**:应为可公开访问的类、属性和方法提供 XML 文档注释,具体可参考已有注释;
- **必须**:API 模型中的数组形式的字段,在请求模型中应声明为 `IList` 泛型类型,在响应模型中应声明为数组类型,具体可参考已有模型;
- **必须**:API 模型中的子类型,应统一包含在一个名为 _Types_ 的公开的嵌套静态类中,具体可参考已有模型;
- **必须**:API 模型中的 JsonConverter,应统一嵌套在一个名为 _Converters_ 的内部的嵌套静态类中,具体可参考已有模型;
- **必须**:API 模型中的引用类型的非空属性,在请求模型中应赋值为该类型的默认构造实例(`string` 类型则为 `string.Empty`),在响应模型中应赋值为 `default!`,具体可参考已有模型;
- **必须**:API 模型中的引用类型的可空属性,应在声明时标记为 `class?`(_class_ 为具体类名),具体可参考已有模型;
- **必须**:API 模型中的属性,如果序列化后的命名为缩写,应恢复其完整形式(如 _img_ → _Image_、_thumb_ → _Thumbnail_、_avg_ → _Average_、_cid_ → _CategoryId_ 等等),但某些特定的专有名词则无需照此处理(如 _Id_、_Http_、_Url_、_Cgi_ 等等);
- **建议**:API 模型中的属性,如果序列化后的取值只有 0 / 1、且日后也不可能会增加其他取值,可声明为 `bool` 类型;
- **建议**:API 模型中的属性,如果序列化后是日期时间类型的字符串,可声明为 `DateTimeOffset` 类型;
- **建议**:API 模型中的属性,如果序列化后是 JSON 格式的字符串,可声明为强类型并配合相应的 JsonConverter、而非直接声明为 `string` 类型;
- **建议**:API 模型中的 `bool` 类型的属性,命名可以 _Is_、_Has_ 等开头;
- **建议**:API 模型中的表示时间戳的属性,命名可以 _Timestamp_ 等结尾;
- 其他注意事项请参阅微软官方提供的[《框架设计准则》](https://docs.microsoft.com/zh-CN/dotnet/standard/design-guidelines)。
2. 编写新的单元测试、并运行已有的单元测试来验证你的更改,所有功能和修复的错误都必须进行以验证它们是否有效:
- **禁止**:请注意单元测试项目的 `csproj` 文件,如果在其下添加新文件时,可能导致它的内容发生变化,请不要将此类修改操作提交到 git 中;
- **禁止**:请注意单元测试项目下的 `appsettings.json` 文件,请在克隆仓库后的第一时间执行 `git update-index --assume-unchanged` 命令,避免修改此文件后将敏感信息提交到 git 中;
- **必须**:Code Style 测试应完全通过,且提供新的 API 模型示例;
- **必须**:如果是非 API 接口的调整(如工具类等),则应提供测试用例;
- **必须**:单元测试项目下的 API 模型示例的目录结构与文件命名,应与源项目保持一致,具体可参考已有示例;
- **建议**:请尽可能地与字节跳动官方文档给出的示例保持一致。
3. 规范 Commit Log:
- **必须**:提交记录的格式应固定为 `(): `。
- **必须**:提交记录中的 ``,可取值为:
- _feat_:新增或变更已有功能;
- _fix_:修复缺陷或拼写错误;
- _docs_:文档等内容的变更;
- _style_:格式调整(即不涉及任何代码内容上的变化);
- _refactor_:重构(即代码内容发生变化,但不影响现有功能,也未新增任何功能);
- _test_:测试相关;
- _chore_:其他杂项。
- **必须**:提交记录中的 ``,可取值为:
- _microapp_:关于 `SKIT.FlurlHttpClient.ByteDance.MicroApp` 项目的变化;
- _douyinopen_:关于 `SKIT.FlurlHttpClient.ByteDance.DouyinOpen` 项目的变化;
- _douyinshop_:关于 `SKIT.FlurlHttpClient.ByteDance.DouyinShop` 项目的变化;
- _oceanengine_:关于 `SKIT.FlurlHttpClient.ByteDance.OceanEngine` 项目的变化;
- _tiktok_:关于 `SKIT.FlurlHttpClient.ByteDance.TikTokGlobal` 项目的变化;
- _tiktokshop_:关于 `SKIT.FlurlHttpClient.ByteDance.TikTokGlobalShop` 项目的变化;
- 留空:不属于上述任何情形。
- **建议**:提交记录应遵循最小化原则,避免修改或新增了几十处、却混杂在一起提交,以免为日后搜索查询造成困扰。
请注意,对软件来说,适当的规范和标准绝不是消灭代码内容的创造性、优雅性,而是限制过度个性化,以一种普遍认可的统一方式一起做事,提升协作效率,降低沟通成本。代码的字里行间流淌的是软件系统的血液,质量的提升是尽可能少踩坑,杜绝踩重复的坑,切实提升软件开发质量和团队协作效率。
因此,本项目会严格约束 PR 规范,并有权对 PR 的发起者提出需求意见和建议,只到发起者做出符合要求修改后才会被批准合并。(注:已产生的提交记录可通过 `git rebase` 命令修改)
另外需要说明的是,Gitee 同步仓库后可能会丢失 PR 中的提交记录,如果发起者介意这一点,请务必只在 GitHub 发起 PR。
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2021 RHQYZ
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
# SKIT.FlurlHttpClient.ByteDance
[](https://gitee.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.ByteDance)
[](https://gitee.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.ByteDance)
[](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.ByteDance)
[](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.ByteDance)
[](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.ByteDance)
[](https://mit-license.org/)
基于 `Flurl.Http` 的字节跳动 HTTP API SDK,目前已包含抖音开放平台、抖音小程序开放平台、抖店开放平台、巨量引擎开放平台、TikTok Developer API、TikTok Shop Open Platform 等模块。
> 更多 SKIT.FlurlHttpClient 系列开发工具包请[点此查看](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient)。
---
## 特性
- 基于 `Flurl.Http`。
- 支持 .NET Framework 4.6.2+、.NET Core 3.1+、.NET 5.0+ 多目标框架。
- 支持 Windows / Linux / macOS 多平台部署。
- 支持 `System.Text.Json`(默认)和 `Newtonsoft.Json` 两种序列化方式。
- 强类型接口模型。
- 全异步式编程。
- 提供 SourceLink 调试符号文件。
- 完整、完善、完全的字节跳动 HTTP API 封装。
---
## 模块
| 名称 | NuGet | 其他 |
| :----------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------: |
| 抖音开放平台 | [](https://www.nuget.org/packages/SKIT.FlurlHttpClient.ByteDance.DouyinOpen)
[](https://www.nuget.org/packages/SKIT.FlurlHttpClient.ByteDance.DouyinOpen) | [开发文档](./docs/DouyinOpen/README.md) |
| 抖音小程序开放平台(小程序、小游戏) | [](https://www.nuget.org/packages/SKIT.FlurlHttpClient.ByteDance.MicroApp)
[](https://www.nuget.org/packages/SKIT.FlurlHttpClient.ByteDance.MicroApp) | [开发文档](./docs/MicroApp/README.md) |
| 抖店开放平台(抖音小店、今日特卖) | _已停止维护_ | [开发文档](./docs/DouyinShop/README.md) |
| 巨量引擎开放平台(头条广告) | _开发中_ | |
| TikTok Developer API | [](https://www.nuget.org/packages/SKIT.FlurlHttpClient.ByteDance.TikTokGlobal)
[](https://www.nuget.org/packages/SKIT.FlurlHttpClient.ByteDance.TikTokGlobal) | [Documentation](./docs/TikTokGlobal/README.md) |
| TikTok Shop Open Platform | [](https://www.nuget.org/packages/SKIT.FlurlHttpClient.ByteDance.TikTokGlobalShop)
[](https://www.nuget.org/packages/SKIT.FlurlHttpClient.ByteDance.TikTokGlobalShop) | [Documentation](./docs/TikTokGlobalShop/README.md) |
---
## 参与贡献
- GitHub Repo:https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.ByteDance.git
- Gitee Repo:https://gitee.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.ByteDance.git
以上仓库地址同步更新,均可接受 Issue 或 Pull Request。
如何参与贡献请参阅 [CONTRIBUTING](./CONTRIBUTING.md)。
---
## 更新日志
详细更新说明请参阅 [CHANGELOG](./CHANGELOG.md)。
================================================
FILE: SKIT.FlurlHttpClient.ByteDance.slnx
================================================
================================================
FILE: docs/DouyinOpen/Advanced_Dispose.md
================================================
## 避免内存泄漏
---
本功能来自于公共组件,请参阅公共组件下的相关文档:
> [《SKIT.FlurlHttpClient 高级用法:避免内存泄漏》](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient/blob/main/docs/README.md)
---
### 镜像站点
国内用户如访问 GitHub 网络状况不佳,可在打开上述链接后,手动将浏览器地址栏中的域名部分 **github.com** 替换为 **gitee.com**、剩余路径部分保持不变即可。
================================================
FILE: docs/DouyinOpen/Advanced_HttpClient.md
================================================
## 配置 HttpClient
---
本功能来自于公共组件,请参阅公共组件下的相关文档:
> [《SKIT.FlurlHttpClient 高级用法:配置 HttpClient》](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient/blob/main/docs/README.md)
---
### 镜像站点
国内用户如访问 GitHub 网络状况不佳,可在打开上述链接后,手动将浏览器地址栏中的域名部分 **github.com** 替换为 **gitee.com**、剩余路径部分保持不变即可。
================================================
FILE: docs/DouyinOpen/Advanced_HttpClientFactory.md
================================================
## 与 `IHttpClientFactory` 集成
---
本功能来自于公共组件,请参阅公共组件下的相关文档:
> [《SKIT.FlurlHttpClient 最佳实践:与 `IHttpClientFactory` 集成》](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient/blob/main/docs/README.md)
---
### 镜像站点
国内用户如访问 GitHub 网络状况不佳,可在打开上述链接后,手动将域名部分的 **github.com** 替换为 **gitee.com**、剩余路径部分保持不变,即可访问。
================================================
FILE: docs/DouyinOpen/Advanced_Interceptor.md
================================================
## 使用拦截器
---
本功能来自于公共组件,请参阅公共组件下的相关文档:
> [《SKIT.FlurlHttpClient 高级用法:使用拦截器》](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient/blob/main/docs/README.md)
---
### 内置拦截器
本库内置了一个用于在发出请求时自动生成请求签名的拦截器。
---
### 镜像站点
国内用户如访问 GitHub 网络状况不佳,可在打开上述链接后,手动将浏览器地址栏中的域名部分 **github.com** 替换为 **gitee.com**、剩余路径部分保持不变即可。
================================================
FILE: docs/DouyinOpen/Advanced_JsonSerializer.md
================================================
## 配置 JSON 序列化器
---
本功能来自于公共组件,请参阅公共组件下的相关文档:
> [《SKIT.FlurlHttpClient 高级用法:配置 JSON 序列化器》](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient/blob/main/docs/README.md)
---
### 镜像站点
国内用户如访问 GitHub 网络状况不佳,可在打开上述链接后,手动将浏览器地址栏中的域名部分 **github.com** 替换为 **gitee.com**、剩余路径部分保持不变即可。
================================================
FILE: docs/DouyinOpen/Basic_EventDeserialization.md
================================================
## 如何解析 Webhook 事件?
---
对于抖音开放平台推送过来的 Webhook 事件,本库封装了直接解析成事件模型的扩展方法,下面给出一个示例:
```csharp
/* 以 authorize 事件为例 */
string webhookJson = "{ ... }";
var webhookModel = client.DeserializeEvent(webhookJson);
```
完整的 Webhook 模型定义可以参考项目目录下的 _src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Events_ 目录。
---
### 事件类型:
由于抖音开放平台会将全部事件推送到同一个 Webhook 地址上,开发者需要根据事件类型才能决定如何反序列化。
这里给出一种解决方案:
```csharp
DouyinOpenEvent eventModel = client.DeserializeEvent(webhookJson);
string eventType = eventModel.Event?.ToLower();
switch (eventType)
{
case "authorize":
{
var webhookModel = client.DeserializeEvent(webhookJson);
}
break;
// 省略其他情况
}
```
================================================
FILE: docs/DouyinOpen/Basic_EventSignatureVerification.md
================================================
## 如何验证 Webhook 事件签名?
---
> 请先自行阅读:
>
> [《抖音开放平台开发文档 - Webhooks:概述》](https://open.douyin.com/platform/doc/6850452582826067975)
同样的,你既可以利用本库提供的 `SHA1Utility` 工具类自行进行签名验证,也可以通过扩展方法实现:
```csharp
/* 验证 Webhook 事件签名 */
bool ret = client.VerifyEventSignature(
webhookJson: "抖音 Webhook 事件中请求正文",
webhookSignature: "抖音 Webhook 事件中的 X-Douyin-Signature 字段"
);
```
================================================
FILE: docs/DouyinOpen/Basic_Extensions.md
================================================
## 如何自定义额外的 API 接口?
---
如果有某些接口本库尚未支持,你可按照下面的示例自行扩展:
```csharp
/* 继承 DouyinOpenRequest 实现自定义请求类 */
public class MyFakeRequest : DouyinOpenRequest
{
[Newtonsoft.Json.JsonProperty("my_fake_props")]
[System.Text.Json.Serialization.JsonPropertyName("my_fake_props")]
public string MyFakeProps { get; set; }
}
/* 继承 DouyinOpenResponse 实现自定义响应类 */
public class MyFakeResponse : DouyinOpenResponse
{
public static class Types
{
public class Data : DouyinOpenResponseData
{
[Newtonsoft.Json.JsonProperty("my_fake_props")]
[System.Text.Json.Serialization.JsonPropertyName("my_fake_props")]
public string MyFakeProps { get; set; }
}
}
}
/* 扩展 DouyinOpenClient 方法 */
public static class MyFakeClientExtensions
{
public static async Task ExecuteMyFakeAsync(this DouyinOpenClient client, MyFakeRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateRequest(request, HttpMethod.Post, "my-fake-url")
.SetQueryParam("open_id", request.OpenId)
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync(flurlReq, request, cancellationToken);
}
}
```
同样的,你也可自行扩展 Webhook 事件模型:
```csharp
/* 继承 DouyinOpenEvent 实现自定义的 Webhook 事件 */
public class MyFakeEvent : DouyinOpenEvent
{
public static class Types
{
public class Content
{
[Newtonsoft.Json.JsonProperty("my_fake_props")]
[System.Text.Json.Serialization.JsonPropertyName("my_fake_props")]
public string MyFakeProps { get; set; }
}
}
}
```
================================================
FILE: docs/DouyinOpen/Basic_GoodLifeSPIDecryption.md
================================================
## 如何解密抖音生活服务 SPI 接口中的加密字段?
---
> 请先自行阅读:
>
> [《抖音开放平台开发文档 - 生活服务开放能力 - 接入前准备:加密字段解密方法》](https://partner.open-douyin.com/docs/resource/zh-CN/dop/develop/openapi/life-service-open-ability/life.capacity/beforeinsert/decrypt)
你可根据官方文档的规则利用本库提供的 `AESUtility` 工具类自行进行数据解密。
此外,本库还封装了直接解密的扩展方法,下面给出一个示例:
```csharp
string rawData = client.DecryptSPICipherField("密文");
```
================================================
FILE: docs/DouyinOpen/Basic_MobileNumberDecryption.md
================================================
## 如何解密用户公开信息中的手机号码?
---
> 请先自行阅读:
>
> [《抖音开放平台开发文档 - 用户管理:手机号解密代码示例》](https://open.douyin.com/platform/doc/6943439913106835470)
你可根据官方文档的规则利用本库提供的 `AESUtility` 工具类自行进行数据解密。
此外,本库还封装了直接解密的扩展方法,下面给出一个示例:
```csharp
string rawMobileNumber = client.DecryptOAuthUserInfoMobileNumber("加密过的手机号");
```
================================================
FILE: docs/DouyinOpen/Basic_ModelDefinition.md
================================================
## 如何快速找到需要调用的 API 模型类名 / 方法名?
---
本库提供的请求模型、响应模型和接口方法,三者均保持同名。
例如,获取粉丝列表的请求是 `FansListRequest`,响应是 `FansListResponse`,接口是 `ExecuteFansListAsync()`。知道其中一个,其余两个就可以快速地推断出了。
再有,每个对象的命名与官方文档的接口地址大体保持一致。例如刚刚提到的获取粉丝列表,它的接口地址是 `[GET] /fans/list`,将其中的反斜杠去掉、并以大驼峰命名法的方式调整它,就可以得到前文提到的几个对象了。如果路由中带有版本信息,那么版本号一般都在结尾处,例如接口 `[POST] /douyin/v1/user/fans_data` 对应的是 `DouyinUserFansDataV1`。此外,部分接口地址会以 `/api/` 开头,在命名中会被省略。
完整的模型定义可以参考项目目录下的 _src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Models_ 目录。
---
### 抖音开放平台 API 支持情况:
[展开查看]
| | 抖音 API | 备注 |
| :-: | :-------------------------: | :------: |
| √ | 账号授权 | |
| √ | 用户管理 | |
| √ | 视频管理 | |
| √ | 互动管理:私信管理 | |
| √ | 互动管理:群聊管理 | |
| √ | 互动管理:经营工具 | |
| √ | 互动管理:意向用户管理 | |
| √ | 互动管理:评论管理 | |
| √ | 互动管理:场景跳转 | |
| √ | 互动管理:投稿任务 | |
| √ | 搜索管理 | |
| √ | 数据开放服务:用户数据 | |
| √ | 数据开放服务:视频数据 | |
| √ | 数据开放服务:直播数据 | |
| √ | 数据开放服务:粉丝画像数据 | |
| √ | 数据开放服务:热点视频数据 | |
| √ | 数据开放服务:星图数据 | |
| √ | 数据开放服务:榜单数据 | |
| √ | 企业号开放能力:评论管理 | |
| × | 生活服务开放能力 | _开发中_ |
| √ | 工具能力:素材管理 | |
| √ | 工具能力:小程序接口能力 | |
| √ | 工具能力:沙盒管理 | |
| √ | 工具能力:Ticket 管理 | |
| √ | 服务市场开放能力 | |
| √ | 小程序推广计划 | |
| √ | 联合授权 | |
================================================
FILE: docs/DouyinOpen/Basic_Parameters.md
================================================
## 如何生成 JSBridge 初始化时所需的参数及签名?
---
> 请先自行阅读:
>
> [《抖音开放平台开发文档 - 授权:JS 验证签名》](https://open.douyin.com/platform/doc/6850443440044410888)
你可根据官方文档的规则利用本库提供的 `MD5Utility` 工具类自行进行签名生成。
此外,本库还封装了直接生成参数及签名的扩展方法,下面给出一个示例:
```csharp
/* 以生成 sdk.config() 所需参数为例 */
var request = new Models.JSGetTicketRequest()
{
AccessToken = "抖音开放平台的 AccessToken"
};
var response = await client.ExecuteJSGetTicketAsync(request);
var paramMap = client.GenerateParametersForJSBridgeConfig(response.Data.Ticket, "https://example.com");
```
---
### 【附】生成参数相关扩展方法速查表:
- 生成客户端 JSBridge `sdk.config` 所需的参数字典:`GenerateParametersForJSBridgeConfig`
- 生成抖音获取授权临时票据的 URL:`GenerateParameterizedUrlForPlatformOAuthConnect`
================================================
FILE: docs/DouyinOpen/Migration_V3.md
================================================
## v3.x 迁移指南
v3.x 版本是一个主要版本,其中包括了一些破坏性的变化。从 v2.x 升级到 v3.x 之前,请仔细阅读本文档。
---
### 目标框架和基础库的变更
微软官方已于 2022 年 4 月 26 日宣布中止对 .NET Framework 4.6.1 的支持。因此,本项目的最低运行时要求调整为 .NET Framework 4.6.2。
与此同时,相关的 .NET 基础库(即通常在 `System.*` 或 `Microsoft.*` 命名空间下的内置依赖)版本对齐至 .NET 8.0。
### `Flurl.Http` 的变更
本库所依赖的 `Flurl.Http` 版本已升级至 v4.0.0,并由此带来一些底层的破坏性变化。
通常情况下,开发者不需要关注这些变化,除非你正在自定义额外的 API 接口。
### 新的请求、响应模型
原有的请求模型中的 `Timeout` 属性,变更为 `WithTimeout()` 方法:
```csharp
/* v2.x 设置单个请求超时时间 */
request.Timeout = TimeSpan.FromMinutes(2);
/* v3.x 设置单个请求超时时间 */
request.WithTimeout(TimeSpan.FromMinutes(2));
```
原有的响应模型中的 `RawStatus` 属性,变更为 `GetRawStatus()` 方法;`RawHeaders` 属性,变更为 `GetRawHeaders()` 方法;`RawBytes` 属性,变更为 `GetRawBytes()` 方法:
```csharp
/* v2.x 读取单个响应原始状态码 */
int statusCode = response.RawStatus;
/* v2.x 读取单个响应原始响应标头 */
IDictionary headers = response.RawHeaders;
/* v2.x 读取单个响应原始响应体 */
byte[] bytes = response.RawBytes;
/* v3.x 读取单个响应原始状态码 */
int statusCode = response.GetRawStatus();
/* v3.x 读取单个响应原始响应标头 */
HttpHeaderCollection headers = response.GetRawHeaders();
/* v3.x 读取单个响应原始响应体 */
byte[] bytes = response.GetRawBytes();
```
需要注意的是,上述 Get 方法返回的均为同一个对象引用,因此请不要在获取后尝试修改它们的内容。
### 新的构造器模式(配置 `HttpClient`)
随着 `Flurl.Http` 的升级,原有的与 `IHttpClientFactory` 集成的方式发生了根本性的改变。
为了应对这种变化(请参阅本文档[《与 `HttpClientFactory` 集成》](./Advanced_HttpClientFactory.md)这一章节),也为了日后能更加灵活地配置客户端,我们在新版本中提供了构造器模式来构造客户端:
```csharp
var options = new DouyinOpenClientOptions() { /* 具体配置项略 */ };
var client = DouyinOpenClientBuilder.Create(options).Build();
```
当然,原有的实例化方式仍然可用:
```csharp
var options = new DouyinOpenClientOptions() { /* 具体配置项略 */ };
var client = new DouyinOpenClient(options);
```
### 新的异常类型
公共组件中提供了如下的异常类型:
- `CommonException`:异常基类。
- `CommonHttpException`:执行 HTTP 请求时引发的异常。
- `CommonTimeoutException`:超时引发的异常。
- `CommonSerializationException`:序列化或反序列化时引发的异常。
- `CommonInterceptorCallException`:拦截器引发的异常。
模块内更加细化的异常信息,统一由 `DouyinOpenException` 异常类型包装,但废弃并移除了其派生的异常类型:
- `DouyinOpenRequestTimeoutException`
- `DouyinOpenEventSerializationException`
### 基础类型:`SKIT.FlurlHttpClient.Primitives.EncodedeString`
在进行加解密或哈希等操作时,参与运算的数据和最终得到的结果通常是字节数组(即 `byte[]`)形式。而在实际应用中,我们常常需要将这些字节序列转换成文本格式。我们发现即便是同一种加解密或哈希算法,在不同平台上所需要的编码方式也可能不同。比如同为 SHA256,在某些接口中需要转换为十六进制(HEX)编码传参,而在另一些接口中却需要转换为 Base64 编码传参。
在过往的版本中,我们在不同的模块中针对不同平台的要求提供了单独的封装方法,这使得代码更加分散且不易维护。
为了统一处理并简化这些差异,我们在公共组件中引入了 `EncodedString` 这一类型。`EncodedString` 类型是一个封装结构,它提供了统一的接口来处理不同编码方式的字符串。通过该类型,开发者可以不必关心底层使用的是哪种编码方式,从而使代码更加简洁和清晰。
幸运的是,为了简化升级的难度,`EncodedString` 仍可以与 `String` 类型互相转换:
```csharp
// string → EncodedString
string str = "U0tJVC5GbHVybEh0dHBDbGllbnQgaXMgQVdFU09NRSE=";
EncodedString estr = (EncodedString)str;
// EncodedString → string
EncodedString estr = new EncodedString("U0tJVC5GbHVybEh0dHBDbGllbnQgaXMgQVdFU09NRSE=", EncodingKinds.Base64);
string str = (string)estr;
```
涉及此变化的包括 `AESUtility`、`MD5Utility`、`SHA1Utility`、`SHA256Utility`、`HMACUtility` 等工具类。
### 基础类型:`SKIT.FlurlHttpClient.Primitives.ErroredResult`
在进行数据验签等操作时,由于传入了错误的参数导致抛出异常,通常需要被视为验签失败。
在过往的版本中,我们在相应的方法内部 `try-catch` 捕获所有异常,并直接返回 `false`。然而,这种做法虽然简化了返回值的处理,但却严重限制了开发者错误调试的能力,因为它无法提供关于异常的详细信息。虽然有部分方法提供了带有 `(..., out Exception error)` 引用参数的重载,但却不能在异步方法中所使用。
为了解决这一问题,我们在公共组件中引入了 `ErroredResult` 这一类型。`ErroredResult` 类型是一个封装结构,它不仅可以在逻辑上表示操作的成功与否,而且能够携带发生的异常信息,极大地便利了异常处理和调试过程。
幸运的是,为了简化升级的难度,`ErroredResult` 仍可以与 `Boolean` 类型互相转换:
```csharp
// Boolean → ErroredResult
bool ret = true;
ErroredResult eret = (ErroredResult)ret;
// ErroredResult → Boolean
ErroredResult eret = new ErroredResult(true);
bool ret = (bool)eret;
```
涉及此变化的包括 `VerifyEventSignature()` 等扩展方法。
### 方法命名参数的变化
为了统一并规范化各个模块,我们调整了部分方法的命名参数。如果你在调用该方法时使用了命名实参,请注意修改。
涉及此变化的包括 `DeserializeEvent()`、`VerifyEventSignature()` 等扩展方法,及 `AESUtility`、`MD5Utility`、`SHA1Utility`、`SHA256Utility`、`HMACUtility` 等工具类。
================================================
FILE: docs/DouyinOpen/README.md
================================================
# SKIT.FlurlHttpClient.ByteDance.DouyinOpen
基于 `Flurl.Http` 的[抖音开放平台](https://open.douyin.com/platform) HTTP API SDK。
---
## 功能
- 基于抖音开放平台 API 封装。
- 提供了抖音开放平台 API 所需的 AES、MD5、SHA-1、SHA-256、HMAC-SHA-256 等算法工具类。
- 提供了生成授权链接、生成 JSBridge 签名、解析回调通知事件、解密手机号码等扩展方法。
- 配合 [SKIT.FlurlHttpClient.ByteDance.MicroApp](../MicroApp/README.md) 模块,可无缝对接抖音小程序开放平台。
---
## 快速入门
> [!IMPORTANT]
> 此目录下的文档适用于 v3.x 版本的模块。如果你正在使用 2.x 版本,请移步至 GitHub/Gitee 的已归档分支。
### 安装:
提示:如果你使用 Visual Studio NuGet 管理器图形化界面,请在搜索结果中勾选“**包括预发行版**”。
```shell
# 通过 NuGet 安装
> Install-Package SKIT.FlurlHttpClient.ByteDance.DouyinOpen
# 通过 dotnet-tools 安装
> dotnet add package SKIT.FlurlHttpClient.ByteDance.DouyinOpen
```
### 初始化:
```csharp
using SKIT.FlurlHttpClient.ByteDance.DouyinOpen;
var options = new DouyinOpenClientOptions()
{
ClientKey = "抖音开放平台应用 Key",
ClientSecret = "抖音开放平台应用密钥"
};
var client = DouyinOpenClientBuilder.Create(options).Build();
```
### 请求 & 响应:
```csharp
using SKIT.FlurlHttpClient.ByteDance.DouyinOpen;
using SKIT.FlurlHttpClient.ByteDance.DouyinOpen.Models;
/* 以获取用户信息接口为例 */
var request = new OAuthUserInfoRequest()
{
AccessToken = "抖音开放平台的 AccessToken",
OpenId = "用户唯一标识"
};
var response = await client.ExecuteOAuthUserInfoAsync(request);
if (response.IsSuccessful())
{
Console.WriteLine("昵称:" + response.Data.Nickname);
Console.WriteLine("头像:" + response.Data.AvatarUrl);
}
else
{
Console.WriteLine("错误代码:" + response.Extra?.ErrorCode);
Console.WriteLine("错误描述:" + response.Extra?.ErrorDescription);
}
```
---
## 基础用法
- ⭐ [如何快速找到需要调用的 API 模型类名 / 方法名?](./Basic_ModelDefinition.md)
- [如何解析 Webhook 事件?](./Basic_EventDeserialization.md)
- [如何验证 Webhook 事件签名?](./Basic_EventSignatureVerification.md)
- ⭐ [如何生成 JSBridge 初始化时所需的参数及签名?](./Basic_Parameters.md)
- [如何解密用户公开信息中的手机号码?](./Basic_MobileNumberDecryption.md)
- [如何解密抖音生活服务 SPI 接口中的加密字段?](./Basic_GoodLifeSPIDecryption.md)
- [如何自定义额外的 API 接口?](./Basic_Extensions.md)
---
## 高级技巧
- [配置 JSON 序列化器](./Advanced_JsonSerializer.md)
- [配置 HttpClient](./Advanced_HttpClient.md)
- [使用拦截器](./Advanced_Interceptor.md)
- [避免内存泄漏](./Advanced_Dispose.md)
- [与 `IHttpClientFactory` 集成](./Advanced_HttpClientFactory.md)
---
## 迁移指南
- [v3.x 迁移指南](./Migration_V3.md)
================================================
FILE: docs/DouyinShop/README.md
================================================
# SKIT.FlurlHttpClient.ByteDance.DouyinShop
基于 `Flurl.Http` 的[抖店开放平台](https://op.jinritemai.com/) HTTP API SDK。
---
## 公告
抖店开放平台已于 2022-12-05 提供了官方的 .NET SDK([点此传送](https://op.jinritemai.com/docs/guide-docs/1041/1072)),因此本项目将无限期搁置开发。
如果你有二次开发需要,请 Fork 项目后自行维护。
================================================
FILE: docs/MicroApp/Advanced_Dispose.md
================================================
## 避免内存泄漏
---
本功能来自于公共组件,请参阅公共组件下的相关文档:
> [《SKIT.FlurlHttpClient 高级用法:避免内存泄漏》](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient/blob/main/docs/README.md)
---
### 镜像站点
国内用户如访问 GitHub 网络状况不佳,可在打开上述链接后,手动将浏览器地址栏中的域名部分 **github.com** 替换为 **gitee.com**、剩余路径部分保持不变即可。
================================================
FILE: docs/MicroApp/Advanced_HttpClient.md
================================================
## 配置 HttpClient
---
本功能来自于公共组件,请参阅公共组件下的相关文档:
> [《SKIT.FlurlHttpClient 高级用法:配置 HttpClient》](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient/blob/main/docs/README.md)
---
### 镜像站点
国内用户如访问 GitHub 网络状况不佳,可在打开上述链接后,手动将浏览器地址栏中的域名部分 **github.com** 替换为 **gitee.com**、剩余路径部分保持不变即可。
================================================
FILE: docs/MicroApp/Advanced_HttpClientFactory.md
================================================
## 与 `IHttpClientFactory` 集成
---
本功能来自于公共组件,请参阅公共组件下的相关文档:
> [《SKIT.FlurlHttpClient 最佳实践:与 `IHttpClientFactory` 集成》](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient/blob/main/docs/README.md)
---
### 镜像站点
国内用户如访问 GitHub 网络状况不佳,可在打开上述链接后,手动将域名部分的 **github.com** 替换为 **gitee.com**、剩余路径部分保持不变,即可访问。
================================================
FILE: docs/MicroApp/Advanced_Interceptor.md
================================================
## 使用拦截器
---
本功能来自于公共组件,请参阅公共组件下的相关文档:
> [《SKIT.FlurlHttpClient 高级用法:使用拦截器》](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient/blob/main/docs/README.md)
---
### 内置拦截器
本库内置了一个用于在发出请求时自动生成请求签名的拦截器。
---
### 镜像站点
国内用户如访问 GitHub 网络状况不佳,可在打开上述链接后,手动将浏览器地址栏中的域名部分 **github.com** 替换为 **gitee.com**、剩余路径部分保持不变即可。
================================================
FILE: docs/MicroApp/Advanced_JsonSerializer.md
================================================
## 配置 JSON 序列化器
---
本功能来自于公共组件,请参阅公共组件下的相关文档:
> [《SKIT.FlurlHttpClient 高级用法:配置 JSON 序列化器》](https://github.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient/blob/main/docs/README.md)
---
### 镜像站点
国内用户如访问 GitHub 网络状况不佳,可在打开上述链接后,手动将浏览器地址栏中的域名部分 **github.com** 替换为 **gitee.com**、剩余路径部分保持不变即可。
================================================
FILE: docs/MicroApp/Basic_EventDeserialization.md
================================================
## 如何解析回调通知事件?
---
对于抖音小程序推送过来的回调通知事件,本库封装了直接解析成事件模型的扩展方法,下面给出一个示例:
```csharp
/* 如果是 JSON 格式的通知内容,以 text 事件为例 */
string webhookJson = "{ ... }";
var webhookModel = client.DeserializeEventFromJson(webhookJson);
/* 如果是 XML 格式的通知内容,以 text 事件为例 */
string webhookXml = " ... ";
var webhookModel = client.DeserializeEventFromXml(webhookXml);
```
完整的回调通知模型定义可以参考项目目录下的 _src/SKIT.FlurlHttpClient.ByteDance.MicroApp/Events_、_src/SKIT.FlurlHttpClient.ByteDance.Api/ExtendedSDK/OpenApi/Events_、_src/SKIT.FlurlHttpClient.ByteDance.Api/ExtendedSDK/ProductApi/Events_ 目录。
---
### 事件类型:
由于抖音小程序会将全部事件推送到同一个回调通知地址上,开发者需要根据事件类型才能决定如何反序列化。
这里给出两种解决方案。
一种是利用 `System.Xml.Linq`:
```csharp
XDocument xDoc = XDocument.Parse(webhookXml);
string msgType = xDoc.Root?.Element("MsgType")?.Value?.ToUpper();
```
另一种是利用本库的扩展方法:
```csharp
ByteDanceMicroAppEvent eventModel = client.DeserializeEventFromXml(webhookXml);
string msgType = eventModel.MessageType?.ToUpper();
switch (msgType)
{
case "TEXT":
{
var webhookModel = client.DeserializeEventFromXml(webhookXml);
}
break;
// 省略其他情况
}
```
================================================
FILE: docs/MicroApp/Basic_EventSignatureVerification.md
================================================
## 如何验证回调通知事件签名?
---
> 请先自行阅读:
>
> [《抖音小程序文档 - 消息推送客服:验证消息来自今日头条》](https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/component/message-push-customer-service)
同样的,你既可以利用本库提供的 `SHA1Utility` 工具类自行进行签名验证,也可以通过扩展方法实现:
```csharp
/* 在初始化客户端时需指定服务器推送的相关参数 */
var options = new DouyinMicroAppClientOptions()
{
// 其他配置项略
PushToken = "服务器推送的 Token"
};
var client = DouyinMicroAppClientBuilder.Create(options).Build();
/* 验证抖音服务器 */
bool ret = client.VerifyEventSignatureForEcho(
webhookTimestamp: "抖音小程序回调通知中的 timestamp 字段",
webhookNonce: "抖音小程序回调通知中的 nonce 字段",
webhookMsg: "抖音回调通知中的 msg 字段",
webhookSignature: "抖音回调通知中的 signature 字段"
);
```
================================================
FILE: docs/MicroApp/Basic_Extensions.md
================================================
## 如何自定义额外的 API 接口?
---
如果有某些接口本库尚未支持,你可按照下面的示例自行扩展:
```csharp
/* 继承 DouyinMicroAppRequest 实现自定义请求类 */
public class MyFakeRequest : DouyinMicroAppRequest
{
[Newtonsoft.Json.JsonProperty("my_fake_props")]
[System.Text.Json.Serialization.JsonPropertyName("my_fake_props")]
public string MyFakeProps { get; set; }
}
/* 继承 DouyinMicroAppResponse 实现自定义响应类 */
public class MyFakeResponse : DouyinMicroAppResponse
{
[Newtonsoft.Json.JsonProperty("my_fake_props")]
[System.Text.Json.Serialization.JsonPropertyName("my_fake_props")]
public string MyFakeProps { get; set; }
}
/* 扩展 DouyinMicroAppClient 方法 */
public static class MyFakeClientExtensions
{
public static async Task ExecuteMyFakeAsync(this DouyinMicroAppClient client, MyFakeRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateRequest(request, HttpMethod.Post, "my-fake-url")
.SetQueryParam("access_token", request.AccessToken);
return await client.SendRequestWithJsonAsync(flurlReq, request, cancellationToken);
}
}
```
同样的,你也可自行扩展回调通知事件模型:
```csharp
/* 继承 DouyinMicroAppEvent 实现自定义的 JSON 格式的回调通知事件 */
public class MyFakeEvent : DouyinMicroAppEvent, DouyinMicroAppEvent.Serialization.IJsonSerializable
{
[Newtonsoft.Json.JsonProperty("my_fake_props")]
[System.Text.Json.Serialization.JsonPropertyName("my_fake_props")]
public string MyFakeProps { get; set; }
}
/* 继承 DouyinMicroAppEvent 实现自定义的 XML 格式的回调通知事件 */
public class MyFakeEvent : DouyinMicroAppEvent, DouyinMicroAppEvent.Serialization.IXmlSerializable
{
[System.Xml.Serialization.XmlElement("my_fake_props")]
public string MyFakeProps { get; set; }
}
```
================================================
FILE: docs/MicroApp/Basic_ModelDefinition.md
================================================
## 如何快速找到需要调用的 API 模型类名 / 方法名?
---
本库提供的请求模型、响应模型和接口方法,三者均保持同名。
例如,发送订阅消息的请求是 `AppsMessageCustomSendRequest`,响应是 `AppsMessageCustomSendResponse`,接口是 `ExecuteAppsMessageCustomSendAsync()`。知道其中一个,其余两个就可以快速地推断出了。
再有,每个对象的命名与官方文档的接口地址大体保持一致。例如刚刚提到的发送订阅消息,它的接口地址是 `[POST] /apps/message/custom/send`,将其中的反斜杠去掉、并以大驼峰命名法的方式调整它,就可以得到前文提到的几个对象了。如果路由中带有版本信息,那么版本号一般都在结尾处,例如接口 `[POST] /v2/tags/image` 对应的是 `TagsImageV2`。此外,部分接口地址会以 `/api/` 开头,在命名中会被省略。
完整的模型定义可以参考项目目录下的 _src/SKIT.FlurlHttpClient.ByteDance.Api/Models_、_src/SKIT.FlurlHttpClient.ByteDance.Api/ExtendedSDK/OpenApi/Models_、_src/SKIT.FlurlHttpClient.ByteDance.Api/ExtendedSDK/ProductApi/Models_、_src/SKIT.FlurlHttpClient.ByteDance.Api/ExtendedSDK/RoleApi/Models_、_src/SKIT.FlurlHttpClient.ByteDance.Api/ExtendedSDK/Webcast/Models_ 目录。
---
### 抖音小程序开放平台 API 支持情况:
#### 1. 小程序
[展开查看]
| | 抖音 API | 备注 |
| :-: | :---------------------------------------: | :--------------------------------: |
| × | 联合授权 | 异构协议,请使用 `DouyinOpen` 模块 |
| × | 接口调用凭证:经营能力调用凭证 | 异构协议,请使用 `DouyinOpen` 模块 |
| × | 接口调用凭证:用户授权调用凭证 | 异构协议,请使用 `DouyinOpen` 模块 |
| √ | 接口调用凭证:非用户授权调用凭证 | |
| √ | 登录 | |
| √ | 小程序码与小程序链接 | |
| √ | Web 化接入 | |
| × | 私聊和群聊 | 异构协议,请使用 `DouyinOpen` 模块 |
| × | 解决方案 | 异构协议,请使用 `DouyinOpen` 模块 |
| √ | 线索组件 | |
| √ | 隐私协议 | |
| √ | 直播预约能力 | |
| √ | 视频能力 | |
| √ | 搜索能力 | |
| √ | 任务能力 | |
| √ | 电商 | |
| × | 生活服务 | _开发中_ |
| √ | 短剧行业 | |
| √ | 用户信息 | |
| √ | 分享 | |
| √ | 客服 | |
| √ | 交易工具:信用免押 | |
| √ | 交易工具:周期代扣 | |
| √ | 小程序券 | |
| √ | 交易系统:通用交易系统 | |
| × | 交易系统:生活服务交易系统 | 异构协议,请使用 `DouyinOpen` 模块 |
| √ | 交易系统:行业交易系统 | |
| √ | 素材库 | |
| √ | 内容安全 | |
| √ | 泛知识:角色系统 | |
| √ | 泛知识:课程库 | |
| √ | 担保支付 | |
| √ | 评价 | |
| √ | 其他:直播间自定义封面 | |
| √ | 其他:抖音开放平台与小程序视频打通能力 | |
| √ | 其他:上传资源 | |
| √ | 订阅消息 | |
| √ | 小程序推广计划 | |
| √ | 挂载 | |
| √ | 分发 | |
| √ | 数据分析 | |
| √ | 服务类目 | |
| √ | 直播间能力 | |
| √ | 抖音开放能力 | |
| √ | 页面结构自定义 | |
| √ | 普通二维码绑定 | |
| √ | 抖音号绑定 | |
| √ | 流量主 | |
| √ | 抖店绑定 | |
#### 2. 小游戏
[展开查看]
| | 抖音 API | 备注 |
| :-: | :----------: | :--: |
| √ | 接口调用凭证 | |
| √ | 登录 | |
| √ | 数据缓存 | |
| √ | 二维码 | |
| √ | 订阅消息 | |
| √ | 礼包福袋 | |
| √ | 内容安全 | |
#### 3. 服务商平台
[展开查看]
| | 抖音 API | 备注 |
| :-: | :----------------------------------: | :------: |
| √ | 代开发小程序:上传资源 | |
| √ | 代开发小程序:授权 | |
| √ | 代开发小程序:域名 | |
| √ | 代开发小程序:模板管理 | |
| √ | 代开发小程序:代商家管理小程序 | |
| √ | 代开发小程序:代商家入驻抖音开放平台 | |
| × | 代开发生活服务商家应用 | _开发中_ |
#### 4. 直播小玩法
[展开查看]
| | 抖音 API | 备注 |
| :-: | :------: | :--: |
| √ | 直播能力 | |
================================================
FILE: docs/MicroApp/Migration_V3.md
================================================
## v3.x 迁移指南
v3.x 版本是一个主要版本,其中包括了一些破坏性的变化。从 v2.x 升级到 v3.x 之前,请仔细阅读本文档。
---
### 目标框架和基础库的变更
微软官方已于 2022 年 4 月 26 日宣布中止对 .NET Framework 4.6.1 的支持。因此,本项目的最低运行时要求调整为 .NET Framework 4.6.2。
与此同时,相关的 .NET 基础库(即通常在 `System.*` 或 `Microsoft.*` 命名空间下的内置依赖)版本对齐至 .NET 8.0。
### `Flurl.Http` 的变更
本库所依赖的 `Flurl.Http` 版本已升级至 v4.0.0,并由此带来一些底层的破坏性变化。
通常情况下,开发者不需要关注这些变化,除非你正在自定义额外的 API 接口。
### 新的请求、响应模型
原有的请求模型中的 `Timeout` 属性,变更为 `WithTimeout()` 方法:
```csharp
/* v2.x 设置单个请求超时时间 */
request.Timeout = TimeSpan.FromMinutes(2);
/* v3.x 设置单个请求超时时间 */
request.WithTimeout(TimeSpan.FromMinutes(2));
```
原有的响应模型中的 `RawStatus` 属性,变更为 `GetRawStatus()` 方法;`RawHeaders` 属性,变更为 `GetRawHeaders()` 方法;`RawBytes` 属性,变更为 `GetRawBytes()` 方法:
```csharp
/* v2.x 读取单个响应原始状态码 */
int statusCode = response.RawStatus;
/* v2.x 读取单个响应原始响应标头 */
IDictionary headers = response.RawHeaders;
/* v2.x 读取单个响应原始响应体 */
byte[] bytes = response.RawBytes;
/* v3.x 读取单个响应原始状态码 */
int statusCode = response.GetRawStatus();
/* v3.x 读取单个响应原始响应标头 */
HttpHeaderCollection headers = response.GetRawHeaders();
/* v3.x 读取单个响应原始响应体 */
byte[] bytes = response.GetRawBytes();
```
需要注意的是,上述 Get 方法返回的均为同一个对象引用,因此请不要在获取后尝试修改它们的内容。
### 新的构造器模式(配置 `HttpClient`)
随着 `Flurl.Http` 的升级,原有的与 `IHttpClientFactory` 集成的方式发生了根本性的改变。
为了应对这种变化(请参阅本文档[《与 `HttpClientFactory` 集成》](./Advanced_HttpClientFactory.md)这一章节),也为了日后能更加灵活地配置客户端,我们在新版本中提供了构造器模式来构造客户端:
```csharp
var options = new DouyinMicroAppClientOptions() { /* 具体配置项略 */ };
var client = DouyinMicroAppClientBuilder.Create(options).Build();
```
当然,原有的实例化方式仍然可用:
```csharp
var options = new DouyinMicroAppClientOptions() { /* 具体配置项略 */ };
var client = new DouyinMicroAppClient(options);
```
### 新的客户端和入口点
原 `ByteDanceMicroAppClient` 更名为 `DouyinMicroAppClient`。其余相关类型的重命名略。
由于抖音官方增加了一批使用非用户授权调用凭证(即 `ClientToken`)的接口,并与原来的使用用户授权调用凭证(即 `AccessToken`)的接口有了显著区别。我们为此重新抽象了新、旧两种的接口模型。请注意新的 `DouyinMicroAppClient` 客户端配置项中的新、旧版入口点的独立设置。
在未来的版本更新中,我们将与抖音官方保持同步,逐步废弃旧版接口模型,直至最终彻底移除旧版入口点。
### 新的异常类型
公共组件中提供了如下的异常类型:
- `CommonException`:异常基类。
- `CommonHttpException`:执行 HTTP 请求时引发的异常。
- `CommonTimeoutException`:超时引发的异常。
- `CommonSerializationException`:序列化或反序列化时引发的异常。
- `CommonInterceptorCallException`:拦截器引发的异常。
模块内更加细化的异常信息,统一由 `DouyinMicroAppException`(即原 `ByteDanceMicroAppException`)异常类型包装,但废弃并移除了其派生的异常类型:
- `ByteDanceMicroAppRequestTimeoutException`
- `ByteDanceMicroAppEventSerializationException`
### 基础类型:`SKIT.FlurlHttpClient.Primitives.EncodedeString`
在进行加解密或哈希等操作时,参与运算的数据和最终得到的结果通常是字节数组(即 `byte[]`)形式。而在实际应用中,我们常常需要将这些字节序列转换成文本格式。我们发现即便是同一种加解密或哈希算法,在不同平台上所需要的编码方式也可能不同。比如同为 SHA256,在某些接口中需要转换为十六进制(HEX)编码传参,而在另一些接口中却需要转换为 Base64 编码传参。
在过往的版本中,我们在不同的模块中针对不同平台的要求提供了单独的封装方法,这使得代码更加分散且不易维护。
为了统一处理并简化这些差异,我们在公共组件中引入了 `EncodedString` 这一类型。`EncodedString` 类型是一个封装结构,它提供了统一的接口来处理不同编码方式的字符串。通过该类型,开发者可以不必关心底层使用的是哪种编码方式,从而使代码更加简洁和清晰。
幸运的是,为了简化升级的难度,`EncodedString` 仍可以与 `String` 类型互相转换:
```csharp
// string → EncodedString
string str = "U0tJVC5GbHVybEh0dHBDbGllbnQgaXMgQVdFU09NRSE=";
EncodedString estr = (EncodedString)str;
// EncodedString → string
EncodedString estr = new EncodedString("U0tJVC5GbHVybEh0dHBDbGllbnQgaXMgQVdFU09NRSE=", EncodingKinds.Base64);
string str = (string)estr;
```
涉及此变化的包括 `AESUtility`、`MD5Utility`、`SHA1Utility`、`HMACUtility` 等工具类。
### 基础类型:`SKIT.FlurlHttpClient.Primitives.ErroredResult`
在进行数据验签等操作时,由于传入了错误的参数导致抛出异常,通常需要被视为验签失败。
在过往的版本中,我们在相应的方法内部 `try-catch` 捕获所有异常,并直接返回 `false`。然而,这种做法虽然简化了返回值的处理,但却严重限制了开发者错误调试的能力,因为它无法提供关于异常的详细信息。虽然有部分方法提供了带有 `(..., out Exception error)` 引用参数的重载,但却不能在异步方法中所使用。
为了解决这一问题,我们在公共组件中引入了 `ErroredResult` 这一类型。`ErroredResult` 类型是一个封装结构,它不仅可以在逻辑上表示操作的成功与否,而且能够携带发生的异常信息,极大地便利了异常处理和调试过程。
幸运的是,为了简化升级的难度,`ErroredResult` 仍可以与 `Boolean` 类型互相转换:
```csharp
// Boolean → ErroredResult
bool ret = true;
ErroredResult eret = (ErroredResult)ret;
// ErroredResult → Boolean
ErroredResult eret = new ErroredResult(true);
bool ret = (bool)eret;
```
涉及此变化的包括 `VerifyEventSignatureForEcho()`、`VerifyEventSignatureFromJson()`、`VerifyEventSignatureFromXml()` 等扩展方法。
### 服务商平台、泛知识 SDK 的变化
原服务商平台 SDK 客户端的命名空间发生了变化,由 `SKIT.FlurlHttpClient.ByteDance.MicroApp.SDK.OpenApi` 移动至 `SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.OpenApi`。
原泛知识课程库 SDK 客户端的命名空间发生了变化,由 `SKIT.FlurlHttpClient.ByteDance.MicroApp.SDK.ProductApi` 移动至 `SKIT.FlurlHttpClient.Wechat.Work.ExtendedSDK.ProductApi`。
原泛知识角色系统 SDK 客户端的命名空间发生了变化,由 `SKIT.FlurlHttpClient.ByteDance.MicroApp.SDK.RoleApi` 移动至 `SKIT.FlurlHttpClient.Wechat.Work.ExtendedSDK.RoleApi`。
同时,我们提供了新的直播小玩法 SDK,位于 `SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.Webcast` 命名空间。
### 方法命名参数的变化
为了统一并规范化各个模块,我们调整了部分方法的命名参数。如果你在调用该方法时使用了命名实参,请注意修改。
涉及此变化的包括 `DeserializeEventFromJson()`、`DeserializeEventFromXml()`、`VerifyEventSignatureForEcho()`、`VerifyEventSignatureFromJson()`、`VerifyEventSignatureFromXml()` 等扩展方法,及 `AESUtility`、`MD5Utility`、`SHA1Utility`、`HMACUtility` 等工具类。
================================================
FILE: docs/MicroApp/README.md
================================================
# SKIT.FlurlHttpClient.ByteDance.MicroApp
基于 `Flurl.Http` 的[抖音小程序开放平台](https://microapp.bytedance.com/) HTTP API SDK。
本模块仅支持抖音小程序专属的 API,如需接入与抖音开放平台共享的 API,请移步 [`SKIT.FlurlHttpClient.ByteDance.DouyinOpen`](../DouyinOpen/README.md) 模块。
---
## 功能
- 基于抖音小程序开放平台 API 封装。
- 提供了抖音小程序所需的 RSA、AES、MD5、SHA-1、HMAC-SHA-256 等算法工具类。
- 提供了解析回调通知事件等扩展方法。
- 配合 [SKIT.FlurlHttpClient.ByteDance.DouyinOpen](../DouyinOpen/README.md) 模块,可无缝对接抖音开放平台。
---
## 快速入门
> [!IMPORTANT]
> 此目录下的文档适用于 v3.x 版本的模块。如果你正在使用 2.x 版本,请移步至 GitHub/Gitee 的已归档分支。
### 安装:
提示:如果你使用 Visual Studio NuGet 管理器图形化界面,请在搜索结果中勾选“**包括预发行版**”。
```shell
# 通过 NuGet 安装
> Install-Package SKIT.FlurlHttpClient.ByteDance.MicroApp
# 通过 dotnet-tools 安装
> dotnet add package SKIT.FlurlHttpClient.ByteDance.MicroApp
```
### 初始化:
```csharp
using SKIT.FlurlHttpClient.ByteDance.MicroApp;
var options = new DouyinMicroAppClientOptions()
{
AppId = "抖音小程序 AppId",
AppSecret = "抖音小程序 AppSecret",
AppKeyVersion = "应用密钥版本号,用于交易系统等需要请求签名的 API,不用则不填",
AppPrivateKey = "应用密钥私钥,用于交易系统等需要请求签名的 API,不用则不填",
ECPaySalt = "担保支付相关服务的密钥,不用则不填"
};
var client = DouyinMicroAppClientBuilder.Create(options).Build();
```
### 请求 & 响应:
```csharp
using SKIT.FlurlHttpClient.ByteDance.MicroApp;
using SKIT.FlurlHttpClient.ByteDance.MicroApp.Models;
/* 以获取用户授权登录凭证接口为例 */
var request = new AppsJsCode2SessionRequest()
{
Code = "登录 Code,与匿名 Code 二选一",
AnoymousCode = "匿名 Code,与登录 Code 二选一"
};
var response = await client.ExecuteAppsJsCode2SessionAsync(request);
if (response.IsSuccessful())
{
Console.WriteLine("会话密钥:" + response.SessionKey);
Console.WriteLine("用户 OpenId:" + response.OpenId);
Console.WriteLine("匿名 OpenId:" + response.AnonymousOpenId);
}
else
{
Console.WriteLine("错误代码:" + response.ErrorNumber);
Console.WriteLine("错误描述:" + response.ErrorTips);
}
```
### 独立的扩展客户端(服务商平台、泛知识课程库、泛知识角色系统、直播小玩法等):
部分 API 的接入点、接口模型公共参数等配置项与基础 API 完全不同,需要使用独立的扩展客户端。
- 服务商平台:
```csharp
using SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.OpenApi;
var options = new DouyinMicroAppOpenApiClientOptions()
{
ComponentAppId = "第三方应用 AppId",
ComponentAppSecret = "第三方应用 AppSecret"
};
var client = DouyinMicroAppOpenApiClientBuilder.Create(options).Build();
```
- 泛知识课程库:
```csharp
using SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.ProductApi;
var options = new DouyinMicroAppProductApiClientOptions()
{
AppId = "抖音小程序 AppId",
AppSecret = "抖音小程序 AppSecret"
};
var client = DouyinMicroAppProductApiClientBuilder.Create(options).Build();
```
- 泛知识角色系统:
```csharp
using SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.RoleApi;
var options = new DouyinMicroAppRoleApiClientOptions()
{
AppId = "抖音小程序 AppId",
AppSecret = "抖音小程序 AppSecret"
};
var client = DouyinMicroAppRoleApiClientBuilder.Create(options).Build();
```
- 直播小玩法:
```csharp
using SKIT.FlurlHttpClient.ByteDance.MicroApp.ExtendedSDK.Webcast;
var options = new DouyinMicroAppWebcastClientOptions()
{
AppId = "抖音小程序 AppId",
AppSecret = "抖音小程序 AppSecret",
AppKeyVersion = "应用密钥版本号",
AppPrivateKey = "应用密钥私钥",
PlatformPublicKey = "平台密钥公钥"
};
var client = DouyinMicroAppWebcastClientBuilder.Create(options).Build();
```
这些扩展客户端在用法上基础客户端完全相同,只需引入各自的命名空间即可。
---
## 基础用法
- ⭐ [如何快速找到需要调用的 API 模型类名 / 方法名?](./Basic_ModelDefinition.md)
- [如何解析回调通知事件?](./Basic_EventDeserialization.md)
- [如何验证回调通知事件签名?](./Basic_EventSignatureVerification.md)
- [如何自定义额外的 API 接口?](./Basic_Extensions.md)
---
## 高级技巧
- [配置 JSON 序列化器](./Advanced_JsonSerializer.md)
- [配置 HttpClient](./Advanced_HttpClient.md)
- [使用拦截器](./Advanced_Interceptor.md)
- [避免内存泄漏](./Advanced_Dispose.md)
- [与 `IHttpClientFactory` 集成](./Advanced_HttpClientFactory.md)
---
## 迁移指南
- [v3.x 迁移指南](./Migration_V3.md)
================================================
FILE: docs/TikTokGlobal/Basic_ModelDefinition.md
================================================
## API Reference Manual
Naming Policies:
- Request Models: _`${API}`_ + `Request`
- Response Models: _`${API}`_ + `Response`
- API Methods: `Execute` + _`${API}`_ + `Async`
---
### APIs
[View Details]
- Manage User Access Tokens
- Fetch an Access Token Using an Authorization Aode: `OAuthAccessToken`
- Refresh an Access Token Using a Refresh Token: `OAuthRefreshToken`
- Revoke Access: `OAuthRevokeToken`
- QR Code Authorization
- Get QR Code: `OAuthGetQrcode`
- Check QR Code Status: `OAuthCheckQrcode`
- Content Posting
- Video - Direct Post
- Initialize the Posting Pequest: `PostPublishVideoInit`
- Send Video to TikTok Servers: `PostUploadVideo`
- Video - Upload
- Initialize Video Upload: `PostPublishInboxVideoInit`
- Send Video to TikTok Servers: `PostUploadVideo`
- Photo - Direct Post
- Initialize the Posting Pequest: `PostPublishContentInit`
- Query Creator Info: `PostPublishCreatorInfoQuery`
- Get Post Status: `PostPublishStatusFetch`
- Data Portability
- Add Data Request: `UserDataAdd`
- Cancel Data Request: `UserDataCancel`
- Check Status of Data Request: `UserDataCheck`
- Download: `UserDataDownload`
- Display
- Get User Info: `UserInfo`
- Query Videos: `VideoQuery`
- List Videos: `VideoList`
- Research
- Query Videos: `ResearchVideoQuery`
- Query User Info: `ResearchUserInfo`
- Query Video Comments: `ResearchVideoCommentList`
- Query User Liked Videos: `ResearchUserLikedVideos`
- Query User Pinned Videos: `ResearchUserPinnedVideos`
- Query User Followers: `ResearchUserFollowers`
- Query User Following: `ResearchUserFollowing`
- Query User Reposted Videos: `ResearchUserRepostedVideos`
- Query Playlists: `ResearchPlaylistInfo`
- Commercial Content
- Query Ads: `ResearchAdlibAdQuery`
- Query Advertisers: `ResearchAdlibAdvertiserQuery`
- Get Ad Details: `ResearchAdlibAdDetail`
- Get Ad Report: `ResearchAdlibAdReport`
- Query Commercial Content: `ResearchAdlibCommercialContentQuery`
================================================
FILE: docs/TikTokGlobal/README.md
================================================
# SKIT.FlurlHttpClient.ByteDance.TikTokGlobal
A HTTP API SDK for [TikTok Developer API](https://developers.tiktok.com/) based on `Flurl.Http`.
---
## Features
- Based on TikTok Developer API.
---
## Get Started
> [!IMPORTANT]
> The documents are applicable to version 3.x of this SDK. If you are using version 2.x, please move to the archived branches on GitHub/Gitee.
### Installation:
```shell
# Install by NuGet
> Install-Package SKIT.FlurlHttpClient.ByteDance.TikTokGlobal
# Install by .NET CLI
> dotnet add package SKIT.FlurlHttpClient.ByteDance.TikTokGlobal
```
### Initialization:
```csharp
using SKIT.FlurlHttpClient.ByteDance.TikTokGlobal;
var options = new TikTokV2ClientOptions()
{
ClientKey = "${CLIENT_KEY}",
ClientSecret = "${CLIENT_SECRET}}"
};
var client = TikTokV2ClientBuilder.Create(options).Build();
```
### Requests & Responses:
```csharp
using SKIT.FlurlHttpClient.ByteDance.TikTokGlobal;
using SKIT.FlurlHttpClient.ByteDance.TikTokGlobal.Models;
/* Example: Fetch Access Token Using Authorization Code */
var request = new OAuthAccessTokenRequest()
{
Code = "AUTHORIZATION_CODE"
};
var response = await client.ExecuteOAuthAccessTokenAsync(request);
if (response.IsSuccessful())
{
Console.WriteLine("AccessToken: " + response.Data.AccessToken);
Console.WriteLine("OpenId: " + response.Data.OpenId);
}
else
{
Console.WriteLine("Error: " + response.ErrorCode);
Console.WriteLine("ErrorDescription: " + response.ErrorDescription);
}
```
---
## Basic Usage
- [API Reference Manual](./Basic_ModelDefinition.md)
================================================
FILE: docs/TikTokGlobalShop/Basic_LegacyAPI.md
================================================
## Legacy API (pre-v202309)
Legacy API versions (pre-v202309) will no longer be supported or maintained from 2024-06-30 and will be retired on 2024-12-31.
New apps should use v202309 exclusively and not legacy versions.
Since version v3.1.0 in this SDK, we have isolated the legacy versions API. If you are still using them, please follow below:
```csharp
using SKIT.FlurlHttpClient.ByteDance.TikTokGlobalShop.ExtendedSDK.Legacy;
var options = new TikTokShopLegacyClientOptions()
{
AppKey = "${APP_KEY}",
AppSecret = "${APP_SECRET}}"
};
var client = TikTokShopLegacyClientBuilder.Create(options).Build();
```
---
### APIs
[View Details]
- Authorization
- Get Access Token: `AuthGetToken`
- Refresh Access Token: `AuthRefreshToken`
- Shop
- Get Authorized Shop: `ShopGetAuthorizedShopList`
- Seller
- Get Active Shop List: `SellerGetGlobalActiveShopList`
- Check Global Product Mode: `SellerCheckGlobalProductMode`
- Product
- Upload File: `ProductUploadFile`
- Upload Image: `ProductUploadImage`
- Create Product: `ProductCreateProduct`
- Delete Product: `ProductDeleteProducts`
- Edit Product: `ProductUpdateProduct`
- Update Stock: `ProductUpdateProductStock`
- Get Product List: `ProductSearchProducts`
- Get Product Detail: `ProductGetProductDetail`
- Get Product Stock: `ProductGetProductStocks`
- Deactivate Product: `ProductDeactivateProducts`
- Activate Product: `ProductActivateProducts`
- Recover Deleted Product: `ProductRecoverProducts`
- Update Price: `ProductUpdateProductPrice`
- Get Categories: `ProductGetCategoryList`
- Get Brands: `ProductGetBrandList`
- Create Brand: `ProductCreateBrand`
- Get Attributes: `ProductGetAttributeList`
- Get Category Rule: `ProductGetCategoryRules`
- Category Recommended: `ProductRecommendCategory`
- Pre-check for Operating Product: `ProductPrecheck`
- Order
- Get Order Detail: `OrderGetOrderDetail`
- Get Order List: `OrderSearchOrders`
- Ship Order: `OrderShipOrder`
- Fulfillment
- Verify Order Split: `FulfillmentVerifyOrderSplit`
- Confirm Order Split: `FulfillmentConfirmOrderSplit`
- Search Pre Combine Package: `FulfillmentSearchPreCombinePackages`
- Get Package Shipping Document: `FulfillmentGetShippingDocument`
- Update Package Shipping Info: `FulfillmentUpdateShippingInfo`
- Get Package Shipping Info: `FulfillmentGetShippingInfo`
- Search Package: `FulfillmentSearchPackages`
- Ship Package: `FulfillmentShipPackage`
- Get Package Pickup Config: `FulfillmentGetPackagePickupConfigList`
- Remove Package Order: `FulfillmentRemovePackageOrders`
- Confirm Precombine Package: `FulfillmentConfirmPreCombinePackage`
- Get Package Detail: `FulfillmentGetPackageDetail`
- Fulfillment Upload Image: `FulfillmentUploadImage`
- Update Package Delivery Status: `FulfillmentUpdatePackageDeliveryStatus`
- Fulfillment Upload File: `FulfillmentUploadFile`
- Batch Ship Packages: `FulfillmentBatchShipPackage`
- Get Shipping Service: `FulfillmentGetShippingService`
- Create Label: `FulfillmentCreateLabel`
- Logistics
- Get Subscribed Delivery Options: `LogisticsGetSubscribedDeliveryOptions`
- Update Shipping Info: `LogisticsUpdateShippingInfo`
- Get Shipping Document: `LogisticsGetShippingDocument`
- Get Shipping Provider: `LogisticsGetShippingProviderList`
- Get Shipping Info: `LogisticsGetShippingInfo`
- Get Warehouse List: `LogisticsGetWarehouseList`
- Reverse
- Reject Reverse Request: `ReverseRejectReverseRequest`
- Get Reverse Order List: `ReverseSearchReverseOrders`
- Confirm Reverse Request: `ReverseConfirmReverseRequest`
- Cancel Order: `ReverseCancelOrder`
- Get Reject Reason List: `ReverseGetRejectReasonList`
- Finance
- Get Settlements: `FinanceSearchSettlements`
- Get Transactions: `FinanceSearchTransactions`
- Get Order Settlements: `FinanceGetOrderSettlementList`
- Global Product
- Create Global Product: `GlobalProductCreateProduct`
- Get Global Product List: `GlobalProductSearchProducts`
- Get Global Product Detail: `GlobalProductGetProductDetail`
- Publish Global Product: `GlobalProductPublishProduct`
- Update Global Product Price: `GlobalProductUpdateProductPrice`
- Get Global Categories: `GlobalProductGetCategoryList`
- Edit Global Product: `GlobalProductUpdateProduct`
- Get Global Attributes: `GlobalProductGetAttributeList`
- Get Global Category Rule: `GlobalProductGetCategoryRules`
- Delete Global Product: `GlobalProductDeleteProducts`
- Promotion
- Update Basic Information: `PromotionUpdateActivity`
- Get Promotion List: `PromotionSearchActivities`
- Deactivate Promotion: `PromotionDeactivateActivity`
- Remove Promotion Item: `PromotionRemoveActivityItems`
- Get Promotion Details: `PromotionGetActivityDetail`
- Add/Update Discount Item: `PromotionAddOrUpdateActivityItems`
- Add Promotion: `PromotionCreateActivity`
- Supply Chain
- Package Fulfillment Data Sync: `SupplyChainSyncPackageFulfillmentData`
================================================
FILE: docs/TikTokGlobalShop/Basic_ModelDefinition.md
================================================
## API Reference Manual
Naming Policies:
- Request Models: _`${API}`_ + `Request`
- Response Models: _`${API}`_ + `Response`
- API Methods: `Execute` + _`${API}`_ + `Async`
---
### APIs
Notes: The following catalog is consistent with the catalog structure of [TikTokShop Partner Center API Reference](https://partner.tiktokshop.com/docv2/page/6632a7434585a502e1cb5591).
[View Details]
- Authentication
- Get Access Token: `AuthGetToken`
- Refresh Access Token: `AuthRefreshToken`
- Authorization
- Get Authorized Category Assets: `AuthorizationGetCategoryAssets`
- Get Authorized Shops: `AuthorizationGetShops`
- Event
- Get Shop Webhooks: `EventGetWebhooks`
- Update Shop Webhook: `EventUpdateWebhook`
- Delete Shop Webhook: `EventDeleteWebhook`
- Seller
- Get Seller Permissions: `SellerGetPermissions`
- Get Active Shops: `SellerGetShops`
- Products
- Check Listing Prerequisites: `ProductGetPrerequisites`
- Get Categories: `ProductGetCategories`
- Recommend Categories: `ProductRecommendCategories`
- Get Category Rules: `ProductGetCategoryRules`
- Get Attributes: `ProductGetCategoryAttributes`
- Get Brands: `ProductGetBrands`
- Create Custom Brands: `ProductCreateBrand`
- Check Product Listing: `ProductCreateProductListingCheck`
- Upload Product Image: `ProductUploadImage`
- Upload Product File: `ProductUploadFile`
- Search Size Charts: `ProductSearchSizeCharts`
- Create Product: `ProductCreateProduct`
- Partial Edit Product: `ProductUpdateProductPartially`
- Edit Product: `ProductUpdateProduct`
- Activate Products: `ProductActivateProducts`
- Deactivate Products: `ProductDeactivateProducts`
- Delete Products: `ProductDeleteProducts`
- Recover Products: `ProductRecoverProducts`
- Get Product: `ProductGetProductDetail`
- Search Products: `ProductSearchProducts`
- Update Price: `ProductUpdateProductPrice`
- Update Inventory: `ProductUpdateProductInventory`
- Inventory Search: `ProductGetInventories`
- Product Information Issue Diagnosis: `ProductGetProductDiagnoses`
- Get Products SEO Words: `ProductGetProductSEOWords`
- Get Recommended Product Title And Description: `ProductGetProductSuggestions`
- Optimized Images: `ProductOptimizeImages`
- Get Global Categories: `ProductGetGlobalCategories`
- Recommend Global Categories: `ProductRecommendGlobalCategories`
- Get Global Category Rules: `ProductGetGlobalCategoryRules`
- Get Global Attributes: `ProductGetGlobalCategoryAttributes`
- Create Global Product: `ProductCreateGlobalProduct`
- Publish Global Product: `ProductPublishGlobalProduct`
- Edit Global Product: `ProductUpdateGlobalProduct`
- Delete Global Products: `ProductDeleteGlobalProducts`
- Get Global Product: `ProductGetGlobalProductDetail`
- Search Global Products: `ProductSearchGlobalProducts`
- Update Global Inventory: `ProductUpdateGlobalProductInventory`
- Create Manufacturer: `ProductCreateComplianceManufacturer`
- Partial Edit Manufacturer: `ProductUpdateComplianceManufacturerPartially`
- Search Manufacturers: `ProductSearchComplianceManufacturers`
- Create Responsible Person: `ProductCreateComplianceResponsiblePerson`
- Partial Edit Responsible Person: `ProductUpdateComplianceResponsiblePersonPartially`
- Search Responsible Persons: `ProductSearchComplianceResponsiblePersons`
- Create Category Upgrade Task: `ProductCreateProductCategoryUpgradeTask`
- Listing Schemas: `ProductGetListingSchemas`
- Promotion
- Create Activity: `PromotionCreateActivity`
- Update Activity: `PromotionUpdateActivity`
- Deactivate Activity: `PromotionDeactivateActivity`
- Get Activity: `PromotionGetActivityDetail`
- Search Activities: `PromotionSearchActivities`
- Update Activity Product: `PromotionUpdateActivityProducts`
- Remove Activity Product: `PromotionDeleteActivityProducts`
- Get Coupon: `PromotionGetCouponDetail`
- Search Coupons: `PromotionSearchCoupons`
- Orders
- Get Order List: `OrderSearchOrders`
- Get Order Detail: `OrderBatchGetOrderDetail`
- Get Price Detail: `OrderGetOrderPriceDetail`
- Add External Order References: `OrderCreateExternalOrder`
- Get External Order References: `OrderGetExternalOrders`
- Search Order By External Order Reference: `OrderSearchExternalOrders`
- Fulfillment
- Get Order Split Attributes: `FulfillmentGetOrderSplitAttributes`
- Split Orders: `FulfillmentSplitOrder`
- Get Eligible Shipping Service: `FulfillmentSearchOrderShippingServices`
- Create First Mile Bundle: `FulfillmentCreateBundle`
- Create Packages: `FulfillmentCreatePackage`
- Search Package: `FulfillmentSearchPackages`
- Search Combinable Packages: `FulfillmentSearchCombinablePackages`
- Combine Package: `FulfillmentCombinePackage`
- Uncombine Packages: `FulfillmentUncombinePackage`
- Get Package Handover Time Slots: `FulfillmentGetPackageHandoverTimeSlots`
- Ship Package: `FulfillmentShipPackage`
- Batch Ship Packages: `FulfillmentBatchShipPackages`
- Mark Package As Shipped: `FulfillmentUpdateOrderPackages`
- Get Package Shipping Document: `FulfillmentGetPackageShippingDocuments`
- Get Package Detail: `FulfillmentGetPackageDetail`
- Get Tracking: `FulfillmentGetOrderTracking`
- Update Shipping Info: `FulfillmentUpdateOrderShippingInfo`
- Update Package Shipping Info: `FulfillmentUpdatePackageShippingInfo`
- Fulfillment Upload Delivery File: `FulfillmentUploadFile`
- Fulfillment Upload Delivery Image: `FulfillmentUploadImage`
- Update Package Delivery Status: `FulfillmentBatchUpdatePackagesDeliveryStatus`
- Fulfillment By TikTok (FBT)
- Get FBT Merchant Onboarded Regions: `FBTGetMerchantOnboardedRegions`
- Get FBT Warehouse List: `FBTGetWarehouses`
- Get Inbound Order: `FBTGetInboundOrders`
- Search FBT Inventory: `FBTGetInventories`
- Search FBT Inventory Record: `FBTGetInventoryRecords`
- Search Goods Info: `FBTGetGoods`
- Logistics
- Get Warehouse List: `LogisticsGetWarehouses`
- Get Global Seller Warehouse: `LogisticsGetGlobalWarehouses`
- Get Warehouse Delivery Options: `LogisticsGetWarehouseDeliveryOptions`
- Get Shipping Providers: `LogisticsGetDeliveryOptionShippingProviders`
- Return and Refund
- Get Aftersale Eligibility: `ReturnRefundGetOrderAftersaleEligibility`
- Get Reject Reasons: `ReturnRefundGetRejectReasons`
- Create Return: `ReturnRefundCreateReturn`
- Approve Return: `ReturnRefundApproveReturn`
- Reject Return: `ReturnRefundRejectReturn`
- Search Returns: `ReturnRefundSearchReturns`
- Get Return Records: `ReturnRefundGetReturnRecords`
- Cancel Order: `ReturnRefundCreateCancellation`
- Approve Cancellation: `ReturnRefundApproveCancellation`
- Reject Cancellation: `ReturnRefundRejectCancellation`
- Search Cancellations: `ReturnRefundSearchCancellations`
- Calculate Refund: `ReturnRefundCalculateRefund`
- Finance
- Get Statements: `FinanceGetStatements`
- Get Statement Transactions: `FinanceGetStatementTransactions`
- Get Order Statement Transactions: `FinanceGetOrderStatementTransactions`
- Get Payments: `FinanceGetPayments`
- Get Withdrawals: `FinanceGetWithdrawals`
- Customer Service
- Create Conversation: `CustomerServiceCreateConversation`
- Get Conversations: `CustomerServiceGetConversations`
- Get Conversation Messages: `CustomerServiceGetConversationMessages`
- Upload Buyer Messages Image: `CustomerServiceUploadImage`
- Send Message: `CustomerServiceCreateConversationMessage`
- Read Message: `CustomerServiceReadConversationMessage`
- Get Agent Settings: `CustomerServiceGetAgentSettings`
- Update Agent Settings: `CustomerServiceUpdateAgentSettings`
- Get Customer Service Performance: `CustomerServiceGetPerformance`
- Supply Chain
- Confirm Package Shipment: `SupplyChainSyncPackages`
================================================
FILE: docs/TikTokGlobalShop/README.md
================================================
# SKIT.FlurlHttpClient.ByteDance.TikTokGlobal
A HTTP API SDK for [TikTok Shop Open Platform](https://partner.tiktokshop.com/) based on `Flurl.Http`.
---
## Features
- Based on TikTok Shop Open Platform API.
- Auto-generated signature on API requests.
- Provides some algorithm utilities (such as HMAC-SHA-256).
---
## Get Started
> [!IMPORTANT]
> The documents are applicable to version 3.x of this SDK. If you are using version 2.x, please move to the archived branches on GitHub/Gitee.
### Installation:
```shell
# Install by NuGet
> Install-Package SKIT.FlurlHttpClient.ByteDance.TikTokGlobalShop
# Install by .NET CLI
> dotnet add package SKIT.FlurlHttpClient.ByteDance.TikTokGlobalShop
```
### Initialization:
```csharp
using SKIT.FlurlHttpClient.ByteDance.TikTokGlobalShop;
var options = new TikTokShopClientOptions()
{
AppKey = "${APP_KEY}",
AppSecret = "${APP_SECRET}}"
};
var client = TikTokShopClientBuilder.Create(options).Build();
```
### Requests & Responses:
```csharp
using SKIT.FlurlHttpClient.ByteDance.TikTokGlobalShop;
using SKIT.FlurlHttpClient.ByteDance.TikTokGlobalShop.Models;
/* Example: Get Order List */
var request = new OrderSearchOrdersRequest()
{
AccessToken = "${ACCESS_TOKEN}",
ShopCipher = "${SHOP_CIPHER}",
};
var response = await client.ExecuteOrderSearchOrdersAsync(request);
if (response.IsSuccessful())
{
Console.WriteLine("Orders: " + response.Data.OrderList);
Console.WriteLine("Total: " + response.Data.TotalCount);
}
else
{
Console.WriteLine("Code: " + response.Code);
Console.WriteLine("Message: " + response.Message);
}
```
---
## Basic Usage
- [API Reference Manual](./Basic_ModelDefinition.md)
- [Legacy API (pre-v202309)](./Basic_LegacyAPI.md)
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/DouyinOpenClient.cs
================================================
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Flurl.Http;
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen
{
///
/// 一个抖音开放平台 API HTTP 客户端。
///
public class DouyinOpenClient : CommonClientBase, ICommonClient
{
///
/// 获取当前客户端使用的抖音开放平台凭证。
///
public Settings.Credentials Credentials { get; }
///
/// 用指定的配置项初始化 类的新实例。
///
/// 配置项。
public DouyinOpenClient(DouyinOpenClientOptions options)
: this(options, null)
{
}
///
///
///
///
///
///
internal protected DouyinOpenClient(DouyinOpenClientOptions options, HttpClient? httpClient, bool disposeClient = true)
: base(httpClient, disposeClient)
{
if (options is null) throw new ArgumentNullException(nameof(options));
Credentials = new Settings.Credentials(options);
FlurlClient.BaseUrl = options.Endpoint ?? DouyinOpenEndpoints.DEFAULT;
FlurlClient.WithTimeout(options.Timeout <= 0 ? Timeout.InfiniteTimeSpan : TimeSpan.FromMilliseconds(options.Timeout));
}
///
/// 使用当前客户端生成一个新的 对象。
///
///
///
///
///
public IFlurlRequest CreateFlurlRequest(DouyinOpenRequest request, HttpMethod httpMethod, params object[] urlSegments)
{
IFlurlRequest flurlRequest = base.CreateFlurlRequest(request, httpMethod, urlSegments);
return flurlRequest;
}
///
/// 异步发起请求。
///
///
///
///
///
///
public async Task SendFlurlRequestAsync(IFlurlRequest flurlRequest, HttpContent? httpContent = null, CancellationToken cancellationToken = default)
where T : DouyinOpenResponse, new()
{
if (flurlRequest is null) throw new ArgumentNullException(nameof(flurlRequest));
using IFlurlResponse flurlResponse = await base.SendFlurlRequestAsync(flurlRequest, httpContent, cancellationToken).ConfigureAwait(false);
return await WrapFlurlResponseAsJsonAsync(flurlResponse, cancellationToken).ConfigureAwait(false);
}
///
/// 异步发起请求。
///
///
///
///
///
///
public async Task SendFlurlRequestAsJsonAsync(IFlurlRequest flurlRequest, object? data = null, CancellationToken cancellationToken = default)
where T : DouyinOpenResponse, new()
{
if (flurlRequest is null) throw new ArgumentNullException(nameof(flurlRequest));
bool isSimpleRequest = data is null ||
flurlRequest.Verb == HttpMethod.Get ||
flurlRequest.Verb == HttpMethod.Head ||
flurlRequest.Verb == HttpMethod.Options;
if (!isSimpleRequest)
flurlRequest.WithHeader(HttpHeaders.ContentType, MimeTypes.Json); // NOTICE: Content-Type 中不能包含 charset 等其他段
using IFlurlResponse flurlResponse = isSimpleRequest ?
await base.SendFlurlRequestAsync(flurlRequest, null, cancellationToken) :
await base.SendFlurlRequestAsJsonAsync(flurlRequest, data, cancellationToken).ConfigureAwait(false);
return await WrapFlurlResponseAsJsonAsync(flurlResponse, cancellationToken).ConfigureAwait(false);
}
///
/// 异步发起请求。
///
///
///
///
///
///
public async Task SendFlurlRequestAsFormUrlEncodedAsync(IFlurlRequest flurlRequest, object? data = null, CancellationToken cancellationToken = default)
where T : DouyinOpenResponse, new()
{
if (flurlRequest is null) throw new ArgumentNullException(nameof(flurlRequest));
bool isSimpleRequest = data is null ||
flurlRequest.Verb == HttpMethod.Get ||
flurlRequest.Verb == HttpMethod.Head ||
flurlRequest.Verb == HttpMethod.Options;
if (!isSimpleRequest)
flurlRequest.WithHeader(HttpHeaders.ContentType, MimeTypes.FormUrlEncoded); // NOTICE: Content-Type 中不能包含 charset 等其他段
using IFlurlResponse flurlResponse = isSimpleRequest ?
await base.SendFlurlRequestAsync(flurlRequest, null, cancellationToken).ConfigureAwait(false) :
await base.SendFlurlRequestAsFormUrlEncodedAsync(flurlRequest, data, cancellationToken).ConfigureAwait(false);
return await WrapFlurlResponseAsJsonAsync(flurlResponse, cancellationToken).ConfigureAwait(false);
}
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/DouyinOpenClientBuilder.cs
================================================
using System;
using System.Collections.Generic;
using System.Net.Http;
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen
{
///
/// 用于构造 实例的构造器。
///
public partial class DouyinOpenClientBuilder : ICommonClientBuilder
{
private readonly DouyinOpenClientOptions _options;
private readonly IList> _configures;
private readonly IList _interceptors;
private HttpClient? _httpClient;
private bool? _disposeClient;
private DouyinOpenClientBuilder(DouyinOpenClientOptions options)
{
_options = options;
_configures = new List>();
_interceptors = new List();
}
ICommonClientBuilder ICommonClientBuilder.ConfigureSettings(Action configure)
{
return ConfigureSettings(configure);
}
ICommonClientBuilder ICommonClientBuilder.UseInterceptor(HttpInterceptor interceptor)
{
return UseInterceptor(interceptor);
}
ICommonClientBuilder ICommonClientBuilder.UseHttpClient(HttpClient httpClient, bool disposeClient)
{
return UseHttpClient(httpClient, disposeClient);
}
public DouyinOpenClientBuilder ConfigureSettings(Action configure)
{
if (configure is null) throw new ArgumentNullException(nameof(configure));
_configures.Add(configure);
return this;
}
public DouyinOpenClientBuilder UseInterceptor(HttpInterceptor interceptor)
{
if (interceptor is null) throw new ArgumentNullException(nameof(interceptor));
_interceptors.Add(interceptor);
return this;
}
public DouyinOpenClientBuilder UseHttpClient(HttpClient httpClient, bool disposeClient = true)
{
if (httpClient is null) throw new ArgumentNullException(nameof(httpClient));
_httpClient = httpClient;
_disposeClient = disposeClient;
return this;
}
public DouyinOpenClient Build()
{
DouyinOpenClient client = _disposeClient.HasValue
? new DouyinOpenClient(_options, _httpClient, _disposeClient.Value)
: new DouyinOpenClient(_options, _httpClient);
foreach (Action configure in _configures)
{
client.Configure(configure);
}
foreach (HttpInterceptor interceptor in _interceptors)
{
client.Interceptors.Add(interceptor);
}
return client;
}
}
partial class DouyinOpenClientBuilder
{
public static DouyinOpenClientBuilder Create(DouyinOpenClientOptions options)
{
if (options is null) throw new ArgumentNullException(nameof(options));
return new DouyinOpenClientBuilder(options);
}
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/DouyinOpenClientOptions.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen
{
///
/// 一个用于构造 时使用的配置项。
///
public class DouyinOpenClientOptions
{
///
/// 获取或设置请求超时时间(单位:毫秒)。
/// 默认值:30000
///
public int Timeout { get; set; } = 30 * 1000;
///
/// 获取或设置抖音开放平台 API 入口点。
/// 默认值:
///
public string Endpoint { get; set; } = DouyinOpenEndpoints.DEFAULT;
///
/// 获取或设置抖音开放平台应用 Key。
///
public string ClientKey { get; set; } = default!;
///
/// 获取或设置抖音开放平台应用密钥。
///
public string ClientSecret { get; set; } = default!;
///
/// 获取或设置抖音开放平台 Webhook 验签秘钥。
///
public string WebhookSecret { get; set; } = default!;
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/DouyinOpenEndpoints.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen
{
///
/// 抖音开放平台 API 接口域名。
///
public static class DouyinOpenEndpoints
{
///
/// 主域名(默认)。
///
public const string DEFAULT = "https://open.douyin.com";
///
/// 沙盒域名。
///
public const string SANDBOX = "https://open-sandbox.douyin.com";
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/DouyinOpenEvent.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen
{
///
/// 表示抖音开放平台 API Webhook 事件的基类。
///
public class DouyinOpenEvent : ICommonWebhookEvent
{
///
/// 获取或设置事件类型。
///
[Newtonsoft.Json.JsonProperty("event")]
[System.Text.Json.Serialization.JsonPropertyName("event")]
public virtual string Event { get; set; } = default!;
///
/// 获取或设置应用的 ClientKey。
///
[Newtonsoft.Json.JsonProperty("client_key")]
[System.Text.Json.Serialization.JsonPropertyName("client_key")]
public virtual string ClientKey { get; set; } = default!;
///
/// 获取或设置事件发起者用户 ID。
///
[Newtonsoft.Json.JsonProperty("from_user_id")]
[System.Text.Json.Serialization.JsonPropertyName("from_user_id")]
public virtual string? FromUserId { get; set; }
///
/// 获取或设置事件接收者用户 ID。
///
[Newtonsoft.Json.JsonProperty("to_user_id")]
[System.Text.Json.Serialization.JsonPropertyName("to_user_id")]
public virtual string? ToUserId { get; set; }
///
/// 获取或设置事件日志 ID。
///
[Newtonsoft.Json.JsonProperty("log_id")]
[System.Text.Json.Serialization.JsonPropertyName("log_id")]
public virtual string? LogId { get; set; }
}
///
/// 表示抖音开放平台 API Webhook 事件的泛型基类。
///
public abstract class DouyinOpenEvent : DouyinOpenEvent
{
///
/// 获取或设置事件内容。
///
[Newtonsoft.Json.JsonProperty("content")]
[System.Text.Json.Serialization.JsonPropertyName("content")]
public virtual TContent EventContent { get; set; } = default!;
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/DouyinOpenException.cs
================================================
using System;
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen
{
///
/// 当调用抖音开放平台 API 出错时引发的异常。
///
public class DouyinOpenException : CommonException
{
///
public DouyinOpenException()
{
}
///
public DouyinOpenException(string message)
: base(message)
{
}
///
public DouyinOpenException(string message, Exception innerException)
: base(message, innerException)
{
}
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/DouyinOpenRequest.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen
{
///
/// 抖音开放平台 API 请求的基类。
///
public abstract class DouyinOpenRequest : CommonRequestBase, ICommonRequest
{
///
/// 获取或设置接口调用凭证。
///
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public virtual string? AccessToken { get; set; }
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/DouyinOpenResponse.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen
{
///
/// 抖音开放平台 API 响应的基类。
///
public abstract class DouyinOpenResponse : CommonResponseBase, ICommonResponse
{
///
/// 获取抖音开放平台 API 返回的错误码。
///
[Newtonsoft.Json.JsonProperty("error_code")]
[System.Text.Json.Serialization.JsonPropertyName("error_code")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public virtual int ErrorCode { get; set; }
///
/// 获取抖音开放平台 API 返回的错误描述。
///
[Newtonsoft.Json.JsonProperty("description")]
[System.Text.Json.Serialization.JsonPropertyName("description")]
public virtual string? ErrorDescription { get; set; }
///
/// 获取抖音开放平台 API 返回的扩展信息。
///
[Newtonsoft.Json.JsonProperty("extra")]
[System.Text.Json.Serialization.JsonPropertyName("extra")]
public virtual DouyinOpenResponseExtra? Extra { get; set; }
///
/// 获取一个值,该值指示调用抖音开放平台 API 是否成功。
///
///(即 HTTP 状态码为 200,且 值为 0)
///
///
///
public override bool IsSuccessful()
{
return GetRawStatus() == 200
&& ErrorCode == 0
&& (Extra?.ErrorCode).GetValueOrDefault() == 0
&& (Extra?.SubErrorCode).GetValueOrDefault() == 0;
}
}
///
/// 抖音开放平台 API 响应的返回数据字段。
///
public abstract class DouyinOpenResponseData
{
///
/// 获取或设置错误码。
///
[Newtonsoft.Json.JsonProperty("error_code")]
[System.Text.Json.Serialization.JsonPropertyName("error_code")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public int ErrorCode { get; set; }
///
/// 获取或设置错误描述。
///
[Newtonsoft.Json.JsonProperty("description")]
[System.Text.Json.Serialization.JsonPropertyName("description")]
public string? ErrorDescription { get; set; }
}
///
/// 抖音开放平台 API 响应的扩展信息字段。
///
public sealed class DouyinOpenResponseExtra
{
///
/// 获取请求唯一标识。
///
[Newtonsoft.Json.JsonProperty("logid")]
[System.Text.Json.Serialization.JsonPropertyName("logid")]
public string LogId { get; set; } = default!;
///
/// 获取毫秒级时间戳。
///
[Newtonsoft.Json.JsonProperty("now")]
[System.Text.Json.Serialization.JsonPropertyName("now")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public long Now { get; set; }
///
/// 获取错误码。
///
[Newtonsoft.Json.JsonProperty("error_code")]
[System.Text.Json.Serialization.JsonPropertyName("error_code")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public int? ErrorCode { get; set; }
///
/// 获取错误描述。
///
[Newtonsoft.Json.JsonProperty("description")]
[System.Text.Json.Serialization.JsonPropertyName("description")]
public string? ErrorDescription { get; set; }
///
/// 获取子错误码。
///
[Newtonsoft.Json.JsonProperty("sub_error_code")]
[System.Text.Json.Serialization.JsonPropertyName("sub_error_code")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public int? SubErrorCode { get; set; }
///
/// 获取子错误描述。
///
[Newtonsoft.Json.JsonProperty("sub_description")]
[System.Text.Json.Serialization.JsonPropertyName("sub_description")]
public string? SubErrorDescription { get; set; }
}
///
/// 抖音开放平台 API 响应的泛型基类。
///
public abstract class DouyinOpenResponse : DouyinOpenResponse
where TData : DouyinOpenResponseData
{
///
/// 获取或设置接口返回数据。
///
[Newtonsoft.Json.JsonProperty("data")]
[System.Text.Json.Serialization.JsonPropertyName("data")]
public TData Data { get; set; } = default!;
///
/// 获取或设置接口返回消息。
///
[Newtonsoft.Json.JsonProperty("message")]
[System.Text.Json.Serialization.JsonPropertyName("message")]
public string? Message { get; set; }
///
///
///
///
public override bool IsSuccessful()
{
return base.IsSuccessful() && (Data?.ErrorCode).GetValueOrDefault() == 0;
}
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Events/GoodLife/LifeMemberJoinEvent.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen.Events
{
///
/// 表示 life_member_join 事件的数据。
///
/// REF:
///
///
///
public class LifeMemberJoinEvent : DouyinOpenEvent
{
public static class Types
{
public class Content
{
///
/// 获取或设置商家 ID。
///
[Newtonsoft.Json.JsonProperty("account_id")]
[System.Text.Json.Serialization.JsonPropertyName("account_id")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.NumericalStringReadOnlyConverter))]
public string AccountId { get; set; } = default!;
///
/// 获取或设置用户手机号。
///
[Newtonsoft.Json.JsonProperty("mobile")]
[System.Text.Json.Serialization.JsonPropertyName("mobile")]
public string MobileNumber { get; set; } = default!;
}
}
///
[Newtonsoft.Json.JsonProperty("content")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.StringifiedObjectInJsonFormatConverter))]
[System.Text.Json.Serialization.JsonPropertyName("content")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.StringifiedObjectInJsonFormatConverter))]
public override Types.Content EventContent { get; set; } = default!;
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Events/GoodLife/LifeMemberLeaveEvent.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen.Events
{
///
/// 表示 life_member_leave 事件的数据。
///
/// REF:
///
///
///
public class LifeMemberLeaveEvent : DouyinOpenEvent
{
public static class Types
{
public class Content : LifeMemberJoinEvent.Types.Content
{
}
}
///
[Newtonsoft.Json.JsonProperty("content")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.StringifiedObjectInJsonFormatConverter))]
[System.Text.Json.Serialization.JsonPropertyName("content")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.StringifiedObjectInJsonFormatConverter))]
public override Types.Content EventContent { get; set; } = default!;
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Events/GoodLife/LifeProductAuditEvent.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen.Events
{
///
/// 表示 life_product_audit 事件的数据。
///
/// REF:
///
///
///
public class LifeProductAuditEvent : DouyinOpenEvent
{
public static class Types
{
public class Content
{
///
/// 获取或设置商品 ID。
///
[Newtonsoft.Json.JsonProperty("product_id")]
[System.Text.Json.Serialization.JsonPropertyName("product_id")]
public string ProductId { get; set; } = default!;
///
/// 获取或设置审核状态。
///
[Newtonsoft.Json.JsonProperty("status")]
[System.Text.Json.Serialization.JsonPropertyName("status")]
public string AuditStatus { get; set; } = default!;
///
/// 获取或设置审核拒绝原因。
///
[Newtonsoft.Json.JsonProperty("reason")]
[System.Text.Json.Serialization.JsonPropertyName("reason")]
public string? RejectReason { get; set; } = default!;
}
}
///
[Newtonsoft.Json.JsonProperty("content")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.StringifiedObjectInJsonFormatConverter))]
[System.Text.Json.Serialization.JsonPropertyName("content")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.StringifiedObjectInJsonFormatConverter))]
public override Types.Content EventContent { get; set; } = default!;
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Events/GoodLife/LifeTradeCertificateNotifyEvent.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen.Events
{
///
/// 表示 life_trade_certificate_notify 事件的数据。
///
/// REF:
///
///
///
public class LifeTradeCertificateNotifyEvent : DouyinOpenEvent
{
public static class Types
{
public class Content
{
public static class Types
{
public class Certificate
{
///
/// 获取或设置订单 ID。
///
[Newtonsoft.Json.JsonProperty("order_id")]
[System.Text.Json.Serialization.JsonPropertyName("order_id")]
public string OrderId { get; set; } = default!;
///
/// 获取或设置券 ID。
///
[Newtonsoft.Json.JsonProperty("certificate_id")]
[System.Text.Json.Serialization.JsonPropertyName("certificate_id")]
public string CertificateId { get; set; } = default!;
///
/// 获取或设置商家 ID。
///
[Newtonsoft.Json.JsonProperty("account_id")]
[System.Text.Json.Serialization.JsonPropertyName("account_id")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.NumericalStringReadOnlyConverter))]
public string AccountId { get; set; } = default!;
}
}
///
/// 获取或设置消息类型。
///
[Newtonsoft.Json.JsonProperty("action")]
[System.Text.Json.Serialization.JsonPropertyName("action")]
public string Action { get; set; } = default!;
///
/// 获取或设置消息时间戳。
///
[Newtonsoft.Json.JsonProperty("msg_time")]
[System.Text.Json.Serialization.JsonPropertyName("msg_time")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public long Timestamp { get; set; }
///
/// 获取或设置券信息。
///
[Newtonsoft.Json.JsonProperty("certificate")]
[System.Text.Json.Serialization.JsonPropertyName("certificate")]
public Types.Certificate Certificate { get; set; } = default!;
}
}
///
[Newtonsoft.Json.JsonProperty("content")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.StringifiedObjectInJsonFormatConverter))]
[System.Text.Json.Serialization.JsonPropertyName("content")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.StringifiedObjectInJsonFormatConverter))]
public override Types.Content EventContent { get; set; } = default!;
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Events/GoodLife/LifeTradeOrderNotifyEvent.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen.Events
{
///
/// 表示 life_trade_order_notify 事件的数据。
///
/// REF:
///
///
///
public class LifeTradeOrderNotifyEvent : DouyinOpenEvent
{
public static class Types
{
public class Content
{
public static class Types
{
public class Order
{
///
/// 获取或设置订单 ID。
///
[Newtonsoft.Json.JsonProperty("order_id")]
[System.Text.Json.Serialization.JsonPropertyName("order_id")]
public string OrderId { get; set; } = default!;
///
/// 获取或设置商家 ID。
///
[Newtonsoft.Json.JsonProperty("account_id")]
[System.Text.Json.Serialization.JsonPropertyName("account_id")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.NumericalStringReadOnlyConverter))]
public string AccountId { get; set; } = default!;
///
/// 获取或设置售卖价格(单位:分)。
///
[Newtonsoft.Json.JsonProperty("original_amount")]
[System.Text.Json.Serialization.JsonPropertyName("original_amount")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public int OriginalAmount { get; set; }
///
/// 获取或设置用户支付价格(单位:分)。
///
[Newtonsoft.Json.JsonProperty("pay_amount")]
[System.Text.Json.Serialization.JsonPropertyName("pay_amount")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public int PayAmount { get; set; }
///
/// 获取或设置下单时间戳。
///
[Newtonsoft.Json.JsonProperty("create_time")]
[System.Text.Json.Serialization.JsonPropertyName("create_time")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public long CreateTimestamp { get; set; }
///
/// 获取或设置支付时间戳。
///
[Newtonsoft.Json.JsonProperty("pay_time")]
[System.Text.Json.Serialization.JsonPropertyName("pay_time")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public long PayTimestamp { get; set; }
}
}
///
/// 获取或设置消息类型。
///
[Newtonsoft.Json.JsonProperty("action")]
[System.Text.Json.Serialization.JsonPropertyName("action")]
public string Action { get; set; } = default!;
///
/// 获取或设置消息时间戳。
///
[Newtonsoft.Json.JsonProperty("msg_time")]
[System.Text.Json.Serialization.JsonPropertyName("msg_time")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public long Timestamp { get; set; }
///
/// 获取或设置订单信息。
///
[Newtonsoft.Json.JsonProperty("order")]
[System.Text.Json.Serialization.JsonPropertyName("order")]
public Types.Order Order { get; set; } = default!;
}
}
///
[Newtonsoft.Json.JsonProperty("content")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.StringifiedObjectInJsonFormatConverter))]
[System.Text.Json.Serialization.JsonPropertyName("content")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.StringifiedObjectInJsonFormatConverter))]
public override Types.Content EventContent { get; set; } = default!;
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Events/IM/EnterGroupAuditChangeEvent.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen.Events
{
///
/// 表示 enter_group_audit_change 事件的数据。
///
/// REF:
///
///
///
///
public class EnterGroupAuditChangeEvent : DouyinOpenEvent
{
public static class Types
{
public class Content
{
///
/// 获取或设置群 ID。
///
[Newtonsoft.Json.JsonProperty("group_id")]
[System.Text.Json.Serialization.JsonPropertyName("group_id")]
public string GroupId { get; set; } = default!;
///
/// 获取或设置入群申请 ID。
///
[Newtonsoft.Json.JsonProperty("apply_id")]
[System.Text.Json.Serialization.JsonPropertyName("apply_id")]
public string ApplyId { get; set; } = default!;
///
/// 获取或设置申请状态。
///
[Newtonsoft.Json.JsonProperty("apply_status")]
[System.Text.Json.Serialization.JsonPropertyName("apply_status")]
public int ApplyStatus { get; set; }
///
/// 获取或设置用户昵称。
///
[Newtonsoft.Json.JsonProperty("user_nicker")]
[System.Text.Json.Serialization.JsonPropertyName("user_nicker")]
public string UserNickname { get; set; } = default!;
///
/// 获取或设置用户头像 URL。
///
[Newtonsoft.Json.JsonProperty("user_avatar")]
[System.Text.Json.Serialization.JsonPropertyName("user_avatar")]
public string UserAvatarUrl { get; set; } = default!;
///
/// 获取或设置创建时间戳。
///
[Newtonsoft.Json.JsonProperty("create_time")]
[System.Text.Json.Serialization.JsonPropertyName("create_time")]
public long CreateTimestamp { get; set; }
}
}
///
[Newtonsoft.Json.JsonProperty("content")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.StringifiedObjectInJsonFormatConverter))]
[System.Text.Json.Serialization.JsonPropertyName("content")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.StringifiedObjectInJsonFormatConverter))]
public override Types.Content EventContent { get; set; } = default!;
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Events/IM/GroupFansEventEvent.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen.Events
{
///
/// 表示 group_fans_event 事件的数据。
///
/// REF:
///
///
///
///
public class GroupFansEventEvent : DouyinOpenEvent
{
public static class Types
{
public class Content
{
///
/// 获取或设置群 ID。
///
[Newtonsoft.Json.JsonProperty("im_group_id")]
[System.Text.Json.Serialization.JsonPropertyName("im_group_id")]
public string GroupId { get; set; } = default!;
///
/// 获取或设置群主的 OpenId。
///
[Newtonsoft.Json.JsonProperty("open_id")]
[System.Text.Json.Serialization.JsonPropertyName("open_id")]
public string OwnerOpenId { get; set; } = default!;
///
/// 获取或设置群类型。
///
[Newtonsoft.Json.JsonProperty("create_group_type")]
[System.Text.Json.Serialization.JsonPropertyName("create_group_type")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public int? GroupType { get; set; }
///
/// 获取或设置操作类型。
///
[Newtonsoft.Json.JsonProperty("group_type")]
[System.Text.Json.Serialization.JsonPropertyName("group_type")]
[System.Text.Json.Serialization.JsonNumberHandling(System.Text.Json.Serialization.JsonNumberHandling.AllowReadingFromString)]
public int ActionType { get; set; }
///
/// 获取或设置创建时间戳。
///
[Newtonsoft.Json.JsonProperty("create_time")]
[System.Text.Json.Serialization.JsonPropertyName("create_time")]
public long CreateTimestamp { get; set; }
}
}
///
[Newtonsoft.Json.JsonProperty("content")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.StringifiedObjectInJsonFormatConverter))]
[System.Text.Json.Serialization.JsonPropertyName("content")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.StringifiedObjectInJsonFormatConverter))]
public override Types.Content EventContent { get; set; } = default!;
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Events/IM/IMAuthorizeEvent.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen.Events
{
///
/// 表示 im_authorize 事件的数据。
///
/// REF:
///
///
///
public class IMAuthorizeEvent : DouyinOpenEvent
{
public static class Types
{
public class Content
{
///
/// 获取或设置操作类型。
///
[Newtonsoft.Json.JsonProperty("operation_type")]
[System.Text.Json.Serialization.JsonPropertyName("operation_type")]
public int OperationType { get; set; }
///
/// 获取或设置授权状态。
///
[Newtonsoft.Json.JsonProperty("auth_status")]
[System.Text.Json.Serialization.JsonPropertyName("auth_status")]
public int AuthStatus { get; set; }
///
/// 获取或设置授权场景。
///
[Newtonsoft.Json.JsonProperty("source")]
[System.Text.Json.Serialization.JsonPropertyName("source")]
public string Source { get; set; } = default!;
///
/// 获取或设置扩展字段。
///
[Newtonsoft.Json.JsonProperty("extra")]
[System.Text.Json.Serialization.JsonPropertyName("extra")]
public string? Extra { get; set; }
///
/// 获取或设置创建时间戳。
///
[Newtonsoft.Json.JsonProperty("create_time")]
[System.Text.Json.Serialization.JsonPropertyName("create_time")]
public long CreateTimestamp { get; set; }
///
/// 获取或设置更新时间戳。
///
[Newtonsoft.Json.JsonProperty("update_time")]
[System.Text.Json.Serialization.JsonPropertyName("update_time")]
public long UpdateTimestamp { get; set; }
///
/// 获取或设置到期时间戳。
///
[Newtonsoft.Json.JsonProperty("expire_time")]
[System.Text.Json.Serialization.JsonPropertyName("expire_time")]
public long ExpireTimestamp { get; set; }
///
/// 获取或设置页面路径。
///
[Newtonsoft.Json.JsonProperty("path")]
[System.Text.Json.Serialization.JsonPropertyName("path")]
public string? PagePath { get; set; }
///
/// 获取或设置页面参数。
///
[Newtonsoft.Json.JsonProperty("query")]
[System.Text.Json.Serialization.JsonPropertyName("query")]
public string? PageQuery { get; set; }
///
/// 获取或设置自定义参数。
///
[Newtonsoft.Json.JsonProperty("data_im_extra")]
[System.Text.Json.Serialization.JsonPropertyName("data_im_extra")]
public string? DataIMExtra { get; set; }
}
}
///
[Newtonsoft.Json.JsonProperty("content")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.StringifiedObjectInJsonFormatConverter))]
[System.Text.Json.Serialization.JsonPropertyName("content")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.StringifiedObjectInJsonFormatConverter))]
public override Types.Content EventContent { get; set; } = default!;
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Events/IM/IMEnterDirectMessageEvent.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen.Events
{
///
/// 表示 im_enter_direct_msg 事件的数据。
///
/// REF:
///
///
///
///
public class IMEnterDirectMessageEvent : DouyinOpenEvent
{
public static class Types
{
public class Content
{
public static class Types
{
public class UserInfo
{
///
/// 获取或设置用户唯一标识。
///
[Newtonsoft.Json.JsonProperty("open_id")]
[System.Text.Json.Serialization.JsonPropertyName("open_id")]
public string OpenId { get; set; } = default!;
///
/// 获取或设置昵称。
///
[Newtonsoft.Json.JsonProperty("nick_name")]
[System.Text.Json.Serialization.JsonPropertyName("nick_name")]
public string Nickname { get; set; } = default!;
///
/// 获取或设置头像 URL。
///
[Newtonsoft.Json.JsonProperty("avatar")]
[System.Text.Json.Serialization.JsonPropertyName("avatar")]
public string AvatarUrl { get; set; } = default!;
}
public class AdInfo
{
///
/// 获取或设置广告计划 ID。
///
[Newtonsoft.Json.JsonProperty("ad_id")]
[System.Text.Json.Serialization.JsonPropertyName("ad_id")]
public long AdId { get; set; }
///
/// 获取或设置广告计划名称。
///
[Newtonsoft.Json.JsonProperty("ad_name")]
[System.Text.Json.Serialization.JsonPropertyName("ad_name")]
public string AdName { get; set; } = default!;
///
/// 获取或设置广告主 ID。
///
[Newtonsoft.Json.JsonProperty("adv_id")]
[System.Text.Json.Serialization.JsonPropertyName("adv_id")]
public long AdvertiserId { get; set; }
///
/// 获取或设置广告主名称。
///
[Newtonsoft.Json.JsonProperty("adv_name")]
[System.Text.Json.Serialization.JsonPropertyName("adv_name")]
public string AdvertiserName { get; set; } = default!;
///
/// 获取或设置创意 ID。
///
[Newtonsoft.Json.JsonProperty("creative_id")]
[System.Text.Json.Serialization.JsonPropertyName("creative_id")]
public long? CreativeId { get; set; }
///
/// 获取或设置广告 ID。
///
[Newtonsoft.Json.JsonProperty("promotion_id")]
[System.Text.Json.Serialization.JsonPropertyName("promotion_id")]
public long? PromotionId { get; set; }
///
/// 获取或设置素材标题 ID。
///
[Newtonsoft.Json.JsonProperty("material_title_id")]
[System.Text.Json.Serialization.JsonPropertyName("material_title_id")]
public long? MaterialTitleId { get; set; }
///
/// 获取或设置素材图片 ID。
///
[Newtonsoft.Json.JsonProperty("material_image_id")]
[System.Text.Json.Serialization.JsonPropertyName("material_image_id")]
public long? MaterialImageId { get; set; }
///
/// 获取或设置素材视频 ID。
///
[Newtonsoft.Json.JsonProperty("material_video_id")]
[System.Text.Json.Serialization.JsonPropertyName("material_video_id")]
public long? MaterialVideoId { get; set; }
}
}
///
/// 获取或设置消息 ID。
///
[Newtonsoft.Json.JsonProperty("server_message_id")]
[System.Text.Json.Serialization.JsonPropertyName("server_message_id")]
public string ServerMessageId { get; set; } = default!;
///
/// 获取或设置会话 ID。
///
[Newtonsoft.Json.JsonProperty("conversation_short_id")]
[System.Text.Json.Serialization.JsonPropertyName("conversation_short_id")]
public string ConversationShortId { get; set; } = default!;
///
/// 获取或设置会话类型。
///
[Newtonsoft.Json.JsonProperty("conversation_type")]
[System.Text.Json.Serialization.JsonPropertyName("conversation_type")]
public int ConversationType { get; set; }
///
/// 获取或设置视频 ID。
///
[Newtonsoft.Json.JsonProperty("objectId")]
[System.Text.Json.Serialization.JsonPropertyName("objectId")]
public string? ObjectId { get; set; }
///
/// 获取或设置场景类型。
///
[Newtonsoft.Json.JsonProperty("scene_type")]
[System.Text.Json.Serialization.JsonPropertyName("scene_type")]
public int SceneType { get; set; }
///
/// 获取或设置创建时间戳。
///
[Newtonsoft.Json.JsonProperty("create_time")]
[System.Text.Json.Serialization.JsonPropertyName("create_time")]
public long CreateTimestamp { get; set; }
///
/// 获取或设置页面路径。
///
[Newtonsoft.Json.JsonProperty("path")]
[System.Text.Json.Serialization.JsonPropertyName("path")]
public string? PagePath { get; set; }
///
/// 获取或设置页面参数。
///
[Newtonsoft.Json.JsonProperty("query")]
[System.Text.Json.Serialization.JsonPropertyName("query")]
public string? PageQuery { get; set; }
///
/// 获取或设置自定义参数。
///
[Newtonsoft.Json.JsonProperty("data-im-extra")]
[System.Text.Json.Serialization.JsonPropertyName("data-im-extra")]
public string? DataIMExtra { get; set; }
///
/// 获取或设置用户列表。
///
[Newtonsoft.Json.JsonProperty("user_infos")]
[System.Text.Json.Serialization.JsonPropertyName("user_infos")]
public Types.UserInfo[]? UserList { get; set; }
///
/// 获取或设置广告信息。
///
[Newtonsoft.Json.JsonProperty("ad_info")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.StringifiedObjectInJsonFormatConverter))]
[System.Text.Json.Serialization.JsonPropertyName("ad_info")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.StringifiedObjectInJsonFormatConverter))]
public Types.AdInfo? AdInfo { get; set; }
}
}
///
[Newtonsoft.Json.JsonProperty("content")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.StringifiedObjectInJsonFormatConverter))]
[System.Text.Json.Serialization.JsonPropertyName("content")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.StringifiedObjectInJsonFormatConverter))]
public override Types.Content EventContent { get; set; } = default!;
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Events/IM/IMGroupReceiveMessageEvent.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen.Events
{
///
/// 表示 im_group_receive_msg 事件的数据。
///
/// REF:
///
///
///
///
public class IMGroupReceiveMessageEvent : DouyinOpenEvent
{
public static class Types
{
public class Content
{
public static class Types
{
public class UserInfo : IMReceiveMessageEvent.Types.Content.Types.UserInfo
{
}
public class CardData : IMReceiveMessageEvent.Types.Content.Types.CardData
{
}
}
///
/// 获取或设置消息 ID。
///
[Newtonsoft.Json.JsonProperty("server_message_id")]
[System.Text.Json.Serialization.JsonPropertyName("server_message_id")]
public string ServerMessageId { get; set; } = default!;
///
/// 获取或设置会话 ID。
///
[Newtonsoft.Json.JsonProperty("conversation_short_id")]
[System.Text.Json.Serialization.JsonPropertyName("conversation_short_id")]
public string ConversationShortId { get; set; } = default!;
///
/// 获取或设置会话类型。
///
[Newtonsoft.Json.JsonProperty("conversation_type")]
[System.Text.Json.Serialization.JsonPropertyName("conversation_type")]
public int ConversationType { get; set; }
///
/// 获取或设置群主的 OpenId。
///
[Newtonsoft.Json.JsonProperty("owner_id")]
[System.Text.Json.Serialization.JsonPropertyName("owner_id")]
public string OwnerOpenId { get; set; } = default!;
///
/// 获取或设置场景类型。
///
[Newtonsoft.Json.JsonProperty("scene_type")]
[System.Text.Json.Serialization.JsonPropertyName("scene_type")]
public int SceneType { get; set; }
///
/// 获取或设置消息类型。
///
[Newtonsoft.Json.JsonProperty("message_type")]
[System.Text.Json.Serialization.JsonPropertyName("message_type")]
public string MessageType { get; set; } = default!;
///
/// 获取或设置消息来源。
///
[Newtonsoft.Json.JsonProperty("source")]
[System.Text.Json.Serialization.JsonPropertyName("source")]
public string? Source { get; set; }
///
/// 获取或设置文字内容。
///
[Newtonsoft.Json.JsonProperty("text")]
[System.Text.Json.Serialization.JsonPropertyName("text")]
public string? Text { get; set; }
///
/// 获取或设置资源类型。
///
[Newtonsoft.Json.JsonProperty("resource_type")]
[System.Text.Json.Serialization.JsonPropertyName("resource_type")]
public string? ResourceType { get; set; }
///
/// 获取或设置资源链接。
///
[Newtonsoft.Json.JsonProperty("resource_url")]
[System.Text.Json.Serialization.JsonPropertyName("resource_url")]
public string? ResourceUrl { get; set; }
///
/// 获取或设置资源高度(单位:像素)。
///
[Newtonsoft.Json.JsonProperty("resource_height")]
[System.Text.Json.Serialization.JsonPropertyName("resource_height")]
public int? ResourceHeight { get; set; }
///
/// 获取或设置资源宽度(单位:像素)。
///
[Newtonsoft.Json.JsonProperty("resource_width")]
[System.Text.Json.Serialization.JsonPropertyName("resource_width")]
public int? ResourceWidth { get; set; }
///
/// 获取或设置视频 ID。
///
[Newtonsoft.Json.JsonProperty("item_id")]
[System.Text.Json.Serialization.JsonPropertyName("item_id")]
public string? ItemId { get; set; }
///
/// 获取或设置卡片 ID。
///
[Newtonsoft.Json.JsonProperty("card_id")]
[System.Text.Json.Serialization.JsonPropertyName("card_id")]
public string? CardId { get; set; }
///
/// 获取或设置卡片状态。
///
[Newtonsoft.Json.JsonProperty("card_status")]
[System.Text.Json.Serialization.JsonPropertyName("card_status")]
public int? CardStatus { get; set; }
///
/// 获取或设置卡片数据。
///
[Newtonsoft.Json.JsonProperty("card_data")]
[System.Text.Json.Serialization.JsonPropertyName("card_data")]
public Types.CardData[]? CardData { get; set; }
///
/// 获取或设置创建时间戳。
///
[Newtonsoft.Json.JsonProperty("create_time")]
[System.Text.Json.Serialization.JsonPropertyName("create_time")]
public long CreateTimestamp { get; set; }
///
/// 获取或设置用户列表。
///
[Newtonsoft.Json.JsonProperty("user_infos")]
[System.Text.Json.Serialization.JsonPropertyName("user_infos")]
public Types.UserInfo[]? UserList { get; set; }
}
}
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Events/IM/IMGroupSendMessageEvent.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen.Events
{
///
/// 表示 im_group_send_msg 事件的数据。
///
/// REF:
///
///
///
///
public class IMGroupSendMessageEvent : DouyinOpenEvent
{
public static class Types
{
public class Content : IMGroupReceiveMessageEvent.Types.Content
{
}
}
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Events/IM/IMReceiveMessageEvent.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen.Events
{
///
/// 表示 im_receive_msg 事件的数据。
///
/// REF:
///
///
///
///
public class IMReceiveMessageEvent : DouyinOpenEvent
{
public static class Types
{
public class Content
{
public static class Types
{
public class UserInfo : IMEnterDirectMessageEvent.Types.Content.Types.UserInfo
{
}
public class CardData
{
///
/// 获取或设置表单项标签。
///
[Newtonsoft.Json.JsonProperty("label")]
[System.Text.Json.Serialization.JsonPropertyName("label")]
public string Label { get; set; } = default!;
///
/// 获取或设置表单项内容。
///
[Newtonsoft.Json.JsonProperty("value")]
[System.Text.Json.Serialization.JsonPropertyName("value")]
public string Value { get; set; } = default!;
}
}
///
/// 获取或设置消息 ID。
///
[Newtonsoft.Json.JsonProperty("server_message_id")]
[System.Text.Json.Serialization.JsonPropertyName("server_message_id")]
public string ServerMessageId { get; set; } = default!;
///
/// 获取或设置会话 ID。
///
[Newtonsoft.Json.JsonProperty("conversation_short_id")]
[System.Text.Json.Serialization.JsonPropertyName("conversation_short_id")]
public string ConversationShortId { get; set; } = default!;
///
/// 获取或设置会话类型。
///
[Newtonsoft.Json.JsonProperty("conversation_type")]
[System.Text.Json.Serialization.JsonPropertyName("conversation_type")]
public int ConversationType { get; set; }
///
/// 获取或设置场景类型。
///
[Newtonsoft.Json.JsonProperty("scene_type")]
[System.Text.Json.Serialization.JsonPropertyName("scene_type")]
public int SceneType { get; set; }
///
/// 获取或设置消息类型。
///
[Newtonsoft.Json.JsonProperty("message_type")]
[System.Text.Json.Serialization.JsonPropertyName("message_type")]
public string MessageType { get; set; } = default!;
///
/// 获取或设置消息来源。
///
[Newtonsoft.Json.JsonProperty("source")]
[System.Text.Json.Serialization.JsonPropertyName("source")]
public string? Source { get; set; }
///
/// 获取或设置文字内容。
///
[Newtonsoft.Json.JsonProperty("text")]
[System.Text.Json.Serialization.JsonPropertyName("text")]
public string? Text { get; set; }
///
/// 获取或设置资源类型。
///
[Newtonsoft.Json.JsonProperty("resource_type")]
[System.Text.Json.Serialization.JsonPropertyName("resource_type")]
public string? ResourceType { get; set; }
///
/// 获取或设置资源链接。
///
[Newtonsoft.Json.JsonProperty("resource_url")]
[System.Text.Json.Serialization.JsonPropertyName("resource_url")]
public string? ResourceUrl { get; set; }
///
/// 获取或设置资源高度(单位:像素)。
///
[Newtonsoft.Json.JsonProperty("resource_height")]
[System.Text.Json.Serialization.JsonPropertyName("resource_height")]
public int? ResourceHeight { get; set; }
///
/// 获取或设置资源宽度(单位:像素)。
///
[Newtonsoft.Json.JsonProperty("resource_width")]
[System.Text.Json.Serialization.JsonPropertyName("resource_width")]
public int? ResourceWidth { get; set; }
///
/// 获取或设置视频 ID。
///
[Newtonsoft.Json.JsonProperty("item_id")]
[System.Text.Json.Serialization.JsonPropertyName("item_id")]
public string? ItemId { get; set; }
///
/// 获取或设置卡片 ID。
///
[Newtonsoft.Json.JsonProperty("card_id")]
[System.Text.Json.Serialization.JsonPropertyName("card_id")]
public string? CardId { get; set; }
///
/// 获取或设置卡片状态。
///
[Newtonsoft.Json.JsonProperty("card_status")]
[System.Text.Json.Serialization.JsonPropertyName("card_status")]
public int? CardStatus { get; set; }
///
/// 获取或设置卡片数据。
///
[Newtonsoft.Json.JsonProperty("card_data")]
[System.Text.Json.Serialization.JsonPropertyName("card_data")]
public Types.CardData[]? CardData { get; set; }
///
/// 获取或设置创建时间戳。
///
[Newtonsoft.Json.JsonProperty("create_time")]
[System.Text.Json.Serialization.JsonPropertyName("create_time")]
public long CreateTimestamp { get; set; }
///
/// 获取或设置用户列表。
///
[Newtonsoft.Json.JsonProperty("user_infos")]
[System.Text.Json.Serialization.JsonPropertyName("user_infos")]
public Types.UserInfo[]? UserList { get; set; }
}
}
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Events/IM/IMSendMessageEvent.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen.Events
{
///
/// 表示 im_send_msg 事件的数据。
///
/// REF:
///
///
///
///
public class IMSendMessageEvent : DouyinOpenEvent
{
public static class Types
{
public class Content : IMReceiveMessageEvent.Types.Content
{
}
}
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Events/Interaction/NewFollowActionEvent.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen.Events
{
///
/// 表示 new_follow_action 事件的数据。
///
/// REF:
///
///
///
public class NewFollowActionEvent : DouyinOpenEvent
{
public static class Types
{
public class Content
{
///
/// 获取或设置动作类型。
///
[Newtonsoft.Json.JsonProperty("action_type")]
[System.Text.Json.Serialization.JsonPropertyName("action_type")]
public int ActionType { get; set; }
///
/// 获取或设置动作时间戳。
///
[Newtonsoft.Json.JsonProperty("action_time")]
[System.Text.Json.Serialization.JsonPropertyName("action_time")]
public long ActionTimestamp { get; set; }
}
}
///
[Newtonsoft.Json.JsonProperty("content")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.StringifiedObjectInJsonFormatConverter))]
[System.Text.Json.Serialization.JsonPropertyName("content")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.StringifiedObjectInJsonFormatConverter))]
public override Types.Content EventContent { get; set; } = default!;
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Events/Interaction/NewVideoDiggEvent.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen.Events
{
///
/// 表示 new_video_digg 事件的数据。
///
/// REF:
///
///
///
public class NewVideoDiggEvent : DouyinOpenEvent
{
public static class Types
{
public class Content
{
///
/// 获取或设置视频 ID。
///
[Newtonsoft.Json.JsonProperty("item_id")]
[System.Text.Json.Serialization.JsonPropertyName("item_id")]
public string ItemId { get; set; } = default!;
///
/// 获取或设置动作类型。
///
[Newtonsoft.Json.JsonProperty("action_type")]
[System.Text.Json.Serialization.JsonPropertyName("action_type")]
public int ActionType { get; set; }
///
/// 获取或设置动作时间戳。
///
[Newtonsoft.Json.JsonProperty("action_time")]
[System.Text.Json.Serialization.JsonPropertyName("action_time")]
public long ActionTimestamp { get; set; }
}
}
///
[Newtonsoft.Json.JsonProperty("content")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.StringifiedObjectInJsonFormatConverter))]
[System.Text.Json.Serialization.JsonPropertyName("content")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.StringifiedObjectInJsonFormatConverter))]
public override Types.Content EventContent { get; set; } = default!;
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Events/UnionAuth/UnionAuthInfoForBEvent.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen.Events
{
///
/// 表示 union_auth_info_for_b 事件的数据。
///
/// REF:
///
///
///
public class UnionAuthInfoForBEvent : DouyinOpenEvent
{
public static class Types
{
public class Content
{
///
/// 获取或设置 B 端应用 ClientKey。
///
[Newtonsoft.Json.JsonProperty("b_client_key")]
[System.Text.Json.Serialization.JsonPropertyName("b_client_key")]
public string BClientKey { get; set; } = default!;
///
/// 获取或设置用户在 B 端下的 OpenId。
///
[Newtonsoft.Json.JsonProperty("b_open_id")]
[System.Text.Json.Serialization.JsonPropertyName("b_open_id")]
public string BOpenId { get; set; } = default!;
///
/// 获取或设置 C 端应用 ClientKey。
///
[Newtonsoft.Json.JsonProperty("c_client_key")]
[System.Text.Json.Serialization.JsonPropertyName("c_client_key")]
public string CClientKey { get; set; } = default!;
///
/// 获取或设置用户在 C 端下的 OpenId。
///
[Newtonsoft.Json.JsonProperty("c_open_id")]
[System.Text.Json.Serialization.JsonPropertyName("c_open_id")]
public string COpenId { get; set; } = default!;
}
}
///
[Newtonsoft.Json.JsonProperty("content")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.StringifiedObjectInJsonFormatConverter))]
[System.Text.Json.Serialization.JsonPropertyName("content")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.StringifiedObjectInJsonFormatConverter))]
public override Types.Content EventContent { get; set; } = default!;
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Events/UnionAuth/UnionAuthInfoForCEvent.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen.Events
{
///
/// 表示 union_auth_info_for_c 事件的数据。
///
/// REF:
///
///
///
///
public class UnionAuthInfoForCEvent : DouyinOpenEvent
{
public static class Types
{
public class Content
{
///
/// 获取或设置 B 端应用 ClientKey。
///
[Newtonsoft.Json.JsonProperty("b_client_key")]
[System.Text.Json.Serialization.JsonPropertyName("b_client_key")]
public string BClientKey { get; set; } = default!;
///
/// 获取或设置用户在 B 端下的 OpenId。
///
[Newtonsoft.Json.JsonProperty("b_open_id")]
[System.Text.Json.Serialization.JsonPropertyName("b_open_id")]
public string BOpenId { get; set; } = default!;
///
/// 获取或设置 C 端应用 ClientKey。
///
[Newtonsoft.Json.JsonProperty("c_client_key")]
[System.Text.Json.Serialization.JsonPropertyName("c_client_key")]
public string CClientKey { get; set; } = default!;
///
/// 获取或设置用户在 C 端下的 OpenId。
///
[Newtonsoft.Json.JsonProperty("c_open_id")]
[System.Text.Json.Serialization.JsonPropertyName("c_open_id")]
public string COpenId { get; set; } = default!;
}
}
///
[Newtonsoft.Json.JsonProperty("content")]
[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.Common.StringifiedObjectInJsonFormatConverter))]
[System.Text.Json.Serialization.JsonPropertyName("content")]
[System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.Common.StringifiedObjectInJsonFormatConverter))]
public override Types.Content EventContent { get; set; } = default!;
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Events/Webhook/AuthorizeEvent.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen.Events
{
///
/// 表示 authorize 事件的数据。
///
/// REF:
///
///
///
public class AuthorizeEvent : DouyinOpenEvent
{
public static class Types
{
public class Content
{
///
/// 获取或设置授权列表。
///
[Newtonsoft.Json.JsonProperty("scopes")]
[System.Text.Json.Serialization.JsonPropertyName("scopes")]
public string[] ScopeList { get; set; } = default!;
}
}
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Events/Webhook/CreateVideoEvent.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen.Events
{
///
/// 表示 create_video 事件的数据。
///
/// REF:
///
///
///
public class CreateVideoEvent : DouyinOpenEvent
{
public static class Types
{
public class Content
{
///
/// 获取或设置视频 ID。
///
[Newtonsoft.Json.JsonProperty("item_id")]
[System.Text.Json.Serialization.JsonPropertyName("item_id")]
public string ItemId { get; set; } = default!;
///
/// 获取或设置分享 ID。
///
[Newtonsoft.Json.JsonProperty("share_id")]
[System.Text.Json.Serialization.JsonPropertyName("share_id")]
public string ShareId { get; set; } = default!;
}
}
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Events/Webhook/DialogPhoneEvent.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen.Events
{
///
/// 表示 dial_phone 事件的数据。
///
/// REF:
///
///
///
public class DialogPhoneEvent : DouyinOpenEvent
{
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Events/Webhook/ItemCommentReplyEvent.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen.Events
{
///
/// 表示 item_comment_reply 事件的数据。
///
/// REF:
///
///
///
public class ItemCommentReplyEvent : DouyinOpenEvent
{
public static class Types
{
public class Content
{
///
/// 获取或设置评论 ID。
///
[Newtonsoft.Json.JsonProperty("comment_id")]
[System.Text.Json.Serialization.JsonPropertyName("comment_id")]
public string CommentId { get; set; } = default!;
///
/// 获取或设置评论发布者 ID。
///
[Newtonsoft.Json.JsonProperty("comment_user_id")]
[System.Text.Json.Serialization.JsonPropertyName("comment_user_id")]
public string CommentUserId { get; set; } = default!;
///
/// 获取或设置回复内容。
///
[Newtonsoft.Json.JsonProperty("content")]
[System.Text.Json.Serialization.JsonPropertyName("content")]
public string CommentContent { get; set; } = default!;
///
/// 获取或设置点赞数量。
///
[Newtonsoft.Json.JsonProperty("digg_count")]
[System.Text.Json.Serialization.JsonPropertyName("digg_count")]
public int DiggCount { get; set; }
///
/// 获取或设置回复数量。
///
[Newtonsoft.Json.JsonProperty("reply_comment_total")]
[System.Text.Json.Serialization.JsonPropertyName("reply_comment_total")]
public int ReplyCount { get; set; }
///
/// 获取或设置创建时间戳。
///
[Newtonsoft.Json.JsonProperty("create_time")]
[System.Text.Json.Serialization.JsonPropertyName("create_time")]
public long CreateTimestamp { get; set; }
///
/// 获取或设置回复的评论 ID。
///
[Newtonsoft.Json.JsonProperty("reply_to_comment_id")]
[System.Text.Json.Serialization.JsonPropertyName("reply_to_comment_id")]
public string? ReplyToCommentId { get; set; }
///
/// 获取或设置回复的视频 ID。
///
[Newtonsoft.Json.JsonProperty("reply_to_item_id")]
[System.Text.Json.Serialization.JsonPropertyName("reply_to_item_id")]
public string? ReplyToItemId { get; set; }
///
/// 获取或设置回复的用户 ID。
///
[Newtonsoft.Json.JsonProperty("at_user_id")]
[System.Text.Json.Serialization.JsonPropertyName("at_user_id")]
public string? AtUserId { get; set; }
}
}
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Events/Webhook/PersonalTabContactEvent.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen.Events
{
///
/// 表示 personal_tab_contact 事件的数据。
///
/// REF:
///
///
///
public class PersonalTabContactEvent : DouyinOpenEvent
{
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Events/Webhook/ReceiveMessageEvent.cs
================================================
using System.Collections.Generic;
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen.Events
{
///
/// 表示 receive_msg 事件的数据。
///
/// REF:
///
///
///
public class ReceiveMessageEvent : DouyinOpenEvent
{
public static class Types
{
public class Content
{
public static class Types
{
public class Action
{
///
/// 获取或设置文本信息。
///
[Newtonsoft.Json.JsonProperty("name")]
[System.Text.Json.Serialization.JsonPropertyName("name")]
public string Name { get; set; } = default!;
///
/// 获取或设置文本链接。
///
[Newtonsoft.Json.JsonProperty("value")]
[System.Text.Json.Serialization.JsonPropertyName("value")]
public string Value { get; set; } = default!;
///
/// 获取或设置文本点击后的事件类型。
///
[Newtonsoft.Json.JsonProperty("action_type")]
[System.Text.Json.Serialization.JsonPropertyName("action_type")]
public string ActionType { get; set; } = default!;
}
}
///
/// 获取或设置消息类型。
///
[Newtonsoft.Json.JsonProperty("message_type")]
[System.Text.Json.Serialization.JsonPropertyName("message_type")]
public string MessageType { get; set; } = default!;
///
/// 获取或设置文本消息内容。
///
[Newtonsoft.Json.JsonProperty("text")]
[System.Text.Json.Serialization.JsonPropertyName("text")]
public string? Text { get; set; }
///
/// 获取或设置资源类型。
///
[Newtonsoft.Json.JsonProperty("resource_type")]
[System.Text.Json.Serialization.JsonPropertyName("resource_type")]
public string? ResourceType { get; set; }
///
/// 获取或设置资源高度(单位:像素)。
///
[Newtonsoft.Json.JsonProperty("resource_height")]
[System.Text.Json.Serialization.JsonPropertyName("resource_height")]
public int? ResourceHeight { get; set; }
///
/// 获取或设置资源宽度(单位:像素)。
///
[Newtonsoft.Json.JsonProperty("resource_width")]
[System.Text.Json.Serialization.JsonPropertyName("resource_width")]
public int? ResourceWidth { get; set; }
///
/// 获取或设置资源 URL。
///
[Newtonsoft.Json.JsonProperty("resource_url")]
[System.Text.Json.Serialization.JsonPropertyName("resource_url")]
public string? ResourceUrl { get; set; }
///
/// 获取或设置卡片标题或消息内容。
///
[Newtonsoft.Json.JsonProperty("title")]
[System.Text.Json.Serialization.JsonPropertyName("title")]
public string? Title { get; set; }
///
/// 获取或设置卡片描述。
///
[Newtonsoft.Json.JsonProperty("description")]
[System.Text.Json.Serialization.JsonPropertyName("description")]
public string? Description { get; set; }
///
/// 获取或设置卡片图标 URL。
///
[Newtonsoft.Json.JsonProperty("icon_url")]
[System.Text.Json.Serialization.JsonPropertyName("icon_url")]
public string? IconUrl { get; set; }
///
/// 获取或设置卡片跳转链接。
///
[Newtonsoft.Json.JsonProperty("link_url")]
[System.Text.Json.Serialization.JsonPropertyName("link_url")]
public string? LinkUrl { get; set; }
///
/// 获取或设置附带内容字典。
///
[Newtonsoft.Json.JsonProperty("actions")]
[System.Text.Json.Serialization.JsonPropertyName("actions")]
public IDictionary? ActionMap { get; set; }
}
}
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Events/Webhook/UnauthorizeEvent.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen.Events
{
///
/// 表示 unauthorize 事件的数据。
///
/// REF:
///
///
///
public class UnauthorizeEvent : DouyinOpenEvent
{
public static class Types
{
public class Content : AuthorizeEvent.Types.Content
{
}
}
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Events/Webhook/VerifyWebhookEvent.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen.Events
{
///
/// 表示 verify_webhook 事件的数据。
///
/// REF:
///
///
///
///
public class VerifyWebhookEvent : DouyinOpenEvent
{
public static class Types
{
public class Content
{
///
/// 获取或设置验证信息。
///
[Newtonsoft.Json.JsonProperty("challenge")]
[System.Text.Json.Serialization.JsonPropertyName("challenge")]
public int Challenge { get; set; }
}
}
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Events/Webhook/WebsiteContactEvent.cs
================================================
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen.Events
{
///
/// 表示 website_contact 事件的数据。
///
/// REF:
///
///
///
public class WebsiteContactEvent : DouyinOpenEvent
{
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Extensions/DouyinOpenClientDecryptionExtensions.cs
================================================
using System;
using System.Text;
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen
{
///
/// 为 提供解密的扩展方法。
///
public static class DouyinOpenClientDecryptionExtensions
{
///
/// 解密用户公开信息中的手机号码。
///
/// REF:
///
///
///
///
///
///
public static string DecryptOAuthUserInfoMobileNumber(this DouyinOpenClient client, string encryptedMobileNumber)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (encryptedMobileNumber is null) throw new ArgumentNullException(encryptedMobileNumber);
byte[] keyBytes = Encoding.UTF8.GetBytes(client.Credentials.ClientSecret);
byte[] ivBytes = new byte[16]; Array.Copy(keyBytes, 0, ivBytes, 0, 16);
byte[] cipherBytes = Convert.FromBase64String(encryptedMobileNumber);
byte[] plainBytes = Utilities.AESUtility.DecryptWithCBC(keyBytes, ivBytes, cipherBytes);
return Encoding.UTF8.GetString(plainBytes);
}
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Extensions/DouyinOpenClientEventExtensions.cs
================================================
using System;
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen
{
using SKIT.FlurlHttpClient.Primitives;
///
/// 为 提供 Webhook 事件的扩展方法。
///
public static class DouyinOpenClientEventExtensions
{
///
/// 从 JSON 反序列化得到 对象。
///
///
///
///
///
public static TEvent DeserializeEvent(this DouyinOpenClient client, string webhookJson)
where TEvent : DouyinOpenEvent, new()
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (webhookJson is null) throw new ArgumentNullException(webhookJson);
try
{
return client.JsonSerializer.Deserialize(webhookJson);
}
catch (Exception ex)
{
throw new DouyinOpenException("Failed to deserialize event data. Please see the inner exception for more details.", ex);
}
}
///
/// 验证 Webhook 事件签名。
///
/// REF:
///
///
///
///
/// 抖音 Webhook 事件中请求正文(JSON 格式)。
/// 抖音 Webhook 事件中的 "X-Douyin-Signature" 请求标头。
///
public static ErroredResult VerifyEventSignature(this DouyinOpenClient client, string webhookJson, string webhookSignature)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (webhookJson is null) throw new ArgumentNullException(nameof(webhookJson));
ErroredResult result;
try
{
string msg = $"{client.Credentials.ClientSecret}{webhookJson}";
string sign = Utilities.SHA1Utility.Hash(msg).Value!;
bool valid = string.Equals(sign, webhookSignature, StringComparison.OrdinalIgnoreCase);
if (valid)
result = ErroredResult.Ok();
else
result = ErroredResult.Fail(new Exception($"Signature does not match. Maybe \"{webhookSignature}\" is an illegal signature."));
}
catch (Exception ex)
{
result = ErroredResult.Fail(ex);
}
return result;
}
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Extensions/DouyinOpenClientExecuteApiAppsAuthExtensions.cs
================================================
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Flurl.Http;
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen
{
public static class DouyinOpenClientExecuteApiAppsAuthExtensions
{
///
/// 异步调用 [POST] /api/apps/v1/auth/get_openid_by_c/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteAppsAuthGetOpenIdByCV1Async(this DouyinOpenClient client, Models.AppsAuthGetOpenIdByCV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "apps", "v1", "auth", "get_openid_by_c/")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Extensions/DouyinOpenClientExecuteApiAppsTradeExtensions.cs
================================================
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Flurl;
using Flurl.Http;
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen
{
public static class DouyinOpenClientExecuteApiAppsTradeExtensions
{
///
/// 异步调用 [POST] /api/apps/trade/v2/order/query_item_order_info 接口。
///
/// REF:
///
///
///
///
///
///
///
///
public static async Task ExecuteAppsTradeOrderQueryItemOrderInfoV2Async(this DouyinOpenClient client, Models.AppsTradeOrderQueryItemOrderInfoV2Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "apps", "trade", "v2", "order", "query_item_order_info")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/apps/trade/v2/order/query_order 接口。
///
/// REF:
///
///
///
///
///
///
///
///
public static async Task ExecuteAppsTradeOrderQueryOrderV2Async(this DouyinOpenClient client, Models.AppsTradeOrderQueryOrderV2Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "apps", "trade", "v2", "order", "query_order")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/apps/trade/v2/order/query_cps 接口。
///
/// REF:
///
///
///
///
///
///
///
///
public static async Task ExecuteAppsTradeOrderQueryCPSV2Async(this DouyinOpenClient client, Models.AppsTradeOrderQueryCPSV2Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "apps", "trade", "v2", "order", "query_cps")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/apps/trade/v2/order/create_order 接口。
///
/// REF:
///
///
///
///
///
///
///
///
public static async Task ExecuteAppsTradeOrderCreateOrderV2Async(this DouyinOpenClient client, Models.AppsTradeOrderCreateOrderV2Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "apps", "trade", "v2", "order", "create_order")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/apps/trade/v2/order/close_order 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteAppsTradeOrderCloseOrderV2Async(this DouyinOpenClient client, Models.AppsTradeOrderCloseOrderV2Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "apps", "trade", "v2", "order", "close_order")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/apps/trade/v2/fulfillment/delivery_prepare 接口。
///
/// REF:
///
///
///
///
///
///
///
///
public static async Task ExecuteAppsTradeFulfillmentDeliveryPrepareV2Async(this DouyinOpenClient client, Models.AppsTradeFulfillmentDeliveryPrepareV2Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "apps", "trade", "v2", "fulfillment", "delivery_prepare")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/apps/trade/v2/fulfillment/delivery_verify 接口。
///
/// REF:
///
///
///
///
///
///
///
///
public static async Task ExecuteAppsTradeFulfillmentDeliveryVerifyV2Async(this DouyinOpenClient client, Models.AppsTradeFulfillmentDeliveryVerifyV2Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "apps", "trade", "v2", "fulfillment", "delivery_verify")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/apps/trade/v2/fulfillment/verify_cancel 接口。
///
/// REF:
///
///
///
///
///
///
///
///
public static async Task ExecuteAppsTradeFulfillmentVerifyCancelV2Async(this DouyinOpenClient client, Models.AppsTradeFulfillmentVerifyCancelV2Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "apps", "trade", "v2", "fulfillment", "verify_cancel")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/apps/trade/v2/fulfillment/push_delivery 接口。
///
/// REF:
///
///
///
///
///
///
///
///
public static async Task ExecuteAppsTradeFulfillmentPushDeliveryV2Async(this DouyinOpenClient client, Models.AppsTradeFulfillmentPushDeliveryV2Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "apps", "trade", "v2", "fulfillment", "push_delivery")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/apps/trade/v2/fulfillment/query_user_certificates 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteAppsTradeFulfillmentQueryUserCertificatesV2Async(this DouyinOpenClient client, Models.AppsTradeFulfillmentQueryUserCertificatesV2Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "apps", "trade", "v2", "fulfillment", "query_user_certificates")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/apps/trade/v2/fulfillment/order_can_use 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteAppsTradeFulfillmentOrderCanUseV2Async(this DouyinOpenClient client, Models.AppsTradeFulfillmentOrderCanUseV2Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "apps", "trade", "v2", "fulfillment", "order_can_use")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/apps/trade/v2/settle/create_settle 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteAppsTradeSettleCreateSettleV2Async(this DouyinOpenClient client, Models.AppsTradeSettleCreateSettleV2Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "apps", "trade", "v2", "settle", "create_settle")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/apps/trade/v2/settle/query_settle 接口。
///
/// REF:
///
///
///
///
///
///
///
///
public static async Task ExecuteAppsTradeSettleQuerySettleV2Async(this DouyinOpenClient client, Models.AppsTradeSettleQuerySettleV2Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "apps", "trade", "v2", "settle", "query_settle")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/apps/trade/v2/refund/create_refund 接口。
///
/// REF:
///
///
///
///
///
///
///
///
public static async Task ExecuteAppsTradeRefundCreateRefundV2Async(this DouyinOpenClient client, Models.AppsTradeRefundCreateRefundV2Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "apps", "trade", "v2", "refund", "create_refund")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/apps/trade/v2/refund/query_refund 接口。
///
/// REF:
///
///
///
///
///
///
///
///
public static async Task ExecuteAppsTradeRefundQueryRefundV2Async(this DouyinOpenClient client, Models.AppsTradeRefundQueryRefundV2Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "apps", "trade", "v2", "refund", "query_refund")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/apps/trade/v2/refund/merchant_audit_callback 接口。
///
/// REF:
///
///
///
///
///
///
///
///
public static async Task ExecuteAppsTradeRefundMerchantAuditCallbackV2Async(this DouyinOpenClient client, Models.AppsTradeRefundMerchantAuditCallbackV2Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "apps", "trade", "v2", "refund", "merchant_audit_callback")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/apps/trade/v2/book/create_book 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteAppsTradeBookCreateBookV2Async(this DouyinOpenClient client, Models.AppsTradeBookCreateBookV2Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "apps", "trade", "v2", "book", "create_book")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/apps/trade/v2/book/book_result_callback 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteAppsTradeBookResultCallbackV2Async(this DouyinOpenClient client, Models.AppsTradeBookResultCallbackV2Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "apps", "trade", "v2", "book", "book_result_callback")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/apps/trade/v2/book/merchant_cancel_book 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteAppsTradeBookMerchantCancelBookV2Async(this DouyinOpenClient client, Models.AppsTradeBookMerchantCancelBookV2Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "apps", "trade", "v2", "book", "merchant_cancel_book")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/apps/trade/v2/book/user_cancel_book 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteAppsTradeBookUserCancelBookV2Async(this DouyinOpenClient client, Models.AppsTradeBookUserCancelBookV2Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "apps", "trade", "v2", "book", "user_cancel_book")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/apps/trade/v2/book/query_book 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteAppsTradeBookQueryBookV2Async(this DouyinOpenClient client, Models.AppsTradeBookQueryBookV2Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "apps", "trade", "v2", "book", "query_book")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Extensions/DouyinOpenClientExecuteApiDouyinAuthExtensions.cs
================================================
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Flurl.Http;
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen
{
public static class DouyinOpenClientExecuteApiDouyinAuthExtensions
{
///
/// 异步调用 [POST] /api/douyin/v1/auth/get_related_id/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDouyinAuthGetRelatedIdV1Async(this DouyinOpenClient client, Models.DouyinAuthGetRelatedIdV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "douyin", "v1", "auth", "get_related_id/")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/douyin/v1/auth/get_openid_by_c/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDouyinAuthGetOpenIdByCV1Async(this DouyinOpenClient client, Models.DouyinAuthGetOpenIdByCV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "douyin", "v1", "auth", "get_openid_by_c/")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/douyin/v1/auth/get_openid_by_b/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDouyinAuthGetOpenIdByBV1Async(this DouyinOpenClient client, Models.DouyinAuthGetOpenIdByBV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "douyin", "v1", "auth", "get_openid_by_b/")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Extensions/DouyinOpenClientExecuteApiDouyinIMExtensions.cs
================================================
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Flurl.Http;
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen
{
public static class DouyinOpenClientExecuteApiDouyinIMExtensions
{
///
/// 异步调用 [POST] /api/douyin/v1/im/set_applet_template/ 接口。
///
/// REF:
///
///
///
///
///
///
///
///
public static async Task ExecuteDouyinIMSetAppletTemplateV1Async(this DouyinOpenClient client, Models.DouyinIMSetAppletTemplateV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "douyin", "v1", "im", "set_applet_template/")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/douyin/v1/im/get_applet_template/ 接口。
///
/// REF:
///
///
///
///
///
///
///
///
public static async Task ExecuteDouyinIMGetAppletTemplateV1Async(this DouyinOpenClient client, Models.DouyinIMGetAppletTemplateV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "douyin", "v1", "im", "get_applet_template/")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/douyin/v1/im/del_applet_template/ 接口。
///
/// REF:
///
///
///
///
///
///
///
///
public static async Task ExecuteDouyinIMDeleteAppletTemplateV1Async(this DouyinOpenClient client, Models.DouyinIMDeleteAppletTemplateV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "douyin", "v1", "im", "del_applet_template/")
.WithHeader("access-token", request.AccessToken)
.SetQueryParam("card_template_id", request.CardTemplateId);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Extensions/DouyinOpenClientExecuteApiDouyinInteractiveExtensions.cs
================================================
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Flurl.Http;
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen
{
public static class DouyinOpenClientExecuteApiDouyinInteractiveExtensions
{
///
/// 异步调用 [GET] /api/douyin/v1/interactive/intention/log/list/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDouyinInteractiveIntentionLogListV1Async(this DouyinOpenClient client, Models.DouyinInteractiveIntentionLogListV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "api", "douyin", "v1", "interactive", "intention", "log", "list/")
.WithHeader("access-token", request.AccessToken)
.SetQueryParam("open_id", request.OpenId)
.SetQueryParam("start_time", request.StartTimestamp)
.SetQueryParam("end_time", request.EndTimestamp)
.SetQueryParam("event", request.Event)
.SetQueryParam("query_session", request.QuerySession)
.SetQueryParam("count", request.Count);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Extensions/DouyinOpenClientExecuteApiDouyinRoleExtensions.cs
================================================
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Flurl.Http;
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen
{
public static class DouyinOpenClientExecuteApiDouyinRoleExtensions
{
///
/// 异步调用 [POST] /api/douyin/v1/role/check/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDouyinRoleCheckV1Async(this DouyinOpenClient client, Models.DouyinRoleCheckV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "douyin", "v1", "role", "check/")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Extensions/DouyinOpenClientExecuteApiDouyinSchemaExtensions.cs
================================================
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Flurl.Http;
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen
{
public static class DouyinOpenClientExecuteApiDouyinSchemaExtensions
{
///
/// 异步调用 [POST] /api/douyin/v1/schema/get_share/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDouyinSchemaGetShareV1Async(this DouyinOpenClient client, Models.DouyinSchemaGetShareV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "douyin", "v1", "schema", "get_share/")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/douyin/v1/schema/get_user_profile/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDouyinSchemaGetUserProfileV1Async(this DouyinOpenClient client, Models.DouyinSchemaGetUserProfileV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "douyin", "v1", "schema", "get_user_profile/")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/douyin/v1/schema/get_chat/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDouyinSchemaGetChatV1Async(this DouyinOpenClient client, Models.DouyinSchemaGetChatV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "douyin", "v1", "schema", "get_chat/")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/douyin/v1/schema/get_item_info/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDouyinSchemaGetItemInfoV1Async(this DouyinOpenClient client, Models.DouyinSchemaGetItemInfoV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "douyin", "v1", "schema", "get_item_info/")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/douyin/v1/schema/get_live/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDouyinSchemaGetLiveV1Async(this DouyinOpenClient client, Models.DouyinSchemaGetLiveV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "douyin", "v1", "schema", "get_live/")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Extensions/DouyinOpenClientExecuteApiDouyinUserExtensions.cs
================================================
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Flurl;
using Flurl.Http;
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen
{
public static class DouyinOpenClientExecuteApiDouyinUserExtensions
{
///
/// 异步调用 [GET] /api/douyin/v1/user/fans_data/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDouyinUserFansDataV1Async(this DouyinOpenClient client, Models.DouyinUserFansDataV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "api", "douyin", "v1", "user", "fans_data/")
.WithHeader("access-token", request.AccessToken)
.SetQueryParam("open_id", request.OpenId);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Extensions/DouyinOpenClientExecuteApiDouyinVideoExtensions.cs
================================================
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Flurl;
using Flurl.Http;
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen
{
public static class DouyinOpenClientExecuteApiDouyinVideoExtensions
{
///
/// 异步调用 [POST] /api/douyin/v1/video/upload_video/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDouyinVideoUploadVideoV1Async(this DouyinOpenClient client, Models.DouyinVideoUploadVideoV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "douyin", "v1", "video", "upload_video/")
.WithHeader("access-token", request.AccessToken)
.SetQueryParam("open_id", request.OpenId);
if (request.VideoFileName is null)
request.VideoFileName = Guid.NewGuid().ToString("N").ToLower() + ".mp4";
if (request.VideoContentType is null)
request.VideoContentType = "video/mp4";
using var httpContent = Utilities.HttpContentBuilder.BuildWithFile(fileName: request.VideoFileName, fileBytes: request.VideoFileBytes, fileContentType: request.VideoContentType, formDataName: "video");
return await client.SendFlurlRequestAsync(flurlReq, httpContent: httpContent, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/douyin/v1/video/create_video/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDouyinVideoCreateVideoV1Async(this DouyinOpenClient client, Models.DouyinVideoCreateVideoV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "douyin", "v1", "video", "create_video/")
.WithHeader("access-token", request.AccessToken)
.SetQueryParam("open_id", request.OpenId);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [GET] /api/douyin/v1/video/video_list/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDouyinVideoListV1Async(this DouyinOpenClient client, Models.DouyinVideoListV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "api", "douyin", "v1", "video", "video_list/")
.WithHeader("access-token", request.AccessToken)
.SetQueryParam("open_id", request.OpenId)
.SetQueryParam("cursor", request.PageCursor)
.SetQueryParam("count", request.PageSize);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/douyin/v1/video/video_data/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDouyinVideoDataV1Async(this DouyinOpenClient client, Models.DouyinVideoDataV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "douyin", "v1", "video", "video_data/")
.WithHeader("access-token", request.AccessToken)
.SetQueryParam("open_id", request.OpenId); ;
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/douyin/v1/video/video_basic_info/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDouyinVideoBasicInfoV1Async(this DouyinOpenClient client, Models.DouyinVideoBasicInfoV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "douyin", "v1", "video", "video_basic_info/")
.WithHeader("access-token", request.AccessToken)
.SetQueryParam("open_id", request.OpenId); ;
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#region Iframe
///
/// 异步调用 [GET] /api/douyin/v1/video/get_iframe_by_video 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDouyinVideoGetIframeByVideoV1Async(this DouyinOpenClient client, Models.DouyinVideoGetIframeByVideoV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "api", "douyin", "v1", "video", "get_iframe_by_video")
.SetQueryParam("video_id", request.VideoId);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [GET] /api/douyin/v1/video/get_iframe_by_item 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDouyinVideoGetIframeByItemV1Async(this DouyinOpenClient client, Models.DouyinVideoGetIframeByItemV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
if (request.ClientKey is null)
request.ClientKey = client.Credentials.ClientKey;
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "api", "douyin", "v1", "video", "get_iframe_by_item")
.SetQueryParam("client_key", request.ClientKey)
.SetQueryParam("video_id", request.ItemId);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
#region Image
///
/// 异步调用 [POST] /api/douyin/v1/video/upload_image/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDouyinVideoUploadImageV1Async(this DouyinOpenClient client, Models.DouyinVideoUploadImageV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "douyin", "v1", "video", "upload_image/")
.WithHeader("access-token", request.AccessToken)
.SetQueryParam("open_id", request.OpenId);
if (request.ImageFileName is null)
request.ImageFileName = Guid.NewGuid().ToString("N").ToLower() + ".jpg";
if (request.ImageContentType is null)
request.ImageContentType = "image/jpeg";
using var httpContent = Utilities.HttpContentBuilder.BuildWithFile(fileName: request.ImageFileName, fileBytes: request.ImageFileBytes, fileContentType: request.ImageContentType, formDataName: "image");
return await client.SendFlurlRequestAsync(flurlReq, httpContent: httpContent, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/douyin/v1/video/create_image_text/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDouyinVideoCreateImageTextV1Async(this DouyinOpenClient client, Models.DouyinVideoCreateImageTextV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "douyin", "v1", "video", "create_image_text/")
.WithHeader("access-token", request.AccessToken)
.SetQueryParam("open_id", request.OpenId);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
#region Part
///
/// 异步调用 [POST] /api/douyin/v1/video/init_video_part_upload/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDouyinVideoInitVideoPartUploadV1Async(this DouyinOpenClient client, Models.DouyinVideoInitVideoPartUploadV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "douyin", "v1", "video", "init_video_part_upload/")
.WithHeader("access-token", request.AccessToken)
.SetQueryParam("open_id", request.OpenId);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/douyin/v1/video/upload_video_part/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDouyinVideoUploadVideoPartV1Async(this DouyinOpenClient client, Models.DouyinVideoUploadVideoPartV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "douyin", "v1", "video", "upload_video_part/")
.WithHeader("access-token", request.AccessToken)
.SetQueryParam("open_id", request.OpenId)
.SetQueryParam("upload_id", request.UploadId)
.SetQueryParam("part_number", request.PartNumber);
if (request.VideoFileName is null)
request.VideoFileName = Guid.NewGuid().ToString("N").ToLower() + ".mp4";
if (request.VideoContentType is null)
request.VideoContentType = "video/mp4";
using var httpContent = Utilities.HttpContentBuilder.BuildWithFile(fileName: request.VideoFileName, fileBytes: request.VideoFileBytes, fileContentType: request.VideoContentType, formDataName: "video");
return await client.SendFlurlRequestAsync(flurlReq, httpContent: httpContent, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/douyin/v1/video/complete_video_part_upload/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDouyinVideoCompleteVideoPartUploadV1Async(this DouyinOpenClient client, Models.DouyinVideoCompleteVideoPartUploadV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "douyin", "v1", "video", "complete_video_part_upload/")
.WithHeader("access-token", request.AccessToken)
.SetQueryParam("open_id", request.OpenId)
.SetQueryParam("upload_id", request.UploadId);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Extensions/DouyinOpenClientExecuteApiIMExtensions.cs
================================================
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Flurl.Http;
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen
{
public static class DouyinOpenClientExecuteApiIMExtensions
{
///
/// 异步调用 [GET] /api/im/message/resources/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteIMMessageResourcesAsync(this DouyinOpenClient client, Models.IMMessageResourcesRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "api", "im", "message", "resources/")
.WithHeader("access-token", request.AccessToken)
.SetQueryParam("open_id", request.OpenId)
.SetQueryParam("conversation_id", request.ConversationId)
.SetQueryParam("message_id", request.MessageId);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Extensions/DouyinOpenClientExecuteApiIndustryExtensions.cs
================================================
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Flurl.Http;
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen
{
public static class DouyinOpenClientExecuteApiIndustryExtensions
{
#region AppTestRelation
///
/// 异步调用 [POST] /api/industry/v1/solution/query_app_test_relation 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteIndustrySolutionQueryAppTestRelationV1Async(this DouyinOpenClient client, Models.IndustrySolutionQueryAppTestRelationV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "industry", "v1", "solution", "query_app_test_relation")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/industry/v1/solution/add_app_test_relation 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteIndustrySolutionAddAppTestRelationV1Async(this DouyinOpenClient client, Models.IndustrySolutionAddAppTestRelationV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "industry", "v1", "solution", "add_app_test_relation")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/industry/v1/solution/delete_app_test_relation 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteIndustrySolutionDeleteAppTestRelationV1Async(this DouyinOpenClient client, Models.IndustrySolutionDeleteAppTestRelationV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "industry", "v1", "solution", "delete_app_test_relation")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
#region AppTestRelation
///
/// 异步调用 [POST] /api/industry/v1/solution/set_impl 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteIndustrySolutionSetImplementationV1Async(this DouyinOpenClient client, Models.IndustrySolutionSetImplementationV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "industry", "v1", "solution", "set_impl")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/industry/v1/solution/query_impl 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteIndustrySolutionQueryImplementationV1Async(this DouyinOpenClient client, Models.IndustrySolutionQueryImplementationV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "industry", "v1", "solution", "query_impl")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Extensions/DouyinOpenClientExecuteApiMatchExtensions.cs
================================================
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Flurl.Http;
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen
{
public static class DouyinOpenClientExecuteApiMatchExtensions
{
///
/// 异步调用 [POST] /api/match/v2/taskbox/query_violate_talent_list/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteMatchTaskboxQueryViolateTalentListV2Async(this DouyinOpenClient client, Models.MatchTaskboxQueryViolateTalentListV2Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "match", "v2", "taskbox", "query_violate_talent_list/")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/match/v2/taskbox/agency_query_bill_link/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteMatchTaskboxAgencyQueryBillLinkV2Async(this DouyinOpenClient client, Models.MatchTaskboxAgencyQueryBillLinkV2Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "match", "v2", "taskbox", "agency_query_bill_link/")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/match/v2/taskbox/agency_query_video_sum_data/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteMatchTaskboxAgencyQueryVideoSummaryDataV2Async(this DouyinOpenClient client, Models.MatchTaskboxAgencyQueryVideoSummaryDataV2Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "match", "v2", "taskbox", "agency_query_video_sum_data/")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/match/v1/taskbox/gen_agent_link/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteMatchTaskboxGenerateAgentLinkV1Async(this DouyinOpenClient client, Models.MatchTaskboxGenerateAgentLinkV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "match", "v1", "taskbox", "gen_agent_link/")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/match/v1/taskbox/change_user_bind_agent/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteMatchTaskboxChangeUserBindAgentV1Async(this DouyinOpenClient client, Models.MatchTaskboxChangeUserBindAgentV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "match", "v1", "taskbox", "change_user_bind_agent/")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/match/v1/taskbox/get_agency_user_bind_record/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteMatchTaskboxGetAgencyUserBindRecordV1Async(this DouyinOpenClient client, Models.MatchTaskboxGetAgencyUserBindRecordV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "match", "v1", "taskbox", "get_agency_user_bind_record/")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/match/v1/taskbox/save_agent/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteMatchTaskboxSaveAgentV1Async(this DouyinOpenClient client, Models.MatchTaskboxSaveAgentV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "match", "v1", "taskbox", "save_agent/")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/match/v1/taskbox/query_task_info/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteMatchTaskboxQueryTaskInfoV1Async(this DouyinOpenClient client, Models.MatchTaskboxQueryTaskInfoV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "match", "v1", "taskbox", "query_task_info/")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/match/v1/taskbox/query_app_task_id/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteMatchTaskboxQueryAppTaskIdV1Async(this DouyinOpenClient client, Models.MatchTaskboxQueryAppTaskIdV1Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "match", "v1", "taskbox", "query_app_task_id/")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [POST] /api/match/v2/taskbox/query_task_video_status/ 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteMatchTaskboxQueryTaskVideoStatusV2Async(this DouyinOpenClient client, Models.MatchTaskboxQueryTaskVideoStatusV2Request request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Post, "api", "match", "v2", "taskbox", "query_task_video_status/")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
}
}
================================================
FILE: src/SKIT.FlurlHttpClient.ByteDance.DouyinOpen/Extensions/DouyinOpenClientExecuteDataExternalExtensions.cs
================================================
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Flurl;
using Flurl.Http;
namespace SKIT.FlurlHttpClient.ByteDance.DouyinOpen
{
public static class DouyinOpenClientExecuteDataExternalExtensions
{
#region Anchor
///
/// 异步调用 [GET] /data/external/anchor/mp_item_click_distribution 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDataExternalAnchorMpItemClickDistributionAsync(this DouyinOpenClient client, Models.DataExternalAnchorMpItemClickDistributionRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "data", "external", "anchor", "mp_item_click_distribution")
.WithHeader("access-token", request.AccessToken)
.SetQueryParam("open_id", request.OpenId)
.SetQueryParam("mp_id", request.MiniAppId)
.SetQueryParam("date_type", request.DateType);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
#region Billboard
#region Billboard/HotVideo
///
/// 异步调用 [GET] /data/extern/billboard/hot_video 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDataExternalBillboardHotVideoAsync(this DouyinOpenClient client, Models.DataExternalBillboardHotVideoRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "data", "extern", "billboard", "hot_video")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
#region Billboard/Sport
///
/// 异步调用 [GET] /data/extern/billboard/sport/overall 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDataExternalBillboardSportOverallAsync(this DouyinOpenClient client, Models.DataExternalBillboardSportOverallRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "data", "extern", "billboard", "sport", "overall")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [GET] /data/extern/billboard/sport/basketball 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDataExternalBillboardSportBasketballAsync(this DouyinOpenClient client, Models.DataExternalBillboardSportBasketballRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "data", "extern", "billboard", "sport", "basketball")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [GET] /data/extern/billboard/sport/soccer 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDataExternalBillboardSportSoccerAsync(this DouyinOpenClient client, Models.DataExternalBillboardSportSoccerRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "data", "extern", "billboard", "sport", "soccer")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [GET] /data/extern/billboard/sport/comprehensive 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDataExternalBillboardSportComprehensiveAsync(this DouyinOpenClient client, Models.DataExternalBillboardSportComprehensiveRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "data", "extern", "billboard", "sport", "comprehensive")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [GET] /data/extern/billboard/sport/fitness 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDataExternalBillboardSportFitnessAsync(this DouyinOpenClient client, Models.DataExternalBillboardSportFitnessRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "data", "extern", "billboard", "sport", "fitness")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [GET] /data/extern/billboard/sport/outdoors 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDataExternalBillboardSportOutdoorsAsync(this DouyinOpenClient client, Models.DataExternalBillboardSportOutdoorsRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "data", "extern", "billboard", "sport", "outdoors")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [GET] /data/extern/billboard/sport/table_tennis 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDataExternalBillboardSportTableTennisAsync(this DouyinOpenClient client, Models.DataExternalBillboardSportTableTennisRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "data", "extern", "billboard", "sport", "table_tennis")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [GET] /data/extern/billboard/sport/culture 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDataExternalBillboardSportCultureAsync(this DouyinOpenClient client, Models.DataExternalBillboardSportCultureRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "data", "extern", "billboard", "sport", "culture")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
#region Billboard/Amusement
///
/// 异步调用 [GET] /data/extern/billboard/amusement/overall 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDataExternalBillboardAmusementOverallAsync(this DouyinOpenClient client, Models.DataExternalBillboardAmusementOverallRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "data", "extern", "billboard", "amusement", "overall")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [GET] /data/extern/billboard/amusement/new 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDataExternalBillboardAmusementNewAsync(this DouyinOpenClient client, Models.DataExternalBillboardAmusementNewRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "data", "extern", "billboard", "amusement", "new")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
#region Billboard/Game
///
/// 异步调用 [GET] /data/extern/billboard/game/console 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDataExternalBillboardGameConsoleAsync(this DouyinOpenClient client, Models.DataExternalBillboardGameConsoleRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "data", "extern", "billboard", "game", "console")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [GET] /data/extern/billboard/game/inf 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDataExternalBillboardGameInformationAsync(this DouyinOpenClient client, Models.DataExternalBillboardGameInformationRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "data", "extern", "billboard", "game", "inf")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
#region Billboard/Food
///
/// 异步调用 [GET] /data/extern/billboard/food/overall 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDataExternalBillboardFoodOverallAsync(this DouyinOpenClient client, Models.DataExternalBillboardFoodOverallRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "data", "extern", "billboard", "food", "overall")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [GET] /data/extern/billboard/food/new 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDataExternalBillboardFoodNewAsync(this DouyinOpenClient client, Models.DataExternalBillboardFoodNewRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "data", "extern", "billboard", "food", "new")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [GET] /data/extern/billboard/food/tutorial 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDataExternalBillboardFoodTutorialAsync(this DouyinOpenClient client, Models.DataExternalBillboardFoodTutorialRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "data", "extern", "billboard", "food", "tutorial")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [GET] /data/extern/billboard/food/shop 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDataExternalBillboardFoodShopAsync(this DouyinOpenClient client, Models.DataExternalBillboardFoodShopRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "data", "extern", "billboard", "food", "shop")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
#region Billboard/Drama
///
/// 异步调用 [GET] /data/extern/billboard/drama/overall 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDataExternalBillboardDramaOverallAsync(this DouyinOpenClient client, Models.DataExternalBillboardDramaOverallRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "data", "extern", "billboard", "drama", "overall")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
#region Billboard/Car
///
/// 异步调用 [GET] /data/extern/billboard/car/overall 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDataExternalBillboardCarOverallAsync(this DouyinOpenClient client, Models.DataExternalBillboardCarOverallRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "data", "extern", "billboard", "car", "overall")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [GET] /data/extern/billboard/car/comment 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDataExternalBillboardCarCommentAsync(this DouyinOpenClient client, Models.DataExternalBillboardCarCommentRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "data", "extern", "billboard", "car", "comment")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [GET] /data/extern/billboard/car/play 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDataExternalBillboardCarPlayAsync(this DouyinOpenClient client, Models.DataExternalBillboardCarPlayRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "data", "extern", "billboard", "car", "play")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [GET] /data/extern/billboard/car/use 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDataExternalBillboardCarUseAsync(this DouyinOpenClient client, Models.DataExternalBillboardCarUseRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "data", "extern", "billboard", "car", "use")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [GET] /data/extern/billboard/car/driver 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDataExternalBillboardCarDriverAsync(this DouyinOpenClient client, Models.DataExternalBillboardCarDriverRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "data", "extern", "billboard", "car", "driver")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
#region Billboard/Travel
///
/// 异步调用 [GET] /data/extern/billboard/travel/overall 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDataExternalBillboardTravelOverallAsync(this DouyinOpenClient client, Models.DataExternalBillboardTravelOverallRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "data", "extern", "billboard", "travel", "overall")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [GET] /data/extern/billboard/travel/new 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDataExternalBillboardTravelNewAsync(this DouyinOpenClient client, Models.DataExternalBillboardTravelNewRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "data", "extern", "billboard", "travel", "new")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
#endregion
#region Billboard/Cospa
///
/// 异步调用 [GET] /data/extern/billboard/cospa/overall 接口。
///
/// REF:
///
///
///
///
///
///
///
public static async Task ExecuteDataExternalBillboardCospaOverallAsync(this DouyinOpenClient client, Models.DataExternalBillboardCospaOverallRequest request, CancellationToken cancellationToken = default)
{
if (client is null) throw new ArgumentNullException(nameof(client));
if (request is null) throw new ArgumentNullException(nameof(request));
IFlurlRequest flurlReq = client
.CreateFlurlRequest(request, HttpMethod.Get, "data", "extern", "billboard", "cospa", "overall")
.WithHeader("access-token", request.AccessToken);
return await client.SendFlurlRequestAsJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken).ConfigureAwait(false);
}
///
/// 异步调用 [GET] /data/extern/billboard/cospa/qing_man 接口。
///
/// REF: