diff --git a/.gitignore b/.gitignore index 4d60a071..c170d391 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.speakeasy/reports .env .env.local .DS_Store diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index f37bfa54..5376ee0e 100644 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,38 +1,40 @@ lockVersion: 2.0.0 id: 61e876ba-f1ab-4e7f-bfcc-4f8231d25d15 management: - docChecksum: cd597ca8327d26befde94a89e454bfd2 - docVersion: 3.13.0 - speakeasyVersion: 1.725.0 - generationVersion: 2.836.5 - releaseVersion: 3.14.0 - configChecksum: adb141a6b611878a32f702fa4704f371 + docChecksum: 2a21bffd50d729765fe62c54254f410c + docVersion: 3.15.0 + speakeasyVersion: 1.761.3 + generationVersion: 2.879.11 + releaseVersion: 3.15.0 + configChecksum: 89863838e5f56192c9a5d8220e806636 repoURL: https://github.com/novuhq/novu-csharp.git + installationURL: https://github.com/novuhq/novu-csharp published: true persistentEdits: - generation_id: 86291bac-4213-4a56-9327-4cbc0ab5642b - pristine_commit_hash: 63d384629641e12f85cf159887179020f3287fe1 - pristine_tree_hash: e721199ce1fa86cf332c29b92e210ae9c531a5b8 + generation_id: 522faae7-7eeb-4d12-a13a-2e3e7327128c + pristine_commit_hash: a63820aef9edec024d75dfb65de65299fedcb876 + pristine_tree_hash: c55da09c78134b5b0c1690819ffbcd881956d189 features: csharp: additionalDependencies: 0.1.0 additionalProperties: 0.0.1 - constsAndDefaults: 0.0.2 - core: 3.15.14 + constsAndDefaults: 0.0.3 + core: 3.15.20 deprecations: 2.81.2 - examples: 2.81.6 + examples: 2.81.7 flattening: 2.81.3 - globalSecurity: 2.83.9 + globalSecurity: 2.83.11 globalSecurityCallbacks: 0.1.0 globalSecurityFlattening: 0.1.0 - globalServerURLs: 2.83.0 + globalServerURLs: 2.83.1 groups: 2.81.3 intellisenseMarkdownSupport: 0.1.0 methodArguments: 0.2.1 nameOverrides: 2.81.4 nullables: 0.1.1 + openEnums: 0.1.1 responseFormat: 0.0.4 - retries: 0.0.1 + retries: 0.0.2 sdkHooks: 0.3.0 unions: 1.1.2 trackedFiles: @@ -42,8 +44,8 @@ trackedFiles: pristine_git_object: c094dba670119a1a5414e11c713a4ea3218147cd NUGET.md: id: f4c8a442a6e5 - last_write_checksum: sha1:1a7a26c6c017d5eb28d74524814cef65b95a44d7 - pristine_git_object: 60c0688beb1a5176f196723ab4a0c8a2dabd9ed3 + last_write_checksum: sha1:ed0cdbe6924fe51085174d01be09659f19bdb7af + pristine_git_object: 76d8a9d6aaf65596346ef0ab9c4179e69d2f05f6 Novu.sln: id: 120cdb0a01ba last_write_checksum: sha1:1bdd1b2c71249da5460f212657844ce96cb1648b @@ -70,8 +72,8 @@ trackedFiles: pristine_git_object: c843f420aba36a5514649046b46d45863074522f docs/Models/Components/ActivityNotificationJobResponseDtoType.md: id: 0166d147c69f - last_write_checksum: sha1:bd037d511fdda0288d5ddadf29405289a45701ff - pristine_git_object: 47c10483a7a57b9440e7563c18c6c1317cb5db7d + last_write_checksum: sha1:bd1745e4770a799a39ea6a0f7cb78f32c612a175 + pristine_git_object: 53325b64c72ab7feb6163dd3316eaeb6898bb332 docs/Models/Components/ActivityNotificationResponseDto.md: id: eee05f5fe70f last_write_checksum: sha1:b8de9fa01b7a740db584ff02c12188fd7efb7e29 @@ -110,8 +112,8 @@ trackedFiles: pristine_git_object: 764108d9847453d495373b5c70f22c7b20225dc4 docs/Models/Components/ActorTypeEnum.md: id: 075268719fb8 - last_write_checksum: sha1:ca6c3a06f86027a75e85a00c53ee17e417a50087 - pristine_git_object: ad1d5f140b3b9b300230f05c141922bdb5e14382 + last_write_checksum: sha1:c3b52320c1f1b1f9d49fc91f6af66e2026efd9ad + pristine_git_object: f63f75e5a8cd83b541c464bcabfd50d4a6f76bb2 docs/Models/Components/All.md: id: bf7353d351e4 last_write_checksum: sha1:fe1d8ab1072e06c8025d8956acb59df194b4c3d0 @@ -130,16 +132,16 @@ trackedFiles: pristine_git_object: 505e798d388071a9edbb467d97b91df2f2c80a27 docs/Models/Components/BackoffUnit.md: id: c31c4cf2359a - last_write_checksum: sha1:fb55abd59f7f8cd52297acb1727c713316256714 - pristine_git_object: cf5fcc00f5b977aaef9dfb27d5238956c3ea155c + last_write_checksum: sha1:da4808f535b5213568d3d8dc96fe2a6ef04ef421 + pristine_git_object: da45b379115fb36dc4f3d64fe64c66d99dbd4f6d docs/Models/Components/BridgeConfigurationDto.md: id: 407440250f67 last_write_checksum: sha1:0ba2ca6b67ff3cd885bba5a3b07868a73faeaffa pristine_git_object: 7955a7045869771ab19cd5cb2be27dcc8b251341 docs/Models/Components/BuilderFieldTypeEnum.md: id: e60b73c38c98 - last_write_checksum: sha1:f132bf6d44c2e5059f0851cacc54e01a3fc2f45b - pristine_git_object: cbdae91af5d9a2aeb3999013d6966ef74a4eab2e + last_write_checksum: sha1:311ebada8086e8c4a4c4bc37433e4963a4276a95 + pristine_git_object: f696350bc0448bcc698d3a2007710de816eb86f7 docs/Models/Components/BulkCreateSubscriberResponseDto.md: id: d2d6d1733ead last_write_checksum: sha1:9dff53d62d1e70b7a36cbf609ddf2394f8ac3836 @@ -166,16 +168,16 @@ trackedFiles: pristine_git_object: 6f7d56057f0534c6844abaf44a29893009953c92 docs/Models/Components/ButtonTypeEnum.md: id: d586abf069a0 - last_write_checksum: sha1:c1cd95cac29e165788a3db7fbf24478cc9454269 - pristine_git_object: 6ccec9acb2422913be2f5a2c00c69657272fb862 + last_write_checksum: sha1:06b45200b03194210eccdecdf49a4f95cf735e19 + pristine_git_object: fa38947f80fdef3353b26d39ac2f70ecee1adf83 docs/Models/Components/Channel.md: id: 384cb353ac91 - last_write_checksum: sha1:92e2aaae8ee4fdf51fb7334f3598d1aefa4606b7 - pristine_git_object: db190256ad1f874b595527ae395f523b20d41146 + last_write_checksum: sha1:691160de7aa0f01a192e3d9138dc110ba52bd980 + pristine_git_object: 19f8fc786e256d3be098c7a4b7d67896a6209afb docs/Models/Components/ChannelCTATypeEnum.md: id: e3521d3e377e - last_write_checksum: sha1:eda3c607ab3cd5080e47ae2680437045bc8746f6 - pristine_git_object: 294f5d807ef79a5e5cb8e8959cdc568f9d7f9261 + last_write_checksum: sha1:7bb8641d23a257cf222a60f6ee2c646a6c23e806 + pristine_git_object: b680eb632eef2204a6a618718167716ce38f2cc0 docs/Models/Components/ChannelCredentials.md: id: 16890c080f59 last_write_checksum: sha1:314f2263bc2973cffdd8eaf213e5daf871b10e18 @@ -194,8 +196,8 @@ trackedFiles: pristine_git_object: d76eda2af509adb06eda2d723347c06929cd09ed docs/Models/Components/ChannelTypeEnum.md: id: 74d7b0e2cf4b - last_write_checksum: sha1:6f2ef3f2adac707659a34b403467f9adef88f8a5 - pristine_git_object: d4eeb7e82ffb2106602159c92d637f81cb962fee + last_write_checksum: sha1:f024e35a5f839bb753689009d13de48f63d1d680 + pristine_git_object: 1ef571d91847e4feee9c3ea9849912dc40f94871 docs/Models/Components/Channels.md: id: 0f42df075b2d last_write_checksum: sha1:8dfd47f4223dd15733ac76f1582e4cca3f4a1125 @@ -210,12 +212,16 @@ trackedFiles: pristine_git_object: 32d37e49ead3ebcb6f04a05658bbe93a5876159d docs/Models/Components/ChatOrPushProviderEnum.md: id: ffee92b15a1f - last_write_checksum: sha1:9302973d14fdc0f8ace1eb032bd243b7ec75fba8 - pristine_git_object: f7baaae29738c61d97d79daafc15088d8a78ae78 + last_write_checksum: sha1:e942de594baa451c640f3ffff75bbad9eaff2ffd + pristine_git_object: be4a2267312884bbbe18da3755b8065215f71c62 + docs/Models/Components/ChatRenderOutput.md: + id: 7dc219f3f8c5 + last_write_checksum: sha1:45d53b2fa682a9ee3d3b899079484af647ba1727 + pristine_git_object: a9fb5810ab74c90c1c322001af10abca90fb0ec2 docs/Models/Components/ChatStepResponseDto.md: id: bb6cc13ce634 - last_write_checksum: sha1:50ca036673fc3e224a73cb14f046950d6f9a2528 - pristine_git_object: e8ec1d75f33ea30f8ceffc0f265fba3b1aea652a + last_write_checksum: sha1:a3a31b530b8a8ef01c41acd7551ffeeaa02a210f + pristine_git_object: 87675ed18555d32b9a1ac99720067a2f30ad5759 docs/Models/Components/ChatStepResponseDtoControlValues.md: id: 22564c4f3183 last_write_checksum: sha1:dc2bc585c85ca89eccb7a1b8e6d58ddbff07702b @@ -250,8 +256,8 @@ trackedFiles: pristine_git_object: 7aecdb4490ef9978b9e9badb0224fbb44652e5af docs/Models/Components/ContentIssueEnum.md: id: 338d1919951e - last_write_checksum: sha1:3284eeb063e7467c85ea39ade79504754c6b1a9d - pristine_git_object: 54ecbcffe156b32afd6184ef55cb58f12286bb7c + last_write_checksum: sha1:70423c3b382097c8c95364a01c9f233644bd5368 + pristine_git_object: 6b18a89fb28030eb86168aa1a6d14f57cf1e274b docs/Models/Components/Context.md: id: 89bac66ecd0b last_write_checksum: sha1:a11602ec077d32f15322543b0b96962c064b6d71 @@ -262,8 +268,8 @@ trackedFiles: pristine_git_object: ec2c0aed46d5b219b352a282a106c68f49244a61 docs/Models/Components/ControlValues.md: id: 31cca04c4c9a - last_write_checksum: sha1:841c60853313dc519fc8294d840b90bed33b8615 - pristine_git_object: ecf1fba6dae8960f77d720f1b15292013c8d5975 + last_write_checksum: sha1:66de7150058fef401c4b60fb3f2f9d75f7462676 + pristine_git_object: 7c998325bccaa477e21d707498c792864bd7c9de docs/Models/Components/ControlVariables.md: id: 12a6d918c86f last_write_checksum: sha1:3add6f9f5465555bd98b4925afadea58796c6c98 @@ -292,14 +298,22 @@ trackedFiles: id: 9d554d68d861 last_write_checksum: sha1:8cf17f1b811252a4cdbce2ada45fb483ed7f0a32 pristine_git_object: 8118900993a96c09d469ed4b085eea8cacc2e891 + docs/Models/Components/CreateEnvironmentVariableRequestDto.md: + id: 830b72b33e54 + last_write_checksum: sha1:05db658e19867da1546214c02ed297e9fcc3f081 + pristine_git_object: c2218ea4b327b94258d4f5f48355687c12f3a216 + docs/Models/Components/CreateEnvironmentVariableRequestDtoType.md: + id: ed06c01e8f30 + last_write_checksum: sha1:695698bad9de7490a989bf28930e282beea0841d + pristine_git_object: 4c333956fcaa7aca09b2137e46bdb2f86e579d43 docs/Models/Components/CreateIntegrationRequestDto.md: id: a5690092a736 last_write_checksum: sha1:ac6400a1903c0343bff8eaea29993cb8f60fc84c pristine_git_object: 793c0f4919b506241900db7f1a7f227d736bb75c docs/Models/Components/CreateIntegrationRequestDtoChannel.md: id: 7cb186d3e649 - last_write_checksum: sha1:1770d6f250f5b0e437c0b7d20bcf811291fe6ab1 - pristine_git_object: c5bcfc10679d2b5603b2f0ccc49c5b9eaa70cb2c + last_write_checksum: sha1:75aefff48ce739f10bb8a47e0c43a621f2af2f7b + pristine_git_object: 8157f04c1de08be52bc362f256732ff7aee51bc6 docs/Models/Components/CreateLayoutDto.md: id: f333bc9cacf1 last_write_checksum: sha1:c540716217b21876f86ebababcf682dbee52a856 @@ -318,8 +332,8 @@ trackedFiles: pristine_git_object: c13bdda4b5c20e25904419486475a8e4f3161c4b docs/Models/Components/CreateMsTeamsChannelEndpointDtoType.md: id: f9ff4d7aad6d - last_write_checksum: sha1:82900acc00e9dcadc60919d2e4bc395a62350caa - pristine_git_object: aed22524ddb985d6c15124d5ef8a24ab9ac99ec4 + last_write_checksum: sha1:cadf5d399a0eaa629cca4212c269e2447b83d36f + pristine_git_object: e3f157ad0af9869d2ad436fe10faf8541496fd04 docs/Models/Components/CreateMsTeamsUserEndpointDto.md: id: 84626ddb60bd last_write_checksum: sha1:27debaa99b2224416aa9061fe05ba12931bfcc05 @@ -334,8 +348,8 @@ trackedFiles: pristine_git_object: 6e542df9feb9b0cbdf235a29f1452e69802c80f2 docs/Models/Components/CreateMsTeamsUserEndpointDtoType.md: id: 5d8d0220a885 - last_write_checksum: sha1:19ba3c368092bf78423babd5f44135211368301f - pristine_git_object: 870ac2d8b4ff215bee8de11c9db8cc0811f4b38a + last_write_checksum: sha1:87ed50bc5b1ede1128288ad80a8e2097f945bcd4 + pristine_git_object: c64cd038e87c23857b6bc3d915f11e91339179e2 docs/Models/Components/CreatePhoneEndpointDto.md: id: 34e0054e41cd last_write_checksum: sha1:af667c02eedf8ae13b0206a9dcdf29231785cb77 @@ -350,8 +364,8 @@ trackedFiles: pristine_git_object: 58b9d9605d5cb735a359ce205edade1adf8a86f2 docs/Models/Components/CreatePhoneEndpointDtoType.md: id: b44ae68724d2 - last_write_checksum: sha1:7063f80baaa304f36a94ef6b3393ff9bd9543916 - pristine_git_object: b5a6139c39c45adc76332182dbcb6803495008db + last_write_checksum: sha1:2f13e232c718a5bb19456c342125d688a42c73be + pristine_git_object: da032a2c7511089778d66054f908814f6302bf63 docs/Models/Components/CreateSlackChannelEndpointDto.md: id: 9960f1b91ed3 last_write_checksum: sha1:e8de857c91d3c6de40195a83631187789f876662 @@ -366,8 +380,8 @@ trackedFiles: pristine_git_object: f6838b7786661d49499daa3e123be93487b25eef docs/Models/Components/CreateSlackChannelEndpointDtoType.md: id: 5ecec3aae7de - last_write_checksum: sha1:e52579b56bc8624248fa672acc0499a40651d230 - pristine_git_object: 6b85b0293b38262f4bd4d4b001c9d5bd10d686e7 + last_write_checksum: sha1:aee09bea44f5df0a304991d18259418806d94d7d + pristine_git_object: 94ca107cb4f327c8b9cd4a4c0bcbbc6c8fd0cad3 docs/Models/Components/CreateSlackUserEndpointDto.md: id: ae67d2c3b1f4 last_write_checksum: sha1:11927b84b09b3c1c9b3918d71acb9539857792c7 @@ -382,8 +396,8 @@ trackedFiles: pristine_git_object: 142845b2198fafcfe078bbfe4cafafc7018164de docs/Models/Components/CreateSlackUserEndpointDtoType.md: id: b34b9e6cec82 - last_write_checksum: sha1:51f9c9e5e0145416e42ce15a95dca08c74f313b0 - pristine_git_object: 2ad3730cb71ead410c7d0b7e3f4bc7853e41f690 + last_write_checksum: sha1:3205aa81c5c8681555792c8cde335d7b46456665 + pristine_git_object: 6616f88b3a2f6257a87e0bbc6889fa94fc50900a docs/Models/Components/CreateSubscriberRequestDto.md: id: 366004e3231e last_write_checksum: sha1:ff372de354e8a15049eaaea24b36785499fd584e @@ -426,8 +440,8 @@ trackedFiles: pristine_git_object: 248ebbfd414148d5115d9a6a6418c0b64d0d864f docs/Models/Components/CreateWebhookEndpointDtoType.md: id: 6a9b62a7d5e6 - last_write_checksum: sha1:b5f4fdbbbd78cc1651702fc84e824488d4630582 - pristine_git_object: 41ab638ecb44410eea9f7db9b18eb9b7e8d33388 + last_write_checksum: sha1:15605803347028812809c80a7ae2ce5ae7a94fbb + pristine_git_object: d53ec8f88bb8e21f94be9a6cd94d0e62afb04a37 docs/Models/Components/CreateWorkflowDto.md: id: 18e9c352a599 last_write_checksum: sha1:66c9b08c7a68135e610bb349c6c105a6f61a7461 @@ -450,8 +464,8 @@ trackedFiles: pristine_git_object: bc4eac9d65bafc946cd2238327a53973e945c2e1 docs/Models/Components/CustomStepResponseDto.md: id: 36233232ba3f - last_write_checksum: sha1:74dc9b34532b78b532aa4897810912279bf5606d - pristine_git_object: 8aa061fc682081b6a43c0d5cee43ec2e8950f0cb + last_write_checksum: sha1:cf74e74de8b45bf4d6705fd925e25e7dd5b46026 + pristine_git_object: 575ad434ed1de3e34b152e3197a88c82376d64d2 docs/Models/Components/CustomStepResponseDtoControlValues.md: id: 7c32e5c080f3 last_write_checksum: sha1:b0b4416d4a32be025cb4a40a6bf10975e9a140db @@ -482,36 +496,36 @@ trackedFiles: pristine_git_object: 18b3e3c60343446593b0b2cd2c16c24b964fa486 docs/Models/Components/DelayRegularMetadataType.md: id: c2a8db19d43c - last_write_checksum: sha1:fac81bdd44d32d5c14b4048cb43d9e8b35554385 - pristine_git_object: a620c4774096909c09e5c690552a79701f2a54b0 + last_write_checksum: sha1:e75c879738f34cb00bdd4f0c005265190451b155 + pristine_git_object: 88803ab31bd24fdc3f5c79ebf2a8cb66d811e7f0 docs/Models/Components/DelayRegularMetadataUnit.md: id: f4d167511d8a - last_write_checksum: sha1:d19325f103f642f16e8159d7495d32dfff563fc1 - pristine_git_object: f6f7471e06c8a6831dc201cfd0047ea4b3e64947 + last_write_checksum: sha1:7a64db478a68f072134faf2d59fadc356b9ad67c + pristine_git_object: 9987c4c7a0eaba315a2cb614fb818da8b6a97bd8 docs/Models/Components/DelayScheduledMetadata.md: id: d8ae389629a3 last_write_checksum: sha1:5b859829743cf0d853c9def3ecc9345d3683962c pristine_git_object: e279ba0bd8c9fdae018ba73391c35c087f5ccc49 docs/Models/Components/DelayScheduledMetadataType.md: id: a7b462f2e511 - last_write_checksum: sha1:7327314cb7f7cac186781e48736792e6b1d6f829 - pristine_git_object: 26aa5b3bf3f24a32e3d51bc88c45544c5df50b7d + last_write_checksum: sha1:76445e3760dbdb750bea34fb6de75bab2c38acf9 + pristine_git_object: 99dc7664bd09f66109a68e996e3b7df9f0d5ec13 docs/Models/Components/DelayStepResponseDto.md: id: 993866463a1f - last_write_checksum: sha1:411fda944fc47ee1f29868b76c4acbfdd2a00a46 - pristine_git_object: 47351350f27b92a81bf2e3bea1808bd386362831 + last_write_checksum: sha1:2c7b1d7a01c54aa3e8a14a3ffb5250a15530f446 + pristine_git_object: 8caf912430bec4e2d5ab9da415cf304539f29b40 docs/Models/Components/DelayStepResponseDtoControlValues.md: id: ac4bf1b7d0bc last_write_checksum: sha1:5b02bccb32310e258196b25e0e7df13182b65467 pristine_git_object: e70720698f3c5dc501dc34759e4dccf07339449c docs/Models/Components/DelayStepResponseDtoType.md: id: bf49c5365430 - last_write_checksum: sha1:1c1916eb0a01f99ccfdd797f8731b71bb689d0bd - pristine_git_object: 9ddd5f1a4dee33b6e686bd0081b36f0c87916478 + last_write_checksum: sha1:445793233b86a5ddd1efbbf3ec65d2d8d6cad9eb + pristine_git_object: 77d1137c97e17dd9723edb9b8f2894a7a3e8c0b0 docs/Models/Components/DelayStepResponseDtoUnit.md: id: 9a62e49dc574 - last_write_checksum: sha1:f233b205d8906675f7d9c49132fbca479db06390 - pristine_git_object: 8cb3af0244d2fcdda38b7152f3a72e3922c5bd41 + last_write_checksum: sha1:e2e07e33c9dd039a6028d2fa298f772315bfbdc6 + pristine_git_object: 22bd75fe8d4561a763f8c5a455207837228b8372 docs/Models/Components/DelayStepUpsertDto.md: id: 7c58e6828243 last_write_checksum: sha1:1cd90a757052b8e63aaf4a6cb201ca76a127b3d6 @@ -526,8 +540,8 @@ trackedFiles: pristine_git_object: bf29107f27996ffb24d203055bb8d7710f8668ec docs/Models/Components/DeleteMessageResponseDtoStatus.md: id: 2876a1f601e1 - last_write_checksum: sha1:cbc7f7ab540e6aae990a37728c944763e467d345 - pristine_git_object: 9ed9e3242b51c14d5541f0c195b20bf8ab1938b2 + last_write_checksum: sha1:68545758d074645749ee3404164303c233498976 + pristine_git_object: e9b9200cf7d78d0d67c4c2ca6fbb84ef011e575b docs/Models/Components/DeleteTopicResponseDto.md: id: c22aab1548fc last_write_checksum: sha1:36977b117f2752164c0a3a8e646bc7259c779da2 @@ -548,18 +562,42 @@ trackedFiles: id: 1e67148b9bb4 last_write_checksum: sha1:8067eb6c3b8bc69de7a1238045cf38dfacb08a7c pristine_git_object: e6f1addf4c66141a9b14f29314aaf9cd7f65d492 + docs/Models/Components/DependencyReasonEnum.md: + id: c566c5b8b8ce + last_write_checksum: sha1:c7e81d3b52f9ddee6dd48ca28e151f77f6858031 + pristine_git_object: e85b3a1fbcb213b29a093e7b6ef6a6a9b6d5665d + docs/Models/Components/DiffActionEnum.md: + id: 1b21bc44c7df + last_write_checksum: sha1:a354fbbf47f1b73eb0ed6da499cef4d866cb1a82 + pristine_git_object: ab796dfa1055b4314e31b118d9db1bb15ef425e9 + docs/Models/Components/DiffEnvironmentRequestDto.md: + id: 922aac62de1c + last_write_checksum: sha1:f9e50944aaaa5b467b701859728a389e11558ffe + pristine_git_object: f41a810ffac17c388950212bf4c822ecc4d43bfe + docs/Models/Components/DiffEnvironmentResponseDto.md: + id: b3bbd1a23670 + last_write_checksum: sha1:c5f331587423f5957ca69c5105834a86af2f5bc6 + pristine_git_object: 4cab7bad09603f62c47f742aae1451f5ed19027a + docs/Models/Components/DiffSummaryDto.md: + id: 4436d7ffa641 + last_write_checksum: sha1:d0e156624bb1be023a12ea953bc4cfacf46a7141 + pristine_git_object: 0c92780a5d62abe8243674c4cdddda28b8464ca6 + docs/Models/Components/Diffs.md: + id: 773ecb2c7940 + last_write_checksum: sha1:e394359d33ff101e9de449e148f253d3908caa4e + pristine_git_object: 6f3a47f68dec5b3cedaba7ad33b5d3fd0eb7fa13 docs/Models/Components/DigestControlDto.md: id: d2d32db4fe0b last_write_checksum: sha1:1bef0e5a8fdbd30016d72935be68c83129eacefa pristine_git_object: 2be06a2926070dee7bb1428d0f2c973ae6dbc2da docs/Models/Components/DigestControlDtoType.md: id: c7c901e448f5 - last_write_checksum: sha1:e2e8be6f05c569e327420cde3ce5b35e16772f53 - pristine_git_object: 62e6c4804d52b10b5d8dc20e801ea49d3ad18678 + last_write_checksum: sha1:d2f528ded535b28f128142971488cba9e2faae99 + pristine_git_object: c12926dd8d373863c593f3003603e2f125d9d89b docs/Models/Components/DigestControlDtoUnit.md: id: a262f41ce0dc - last_write_checksum: sha1:d18462874651e42548747cd5206078f58538be2b - pristine_git_object: 70af6d315da16ca50910473572e029f388c83b00 + last_write_checksum: sha1:9158176327d960366894ea1d8fca989a9a7bf9e9 + pristine_git_object: 68d7679114c392ec3083521c44b8abc1458a0d19 docs/Models/Components/DigestControlsMetadataResponseDto.md: id: f758e1f8309b last_write_checksum: sha1:a999aaac558fc6b2addaa46198676209ca8b16d0 @@ -570,36 +608,40 @@ trackedFiles: pristine_git_object: d483e788b3266f087b1b3b56f7200d09223fb06d docs/Models/Components/DigestMetadataDtoUnit.md: id: c6f28bfcd788 - last_write_checksum: sha1:406b3507d371b156713dacaa1ca54e76136cf9b1 - pristine_git_object: e2c4bd7b45e0c4735a9e1d2d5a9bfb12f88d7e97 + last_write_checksum: sha1:ac99bcb0dd95b9e43ec42b42ea1cd02847ff0f01 + pristine_git_object: 8a947f4b458b8a8e40fc55fa7d37af1fe4ac2f9f docs/Models/Components/DigestRegularMetadata.md: id: dd84901e32a4 last_write_checksum: sha1:7b69dd9b8885ab97bfb040c9995cba5f45579e7b pristine_git_object: f868cd93de49db34e708b5915541a0728c505c9d docs/Models/Components/DigestRegularMetadataType.md: id: fa0297558c5f - last_write_checksum: sha1:ef265634c03d3f2439f00e58787d5e2c5a5991ef - pristine_git_object: 41f918a65c4a6ba526491e55e21f4db1e39f9ec4 + last_write_checksum: sha1:e7c029076dffa5a74397994a2433dbd4912719f1 + pristine_git_object: f5256f3594793846468c78d696413f573790edd2 docs/Models/Components/DigestRegularMetadataUnit.md: id: 5e4981d8b1ae - last_write_checksum: sha1:d7c59bdd0308720c54fdbbc48d3199005ec4457c - pristine_git_object: 63b32cdd0a6ca0a89a0266f35e3e822ebd6e4557 + last_write_checksum: sha1:07af861462cd5a95877307dd68ec256cdc9aaf68 + pristine_git_object: 276846b38f08d5608061122dbf21a68faeb5edd2 + docs/Models/Components/DigestRegularOutput.md: + id: 7879b24a258d + last_write_checksum: sha1:9456716d58cdab8a7ce3f09be73aee92206bcd9a + pristine_git_object: 97cd3724d1ef148d9a20d464146dafa754843bb9 docs/Models/Components/DigestStepResponseDto.md: id: f3c59cc31809 - last_write_checksum: sha1:3946e09c1396e70ad3e8153d6580491b49f5d7d4 - pristine_git_object: d0bd8f1fea1447b1313d6be6a82b27acd628fff0 + last_write_checksum: sha1:a6b8cd71d2b9973811c9a6932c5ae7d41b1312d2 + pristine_git_object: c895638c7a0c65b5f8b75effbb7977a3d781237a docs/Models/Components/DigestStepResponseDtoControlValues.md: id: 7af55e6f2558 last_write_checksum: sha1:2afa522865ab76429891ad9f83418410f8f0158b pristine_git_object: 3f6f1d374cda0ac4c3563de3d3ba02729e3aed85 docs/Models/Components/DigestStepResponseDtoType.md: id: f33470fc4148 - last_write_checksum: sha1:b7c6f9c4b072032f3a9dd9b9bd07784b335702cd - pristine_git_object: fc1bf8c04dfda0d5b34120a4c847364f23379fb2 + last_write_checksum: sha1:4737520e93c62871b8e668b0998b2d323630b802 + pristine_git_object: c2490fdb8b2ec79041ac437b6d867b124c28d60c docs/Models/Components/DigestStepResponseDtoUnit.md: id: cc12537c389c - last_write_checksum: sha1:e0c66ef40a035ac768fc0cc6a18c2302de11c9c8 - pristine_git_object: 97d4bc2b61800201dc9c6febcc1b40c6342b816c + last_write_checksum: sha1:7ecded99673a4667bc6503bd5e33709d2b0980a5 + pristine_git_object: d95a3649f093837da133f7b37f5442f398621f2d docs/Models/Components/DigestStepUpsertDto.md: id: dc41af3f05fb last_write_checksum: sha1:1759393100502c7117251b8ea195472e88eda34a @@ -614,40 +656,44 @@ trackedFiles: pristine_git_object: f2ffdfb1546f3f56c42863ead5ba8131e318e25e docs/Models/Components/DigestTimedConfigDtoWeekDays.md: id: f72ec961958d - last_write_checksum: sha1:af9bf8c3a71ab62d1331f2136e599d8d6cee89ef - pristine_git_object: 8cc2fc62aa1db3152d46bc0b20179e45d348d591 + last_write_checksum: sha1:ac2b5a372b71c2d5839771153312645f07375230 + pristine_git_object: bb1bed08f2602b9198c2b6b65438426c7b051c8b docs/Models/Components/DigestTimedMetadata.md: id: 00c1af368585 last_write_checksum: sha1:cd54999dca73aa2e2187cf55c2bfa5d3a8b6195a pristine_git_object: e9279d14c61174f7031392f5b34e8f5ea6c525f8 docs/Models/Components/DigestTimedMetadataType.md: id: 4ee07d040999 - last_write_checksum: sha1:5d054487e134eec96bb99dde9fb1fb3cd5c0b431 - pristine_git_object: cf2b1a411ad984240da31a629c517c3f38f61953 + last_write_checksum: sha1:82ae41fe8ab751f49f7568594365b5a7dded9b44 + pristine_git_object: 533b1d0039643ac3f9ee3cd49892d86b4e57954d docs/Models/Components/DigestTimedMetadataUnit.md: id: 1afb9cd7f61a - last_write_checksum: sha1:96b26429bc4a5de56995da982ea3487d1c4572d3 - pristine_git_object: 359ed736474ab991b7ea2c592981259331d81f45 + last_write_checksum: sha1:50291dd3af6e641a09479f4c252e9c03c638ec30 + pristine_git_object: baf0b4efac93d355db7a2b83e0c319aa4cbc7ecf docs/Models/Components/DigestTypeEnum.md: id: cfa79d52272e - last_write_checksum: sha1:ffde7ca381fb5d361e6e4bd93b8f006fdded8345 - pristine_git_object: a3c59b7ba8cec12eb7359cf3ddb62027356dd9da + last_write_checksum: sha1:f05d27147c2f18a0505249c72c6cb9ecedfdd1c8 + pristine_git_object: 64dd2471209ebd6ec286295fe3aa66a2eafceef4 docs/Models/Components/DigestUnitEnum.md: id: db280fd90947 - last_write_checksum: sha1:92cf87044f7849e0fb7da80ada6d67d7a5aa4722 - pristine_git_object: b21c857911087157f595f03d37239f1a4589ebc9 + last_write_checksum: sha1:50f7c6a5c98f3e13c38b8d89cd3041f98e92caeb + pristine_git_object: ee4ccd91ca45dc347dd28850293b9fe9b3c60dbe docs/Models/Components/DirectionEnum.md: id: 5e59a084b990 - last_write_checksum: sha1:cad0a8a571571dcbf0f648010452907cd375479a - pristine_git_object: e3baa2eab272b44b5a6c26c573f683409d30e1b5 + last_write_checksum: sha1:905bba871d122c4b8c409e352c6de2151398e6a0 + pristine_git_object: c0b1669971196e165d15a8fc6942c1690218293b docs/Models/Components/DuplicateLayoutDto.md: id: b2e1437e93b5 last_write_checksum: sha1:88fa8f54c6c6393b6afa0b1432bd6120d25ebb84 pristine_git_object: 7c674b084a7271e8a5fa58bed5e2c1a4eef2c915 docs/Models/Components/EditorType.md: id: 4a4926244146 - last_write_checksum: sha1:ce72f0ad5e526a58bf996f3cfb44d2adc580d364 - pristine_git_object: 9b1e20de247539e73d5ce836ad8cd495072a4d76 + last_write_checksum: sha1:12dfb5c4b7ec1abda0e9d8b9c63981bcfaaf9f70 + pristine_git_object: c6cb819753dbd55ba9ade4dbc91874aa30c14410 + docs/Models/Components/Eight.md: + id: b8fe85b30138 + last_write_checksum: sha1:39130678cdc3b26ccdde2b3f78ab4eb6b8f62718 + pristine_git_object: 9e28ffbf1af81ae4bd81670387d22f88a294372f docs/Models/Components/EmailBlock.md: id: 3af09e0eba45 last_write_checksum: sha1:5b2e7a446da6a18b7861975c7a92f5aaa317ee36 @@ -658,8 +704,8 @@ trackedFiles: pristine_git_object: cc3b3b3a33545f201597257464eb2ee67445137a docs/Models/Components/EmailBlockTypeEnum.md: id: a203e5060862 - last_write_checksum: sha1:088a3e226915efd03c9a5d1a9052e0587f8b1194 - pristine_git_object: afef49b5d579645a76167f9904708978674c06a4 + last_write_checksum: sha1:5cef6d8576361fc71759243a96c8c07833fe18f5 + pristine_git_object: 64fda0073c4373885099422e39fa8e12de5c58c6 docs/Models/Components/EmailChannelOverrides.md: id: addb87774fbd last_write_checksum: sha1:72e1bdfeb75174d7cd88c39c6626ca2221b9554f @@ -670,8 +716,8 @@ trackedFiles: pristine_git_object: b9d8395d3bddeb36d3e25a45f127142fc3c7bfa5 docs/Models/Components/EmailControlDtoEditorType.md: id: f5efb632722f - last_write_checksum: sha1:7a22e73582f4f84d3851f7d96f7174b033ba569b - pristine_git_object: c4de3665a5f552a0c7313307e7a52c1559fe71db + last_write_checksum: sha1:fb21815cc92ab6e463998b4da33069473673443d + pristine_git_object: 6d4840fea485c53eb14c4304611764ff91fda336 docs/Models/Components/EmailControlsDto.md: id: c9856d039752 last_write_checksum: sha1:c548c9525a2ca7cda395be2d0fb73efa7c353179 @@ -684,18 +730,22 @@ trackedFiles: id: 749e627baa4c last_write_checksum: sha1:1bbac0c65cd7e9d1ff430a2fefed073c87b09fe6 pristine_git_object: 540f8d779e4d9d5a137524df422565771405f6bc + docs/Models/Components/EmailRenderOutput.md: + id: 763ceba48c24 + last_write_checksum: sha1:1104403f9db3e00d586504a00f888fc8ccc7b534 + pristine_git_object: fd3d3b145de1802da3dc311d78b057eae2210444 docs/Models/Components/EmailStepResponseDto.md: id: dc7ba95d81cb - last_write_checksum: sha1:5d29b536ddabd20dcba0e9aaa259d6e45994bb10 - pristine_git_object: 3317f7210ea516c919d136988688e49c1ab4c01f + last_write_checksum: sha1:27c374475db7db5b75acd1b3af00fd260886592d + pristine_git_object: 9e5579e8d5590001dd7b416f6a3ce150f144e7c5 docs/Models/Components/EmailStepResponseDtoControlValues.md: id: abc53779b465 last_write_checksum: sha1:5d5945b59392c8149116b75694d5e1dc4e79efbf pristine_git_object: 7bce77e8ad40c20369c11dbcdf20b08d487a5d9f docs/Models/Components/EmailStepResponseDtoEditorType.md: id: 356cec726ab0 - last_write_checksum: sha1:754d8a1e5edd2ebd93e8dd4c1857c49b27847126 - pristine_git_object: f77e9b7564a0137215af07b85c121b61dbd17610 + last_write_checksum: sha1:9fd9ff54cabf330b5314dfdba3d407bdefa32624 + pristine_git_object: e346b958e6b9f9b2b16978855074b9f4916a578e docs/Models/Components/EmailStepUpsertDto.md: id: cc326c75bcd6 last_write_checksum: sha1:aa1fe38849aa25310bf18e50fd9d693add7af7db @@ -708,30 +758,58 @@ trackedFiles: id: 80b730ab8248 last_write_checksum: sha1:56b021ab0a0f2c62a3fafc8f0c016f09bccd3c5f pristine_git_object: 1841ae8e1b0fe8b5930c0c3ca11a5aa514b5fb35 + docs/Models/Components/EnvironmentDiffSummaryDto.md: + id: 30728f4b5a53 + last_write_checksum: sha1:e71c3dfe1c1cf38e5094f9f20be5a2d6ff0652b7 + pristine_git_object: 09e590f38c6db4dd31fabdfa5ae1906f08b367be docs/Models/Components/EnvironmentResponseDto.md: id: eb9a6d5d891a last_write_checksum: sha1:bfe23a8bba78e0c8f31907956166b24418f89610 pristine_git_object: 87bcdad9f12ac09bbd79eb2980ed8140f56fe7f6 docs/Models/Components/EnvironmentResponseDtoType.md: id: 07a2ec352bb1 - last_write_checksum: sha1:a8c210798c40aaac2fdb449361cddda1a618eece - pristine_git_object: 3bc89bf8a094eded091621f7d4afeb1222b5e208 + last_write_checksum: sha1:db1d01e72ef89e67ad853d0cf595d3e5a72312d7 + pristine_git_object: 3ad3fd36eb795bd31e63bb16ed894f39323c8a61 + docs/Models/Components/EnvironmentVariableResponseDto.md: + id: 3ea841383470 + last_write_checksum: sha1:1e07e8bc922c563b627264c18f23cf89012cb1d7 + pristine_git_object: b7fe920659d206d6dc7678788882db71906e8d23 + docs/Models/Components/EnvironmentVariableResponseDtoType.md: + id: 2cf63b99929e + last_write_checksum: sha1:ace63a74a33bf5bda7494b6c94591c4e1e133ddf + pristine_git_object: 188134f3f57eac53a1f54d087e083d5d46989f17 + docs/Models/Components/EnvironmentVariableValueDto.md: + id: d32ce5029c37 + last_write_checksum: sha1:9d73155ed82bee9858d1f8278fd944322f51ef80 + pristine_git_object: 92ad0a02810213d4e25832fb4bf1bc6ed32450f1 + docs/Models/Components/EnvironmentVariableValueResponseDto.md: + id: 32f64bedcf94 + last_write_checksum: sha1:5c6cc5f6da1a5a5b5ea8540be52ec8aa8f19f382 + pristine_git_object: 1e4f8b5a0d8dbb194c5bc39f1a0fbb5aa7d7639e + docs/Models/Components/EnvironmentVariableWorkflowInfoDto.md: + id: bafed59b9ee6 + last_write_checksum: sha1:2240d33dd73b770e404e9f0bda4969340e5a5d69 + pristine_git_object: 463cad4d7a93a5bd0155d5db2822870d080c8dff docs/Models/Components/EventBody.md: id: 5ae3ee55bd45 last_write_checksum: sha1:9dfb4c67c10af68c6711393ea61bb162f25407e8 pristine_git_object: b6dc452396533c57a9e3c1e5dbea927fdb6f1403 docs/Models/Components/ExecutionDetailsSourceEnum.md: id: 986a9e79e402 - last_write_checksum: sha1:e0c624ba462906600aa15782581bd086f19b0d6d - pristine_git_object: 93ecc87c67d3136ed3f2431d13b56700888e1a93 + last_write_checksum: sha1:e296b7a7eb3df6ccb84b8a9c0258af9d2c21540c + pristine_git_object: a8898d01ec6a07e3a6fb807d831cd9b4483f7f3d docs/Models/Components/ExecutionDetailsStatusEnum.md: id: 4775b0599d30 - last_write_checksum: sha1:fdc9161d2909f720566b51dc51be049d2a44e2ee - pristine_git_object: 314b01484092511a9886b8a5f4b18389c0bef02a + last_write_checksum: sha1:4729a9e652f9787d17e9ebe84eaee369665863ce + pristine_git_object: 23790a7d062fe7b6c4f24aa1c841c89b4264ca28 docs/Models/Components/FailedOperationDto.md: id: dfc986ae3d11 last_write_checksum: sha1:b425f9784be0446ac0257ec5c8eac1a6b804eb37 pristine_git_object: bb9d68945fb0970f89fae07e788b4958ddb1d5b9 + docs/Models/Components/FailedWorkflowDto.md: + id: a21d618f6ee5 + last_write_checksum: sha1:b743f4042f60a9bd7e5c8e0c1a4c355b4d95666d + pristine_git_object: 154e582dc27d0f86a4368cc2ba929a33b39e1f6f docs/Models/Components/FeedIdentifier.md: id: 080a6e6a05dd last_write_checksum: sha1:180ab6fa157bef3444dc026047feca60238d4b02 @@ -744,6 +822,10 @@ trackedFiles: id: 1fe5d01c5ca2 last_write_checksum: sha1:3287e39e18c158211343930823e197ec250d339d pristine_git_object: 4ae930ade0120e8c7841b25eb7e7c794a93ec5a0 + docs/Models/Components/Filter.md: + id: 04f75baed988 + last_write_checksum: sha1:c38c66ee7c7541384a33487fd9d7d892ccf6056b + pristine_git_object: c80e8255f825dd037ffe86b88b88acb07654f25c docs/Models/Components/Five.md: id: fd70d7d52d84 last_write_checksum: sha1:572eec3b9cbc7595996fe571820639c82956cc4f @@ -776,6 +858,50 @@ trackedFiles: id: 5e27398faf1f last_write_checksum: sha1:a0d75e7564b75e04944c5054ef7bb6abb5eee132 pristine_git_object: cd463aa7dc9043c6f58640580ce406e434a85586 + docs/Models/Components/GeneratePreviewRequestDto.md: + id: 68b35d53d591 + last_write_checksum: sha1:a42d24599142605ef4de92dd283ef9cc0ff5239f + pristine_git_object: 629a774888b17bfcdda6ed44b5d815b3b7431d38 + docs/Models/Components/GeneratePreviewResponseDto.md: + id: c9ae90d55256 + last_write_checksum: sha1:be86dca1bb1304a564b0ee7f9b789a2b29b7dbd9 + pristine_git_object: 06a0ed56819b734f46c78b29194ce70666376cb3 + docs/Models/Components/GeneratePreviewResponseDtoResult.md: + id: fe53d4a5fdf2 + last_write_checksum: sha1:e5b285047a76e5c65d20f1065fbee6784ef68059 + pristine_git_object: 27dd7a75daebdda81f89e346dd687801c469fa6b + docs/Models/Components/GeneratePreviewResponseDtoResult3Type.md: + id: 8b8efb0d62a5 + last_write_checksum: sha1:8a88d44978f040640d60b8ffda7abcb18a3b823d + pristine_git_object: ba1310ecdac2ce6def8be1c34140e53c93ecaec0 + docs/Models/Components/GeneratePreviewResponseDtoResult4Type.md: + id: 71926e46ee3b + last_write_checksum: sha1:0ca44c4086c3722547e31a28c8ac1c92317307a2 + pristine_git_object: 253f6e9bf5bb2e565a5d30a64dda25b78c5d8f2c + docs/Models/Components/GeneratePreviewResponseDtoResult5Type.md: + id: 9494dadf34de + last_write_checksum: sha1:41b03513b38595a79189c861507eabb6a2c9242f + pristine_git_object: 9eec2ce00303a65fd80bb856057912f37a171c0e + docs/Models/Components/GeneratePreviewResponseDtoResult6Type.md: + id: e8d32d001637 + last_write_checksum: sha1:b96cf844609e46f98feb948de040cc0453c2a0aa + pristine_git_object: 51d80e351a2834e0c311e8b61fc803f2b9d1c9d4 + docs/Models/Components/GeneratePreviewResponseDtoResult7Type.md: + id: 3da9d1bda4b4 + last_write_checksum: sha1:1c348d9acd9b3dcd6dc62466f1fd5b182d52de8f + pristine_git_object: 954dc45a156de93bd7b98e48e717e57ae806233b + docs/Models/Components/GeneratePreviewResponseDtoResult8Type.md: + id: a7d29fa44f69 + last_write_checksum: sha1:6a4f8af2384d7f8696b635a562bf8c086b7ed675 + pristine_git_object: a03945d21fb2bd34e9f5c83fea901d58e5874ef8 + docs/Models/Components/GeneratePreviewResponseDtoResult9Type.md: + id: 7ed012b37bab + last_write_checksum: sha1:730112be16a198e41066b46bbc05ec28af20db5b + pristine_git_object: 08bb524f0b5805b65bd74160ead81ed802fa7197 + docs/Models/Components/GeneratePreviewResponseDtoResultType.md: + id: 7be57d0115fe + last_write_checksum: sha1:b992e5bafa5ccff84138f2f43e7aa64effb45ece + pristine_git_object: f79ab9f13b659244c921eb5ba9a75b77ad768d83 docs/Models/Components/GetChannelConnectionResponseDto.md: id: 7993c9a91f35 last_write_checksum: sha1:d046cca37a57cc321275214c2a7ace026eb8149f @@ -786,16 +912,16 @@ trackedFiles: pristine_git_object: c419545d4e54525a7a94ec882c436e43bd3fe8b8 docs/Models/Components/GetChannelEndpointResponseDtoChannel.md: id: 01866a6bafc4 - last_write_checksum: sha1:bfaf8b370da9000245ee164cc31912fc43c4d383 - pristine_git_object: 21d083886326a2ea6b8c823f03b66c792813d14e + last_write_checksum: sha1:34634075b780766180a454c21834a4b7c411b25f + pristine_git_object: e2f563f87552c79decb46646fee302db75bd39a0 docs/Models/Components/GetChannelEndpointResponseDtoProviderId.md: id: 9e7e0df6a923 - last_write_checksum: sha1:3aca0ae63daa5081f635deb9c8f7214d7f12ed75 - pristine_git_object: ea4ec6a44d6e730ca1b65e19781eb13a72abf5ae + last_write_checksum: sha1:7ef414a2df0c6c26d557976e80ae8e7c7fa70107 + pristine_git_object: 2f9c5a0e8ee66d1f24b7fef325d112cd6cccdecf docs/Models/Components/GetChannelEndpointResponseDtoType.md: id: f21a3f04279c - last_write_checksum: sha1:275fd34ec599875488280bdb98a6f563d08bb7fb - pristine_git_object: dd580f6f9f36872ad28e29667ef294b89d233f43 + last_write_checksum: sha1:2748f37e48729e759f193343c925be352ad3373d + pristine_git_object: 23bdd50de3a5c3fc6771de2340b479a153a3fb4f docs/Models/Components/GetContextResponseDto.md: id: be12ed40c9b6 last_write_checksum: sha1:e9470fa3584b749228312aeadba1b26b8aeed6e2 @@ -804,6 +930,10 @@ trackedFiles: id: ca335e8bf20c last_write_checksum: sha1:ba4b6107f472b9e8b464c7bf179b1289c123f2a7 pristine_git_object: fccc30a0e18f93adb126fa42f70edebe5026bc9f + docs/Models/Components/GetEnvironmentVariableUsageResponseDto.md: + id: 096c46e3d74f + last_write_checksum: sha1:3bd1130844db15a846ae546e07edbbb19541dad4 + pristine_git_object: d4f4a30acc7c8a81be30a02b19699b8c7caf6425 docs/Models/Components/GetLayoutUsageResponseDto.md: id: 1161e68ed417 last_write_checksum: sha1:ff21545251394a2c9047b8ceef590384bd662d8d @@ -820,6 +950,14 @@ trackedFiles: id: 848f9cec5e49 last_write_checksum: sha1:4881be0ef21bde87049faf0ca1498e0836cbd2a3 pristine_git_object: 52319b4e70b22097b94f7e41328225eb8d01bddf + docs/Models/Components/GetSubscriberNotificationsCountResponseDto.md: + id: 234a0919e5cd + last_write_checksum: sha1:d571a922a02884d9ba9ebc5f58d8bcee341fe8c6 + pristine_git_object: 28e8bfd8cdeb64efe19550a3b38f537a42bc92c4 + docs/Models/Components/GetSubscriberNotificationsResponseDto.md: + id: 16e72c3d811e + last_write_checksum: sha1:57ca13e2b9e2074eac1f669c7afbf6816a12532b + pristine_git_object: 54dd90d267d7a1c977da1b01e598629a50b97cda docs/Models/Components/GetSubscriberPreferencesDto.md: id: 6a459c2202fd last_write_checksum: sha1:50380ba9501df28fca3071dd8320b3b4b4b5fa9e @@ -836,6 +974,38 @@ trackedFiles: id: 05de2fd15279 last_write_checksum: sha1:08fe4d295519e310847d7500b27fd60eb5124293 pristine_git_object: e01c47a3aad01cce33962b089a2a72da72c468df + docs/Models/Components/HttpMethodEnum.md: + id: 20c34115e8d3 + last_write_checksum: sha1:e67c76ad1c275cbc7bc8dadfd968a5e08253aa83 + pristine_git_object: 61ab0b6e8bcdaa1261b9e79d8fd937b667a91a8e + docs/Models/Components/HttpRequestControlDto.md: + id: 29d1e4e492dd + last_write_checksum: sha1:0c2c6ab63f5edb5f391b2b20167f2574c58f6341 + pristine_git_object: f286735ee2fe91ca29fbdcd5cd8b5fa75c48bc1e + docs/Models/Components/HttpRequestControlsMetadataResponseDto.md: + id: eaf5c34b7e14 + last_write_checksum: sha1:56936d7372bc03bb83d9e318404fc97af7a0fc12 + pristine_git_object: 9eedcdc1b9ccddb91e67ff3ad7f1387171805996 + docs/Models/Components/HttpRequestKeyValuePairDto.md: + id: 944487e28196 + last_write_checksum: sha1:62e4b43b30430bd1518270a043ad286432d13f29 + pristine_git_object: ede7f26e82e642d2e4d4ec6e4e5f85d46ecdf7ff + docs/Models/Components/HttpRequestStepResponseDto.md: + id: 4a2616b4cd38 + last_write_checksum: sha1:c1b7b16b7963f627352cace6ec5f21693aef841b + pristine_git_object: 340e82e57319da92b098ad5602d23b21fd710150 + docs/Models/Components/HttpRequestStepResponseDtoControlValues.md: + id: a71d4f1b3a88 + last_write_checksum: sha1:cd2272c1207346bc180d8ae879be0061c6fbc92b + pristine_git_object: 5a1687737f9e112243f4f19450da9ae42d3e33c9 + docs/Models/Components/HttpRequestStepUpsertDto.md: + id: ee8178b699fc + last_write_checksum: sha1:2fd1ac4c9f06600ff78d13cc0564fb569082c4cc + pristine_git_object: cc5fd855b42ed78e0b99cb40f49bc767b0659229 + docs/Models/Components/HttpRequestStepUpsertDtoControlValues.md: + id: 46ae0afd07f9 + last_write_checksum: sha1:54b2b1140e190a54cca803c1145984ce9accd6bb + pristine_git_object: e31705a16c3c02a8efe240a2c72409553718277e docs/Models/Components/ImportMasterJsonRequestDto.md: id: e2ed3c722f02 last_write_checksum: sha1:6d104b97e7100273092676dc866f7ec36417b141 @@ -852,10 +1022,14 @@ trackedFiles: id: 4623358e0fa3 last_write_checksum: sha1:f5fac67ed94244fefd9512955426fb33e336d7ad pristine_git_object: 6ec2e5d4c691de2a3834cb5e8effde06a5d1d0a1 + docs/Models/Components/InAppRenderOutput.md: + id: 82d69d350efa + last_write_checksum: sha1:468bb6ae8acae6cba5894747ef6c3aa3755ed23c + pristine_git_object: 90b6ff494974bc1c362345b3395a42fcafc0bfb4 docs/Models/Components/InAppStepResponseDto.md: id: 102a0b1fafe8 - last_write_checksum: sha1:16d795d1ab63f6c014cfebe5e215f57d76512405 - pristine_git_object: b307f27b5fed55f67a6d0b1bf623dd89d3077ee3 + last_write_checksum: sha1:29c0316e19b3a40d6486075f4f8631c5698667a5 + pristine_git_object: e01d5da5202e58189db3533b142854e6b45cab10 docs/Models/Components/InAppStepResponseDtoControlValues.md: id: 55bfb4bb0949 last_write_checksum: sha1:5cd50bec8657145dcaef3927281c2b4225469d51 @@ -872,26 +1046,34 @@ trackedFiles: id: 59ddccbcc58d last_write_checksum: sha1:2961cbfd2c445f2b299bac77609521527509407b pristine_git_object: 2345a9c2dbe04e7af78dc204e0bc90bde15b77c2 + docs/Models/Components/InboxActionDto.md: + id: 1db094b76e65 + last_write_checksum: sha1:fd8b395ea322860b9ece9068dd1a7f3d1488d4a2 + pristine_git_object: 2f6df56e23a7d2bee4100db21b913bb1445261ba + docs/Models/Components/InboxNotificationDto.md: + id: a7438a901884 + last_write_checksum: sha1:e7af1659f0e3e265493510d4fa8f67d8c83002dc + pristine_git_object: 67b490ab32eb6de7404ca2f26463b68a05ad2328 + docs/Models/Components/InboxSubscriberResponseDto.md: + id: b871d4f95ab1 + last_write_checksum: sha1:40361d083577f365a3a17dd4d22a5ddb79b073e6 + pristine_git_object: 527e60acc7bb8156a39476e6714354253b22a88e docs/Models/Components/Integration.md: id: 4ae77c8ad6d4 last_write_checksum: sha1:1794e7bfe152e1f3548974f2dc1fef69397f815b pristine_git_object: 3dccca16e25bdfcaac6618deabb66137526561c8 docs/Models/Components/IntegrationIssueEnum.md: id: 2ded60664d09 - last_write_checksum: sha1:06efb92fcc8b756d60aecf132a9bc77f5946be75 - pristine_git_object: 1292c4adfb0d64212124445bdbbea07fc61ab6fc + last_write_checksum: sha1:2fb4e612b2c85fa31f830ea273003eef0d34576d + pristine_git_object: 0be83857b760651473e923d7bff3bf995490c624 docs/Models/Components/IntegrationResponseDto.md: id: bfa704ecb23a - last_write_checksum: sha1:2af3cc67a66df80380438eb4bc057eb1a0c44860 - pristine_git_object: 764ce49dce68cc211b7e946fe8dff35070bfd7f2 + last_write_checksum: sha1:cdd75924d1f675217af963ae6c52cb86691e4725 + pristine_git_object: f92ff1dcd787727bcd9aac8f9a990d84d6f70446 docs/Models/Components/IntegrationResponseDtoChannel.md: id: 8d2a42b0cd14 - last_write_checksum: sha1:4140f95c72c21e9ce000c9c02df9a93560411132 - pristine_git_object: ee2622a6cde00524ff2150daed243fa96f7dcbee - docs/Models/Components/IssueType.md: - id: 6a6800652f1d - last_write_checksum: sha1:d85623090de8cd974145a507894c9e0ffe86dd94 - pristine_git_object: b7862225d0060ea97ec15bc4353a45e4cb6dd606 + last_write_checksum: sha1:7770167c93dca3018074d45add2d18b47b175ee5 + pristine_git_object: 8c163b16746dfe4006382424fe9a59f1d21f8570 docs/Models/Components/Issues.md: id: 97806ba75be0 last_write_checksum: sha1:923b707ed29ee23268c0fef17bdc859f04e798b5 @@ -914,8 +1096,8 @@ trackedFiles: pristine_git_object: 68c05de2e9ef80d5094d5584bf37599cf19bf136 docs/Models/Components/LayoutCreationSourceEnum.md: id: d040f4d5adf1 - last_write_checksum: sha1:7b93a02953c34035803c0803a25f948611696f6f - pristine_git_object: 70245b1ca9264de93335ec82b261813db577accf + last_write_checksum: sha1:40ac0dab9abf6e88e31db4ac101149b3278181ba + pristine_git_object: a6512793e66a14a4b6ddb2470f129761038a71f7 docs/Models/Components/LayoutPreviewPayloadDto.md: id: 0efcaec3eb16 last_write_checksum: sha1:08a3ec270444eaba2977e41e125eb09a0ed05a7e @@ -930,8 +1112,8 @@ trackedFiles: pristine_git_object: a69d92a311581b4826f66bb19734b87d7b67694b docs/Models/Components/LayoutResponseDtoSortField.md: id: e7f458e445a3 - last_write_checksum: sha1:a3f9c10f8aa820e3affa837085e02f8fc4696297 - pristine_git_object: eda45b6eb0b559dbdabdf2adc15afd3f13444267 + last_write_checksum: sha1:e527fb9170e5de18bb235b7d2591f26f452dd635 + pristine_git_object: 78d9e887ef986925159220375d58864ba74fba52 docs/Models/Components/ListChannelConnectionsResponseDto.md: id: 0a2f9e0afe9b last_write_checksum: sha1:10865e1de6e56a075f49731d03010379c2839bce @@ -964,22 +1146,26 @@ trackedFiles: id: 89190346cdc6 last_write_checksum: sha1:137adfbf34c5cc9a76fb9e4c8ebc3e00648936f2 pristine_git_object: 062b83c005f533b9becc2a6dd3ee40507e22d560 + docs/Models/Components/LookBackWindow.md: + id: df52e0b771d3 + last_write_checksum: sha1:906c26a03475ebb6720fbdbb1cfefc4af198939b + pristine_git_object: 958bf272d85ee808f06bd5e0fed5e083234c1bce docs/Models/Components/LookBackWindowDto.md: id: b3e985cceeec last_write_checksum: sha1:8bc04bb5e0bb7607d429d2809688996602a02f3d pristine_git_object: 6986a1179b101dc4bea03a6dfb6c1d4afd4e5abf docs/Models/Components/LookBackWindowDtoUnit.md: id: 354f4e09a1f6 - last_write_checksum: sha1:ad6e80763b15af5a655f5fe160fff7e4cd77bb1e - pristine_git_object: 24858309530cbb8d5ec0c7fe7c21ee689792df44 + last_write_checksum: sha1:aa7916e59559a7d59e24040cd1857149ac9fc75a + pristine_git_object: b355b031b331093a21f37af7488756e2d9c49a88 docs/Models/Components/MarkAllMessageAsRequestDto.md: id: d48af61ed3ef last_write_checksum: sha1:43c53b40cc26d48b4261da225d440de49f611e23 pristine_git_object: 504280e9f8ef1a18aebceb6251aabc020ee39055 docs/Models/Components/MarkAs.md: id: 66605c7996fa - last_write_checksum: sha1:3446da49927f91ee374f5fb7c9d3e84b51f80b52 - pristine_git_object: 2797ca965cf2837bdddf62184ad3cd61f7118c58 + last_write_checksum: sha1:505f872af62dc160566de3ced04413c87bb325aa + pristine_git_object: ff5c82c51db2ea9967a2460aeb57c64e70303269 docs/Models/Components/MarkMessageActionAsSeenDto.md: id: 54c6bf68572c last_write_checksum: sha1:e62d3b3365c89a95a6f752e5da1ecea9ca9967b0 @@ -990,8 +1176,16 @@ trackedFiles: pristine_git_object: d829e4c8c08b06db3b4b334e1161a5bc7e8ec236 docs/Models/Components/MarkMessageActionAsSeenDtoStatus.md: id: 346ed527b32c - last_write_checksum: sha1:e8aa7bdde7d200418489b800ca8f28d0e659df40 - pristine_git_object: e35a3da75a4ca3cd73af1d41781a02d957db213b + last_write_checksum: sha1:91f925e56eba5918f69c03adcd653f052f88128f + pristine_git_object: 8fc1f71070e34efcc2af8a01345ae23aa6f22508 + docs/Models/Components/MarkSubscriberNotificationsAsSeenDto.md: + id: ee83e29fe538 + last_write_checksum: sha1:a0d0f697c3271f9bec164b0b5a255787e9806e4c + pristine_git_object: 778b3537f2a71d6d7ab6669e7de51d1d7d1f343d + docs/Models/Components/MarkSubscriberNotificationsAsSeenDtoTags.md: + id: 2e759456ea41 + last_write_checksum: sha1:1f6fca3ca6de2163e5280bf8f61f06e584cad4f4 + pristine_git_object: 3abb5be52a5696a57a79c64f1264f149d7b7679b docs/Models/Components/MessageAction.md: id: 4eefda0ef4c5 last_write_checksum: sha1:72f552daef0e1a4e521138614194d597eec1e803 @@ -1002,8 +1196,8 @@ trackedFiles: pristine_git_object: 247c640cb75fddcda3b7263154b85a58804df689 docs/Models/Components/MessageActionStatusEnum.md: id: d223ebff3ce3 - last_write_checksum: sha1:8437d23bdfb91a38d3e9b8ecd70b2c45bea211a9 - pristine_git_object: 14c1415cb563ae4f27df7b893f0eefe77d8b6d71 + last_write_checksum: sha1:c35dd72b7264c50bed0845ef6139f2659dee1852 + pristine_git_object: dcbc3b68447a5c72f20115ab08a1666ab0d1b9db docs/Models/Components/MessageButton.md: id: ab3d74b5f573 last_write_checksum: sha1:9d4cad6df8d36c7db31189d2ebdcd712421d038f @@ -1026,16 +1220,16 @@ trackedFiles: pristine_git_object: 350d30857d06f09c025291fb1a90e9c63b73af5c docs/Models/Components/MessageMarkAsRequestDtoMarkAs.md: id: 0ccf2a50c86c - last_write_checksum: sha1:a2861b0a9b484a5b231df56bdc85fd484e99f41c - pristine_git_object: 067ecbe5dd293310ae6d01fea39edf4fc2e6aeab + last_write_checksum: sha1:b2d08883209ff7e378f9ae2162238455a38c3a1a + pristine_git_object: 38761dbbdbfb97410bfa40bca72c9c74d2d49d59 docs/Models/Components/MessageResponseDto.md: id: 95c633f3f0d7 last_write_checksum: sha1:fa26230fdc4c541b80f834a315866b700661fd6a pristine_git_object: 8bf4c4025b8aaee6fbd79fbe0290c8827f27a58f docs/Models/Components/MessageStatusEnum.md: id: d01788240f55 - last_write_checksum: sha1:2c6509e9498bda939ea791cb28715f5fe3e8f08f - pristine_git_object: 4f1d29b51005c3e51601aaeed8aaee05aa08729c + last_write_checksum: sha1:1bac14e066dc1e16a22d9e9576a70585b5ddaa27 + pristine_git_object: f587c4ff48cb1b6038e19ca7c05b554ce42d21bd docs/Models/Components/MessageTemplate.md: id: e0fb92235e2c last_write_checksum: sha1:51432b01b811bb5c17b3a8d06119fb61ac904699 @@ -1062,12 +1256,12 @@ trackedFiles: pristine_git_object: 4a3e31b73f82f9c81126624cb9c8f9f6e899bace docs/Models/Components/MonthlyType.md: id: 4a884991ec4d - last_write_checksum: sha1:0a2a93f8e079e6d95d1aa2e583eaba2d5e88ae84 - pristine_git_object: c413ed05b37dd4affad36dd2806e979f58a7f754 + last_write_checksum: sha1:375d5a9eb56a74dd9ddf4923a3980f95357a6c2d + pristine_git_object: 641158b0cf4fff343d40be98704dde381e9cfd92 docs/Models/Components/MonthlyTypeEnum.md: id: 4ea4fc569502 - last_write_checksum: sha1:c1f3572243b5ec61ed273f5f33a45ef188905537 - pristine_git_object: 21c077886e6244669a40f302e0ab636d347844aa + last_write_checksum: sha1:79b30e56e8fed9c81bfab3b55ec7326150fd744a + pristine_git_object: 8b1c231a2c87ff3e23300be467e6d85cc16eb69a docs/Models/Components/MsTeamsChannelEndpointDto.md: id: 4c19b3e4e462 last_write_checksum: sha1:c1cfd666844f9400f0250d6e8f81716627d91cec @@ -1076,14 +1270,18 @@ trackedFiles: id: 8ee1f82b49fa last_write_checksum: sha1:238108e8e8fdfd60be008caffacd55c92e8bf8ec pristine_git_object: 09a86262447e2f55e339aeeb409eaf70dd157472 + docs/Models/Components/Nine.md: + id: bfb2008b6392 + last_write_checksum: sha1:00e25297c8049e8ce0aed56d4fa6c00daa91ed2a + pristine_git_object: 26a9b8d8a49a0997bac90789aa3d24f577dfdbf9 docs/Models/Components/NotificationFeedItemDto.md: id: e3261b36abec last_write_checksum: sha1:f4196a995d217e6c063c054e21eeb1726126201b pristine_git_object: 7bd56be82047047e38d8f8b68f2ea79d88d6d4bd docs/Models/Components/NotificationFeedItemDtoStatus.md: id: 70c6db5bdb8d - last_write_checksum: sha1:a6ab4cad4ac75b283060ff476b9efe92835af32a - pristine_git_object: cd6b68b9bc3ee847269b47f819028cb51b074c61 + last_write_checksum: sha1:d40fab92a7fd6c1933fb0c66f13efdf467c3e076 + pristine_git_object: 263467fa1cf5af1653626dbab0ee58aa601fc6bc docs/Models/Components/NotificationGroup.md: id: e38849b361f7 last_write_checksum: sha1:fc5f9daa327744dc73db556270adb3b9edefe846 @@ -1110,44 +1308,48 @@ trackedFiles: pristine_git_object: 1c22fca05ebcbf114008fb9fb76ccd48dd0381b3 docs/Models/Components/NotificationTriggerDtoType.md: id: aa525de0c9bd - last_write_checksum: sha1:06bef8c924e75ea37cce0f2f865c1b80255bb5cd - pristine_git_object: 011141fefe1ed54a664576e66fc3555ef1197611 + last_write_checksum: sha1:5f248a8212ec4bd7a92a4dd382cd2f0e0cfd30ec + pristine_git_object: ee21a294b07b6d21953f87c8b77124fcccd89db1 docs/Models/Components/NotificationTriggerType.md: id: e6572433648f - last_write_checksum: sha1:5ec8759df23e1e07e4f04502945f9382a19c9910 - pristine_git_object: e4c714b785ab87b7cc50137d5816a391586b7f37 + last_write_checksum: sha1:5552ba1aff888c55deb86c1d6eed9961ac1a6610 + pristine_git_object: c6978d3c8894b494c0d0c361fdc661ea35a47e45 docs/Models/Components/NotificationTriggerVariable.md: id: 2c5e9523c6af last_write_checksum: sha1:5a544bbf346163e370e60d7b074985479c287fe7 pristine_git_object: 48dda181b460b3fa769f0be81ada21c100a39390 + docs/Models/Components/NotificationWorkflowDto.md: + id: 7528daf36791 + last_write_checksum: sha1:803070767fa2de29f0d25bd605a92166591a7b4e + pristine_git_object: 5faae8f5a49562cf3b2d5c60341b231b4809d878 docs/Models/Components/On.md: id: f2b7a882bc95 - last_write_checksum: sha1:2f39a7650652037497807bbf44914974d4fd07cc - pristine_git_object: 7e05cd615c000a41f67e3260a7194c305ff85237 + last_write_checksum: sha1:6358b9256e9d873f9669f7461e6ea5eba1d89011 + pristine_git_object: 1a7903694bb9d3d70195611f0f3642c4e3d9f6bd docs/Models/Components/One.md: id: 37e74752e70f last_write_checksum: sha1:c65a241c7634435a3ebc33d49beb86061849f69a pristine_git_object: 600a91ccef6e36fb854bbf1c26f4e40683e27c2f docs/Models/Components/Operator.md: id: 99cd25f46e56 - last_write_checksum: sha1:6bc16f25cd661b8be1336d396ef1a121ec92df7b - pristine_git_object: ace65a6c8c07e1c494da971edc23634b6af1c977 + last_write_checksum: sha1:6a3c6d8deaf4ba22edf1459935557b915db18560 + pristine_git_object: a1b41cd7a5a98a28e9bd3c52ab31174791ecf6e8 docs/Models/Components/Ordinal.md: id: db2c25c2af41 - last_write_checksum: sha1:fad25c31058fc5260c33cabe0aa66c566862954e - pristine_git_object: fee404a5cf3f88721267cdde6ad760940cd4f0a4 + last_write_checksum: sha1:5758a3b83357068877e79f23b7f70de4a5e7856f + pristine_git_object: 5500038a3405690ebaf19d6bed59b60d0bf48f71 docs/Models/Components/OrdinalEnum.md: id: 797c75cb02f1 - last_write_checksum: sha1:6cf0b2541fe774a315c5887ac9e62f32c96e4325 - pristine_git_object: 83ee4113ff9d13fb5ee707a7a7c7800bdb4229e2 + last_write_checksum: sha1:077ea21ea94aff069a7aeb7622c74b7cc380cdd3 + pristine_git_object: a5c2590fd52266c18c71ed271c5d2fafc8381ee9 docs/Models/Components/OrdinalValue.md: id: 0a6d78630e1a - last_write_checksum: sha1:069339d0b4de1269ec787e1b15fb6d37b80fb320 - pristine_git_object: 63dddaa17f014a328b720435ed4c329a91feafa1 + last_write_checksum: sha1:ffffaeefc34b596fbe24ba4d696bf33388c9c8c8 + pristine_git_object: 8e5feb6c9ecf18a3ff22a3d29084e65936f4cb89 docs/Models/Components/OrdinalValueEnum.md: id: 9c717b3fab15 - last_write_checksum: sha1:9eb6749b523f624b756b17fef436ba680695a0d3 - pristine_git_object: 1532382c3001e7f843b0f7522ae816ec3d2dfdce + last_write_checksum: sha1:36a7c29b6eb3822ec36ddad969cb4d6e8ababb09 + pristine_git_object: 38c67762e0657a33346ac2f54ce002e2cf6e21b0 docs/Models/Components/Overrides.md: id: ef211610bd34 last_write_checksum: sha1:93dfb2ca3e2a986149bf21a9180ff39697033150 @@ -1194,12 +1396,12 @@ trackedFiles: pristine_git_object: 19720055e315982b54ef1796c0bd59216badc007 docs/Models/Components/PreferenceLevelEnum.md: id: c02d14d2d8e8 - last_write_checksum: sha1:2e5bd285e43128371fa787a2c83ceefd99d19c02 - pristine_git_object: eece3afca18a0dcfda6744c02932fd1ad3d483af + last_write_checksum: sha1:2375e9cb545a9c29ca8f0f4a1f53d641af2602cb + pristine_git_object: 27e9a6b2e1c070a0fed6a478dede4188131969e3 docs/Models/Components/PreferenceOverrideSourceEnum.md: id: 52b32bc5f40a - last_write_checksum: sha1:2c70cf417f86ad28a6500b28fd73f823e191aa02 - pristine_git_object: 3f38687df596cae6a3ef2ffaa1599697cf90c970 + last_write_checksum: sha1:e270d830857c997754639886ff21293633e6327e + pristine_git_object: 786a8e2ddbd8a4a156643d535b3c8047e31b53c8 docs/Models/Components/Preferences.md: id: b8828a7ea59a last_write_checksum: sha1:1ea9b2febbc14210b55ee89f6ecb145b0bcd6bf6 @@ -1216,14 +1418,42 @@ trackedFiles: id: 3367357f914c last_write_checksum: sha1:1ab38c973ee6e0f29157375bb0d598ac49e6bef7 pristine_git_object: fab84c33aa0a5fb7779b1927b13fcd9f0f1d2981 + docs/Models/Components/PreviewErrorDto.md: + id: f344f1830e2d + last_write_checksum: sha1:bb39c87720c3c2f82370cae54be4ecba9b81d872 + pristine_git_object: ccd5b0d496a48857d3448e029b53a2d637e46bce + docs/Models/Components/PreviewPayloadDto.md: + id: af92701cd7a1 + last_write_checksum: sha1:d87bd8e4cf192b04d9f184adf88c4ba6efd26a04 + pristine_git_object: f1b6ab2f4db9639f73f269426ffad0269fb5bd0e + docs/Models/Components/PreviewPayloadDtoContext.md: + id: 19ce8a7f0c8f + last_write_checksum: sha1:b6956d57e52aa2bbad1beda513aabbfd95a89f1e + pristine_git_object: fa772317aa3ed505fabd05ed13fe984cd8c5b59e + docs/Models/Components/PreviewPayloadDtoContext2.md: + id: ba784b4d4722 + last_write_checksum: sha1:5cfe6fe87efeb037ae01c26474b99f4f12976957 + pristine_git_object: 8ffb83c7148417489cca4ae5b92408f69fde8ea6 docs/Models/Components/ProviderId.md: id: 361b14554a90 - last_write_checksum: sha1:9144b46a845709a316c503bd9a2f4f2771457fd8 - pristine_git_object: 1b41810e963f0dd04250c6a33f81533076878f44 + last_write_checksum: sha1:41ae525dbcf36aa1875a8c984242fed6b522b61e + pristine_git_object: 153d022cc6582e96e8de58ab337833fa89976455 docs/Models/Components/ProvidersIdEnum.md: id: c91ad58326a2 - last_write_checksum: sha1:6149149a998b56f5bcae64183db8f1739b4e20ef - pristine_git_object: 0592d34955619a73213c977a071a578ec5f2393c + last_write_checksum: sha1:2f5555b25bdaa8f720f1dc2d42a60d2c4fbdeb4b + pristine_git_object: 1f662bfd94d99c2b69167b92f29342a00c3e285a + docs/Models/Components/PublishEnvironmentRequestDto.md: + id: 0033d29bfc48 + last_write_checksum: sha1:1fa0f3762227bd0a0b75824600b6e1771e49a1d6 + pristine_git_object: fe64a9937f1a4417f662d0d0afca8b95f102e1d8 + docs/Models/Components/PublishEnvironmentResponseDto.md: + id: fe648f9cdd26 + last_write_checksum: sha1:e2309995505e038bafb8884595f5d1b4c5cd7a78 + pristine_git_object: 1d2d2e0aa6b8c250b5fc5e87f24d87938e454b68 + docs/Models/Components/PublishSummaryDto.md: + id: d3c49a726996 + last_write_checksum: sha1:04fde085ccb94b3dd026d52dd20cff03bb1a58c6 + pristine_git_object: 607028cf6a461c83f07e88da26bcc80fa42f008a docs/Models/Components/PushControlDto.md: id: 4319d97819bb last_write_checksum: sha1:b8e92e8569be35ce2e1df143e7c61134e7a91546 @@ -1232,10 +1462,14 @@ trackedFiles: id: ae9541bafc3d last_write_checksum: sha1:7232a724f0651e008e97be784325101daf212e13 pristine_git_object: a270c1379f9b8987e290d18aab0588d79ba3e5aa + docs/Models/Components/PushRenderOutput.md: + id: 8ff888fb84af + last_write_checksum: sha1:78e9d4982b83f3ccb6b5b6d87cf9a2486acb84a3 + pristine_git_object: 9cbe78b3c72607e152b499c0107fbd156aa617a8 docs/Models/Components/PushStepResponseDto.md: id: 5e74188008ad - last_write_checksum: sha1:fd580ceb54197cf912a5a6dda5a61ab2716802b0 - pristine_git_object: b20b668e9a6cbb6bc0d6268ba72cfdee3f1ae373 + last_write_checksum: sha1:c920a18b9276b6fccc665a718848a306125f0b4b + pristine_git_object: c1af11d32b0d3e70a197363753eeaf96e52174a2 docs/Models/Components/PushStepResponseDtoControlValues.md: id: 506bd96b0fdb last_write_checksum: sha1:58a74bd259e5b556ed6962f2fac38a7a9b8d87e1 @@ -1250,8 +1484,8 @@ trackedFiles: pristine_git_object: c18ab7cc8efe45d316733e61c9a90b25c6e8a00b docs/Models/Components/RedirectDto.md: id: 562d6e59e6cd - last_write_checksum: sha1:379d35bc94a4654b88253fe5f2e39a152c8ebf83 - pristine_git_object: 7392c5ddaccc13aab03036c0d9e27afa535d5419 + last_write_checksum: sha1:e3b83557dc09060bb53bd319c19b52c67104779a + pristine_git_object: eb119ec786f07e7ccba7e200973977b0d60325c5 docs/Models/Components/RemoveSubscriberResponseDto.md: id: 140a745dd7a9 last_write_checksum: sha1:fa94eb17df8e5801d5898f0fc19545c259560bd4 @@ -1260,30 +1494,82 @@ trackedFiles: id: 2581cdc7691e last_write_checksum: sha1:bab94157a98a184d890939252ad478e421d3cf9c pristine_git_object: a488c7916b012c17098d474ce426f9c481b45537 + docs/Models/Components/ResourceDependencyDto.md: + id: 9c5610138866 + last_write_checksum: sha1:7d27d24e0bdba965d371c96f2a5589e9ca94cb08 + pristine_git_object: c8ac83e56afcf76c8b42de5fce618c9d9d8aea22 + docs/Models/Components/ResourceDiffDto.md: + id: be5df01539a2 + last_write_checksum: sha1:f42c38888b5485066c69bac47ccb49cb719b4177 + pristine_git_object: be6401397ca27551d2268b1cdc4e34f6135f3e24 + docs/Models/Components/ResourceDiffDtoSourceResource.md: + id: 2adeef7a38de + last_write_checksum: sha1:b1a14e461795ab6ba85587991781fcc3e3dc8d10 + pristine_git_object: 6d738c8a0ab4cc5807f9599c51ca09ba79c670b6 + docs/Models/Components/ResourceDiffDtoTargetResource.md: + id: 9c7aaceac788 + last_write_checksum: sha1:219e4dadf91996cee81658fc6d86491fe79419dc + pristine_git_object: d1de856079a44512bcb5fae962562b65946d28ec + docs/Models/Components/ResourceDiffDtoTargetResourceUpdatedBy.md: + id: 90b39b0625c2 + last_write_checksum: sha1:865e3ab4bc9a06f7be6fc185f9d6b1f0d97c9318 + pristine_git_object: c38f099545b5f01d3e4aed64d7456e46928cb8c8 + docs/Models/Components/ResourceDiffDtoUpdatedBy.md: + id: 9d3afb28b40b + last_write_checksum: sha1:73acbf06a5e14576920f7ba505fd847ba9e58d61 + pristine_git_object: 2a0a27898117e409eb07549d11434cdba866b9fc + docs/Models/Components/ResourceDiffResultDto.md: + id: fdd338165681 + last_write_checksum: sha1:c7d20aad1ca619c0b1cb8ad30a2d91df71454cc3 + pristine_git_object: 6b35313d2ea4610843a0f39f89dd25e1c982390f + docs/Models/Components/ResourceDiffResultDtoSourceResourceUpdatedBy.md: + id: baa18f49056a + last_write_checksum: sha1:b0a61a1997fc921b7a86e592c97e599ce9269bec + pristine_git_object: b1fcf9754ada97de697e9d3e48232c5ea64d4e70 + docs/Models/Components/ResourceDiffResultDtoUpdatedBy.md: + id: 9c42cff98412 + last_write_checksum: sha1:ee804733466bea54caa2ff0334071fd9bb475039 + pristine_git_object: 94e5043787f005e0818527b992b93db8e63d8b4c docs/Models/Components/ResourceOriginEnum.md: id: 75402fad685f - last_write_checksum: sha1:380f9c7f4b35be5d5d8affa9b5ae4bb1135a00fb - pristine_git_object: 0c82bd42689ba694ba6240d3deac85e3436e6a95 + last_write_checksum: sha1:84303fa509847db5a2f5d061159d61add9c01c96 + pristine_git_object: 1d6c8b45193c0dadaffbd7c3fc068a30dc8f7fa2 + docs/Models/Components/ResourceToPublishDto.md: + id: ebe3e79149a9 + last_write_checksum: sha1:2f4dc3bcc05fe2083ff008eb06cc342972f5447f + pristine_git_object: 5ae9d1551cd4cfbdd16176cfeda17a07f89e029c docs/Models/Components/ResourceType.md: id: eed4cb6267b7 - last_write_checksum: sha1:fc0907e9ab4f20cda385d0bfed2cd294b954ae92 - pristine_git_object: 07f1a03f14a248ee376a2037c011d34507775fb2 + last_write_checksum: sha1:7e35fc3b63274bf38fc3928aa091c87e375e68a0 + pristine_git_object: cef2f4f6af48509708d6ea245715703e602d6f3c docs/Models/Components/ResourceTypeEnum.md: id: 040e4461476a - last_write_checksum: sha1:f3fccd9566c352086b0f96d93ac5e23d54ca26d4 - pristine_git_object: 45caf980e0ff5ab63c72763b16c629762b5b5e43 + last_write_checksum: sha1:538dcb0cef7f2a4891a3014b5ce0c03a993c4bd6 + pristine_git_object: c20e3fc2c922779b60fd2cf1a0a5ba32c3ac1278 docs/Models/Components/Result.md: id: 06d80ebb42bc last_write_checksum: sha1:743e88b20e2d80e832de0c4c10f9c1c07c0f2376 pristine_git_object: 89dfb766ee3115151421d253b158ce75a28b84a5 + docs/Models/Components/Result2.md: + id: 2a0951e86ea6 + last_write_checksum: sha1:6b72992da3a33ecc7ca790f4d0acc301b0878158 + pristine_git_object: 5f0004fb924a20304f7c1949dc587f0d18956b15 + docs/Models/Components/Result4.md: + id: 4ddf1353e15b + last_write_checksum: sha1:147634dc7a001d1d46414b64e4450664b504832e + pristine_git_object: 2ee817ddb97a70b40cfc4724f27c706094192160 + docs/Models/Components/Result5.md: + id: 7abc236164fb + last_write_checksum: sha1:b0d96acfdc8dec55b4290c480ce4adfbf13e93e6 + pristine_git_object: 06333b5d8c15314b46db644e5b75be20c54caf1c docs/Models/Components/ResultType.md: id: a1a908d8a7dd - last_write_checksum: sha1:c3ae8600e893c7fd23837196bec5d223fd3f47c9 - pristine_git_object: 3e5a5b18cf85470d32ae43e3cc2482a744f9f1cb + last_write_checksum: sha1:4dd28addf65da0e1e5e0d54e08afe084ec03678c + pristine_git_object: 7a73482725848aee4b2468bacf758db5df78242d docs/Models/Components/RuntimeIssueDto.md: id: ca8ad6e5994a - last_write_checksum: sha1:f3ec05f688370f85b841ea25ae78cc3f2de7919a - pristine_git_object: 0e057c6ae6ffd71adf90f14bdf8376260699c609 + last_write_checksum: sha1:98cb96fde0416c3d41fd082403aeb7551bc1b75a + pristine_git_object: ad21f87d9312c4010d5bdc2309819a4c8bc3dc5b docs/Models/Components/Saturday.md: id: 9f9d5f5d344e last_write_checksum: sha1:66a02f0eff37620efc9bcc7544fd93e044ff6daf @@ -1296,10 +1582,22 @@ trackedFiles: id: 7bcd54fda13a last_write_checksum: sha1:dea5ebd1212c36d4a5e16c3f837df071c8d85246 pristine_git_object: aedce12697a324089e8dc734cb06d392680565db + docs/Models/Components/Seven.md: + id: 13bf11c70823 + last_write_checksum: sha1:3c50f9460400913857a0576a76d659ad01001ec7 + pristine_git_object: 5e763eadf93359d589b4b017d2754e79b184117e docs/Models/Components/SeverityLevelEnum.md: id: 6307aa5948f3 - last_write_checksum: sha1:04dd790d4c0b65af70fd4d9291a63fe4c99a20c2 - pristine_git_object: f90d60d9eff44ae380c0d0e80a941958fbe455f9 + last_write_checksum: sha1:5235c7e8bf71734d87d5098fd45b8d8c9f73c950 + pristine_git_object: 4d9d4893fc26eae25b79160068757ce93e898f11 + docs/Models/Components/Six.md: + id: 0cca44db5b20 + last_write_checksum: sha1:e3aad6c41ba8cdb1ae0471f2346f8b5fc298c664 + pristine_git_object: 76cb2019888b04210fd66a1b204799b53b13dfb3 + docs/Models/Components/SkippedWorkflowDto.md: + id: 61d12573445d + last_write_checksum: sha1:75d9caf3aad7a5254f4ed414c552789052bd1785 + pristine_git_object: 72eaabafc78c0562e5fbaa5c3f47d5b88a8e4b69 docs/Models/Components/SlackChannelEndpointDto.md: id: 568003a741f2 last_write_checksum: sha1:c1e0274094db387f4d8a8379ee697f4638b4bd7b @@ -1316,10 +1614,14 @@ trackedFiles: id: 1773d638e3bf last_write_checksum: sha1:7da6b170b2420be34387dee6f853c11371dc0fd2 pristine_git_object: 9a4a9f4e32d5cab3b61ec1af019913a1116e6150 + docs/Models/Components/SmsRenderOutput.md: + id: 9edbad437122 + last_write_checksum: sha1:2bc0d83471774ea8880839c6f3a58a27c5f3acc6 + pristine_git_object: dedabf5469aea0baf653c0b5d71618015cb2e4d2 docs/Models/Components/SmsStepResponseDto.md: id: 9dc84a009fbb - last_write_checksum: sha1:127a304c67f9f783edc02f7eb0ed97b8b3fadb29 - pristine_git_object: 93d865a78779a3d4e643637ef3794e3e74146cfa + last_write_checksum: sha1:4dcd138e0c0018210933f6d9bb3cc00f71ee7f66 + pristine_git_object: aae337a3dbceb81ce883689fde540e4ab3e069cc docs/Models/Components/SmsStepResponseDtoControlValues.md: id: e0aa121c8cce last_write_checksum: sha1:afa47179975e35767de43ce303e109ec355ad469 @@ -1332,10 +1634,18 @@ trackedFiles: id: 232647d345c8 last_write_checksum: sha1:c8629da4ed44b7ecce3b91d761ab2f2138228d65 pristine_git_object: cd2aa2518e785a59bdc52d2da45eaef20ec0cd57 + docs/Models/Components/SnoozeSubscriberNotificationDto.md: + id: e7dece58cefd + last_write_checksum: sha1:1a146918418e62be6311c42796bc64e8700373bc + pristine_git_object: 45526cbd2d0cdff5db14842d3effa6a9f6f30209 + docs/Models/Components/SourceResource.md: + id: d9d799eeddf4 + last_write_checksum: sha1:c18c4393a40c8eb3f0ef8f45d97460fe83491bbc + pristine_git_object: b8874bda7a89fc8ba346ebd3a4bb3b34ecdf7846 docs/Models/Components/Status.md: id: 71d0264ee613 - last_write_checksum: sha1:f7b3fabcd496bc8ac346a0105f0c65f10a739f83 - pristine_git_object: 8a06bb3f560a9b80c40e5132bdf9e0671301be89 + last_write_checksum: sha1:6184cd3292c942d78e38acb60698d77571629443 + pristine_git_object: b6a0b8f4022c8c57168b91994d8b50dedadc126b docs/Models/Components/StepContentIssueDto.md: id: e1f3dd2a3bb7 last_write_checksum: sha1:2140cd50bb892c479bbda98bee70fe0ddbe62465 @@ -1346,8 +1656,8 @@ trackedFiles: pristine_git_object: e126430825751a6d64198fa49841103cab890411 docs/Models/Components/StepFilterDtoValue.md: id: fd8897d2cb19 - last_write_checksum: sha1:f019bb073597f75a8e3b543d802aea9f9af0460f - pristine_git_object: da30612b9607ed9f96e916664a58457b6158cca4 + last_write_checksum: sha1:8e0296d067f0cb347bec4f2161ff5339107609d1 + pristine_git_object: ad7a0f1966db170ed708f9d8270e29c02d1aeb9a docs/Models/Components/StepIntegrationIssue.md: id: c751d82baf10 last_write_checksum: sha1:a9435bcfd741c15a81d102d885178f625460fba8 @@ -1362,16 +1672,16 @@ trackedFiles: pristine_git_object: 6985d8cbea3d263e628c63382ed64d5acfbce558 docs/Models/Components/StepResponseDto.md: id: 691f4143aeaf - last_write_checksum: sha1:5d5d091b699a52b7f80dd9f2631ede63ebbe69ef - pristine_git_object: f9a39fbe213d6511dbf0a60fcad13f3d6c611529 + last_write_checksum: sha1:b21fa6efa2c5abf1bb5f712a09b7d3f454215025 + pristine_git_object: 31a2eeb079a2bcd9e3f793b8a339d3619823fd90 docs/Models/Components/StepTypeEnum.md: id: 0421701cdb70 - last_write_checksum: sha1:c8f885e57891a873fc0f4d4c4d2310474ca53f58 - pristine_git_object: 55aab8034e997f5f8fdf84627d2e4e4e63357dcf + last_write_checksum: sha1:74d0572adc934abbfe4b486e3b8c7825725f8b1a + pristine_git_object: 560106e7dfeb0423b9040fbdc26faa0883891f06 docs/Models/Components/Steps.md: id: 0d23b8aa361c - last_write_checksum: sha1:e357f98b065de7fb5a911dc4d5302ac6b53a02ac - pristine_git_object: 12b37f33ac6df0338cbdc7df14c63a7b8a28d7e5 + last_write_checksum: sha1:5daf969501036a3e6791f7e9c8da4de13d5bc880 + pristine_git_object: f86afb9932544bb9f419727e31b069be3f7382c0 docs/Models/Components/StepsOverrides.md: id: f58a1d9743f6 last_write_checksum: sha1:b6620bc64c1de5ba556660bf2976f5f16b215c8c @@ -1386,8 +1696,8 @@ trackedFiles: pristine_git_object: 8915c9b39c1aedc623e8a8a91f81f130fc455300 docs/Models/Components/SubscriberChannelDtoProviderId.md: id: 4dd16c481ccf - last_write_checksum: sha1:e8ba65361f81b44b31768a6ee030b9367f91abf1 - pristine_git_object: 926e99a56df2f251418fcfc448960ef71c774579 + last_write_checksum: sha1:3e9fe20f994dc758a581b1ad0511e69eb85eb8ba + pristine_git_object: f3ff596559f0067a74753b8ba89afb0c39307a60 docs/Models/Components/SubscriberDto.md: id: 5de3888fae50 last_write_checksum: sha1:a8d0e2ce6868b0178575f5855c333884c0c9708e @@ -1472,14 +1782,34 @@ trackedFiles: id: 94ba5fa177e1 last_write_checksum: sha1:11cca032fe324f3a0e39b6c1e1755dd107444599 pristine_git_object: ad9704e3e228f46f580296d23e7a7548997cb65b + docs/Models/Components/SyncActionEnum.md: + id: 4d88c25f17ba + last_write_checksum: sha1:f0aaf6a6dc70474a0693200c5fcdaeede3d3ab4d + pristine_git_object: 93d663a3e731db9236cdf97f84ba89ce055515ac + docs/Models/Components/SyncResultDto.md: + id: c6ba8b148e58 + last_write_checksum: sha1:96d1bfb9c6365fccc60ba2b711363d7c12bcb299 + pristine_git_object: e719da3f9f8852be1c368dcb77b94f5517910137 docs/Models/Components/SyncWorkflowDto.md: id: 0c7a0b6d8f7e last_write_checksum: sha1:cca6393bd80b61887f6545253be31bcd0eb0014c pristine_git_object: 8020cae7c09d1ef4a88f4765c03f0c7dcbde9c1c + docs/Models/Components/SyncedWorkflowDto.md: + id: 8f7b67b099f8 + last_write_checksum: sha1:33ddac1d307bbe40cab29441ddb080f783c32167 + pristine_git_object: fd3b65216f5522eed6244cbd6f37131ffa1aedf4 + docs/Models/Components/Tags.md: + id: ec3d398ba5e8 + last_write_checksum: sha1:e5babe23117207a18c4037d257437c4070cec04b + pristine_git_object: a25f7f118c353c30db88dd23e049c86949decb6b docs/Models/Components/Target.md: id: 3bb2eba0af6b - last_write_checksum: sha1:c1bf7234cbd0889bf9bb38c846da720e9d635800 - pristine_git_object: 1acfe0f3f769123b1f22ff9f8deaa517e6288ed0 + last_write_checksum: sha1:cc1a148f23a9048c98e29fd814fb6be19a0ae9d5 + pristine_git_object: a93786738e41d979e6f00f41504f8bf0a4378395 + docs/Models/Components/TargetResource.md: + id: 20bfb186634a + last_write_checksum: sha1:4a159ba47cf36c5675ee675939546f116276aa04 + pristine_git_object: a14602de514552d33b0c21059521b3c7132fa86d docs/Models/Components/Tenant.md: id: d573f77a70e0 last_write_checksum: sha1:87c74368c1509ef62e2612915d3b1878bf2869a7 @@ -1490,40 +1820,44 @@ trackedFiles: pristine_git_object: a106212ccc0fb9a54de5215b64765b3dc9c50678 docs/Models/Components/TextAlignEnum.md: id: f5bc61f33147 - last_write_checksum: sha1:f02c315043bf3bcc05f309290fdb63d9ab427659 - pristine_git_object: d771203c913a1645059254498fab765449239f65 + last_write_checksum: sha1:248ee6e36143491f4cd5cf8e770c1efa9449538b + pristine_git_object: f09566fa4b898b7846460a81f0dddfa532843cba + docs/Models/Components/Three.md: + id: 3f27362616f5 + last_write_checksum: sha1:b4607e2e20d03976f4dac8be1853589d3e5d917c + pristine_git_object: 03429c6522252c64f3443c99e167df4ac198dfe3 docs/Models/Components/ThrottleControlDto.md: id: 0be83ef81295 last_write_checksum: sha1:6c03382b1253ddba2801bb04021611386c326bb9 pristine_git_object: ac5650fee0da2b0118c889f2e9bba47739c640a4 docs/Models/Components/ThrottleControlDtoType.md: id: 57617f2a2a8c - last_write_checksum: sha1:31ee3f68c6d97703d1a2fcfd75e867b50133e20a - pristine_git_object: b7e597ce04c246f9f69585fda364a8de47e74204 + last_write_checksum: sha1:de49983ca321ba6d8211589f836d572bad7cec4f + pristine_git_object: 475a5aa21af77091b49eda2f76298ab4f0f44ee4 docs/Models/Components/ThrottleControlDtoUnit.md: id: 10caeb630ea4 - last_write_checksum: sha1:475c7e04c2f10760a317cb9815c71916389e96c1 - pristine_git_object: 1a3c5bae8c33aa6bca71b6d060510e2f7605b8fe + last_write_checksum: sha1:ac2d3b348f32de4a9b826118c962b393e206a1a1 + pristine_git_object: d7bd64b7c54847009884a2d28ae1b2b5e0df6005 docs/Models/Components/ThrottleControlsMetadataResponseDto.md: id: fdcd194fb7a5 last_write_checksum: sha1:ffaf2097aa102ea57ea05d8f9d5c58e0cd0a740b pristine_git_object: 700e43b849faaeb451c8d46fe4c3fe62bbb98b6d docs/Models/Components/ThrottleStepResponseDto.md: id: d05a7edc6280 - last_write_checksum: sha1:4f7c2ccbd4cad89ea4398479ef425f9608512022 - pristine_git_object: a973b087e49129eaec32d8676dfe99c2fe72be51 + last_write_checksum: sha1:edd993fcc2e91d05feb019826d0dbde76f3f0c00 + pristine_git_object: bebffeb389be6d900e6a784482501d1ef48486d1 docs/Models/Components/ThrottleStepResponseDtoControlValues.md: id: 4d1e9fc4a37d last_write_checksum: sha1:e12af161de46e0bd1bf4680d56e7c01bba15d76c pristine_git_object: a48473e35f2344fb118b67c550d813eaefdf0c7c docs/Models/Components/ThrottleStepResponseDtoType.md: id: aaf5ab8a51a9 - last_write_checksum: sha1:b6dcae02de8500c614a71bc24a36071f7b23c608 - pristine_git_object: 3d8c0b870bc619f20d2386f04a20bcee14c9f43e + last_write_checksum: sha1:a607a6e12b2af4f78e1c05991501a0ac85f6e02d + pristine_git_object: dfba69604252d03847114e74dbf1fe1e89221d2d docs/Models/Components/ThrottleStepResponseDtoUnit.md: id: b41ec9f5d1c7 - last_write_checksum: sha1:704ccb18310ef1ea0880ac630fa7448c503d94fc - pristine_git_object: e15980e9e3b88b0ce36085ff10ccf3460f5617cc + last_write_checksum: sha1:4e2085b6edf27a2159a274bebf4d36b82d4a856e + pristine_git_object: 38e6542f4081c042ab4137128214de3d9b52ac91 docs/Models/Components/ThrottleStepUpsertDto.md: id: b86d686cba41 last_write_checksum: sha1:5b5bc682487f55ff3f56d88481d1679194c10569 @@ -1540,6 +1874,10 @@ trackedFiles: id: dfc7e1f05374 last_write_checksum: sha1:7664506a55d2bc6cd1df63ebbd0e9c62c2cea8c3 pristine_git_object: a7eb8ed76710be407d26fcdf5ca2072194ed7711 + docs/Models/Components/TimeUnitEnum.md: + id: b159685fa3a4 + last_write_checksum: sha1:3a12fdd3d9e7745be35d93df870ed8ee4c75b66d + pristine_git_object: d0faf4f895f571f868cea08a4b92ad06dd131ccf docs/Models/Components/TimedConfig.md: id: 9ab8b7adcf12 last_write_checksum: sha1:32cfe0c52d9a995a1e9eefa9fa92fbd669f872d5 @@ -1586,16 +1924,16 @@ trackedFiles: pristine_git_object: b3c6ca2a6ebaeb7ef60c775c83572a4abdb793c2 docs/Models/Components/TranslationGroupDtoResourceType.md: id: 1d36fa880341 - last_write_checksum: sha1:5de9bac13fc8bc5f43cf5c05108be2471e57e293 - pristine_git_object: a26dba51040ffdeabc729cc7444761fdaeebd6a7 + last_write_checksum: sha1:d588bcbe024b916ecea9bb6f29b0a377127ef9d9 + pristine_git_object: 9610c6edfce1dee064be86c4feea9621c53f228b docs/Models/Components/TranslationResponseDto.md: id: 308c599220cc last_write_checksum: sha1:f882224e41e3f05029055be10f759cc6f67bf49e pristine_git_object: 77a6beaf11f6d3c182b3e54884923724cedae9cc docs/Models/Components/TranslationResponseDtoResourceType.md: id: ee76c12e4686 - last_write_checksum: sha1:82cbb176f6f45e61479b9e79c743c22c88be17d1 - pristine_git_object: 09eed7d33102d53eb0a4f6b1959f10e737ae716f + last_write_checksum: sha1:9c9eaedd60e4484bad0b8a077f1a41e9fb752276 + pristine_git_object: 6551d8873399c6cf2f169fedf53cbad49b7c1c2f docs/Models/Components/TriggerEventRequestDto.md: id: a489497a4181 last_write_checksum: sha1:06117ca161a6e657f3e66432e9268de7fa023f9a @@ -1610,12 +1948,12 @@ trackedFiles: pristine_git_object: fbe1c721464a996d1c643227b57779f0a05dd591 docs/Models/Components/TriggerEventResponseDto.md: id: 2492077b4e8f - last_write_checksum: sha1:d35d6784ee3c5d59f5d94b35db7eca221aba0e6d - pristine_git_object: af078909af6becc6cbffc65b2aab82c5b60865ec + last_write_checksum: sha1:8d60a07eb008b42fff7e67008d56cdb6dc682b75 + pristine_git_object: 9bd4bfcee76b820968b50b5d38baf30e7b3c48fa docs/Models/Components/TriggerEventResponseDtoStatus.md: id: 9ff766e7b433 - last_write_checksum: sha1:1642d67c4c26d12d507d58aa86df3a24971cf433 - pristine_git_object: 6beb5391a9a235648c79dd7d725325408a478b14 + last_write_checksum: sha1:55267082197c8e8a2893dd9a8472a693a3e9d791 + pristine_git_object: 8c09f94d55b626fa34e103684da7374cc52408fc docs/Models/Components/TriggerEventToAllRequestDto.md: id: 249040acf853 last_write_checksum: sha1:ce23af0e29d88aeb2ca01446e01e05a997dd912a @@ -1646,8 +1984,8 @@ trackedFiles: pristine_git_object: 2b4c9bc6dd622db9373a4bd52555969ba96b34cc docs/Models/Components/TriggerRecipientsTypeEnum.md: id: 2269deaacad6 - last_write_checksum: sha1:a605640ab4db5db7748ca30291f1f69cbbf0eb53 - pristine_git_object: dbc0ab48b885528acc37106839b49f7b06004da7 + last_write_checksum: sha1:c2ed56c37c6bc10a4ef5f326110e63caf88049f0 + pristine_git_object: 0a060e20f440c0356edaecf0485b5c66baf7117f docs/Models/Components/Tuesday.md: id: c10416e49c52 last_write_checksum: sha1:696c03edf01a10e2ef0f85b7b744efc122404451 @@ -1658,32 +1996,36 @@ trackedFiles: pristine_git_object: 9a0674c51e926193cb3a7709bf09ebcbacd55d15 docs/Models/Components/Type.md: id: 78fd88144819 - last_write_checksum: sha1:a8da4052ba0a26b4470449edbf1436fc4b04fa2b - pristine_git_object: b3bd5307afe912dc142d1be44274d4c73fece32a + last_write_checksum: sha1:89eceefa8b14885716323a92a6efe45bb40baa07 + pristine_git_object: 8799b011294ba56d0c46e31f1f403580d80443b3 docs/Models/Components/UiComponentEnum.md: id: 493e50fef773 - last_write_checksum: sha1:f39ffbd86d672dd428b8683b1147d7a6f90510cd - pristine_git_object: 04e77f5515b62f581e3531b4008932334eaa407e + last_write_checksum: sha1:09b2ba35a21b955896c50512542400e109a6e1c6 + pristine_git_object: 0c0ffa826662d9174b4339e4da0252da160eba2f docs/Models/Components/UiSchema.md: id: e4e61a5dbb28 last_write_checksum: sha1:4fbac77400f6e984e5efc87da4e7b981d08ce8cf pristine_git_object: de688172b92a8457f7ac04a19d637f8fcf7093de docs/Models/Components/UiSchemaGroupEnum.md: id: 334d284085e2 - last_write_checksum: sha1:f0985c9a614c3ece600d1782be0836fa404a65e8 - pristine_git_object: 154b8f5dade9ff8718cd0dd03e8b9f77ce1412d6 + last_write_checksum: sha1:d1a418916b5a307e8c52a7c3c0f30adbf661ae2a + pristine_git_object: ff87f7ccd7c2e9103694d86a4401d55ed72c0239 docs/Models/Components/UiSchemaProperty.md: id: f49c4f6cc70b last_write_checksum: sha1:422aeb4a1634cea36e542f51826d05c79a177099 pristine_git_object: 5abcea60c5a0842d50a23a2db43ae458eab6bead docs/Models/Components/Unit.md: id: af6cf2591abe - last_write_checksum: sha1:769f7b994e7080048898815e9ecf6de8a30525fc - pristine_git_object: 8c84bfced53ab7f159993807e8b539721b4cc365 + last_write_checksum: sha1:2baf3ae201ce87d9e547f10298746ca20918d801 + pristine_git_object: 4bfb84b5520ad267b2ad2ce90f7ed7d13c0217b1 docs/Models/Components/UnseenCountResponse.md: id: cf1d7633d750 last_write_checksum: sha1:743ee3410809c280b1856d19b705471fd4089d65 pristine_git_object: 8adb9718b7669530caa6f48ceca283b35a5483ec + docs/Models/Components/UpdateAllSubscriberNotificationsDto.md: + id: 6748e148dd88 + last_write_checksum: sha1:1a370cd9a66d0a42c3a1bf5e411863587b787560 + pristine_git_object: ccb7fe5f664400541e13681071cc5791c81ff323 docs/Models/Components/UpdateChannelConnectionRequestDto.md: id: b82a758f90a1 last_write_checksum: sha1:eca566d0bf033d49c395e806877bbc2c2fe7fcfb @@ -1704,6 +2046,14 @@ trackedFiles: id: 8e505de92270 last_write_checksum: sha1:b1039396114a64048a19d5505d5f6981313a2b15 pristine_git_object: 4fa2e13a0bafd2aa6d02233fd1dbd702cc4b86c2 + docs/Models/Components/UpdateEnvironmentVariableRequestDto.md: + id: 0659dc17457c + last_write_checksum: sha1:564894b788c71ac8373bd482a74e9f943da5d675 + pristine_git_object: 3cce4ec6cddf17b2d3e615e8956a660c7da0e2b1 + docs/Models/Components/UpdateEnvironmentVariableRequestDtoType.md: + id: ff5a51cf06e6 + last_write_checksum: sha1:c6a25f23f94aa8af7c26366e18571b71ec08f79d + pristine_git_object: 13bb207beadb33cf55b518603e5c2b9c82e07163 docs/Models/Components/UpdateIntegrationRequestDto.md: id: 3d6c415ccffb last_write_checksum: sha1:24ed8c3e02fdda8d653fa5fe8a2fec18cb1d0ee9 @@ -1714,8 +2064,8 @@ trackedFiles: pristine_git_object: 2db02a155b7b37e19721d26eda564434bf476dbd docs/Models/Components/UpdateLayoutDto.md: id: c1d6f275986b - last_write_checksum: sha1:756c1de1210af8a81b3c7937268c1aa7f34b8241 - pristine_git_object: 831c934a14f5954adc7a951e6be0fc65373395f8 + last_write_checksum: sha1:622df86da8570e567e7515c2bb228752305ae874 + pristine_git_object: 347c2279479fae7b4fb12c4199408456aa108002 docs/Models/Components/UpdateSubscriberChannelRequestDto.md: id: 9be76c5d50cf last_write_checksum: sha1:4e637af9e5d4dd17ce37a6bd0d2efa42f5765714 @@ -1742,8 +2092,8 @@ trackedFiles: pristine_git_object: 67b5c9d52eed1dbfed7b3086bc6cde62d19ef58d docs/Models/Components/UpdateWorkflowDtoSteps.md: id: ee9757a7bfac - last_write_checksum: sha1:649c8b6925cb83290408e9fcc67edd61c9f72790 - pristine_git_object: fa24b9b789ce88d399ce5cdd49661e97fe7fcc04 + last_write_checksum: sha1:8526274d8f8f2222996daeb712764b569ff4d8b4 + pristine_git_object: a7c5c8402a409f98dcede6c2d000fb362b6e7b68 docs/Models/Components/UpdatedBy.md: id: f2cf360c400f last_write_checksum: sha1:fdd54c72ccf8fe7350af2303138d8d0126aa0391 @@ -1794,8 +2144,8 @@ trackedFiles: pristine_git_object: 985a7200f31707a56638bdeb7d0c88f7a4b38901 docs/Models/Components/WeekDays.md: id: e5f0f44b11ea - last_write_checksum: sha1:18d54d27e160b6f6ab1c36f367cc35013554a66d - pristine_git_object: 3a38a5f1611d034ef2eb4c03bbb670de8c09575d + last_write_checksum: sha1:8181e474370491541645e6355f4f1ea49756ae5f + pristine_git_object: e7fe9cc7b562f3a283ccc41a1d5f6633e24a6811 docs/Models/Components/WeeklySchedule.md: id: 25dbd199548c last_write_checksum: sha1:3eae271ddf9979d469a87154493624c98e5ea69d @@ -1806,8 +2156,8 @@ trackedFiles: pristine_git_object: d0dbd148cf5431caa63be1d52a8d0aed0d1c20c9 docs/Models/Components/WorkflowCreationSourceEnum.md: id: 2f9a96566a36 - last_write_checksum: sha1:caacbc9422c9618510305f473be05fa9dff6ea53 - pristine_git_object: cae733aba173b96b8d884f94d46956afc11c3662 + last_write_checksum: sha1:f492264e36fec1a0a64d11ca04367ac700998dec + pristine_git_object: b3164f9326c65cc6192be9fb4ed8d4e493a14708 docs/Models/Components/WorkflowInfoDto.md: id: 980e9eac213c last_write_checksum: sha1:70bbeef4db9117006539665191a042233bfd0fc5 @@ -1866,20 +2216,20 @@ trackedFiles: pristine_git_object: 803983d05093cd1ac576c8c12d4a33e22c227592 docs/Models/Components/WorkflowResponseDtoSortField.md: id: af36f15269a6 - last_write_checksum: sha1:d750244e8369d881d370a33e462f190d530c1037 - pristine_git_object: b5ce14da6cdbcf10ce5e4362cd28b0d0836e83eb + last_write_checksum: sha1:09368a3edea1ce38c1de2d40b0d1e6d817776928 + pristine_git_object: 84e81b077d739b2bf0eb4a2b65e477ee0174d6c7 docs/Models/Components/WorkflowResponseDtoSteps.md: id: 8c61e0b5e257 - last_write_checksum: sha1:18f1bdc237ac01381286bbb9faf81f705ae28308 - pristine_git_object: 73da4780118feac0e2284ac2d29dec2bffaccf61 + last_write_checksum: sha1:440b4260cd013d89b4aa06eb210c0b480a9785e4 + pristine_git_object: eb0abb04917d78eed928b6af2e2af00945201023 docs/Models/Components/WorkflowResponseDtoUpdatedBy.md: id: 2d31ca5eacd4 last_write_checksum: sha1:6f69dbe2db326d8467eed12c19f1e3f1725abbcd pristine_git_object: af523b80f4edca5c513be443b36eb88193a0b509 docs/Models/Components/WorkflowStatusEnum.md: id: 8403769afd3d - last_write_checksum: sha1:f42e8fdae5fef11550eabab09d11e9f83ad250a5 - pristine_git_object: 0a6b6e5d47d96c615a8c71af9515239ba5bedd23 + last_write_checksum: sha1:90544019285c75aa56a6ab8608da1c4321408f16 + pristine_git_object: 679f4adeecff19857a001e5598334334010606f0 docs/Models/Components/WorkspaceDto.md: id: 9631a0b9704f last_write_checksum: sha1:e8fea91e1ca4f4d522ffa18c5fea3e1965758126 @@ -1920,10 +2270,14 @@ trackedFiles: id: 021c0f8d6a16 last_write_checksum: sha1:f6c1e1108d606679946cfadcf803d7d2b5f46512 pristine_git_object: 9ca3a18c4aab75ada1ce423813226b663350bdaa + docs/Models/Requests/ActionType.md: + id: cdc8180f0584 + last_write_checksum: sha1:388279ff6252d6f2438acafd96ae875c00ec7204 + pristine_git_object: b2d012d64f734261950ed92e2fc10ecb0ccaf4d9 docs/Models/Requests/Channel.md: id: 2e57a6b91498 - last_write_checksum: sha1:0ddc233111e6ddd6e185622278a3b03535f8dba7 - pristine_git_object: 18785c7f4c7d7cc7e6ae36c2e5bb7e3738f2fda3 + last_write_checksum: sha1:f14a14f7a31fa4e6fc60ac494099f37120df8569 + pristine_git_object: 1f11e1542b13909ac42ac980916ebef635f821bd docs/Models/Requests/ChannelConnectionsControllerCreateChannelConnectionRequest.md: id: 783a4713de02 last_write_checksum: sha1:16d78f603c015fec789eb80dc6b602152a6c5fb9 @@ -1950,8 +2304,8 @@ trackedFiles: pristine_git_object: 90482eb796412c9eb83328fa0f954c343072c0de docs/Models/Requests/ChannelConnectionsControllerListChannelConnectionsQueryParamOrderDirection.md: id: ef9b76464955 - last_write_checksum: sha1:9128b7aff07cb42bf58b0de46259936cde9f6312 - pristine_git_object: 4b6ba20e3cce5888420f040810b1ab40def437a8 + last_write_checksum: sha1:25ceadb962f0619267bda713cb001e94005286c6 + pristine_git_object: b1fe488578280a1a2fe96187e6ed1830adda7c14 docs/Models/Requests/ChannelConnectionsControllerListChannelConnectionsRequest.md: id: a6dde14b5284 last_write_checksum: sha1:7b8e05d58cba0a50d302dba785505a8575b747f9 @@ -1998,8 +2352,8 @@ trackedFiles: pristine_git_object: 7c62a2048631cde2fb2449240750f3027b217d88 docs/Models/Requests/ChannelEndpointsControllerListChannelEndpointsQueryParamOrderDirection.md: id: ccdbe843f44d - last_write_checksum: sha1:5868fca9b62d742eb937261898d887b9e2ca47b5 - pristine_git_object: d016a3611d63738310708028d2386e025fefd5a0 + last_write_checksum: sha1:4d0f2a177815fc14e4a577727b453fa3bae794c1 + pristine_git_object: 1531ed79154231afb869a0c846bca1602cb54dea docs/Models/Requests/ChannelEndpointsControllerListChannelEndpointsRequest.md: id: 54d3ecafb128 last_write_checksum: sha1:2546ba5fb96f4c9db3b0b2ecee8352c4b9338b67 @@ -2058,8 +2412,64 @@ trackedFiles: pristine_git_object: d7a4ca84ea8c0cfacd6bec9da5c1c0d3007e1ee2 docs/Models/Requests/Criticality.md: id: af0af3c88078 - last_write_checksum: sha1:2c468175c2e4d39cb7d8206400558b8e85120761 - pristine_git_object: b6be648fb0735bcfac5bea6c970d053ee082eead + last_write_checksum: sha1:526a693613c7cc8da490336a9bc5de272b45de0d + pristine_git_object: 81c0378eab531686816c6be61c969b4dfc4e52ae + docs/Models/Requests/EnvironmentVariablesControllerCreateEnvironmentVariableRequest.md: + id: 2cf7393c29cb + last_write_checksum: sha1:c3b960d68126a614c1e033448f320662f2c30f26 + pristine_git_object: 1bb79c372ee55e8465140b0694800c3cb7c94ca9 + docs/Models/Requests/EnvironmentVariablesControllerCreateEnvironmentVariableResponse.md: + id: 3d3cac0dc0c6 + last_write_checksum: sha1:e6be393415f6368c777748d8507ba35b464a7993 + pristine_git_object: ec530ff690cc954242231bde35a6802d693da67b + docs/Models/Requests/EnvironmentVariablesControllerDeleteEnvironmentVariableRequest.md: + id: 8d575314da58 + last_write_checksum: sha1:ed9f94508d7ac8e845972f3e82e5eb6d3ba5f361 + pristine_git_object: 4534584c6d995835254eb9af498e7fcc97f50f0d + docs/Models/Requests/EnvironmentVariablesControllerDeleteEnvironmentVariableResponse.md: + id: 03277381b935 + last_write_checksum: sha1:803dbda36a10634785c65cab37fb936ca12302c5 + pristine_git_object: 351ca2fef108a449381a4b69a222e498d834ab79 + docs/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableRequest.md: + id: 7cb7edc68055 + last_write_checksum: sha1:346f66862d724748b75202294f21dd647375f89c + pristine_git_object: 4aa40c32b907a569ae6406092d5841910e57d726 + docs/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableResponse.md: + id: 634a9432c390 + last_write_checksum: sha1:9ef8cc7728932b69d8405ad434fed385416bea28 + pristine_git_object: 96ac89d02d6c7131e1c1a34f23718f476e606a56 + docs/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableUsageRequest.md: + id: 4bc450038028 + last_write_checksum: sha1:68f93638653b3baa0db7c269dbd7ebe760327fd0 + pristine_git_object: 12f360577186a2afa974ebfe3c7b981cddb2772c + docs/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableUsageResponse.md: + id: 1ce8dd871f68 + last_write_checksum: sha1:a96064106e6dfe797670e22e88ba989f9f3536e0 + pristine_git_object: f79c411b413135f8636416030ef890d43438f7ed + docs/Models/Requests/EnvironmentVariablesControllerListEnvironmentVariablesRequest.md: + id: e84aed10f4d5 + last_write_checksum: sha1:07beab6568b59971e99c7512527d216cb9188fac + pristine_git_object: fd7904ed3871c9b7c8506d54a7a32f3a3082c75a + docs/Models/Requests/EnvironmentVariablesControllerListEnvironmentVariablesResponse.md: + id: 915185fc0eab + last_write_checksum: sha1:21c0fbdcfe771d6c126f867da8aa50c311f0c94c + pristine_git_object: 5eebfd44871db2f168c6886ccd0775f1ac53221a + docs/Models/Requests/EnvironmentVariablesControllerUpdateEnvironmentVariableRequest.md: + id: 2adc248e09e8 + last_write_checksum: sha1:894e2578178695c160ea89acdfb256e81f8ecc15 + pristine_git_object: a135f715944ee6da2756b715c8dc30b83f8fbae7 + docs/Models/Requests/EnvironmentVariablesControllerUpdateEnvironmentVariableResponse.md: + id: e94342dec994 + last_write_checksum: sha1:b2dc2d8c6d11281699d146114108a8d559ba86ee + pristine_git_object: 29aa5249f017c2e10a71ee48cdef09d790ed22ab + docs/Models/Requests/EnvironmentsControllerDiffEnvironmentRequest.md: + id: c0627c00dee0 + last_write_checksum: sha1:2423d28de10a96114144d92295a96df18c36e3f2 + pristine_git_object: 1f32a883d2cc522474de374847ef333eee9bb3bf + docs/Models/Requests/EnvironmentsControllerDiffEnvironmentResponse.md: + id: 16b94f75e088 + last_write_checksum: sha1:41d441585564455403e7f7320c5944b48b65d4c1 + pristine_git_object: 12a618fd09d95a3817e3f4f09a194920c01ce8e0 docs/Models/Requests/EnvironmentsControllerGetEnvironmentTagsRequest.md: id: 4085cc5bcf5b last_write_checksum: sha1:21d0842729f3a0210c58970dbc49480edf4bf031 @@ -2068,6 +2478,14 @@ trackedFiles: id: 27fb5dbf9e8e last_write_checksum: sha1:36ccb56467539d3b951e623f11fc66e8208c7112 pristine_git_object: 8cbfb108ab2b60c589b1d4aa49b398600e7442bf + docs/Models/Requests/EnvironmentsControllerPublishEnvironmentRequest.md: + id: 8dfcda55420b + last_write_checksum: sha1:245eafadf31a70e12f291654e8e55e04ec5473a0 + pristine_git_object: 96cb9d1eabdee5f35edb2490923367bb205c83a8 + docs/Models/Requests/EnvironmentsControllerPublishEnvironmentResponse.md: + id: f80d36182689 + last_write_checksum: sha1:7c4d4fb396c3c2209b3037a87e4a5409d44f846f + pristine_git_object: 5c41b672fc3bbe0329209cea1775b7d299fed829 docs/Models/Requests/EnvironmentsControllerV1CreateEnvironmentRequest.md: id: cdadcf46495f last_write_checksum: sha1:e4bdb7e8d299228d1a0b8a8faf10d0bdfce373e2 @@ -2286,8 +2704,8 @@ trackedFiles: pristine_git_object: 0e12e02232f76d07f8137ce41251dfffb976d96f docs/Models/Requests/MessagesControllerDeleteMessagesByTransactionIdQueryParamChannel.md: id: 69d2cc28e77d - last_write_checksum: sha1:718a120cb6eec072855e6daf5848b2548b77c7c2 - pristine_git_object: 431084ac4e2f5551b8185c328ea6796dc7ee838c + last_write_checksum: sha1:1dfa2537a652491e1466a0299043dd6100eb0385 + pristine_git_object: c49e5360df29b3bacb4a7aca1749baf78bae3214 docs/Models/Requests/MessagesControllerDeleteMessagesByTransactionIdRequest.md: id: ed2a7460c472 last_write_checksum: sha1:89cbff3f7e96579c1862ecdcc55a828785cc997d @@ -2322,32 +2740,72 @@ trackedFiles: pristine_git_object: b5c64ab60848b2e34aad49de3b008ca71ea41bea docs/Models/Requests/OrderDirection.md: id: 0442115cb1de - last_write_checksum: sha1:2a225a37b669405e30fc4d8cb29ed528d97956aa - pristine_git_object: 9253273906abcfbbc6536f4f86fa0f800d9a86f2 + last_write_checksum: sha1:32f99fb614b87499a6255e926b7880c74fff7624 + pristine_git_object: 89a7d8822841fa619f3b2d338ed23b9a96541ab9 + docs/Models/Requests/PathParamActionType.md: + id: 515f1f158ff0 + last_write_checksum: sha1:53c2285775c0d5a1b921c33c86d701d8af20005d + pristine_git_object: 044540a6ca4ab89876d8ff9294e18d30e84fa3cb docs/Models/Requests/PathParamResourceType.md: id: 2dadfcc92743 - last_write_checksum: sha1:1c75c64cef9af99fc4d88749bb8e43d770f44ae8 - pristine_git_object: abd785dfa36b506eef2d2a58f85b710ee8529a95 + last_write_checksum: sha1:6c8c6364b5b9117c42cdf086b845bd94983e0c60 + pristine_git_object: b9b9b7b5357e54a12300bd06af0f5b6ed79ebdda docs/Models/Requests/QueryParamChannel.md: id: c58b193b1a61 - last_write_checksum: sha1:4ee23595ec70449baf9890f0f55cbc477d3cac53 - pristine_git_object: c569799957f8f638b15f2930940c2440c0a54bd0 + last_write_checksum: sha1:b9bfba012e35ccbdc5a5f0c7ccba2e86c91f9104 + pristine_git_object: 2b9e500a426da0db2fe097c6dd1b5c3f7d4db955 docs/Models/Requests/QueryParamOrderDirection.md: id: 168111fdeedd - last_write_checksum: sha1:e57defd0a90f9e69c33a8e0ba449464e55f40344 - pristine_git_object: f39516d62c8d9c32adc0aabf819e5d67a470dd82 + last_write_checksum: sha1:30cecf51515c7681b0063da4df67f5fb711492cf + pristine_git_object: 7143e42243ad1bfc65598e0cc10127d3f1267bfc docs/Models/Requests/ResourceType.md: id: 7c9f6664bc3a - last_write_checksum: sha1:0cb18b082d1a00974a771fec237f5aa323fe9271 - pristine_git_object: 77036ae7c3966e3dfeb18d42880a0499d77422e7 + last_write_checksum: sha1:885ad83787dd91543af745a48f9eb870fdc739e3 + pristine_git_object: 9b349e9ea7ed10c37b122f5642bce16fa16ecd37 + docs/Models/Requests/Severity.md: + id: 09321b53f4d6 + last_write_checksum: sha1:712237d440db415a10ed1d377fee6a9090217cc8 + pristine_git_object: d897e80c8e9f6f70d103c49a5726ff8fd99e08e0 + docs/Models/Requests/SubscribersControllerArchiveAllNotificationsRequest.md: + id: 9590fcf5522a + last_write_checksum: sha1:650ceb702b7bbe4423936ac9803cf7da6a5f1f0b + pristine_git_object: 1bed51abd7c422949280a22ac5e79fb802840256 + docs/Models/Requests/SubscribersControllerArchiveAllNotificationsResponse.md: + id: cb4ae0e7776e + last_write_checksum: sha1:0ec39097f8b73ecb46f4563f7c00c4fc2a0bfb05 + pristine_git_object: 57f3f119489cd57bc2c6d18305f3d0e8485d65f3 + docs/Models/Requests/SubscribersControllerArchiveAllReadNotificationsRequest.md: + id: b8a8fe2a6650 + last_write_checksum: sha1:fe477997ee4ee6f4ea26c7b9c4c53dabd4b87393 + pristine_git_object: 83400ce6a8db9927487cad9e1ce276844b7697d5 + docs/Models/Requests/SubscribersControllerArchiveAllReadNotificationsResponse.md: + id: dc4827081c9a + last_write_checksum: sha1:5dccd089664e33ec0f646997173e96f973287207 + pristine_git_object: d64142bbd3d70ff48e2152c2cc8515e33b031db2 + docs/Models/Requests/SubscribersControllerArchiveNotificationRequest.md: + id: 0a46b5fb9fcb + last_write_checksum: sha1:e536cbb961d89e99e8ebf327fdead83fb0db7862 + pristine_git_object: 944b8083494c062adf04874cb1181284d613d3b4 + docs/Models/Requests/SubscribersControllerArchiveNotificationResponse.md: + id: 87cd6978747f + last_write_checksum: sha1:4be073ed9081632f9330eee15b4072162dc2e11c + pristine_git_object: f4568a471f760a46efef36d6388f07618d609ca3 docs/Models/Requests/SubscribersControllerBulkUpdateSubscriberPreferencesRequest.md: id: 17cd5c8807f8 - last_write_checksum: sha1:2e06d929ebac4d7ab6f62cc83fb4a37baaf9438a - pristine_git_object: 633e271e23a11cacd8dc648523c693f876a44796 + last_write_checksum: sha1:77f0a1209d3e4e9530d60a785fb4de4807968645 + pristine_git_object: c3b1a9e16b76a729610e7a5ac9f6f626d87e68b2 docs/Models/Requests/SubscribersControllerBulkUpdateSubscriberPreferencesResponse.md: id: e2cfd55cd159 last_write_checksum: sha1:13ef00f69c0d806ced869e58966a506547d5f477 pristine_git_object: ca2f9e8deef92605418baed3fab992eb881e5aef + docs/Models/Requests/SubscribersControllerCompleteNotificationActionRequest.md: + id: 7850e8778969 + last_write_checksum: sha1:23b23161f11bb597c08c287da720d493e1dc2632 + pristine_git_object: ee4ec741418a1d8253f1a7fdf4778451b9b76a26 + docs/Models/Requests/SubscribersControllerCompleteNotificationActionResponse.md: + id: 5eaed22e339a + last_write_checksum: sha1:25dc5c2da7648d3674ffe3478cd3e61421bc116f + pristine_git_object: 0e8bdf80ac2f726452c744cffaef17a6886841bc docs/Models/Requests/SubscribersControllerCreateSubscriberRequest.md: id: c0657be50831 last_write_checksum: sha1:104eeea36366644322e650e1a00af3a9aceeb1d7 @@ -2356,26 +2814,58 @@ trackedFiles: id: 6fa2a5dbd887 last_write_checksum: sha1:0edf2f84c12c011bc5e8db4561eb84a1f13209ef pristine_git_object: 7d012f8f03f47df10e6db5ea9e23b4d23abbef95 + docs/Models/Requests/SubscribersControllerDeleteAllNotificationsRequest.md: + id: 25dfa0443014 + last_write_checksum: sha1:a8bf62a4f2cd048633a9e4d8f5bad661b21d60b2 + pristine_git_object: 24248478afd8c24dd3f60509edea136228ada391 + docs/Models/Requests/SubscribersControllerDeleteAllNotificationsResponse.md: + id: 636d7384dfe6 + last_write_checksum: sha1:84c2b8117cfb64a595b1086e6df56195fe2908e6 + pristine_git_object: aec474cd1795dfee7af20f4a6e36f3a4b63799b6 + docs/Models/Requests/SubscribersControllerDeleteNotificationRequest.md: + id: dd79918aaf41 + last_write_checksum: sha1:5a677014a08b154881b088055c98b44ce623dda4 + pristine_git_object: 0cffd59fb64e65b88f28e1acf362a97b6f05dc65 + docs/Models/Requests/SubscribersControllerDeleteNotificationResponse.md: + id: bfd43c0f362d + last_write_checksum: sha1:9ea7afe0e715ce41c0efa1e46e2a13b3ecde56f0 + pristine_git_object: 3e9ed92410a14abfa88ae58fe09cb0caad853ea4 + docs/Models/Requests/SubscribersControllerGetSubscriberNotificationsCountRequest.md: + id: 0273c15e2970 + last_write_checksum: sha1:292e893f47a5260f1206949ffa15e96e3e8f050e + pristine_git_object: 37e278b7039d16008517445fe04c7c26997091dd + docs/Models/Requests/SubscribersControllerGetSubscriberNotificationsCountResponse.md: + id: 2164c0e8724a + last_write_checksum: sha1:81cf3932caaf03cfbf26a294c99c5821cdaabf5a + pristine_git_object: 2840b34855ff945349818872790381bc9d2cb366 + docs/Models/Requests/SubscribersControllerGetSubscriberNotificationsRequest.md: + id: 4e2ad3ef27bc + last_write_checksum: sha1:d2027881bdc5425cc09fa5481992dc5429023d53 + pristine_git_object: ee94661caa419df5adc6dd4f80dc9c3d6d65e924 + docs/Models/Requests/SubscribersControllerGetSubscriberNotificationsResponse.md: + id: 985640b99a53 + last_write_checksum: sha1:9904451f34bef3a1c6005b7dabe64480a6d0e28b + pristine_git_object: 4dfb1e13a789351381ff99d9db2676bbeca8e2ff docs/Models/Requests/SubscribersControllerGetSubscriberPreferencesRequest.md: id: 20e214cae390 - last_write_checksum: sha1:150213050d7ca8195194249bbe9e135ca6a70178 - pristine_git_object: a0f8cab9acc292479f2e288cc6ecab749610a2ca + last_write_checksum: sha1:74af51d9d3bd6c30ee8b40d6061c2130b3dd47ef + pristine_git_object: 6154008c4542c22d4de0c357918e0c01139da8b3 docs/Models/Requests/SubscribersControllerGetSubscriberPreferencesResponse.md: id: 89ab9993c769 last_write_checksum: sha1:712a7126f98cb06c2ae3625d1cf3be1763aed83f pristine_git_object: 62e43097fb472e45eba252cd430d52153a97281a docs/Models/Requests/SubscribersControllerGetSubscriberRequest.md: id: 64095c1db3f9 - last_write_checksum: sha1:f882a420b5f2259318406904f35e664060bbf3a4 - pristine_git_object: f9ea3d587cbd6361c9181fd87a1c20f7503cc3a0 + last_write_checksum: sha1:d78e4e3ab22560b0918c6028cbe962b613814483 + pristine_git_object: edfb0d87badab0a1954874b6c68c6dc41c42d06b docs/Models/Requests/SubscribersControllerGetSubscriberResponse.md: id: 01021c869bda last_write_checksum: sha1:5e8fa9e42ad4fcf36eadad4ba33c5ca918859d07 pristine_git_object: ee76e643c820f152f3cd1f27f64da3fe8e40c030 docs/Models/Requests/SubscribersControllerListSubscriberTopicsQueryParamOrderDirection.md: id: f100ed13a587 - last_write_checksum: sha1:c715d192f95e195ca26a9844d7df5b368c219c3e - pristine_git_object: 92ac5cffee4202c8c6f1b15ace3a130ee0a83b03 + last_write_checksum: sha1:daab6c2800dbe340eff4cb4206fef7d4038ff8a4 + pristine_git_object: aefceb8d72e7a5d48e6b3e03ebe1c0afc561b9d1 docs/Models/Requests/SubscribersControllerListSubscriberTopicsRequest.md: id: b0d8738d4a53 last_write_checksum: sha1:c2a2a23a87dc9a29e2668cefa2fa331971f3f4b8 @@ -2384,22 +2874,62 @@ trackedFiles: id: f4c1eddb6cba last_write_checksum: sha1:7b8a4ce4425995cc060e00294d5569f2ed22b8fc pristine_git_object: 4e0829c6b6c2c06f4ceba01e448e30e892355b59 + docs/Models/Requests/SubscribersControllerMarkAllNotificationsAsReadRequest.md: + id: f87b881f00b3 + last_write_checksum: sha1:1fff0ea5e86af5463d6307eef79e9013f5130d7a + pristine_git_object: 91e4f39c860c73f0f495d77b95fe4c58b99ce37d + docs/Models/Requests/SubscribersControllerMarkAllNotificationsAsReadResponse.md: + id: dd471eefe40b + last_write_checksum: sha1:eb5ebd235be32f7141b45b361fdd0f5a4d1dc892 + pristine_git_object: fc8813fd4467e82232d6b4a933b5bf68e9cfcbc3 + docs/Models/Requests/SubscribersControllerMarkNotificationAsReadRequest.md: + id: 844a5fb22962 + last_write_checksum: sha1:f9bc130a1cc07693afcf750a9383fb529c64b835 + pristine_git_object: abdbbd49e6829712a646ff6b0e051d4fcea2aed9 + docs/Models/Requests/SubscribersControllerMarkNotificationAsReadResponse.md: + id: e0dabbec0f6c + last_write_checksum: sha1:7c55b6a2b42078167626ec51961e7a30f4db8f03 + pristine_git_object: 38917bbed6bf13623302da1c2fc959a8575bcac4 + docs/Models/Requests/SubscribersControllerMarkNotificationAsUnreadRequest.md: + id: bb7efbe553c1 + last_write_checksum: sha1:52dda11fd518720dbd35a40d0aa0732cba145a4a + pristine_git_object: 8d450b0c517e8ece05de60a1c8e2bcfaeddb0153 + docs/Models/Requests/SubscribersControllerMarkNotificationAsUnreadResponse.md: + id: d7a101013cf5 + last_write_checksum: sha1:99346bf444a77143292a75020db38904be3e18e3 + pristine_git_object: c7ed4f8a50c4074816efdb5259da9bb4072e27b3 + docs/Models/Requests/SubscribersControllerMarkNotificationsAsSeenRequest.md: + id: 83bc9303a1aa + last_write_checksum: sha1:88f1d6525d9f141da2282156abaf31f567b3937a + pristine_git_object: 3076afe9ac615b6199b8f85213bff9f95caac44c + docs/Models/Requests/SubscribersControllerMarkNotificationsAsSeenResponse.md: + id: 26c651dd00db + last_write_checksum: sha1:88900e99c54be1d8b218dbc40b372d3e3739eb1c + pristine_git_object: 306a78da113dacac1c61bcb4846b33438892a4eb docs/Models/Requests/SubscribersControllerPatchSubscriberRequest.md: id: cfcf9f63bfb4 - last_write_checksum: sha1:37655f0b4c862f5ab41221932cc659854f4959bb - pristine_git_object: 162c7971861f9d51b7081cf7bf665f444b05611b + last_write_checksum: sha1:2cb6ee2e36c0dfa02145acb4ac51af17acfeedb3 + pristine_git_object: bf14d43e15df09b094394fa99194a2393a1cda0e docs/Models/Requests/SubscribersControllerPatchSubscriberResponse.md: id: c9281b5c6283 last_write_checksum: sha1:7322261b7fb224bb2fdf405b86c6de382f3c2f85 pristine_git_object: e0143c9513a3f379281f7de9dff1a503e454f9d6 docs/Models/Requests/SubscribersControllerRemoveSubscriberRequest.md: id: bebfb49bbdb8 - last_write_checksum: sha1:765db0a26ccac7f6f7d1b699b6f4abb5dae4e598 - pristine_git_object: 902524363c46a1981e71009339dc5b6153e2586e + last_write_checksum: sha1:88fc443059f6a6c9ebcb4d8e8b0af1c6e31d9ad7 + pristine_git_object: c43062cbce4a50a127f266f854145442e7cff962 docs/Models/Requests/SubscribersControllerRemoveSubscriberResponse.md: id: 7460e31b810b last_write_checksum: sha1:44c126a03045da6ca981fab439aad6d70a603344 pristine_git_object: c1fd0b6f2b7f9cbcca39cdea887b0b2cf9cbb2e1 + docs/Models/Requests/SubscribersControllerRevertNotificationActionRequest.md: + id: 00ec8692e72e + last_write_checksum: sha1:0ceb0f9a9ca55e85e1603efd111daccfae51a51e + pristine_git_object: 7080696e8585af13ed97c1aa3941f60d8fcef5df + docs/Models/Requests/SubscribersControllerRevertNotificationActionResponse.md: + id: dce16741aa65 + last_write_checksum: sha1:f36557d1efe0b6b105823c9b98a38fb6dfdf98da + pristine_git_object: 6433c308872c8d311424349eff6dc6581d13e1a4 docs/Models/Requests/SubscribersControllerSearchSubscribersRequest.md: id: bf55ad94ebb8 last_write_checksum: sha1:be1973c6d0b015b4a9f61873175182ca7431c692 @@ -2408,10 +2938,34 @@ trackedFiles: id: 23f22bc751ee last_write_checksum: sha1:1164dc3284b839b397ad74f2af746da8c178f482 pristine_git_object: 950201c104b755b33ad1a0a3b4649afd93e01cb0 + docs/Models/Requests/SubscribersControllerSnoozeNotificationRequest.md: + id: d2a67b077c6e + last_write_checksum: sha1:77078cb086d78beba13b9d5e5a04834e26899ec5 + pristine_git_object: 571d16445ebaf6d65c992bea24c910e5c42124b7 + docs/Models/Requests/SubscribersControllerSnoozeNotificationResponse.md: + id: 6b5644422f0a + last_write_checksum: sha1:70ba57ec0cd3e6874b4c1dbc663c4e2aafaa9b95 + pristine_git_object: c6325cfbafd774bc8a0773340766962ff579ed78 + docs/Models/Requests/SubscribersControllerUnarchiveNotificationRequest.md: + id: 10c581530a68 + last_write_checksum: sha1:19acfadfea74bd253a44f618c8e3ac7978215833 + pristine_git_object: 1fa62c013919bfb4af09be4f38638a678d90f298 + docs/Models/Requests/SubscribersControllerUnarchiveNotificationResponse.md: + id: 9c31fdb3db23 + last_write_checksum: sha1:133e39c374e312b01764a978cb01a291d252f01f + pristine_git_object: 3326e718765cc4f25ac2f8d1c883c58ef99df44f + docs/Models/Requests/SubscribersControllerUnsnoozeNotificationRequest.md: + id: 4690bb92e4d1 + last_write_checksum: sha1:0abb5eacfe375212d69ea028e90298ef15363331 + pristine_git_object: 3e77ca42f9724efbf700f5c804d87651c0849feb + docs/Models/Requests/SubscribersControllerUnsnoozeNotificationResponse.md: + id: 7b0740a9c43f + last_write_checksum: sha1:d671e6bf58a5907346ba62b6ee3d61e7b889a9db + pristine_git_object: d52a2c4b2e9b2118c61324c0949f0859dbed69d7 docs/Models/Requests/SubscribersControllerUpdateSubscriberPreferencesRequest.md: id: 88b5170843e8 - last_write_checksum: sha1:2ffe5f7a7362d62221a451990651a29ac9c2d429 - pristine_git_object: ebc47062b9ce9ad5457b85578162400fde9554fd + last_write_checksum: sha1:1700c58b75c38c6ab5611da469fb0b485ac6d7ed + pristine_git_object: 4c47d18cf8525207b18f87cb7c13b8b7be5c37f0 docs/Models/Requests/SubscribersControllerUpdateSubscriberPreferencesResponse.md: id: 7301eaaeea23 last_write_checksum: sha1:84e0db15a074f59e6e147a8f19759bad41f7bb55 @@ -2538,8 +3092,8 @@ trackedFiles: pristine_git_object: 28f2782ed1f6fab00aa1329d67847f258ec06405 docs/Models/Requests/TopicsControllerListTopicSubscriptionsQueryParamOrderDirection.md: id: f69a3ea02fb2 - last_write_checksum: sha1:c4e269bcb8d291b8501faf7b33f2a5abbb8fd93f - pristine_git_object: 315a9b308467ad6ddfa723fcdad69a762a575b64 + last_write_checksum: sha1:216be2b73901599dae873aea3520be79dcb328cd + pristine_git_object: ba50d95ea48a37c21fefe234c0deab1a16a21f8c docs/Models/Requests/TopicsControllerListTopicSubscriptionsRequest.md: id: 37a042bddfe4 last_write_checksum: sha1:729240c2c1f0a11a3160634ad3851c30fa6dd538 @@ -2550,8 +3104,8 @@ trackedFiles: pristine_git_object: a659a2bebe3d5cf22777891cea51683819a5837f docs/Models/Requests/TopicsControllerListTopicsQueryParamOrderDirection.md: id: 425624513b46 - last_write_checksum: sha1:5654c2ea56f8cd8ea61c2f544c397956b65eb9ba - pristine_git_object: 6bb880a64c86a236e4970da58d80332253222103 + last_write_checksum: sha1:6b1ed224dd6331ef584589a6e0f39ac7aeda95e2 + pristine_git_object: b1e8e4eb27d8bc25e32b28ff5142c45688dd2fad docs/Models/Requests/TopicsControllerListTopicsRequest.md: id: 6040f2796bca last_write_checksum: sha1:cdacc51bbb2bb661b39708b320cda7286ebe913c @@ -2602,8 +3156,8 @@ trackedFiles: pristine_git_object: 6531c4e52d8f1e48046ca4ab1a0c8a22704ee978 docs/Models/Requests/TranslationControllerDeleteTranslationEndpointPathParamResourceType.md: id: 750ef35d8a75 - last_write_checksum: sha1:6ac854b0c1b5f83f7d30619283c2a8fa0cb1c513 - pristine_git_object: c567f0824e5b37f8111d207d47876bdab321b94f + last_write_checksum: sha1:a0133005ea33bd47c3b1116510836390303df003 + pristine_git_object: 6af0f86c72ed4e51855080dad78b1fd73ef307ba docs/Models/Requests/TranslationControllerDeleteTranslationEndpointRequest.md: id: 074fba388c87 last_write_checksum: sha1:1007f3760a9484e406f32b89e6ff1ec066403fcb @@ -2614,8 +3168,8 @@ trackedFiles: pristine_git_object: a3247fb293b1f73060f2e9c7ae3289e8a9a2cba6 docs/Models/Requests/TranslationControllerDeleteTranslationGroupEndpointPathParamResourceType.md: id: c7cb442941d3 - last_write_checksum: sha1:9d16a67236fc3b25e2b7a0828710aa463117a7de - pristine_git_object: c800e7dec13e6ce66a8dfd34346b1652528c4445 + last_write_checksum: sha1:7ead8f0cd370bcb7448a4d9e9b29ccd425774ab8 + pristine_git_object: 9a8ae3a339fcf66dc7bab55d8654e835859cd3c6 docs/Models/Requests/TranslationControllerDeleteTranslationGroupEndpointRequest.md: id: 19ab08e2a6f1 last_write_checksum: sha1:a65634ec85dcba6b988f427975cc2f0d100537c6 @@ -2642,8 +3196,8 @@ trackedFiles: pristine_git_object: 692b9ca7b0ae6038eca329f82f3180edfeb42538 docs/Models/Requests/TranslationControllerGetTranslationGroupEndpointPathParamResourceType.md: id: f7fc0a56c06f - last_write_checksum: sha1:9d11e91f064aca7684cb2ecd6c347579a3932b4e - pristine_git_object: 10a5e033ed31c862eac009ef59ac8dfed8e9f932 + last_write_checksum: sha1:3dc5439e2e0315108b161b56ad5f0b22ac99f46e + pristine_git_object: 9496c36b189fc3a02c0130508fa0f2e1ce529a4b docs/Models/Requests/TranslationControllerGetTranslationGroupEndpointRequest.md: id: 5ae55f0c1831 last_write_checksum: sha1:ff6a5cda0128eb43be3812fa5b02827ef26d15d6 @@ -2692,6 +3246,14 @@ trackedFiles: id: b471d646cdac last_write_checksum: sha1:a419488a2cf603739ece3464bb5ee970454ef02c pristine_git_object: 792e06b756d3a8eb7b6a31ad2b68a4c24088bfc7 + docs/Models/Requests/WorkflowControllerGeneratePreviewRequest.md: + id: a532e12b95d3 + last_write_checksum: sha1:834ee216686e63904967b925bc2a360a9d27bf74 + pristine_git_object: 8c98ddcf9279b1c25620439e089b31c5a134e2ef + docs/Models/Requests/WorkflowControllerGeneratePreviewResponse.md: + id: 32819a0dffb1 + last_write_checksum: sha1:963b0117719a4168702ec5cffe758301142b652a + pristine_git_object: 0b36d7986a8372a117ac9889491082399596b85a docs/Models/Requests/WorkflowControllerGetWorkflowRequest.md: id: dd3a79a5aaec last_write_checksum: sha1:9fc0574ecca4cb757147d6404dd048a2d07eb15e @@ -2750,8 +3312,8 @@ trackedFiles: pristine_git_object: 5ecb3ef15cea8ecb899568a5a4c0bd5201455a17 docs/sdks/activity/README.md: id: f6e8241fca80 - last_write_checksum: sha1:d8f2bfeea2fe2fcb4334d4a33a30120193830413 - pristine_git_object: ebeb7e5436d530cbf62e27bc4e292e2472ea79ae + last_write_checksum: sha1:d87afad2cf2602278e06c48e49c36132d9bd4d4d + pristine_git_object: 62af29d73da4360c9b6b01a70c2866886f12c992 docs/sdks/channelconnections/README.md: id: b38f46c2a1f7 last_write_checksum: sha1:d9e28a6a56cf17330f0a6e723d4f0fb298c387bb @@ -2766,8 +3328,12 @@ trackedFiles: pristine_git_object: 38a6e9a3b7521b2d3b4ebf9221872e95a9ae88e9 docs/sdks/environments/README.md: id: d15fc95481b6 - last_write_checksum: sha1:7f547bb54befa6f34d1cf5d7b362276b8f124111 - pristine_git_object: 08ed7118814d2a763f103d2457fc3a05d4455d5c + last_write_checksum: sha1:3fec7606123392515ed6383d3039224c8fac37ea + pristine_git_object: 7cd64353079b205608f5e675daed241f0ed9371e + docs/sdks/environmentvariables/README.md: + id: 2a863cad4ffa + last_write_checksum: sha1:11ca4304d134050cf87356c2b86724829510d631 + pristine_git_object: 591eff300a2d01f9f03fc67b8150698c63fbaa38 docs/sdks/groups/README.md: id: 3336939a71e4 last_write_checksum: sha1:7b4fd3f3304a049b7f2dd48c0b701ffe879ff0a9 @@ -2796,22 +3362,26 @@ trackedFiles: id: b25d764fd1ca last_write_checksum: sha1:d276aabb7f9bd05533edeebe5a408d2215ebfaaa pristine_git_object: cd81bfec1c5a6dd54f2a8caaa7778f62cf1fb7d0 + docs/sdks/novunotifications/README.md: + id: 9d94ce44af2e + last_write_checksum: sha1:07252b19277127da413e22c7303b3c7fff736b02 + pristine_git_object: 3326a17a39bcd66a44e72debfa2c3d099d413501 docs/sdks/novutopics/README.md: id: e4d164b0f8b9 last_write_checksum: sha1:78ecd1f0486167f45f0e31eae44496701bc818d7 pristine_git_object: c1a904dbb4039ef4e0a0dc1373daa19d773a7b1c docs/sdks/preferences/README.md: id: 6a64506aa707 - last_write_checksum: sha1:8826351c4167966012785f075f8507037d87a8ca - pristine_git_object: 8aadafc016e5f03ca8f44a74c948a84aa6e7672a + last_write_checksum: sha1:0fe630b013ae01e5b93b80dcb205d64de5ed2e68 + pristine_git_object: 8209de9738ef19b6fa4d62bc747707767d157b93 docs/sdks/steps/README.md: id: 39cb94746ff0 - last_write_checksum: sha1:0699cb0d4e1ec01ea839cf90c6edace0a83e88ee - pristine_git_object: 53fb75a6a65b0daa71fcbf2b48d726acff219e08 + last_write_checksum: sha1:c1e8df163c81b2933316669ac13bb4951faf980c + pristine_git_object: 4035d464466dbc6c44dddd2bbdc49c7f7b2c642c docs/sdks/subscribers/README.md: id: 14c599d74195 - last_write_checksum: sha1:8ef795d09ffa8a27fd8f4e52ea6a5f49a3213951 - pristine_git_object: ee72f031b421d4060c7863a4f12f1ce033ea06ed + last_write_checksum: sha1:6aa7becfcba18c2073159ded0e123b573c388900 + pristine_git_object: a5a772b8da2e3f628814f203708bc1d2e8d976cb docs/sdks/subscribersmessages/README.md: id: dfd6797670e7 last_write_checksum: sha1:ab641eda30693a9a9966206d8f551f9acd0016c7 @@ -2822,8 +3392,8 @@ trackedFiles: pristine_git_object: be015988b3344b0c56590b5c9a419454e775901c docs/sdks/subscriberspreferences/README.md: id: 6fc164967b15 - last_write_checksum: sha1:9636e1fd38c3e1d53b4a8f979ee70b6823a2b5f3 - pristine_git_object: fb5a678e25b96069ba19433df7aabf3552629fd7 + last_write_checksum: sha1:7ba2d4b3d9b71184aefa33f0c3abffed3b1d47af + pristine_git_object: 6b7ed1857d2fc2934fe4a7f51d533a4a469860d4 docs/sdks/subscriptions/README.md: id: 298b9ab3c3e0 last_write_checksum: sha1:23b89209f755c3df9988daf5860c0d22aecb0430 @@ -2838,8 +3408,8 @@ trackedFiles: pristine_git_object: 5f052320a72994e72853a179159219cab46336dd docs/sdks/translations/README.md: id: 0452749a3d5d - last_write_checksum: sha1:2288010b6e0363a17c8b775596f10058b24a873d - pristine_git_object: 6de572291abdeb0e1eaf0175f21521300c77d53d + last_write_checksum: sha1:c229b9fda752be665aa1f34108aedcc2c70f8f83 + pristine_git_object: 63e7531b1a0592db978636be5e14a5f2453a97cf docs/sdks/workflows/README.md: id: 80c76ce944c0 last_write_checksum: sha1:04c2e7a4e1accb1a1c28641276af91ba1a6f749e @@ -2850,28 +3420,32 @@ trackedFiles: pristine_git_object: ef3195af86a7d6ef1e34296c380fd52d85b696fd src/Novu/Activity.cs: id: 237580ee69cc - last_write_checksum: sha1:54e859cb4129f7d7a0250068b4dcb6fc179ab926 - pristine_git_object: 8f4e4d47916d2c5635f0f9858c0db06549817b86 + last_write_checksum: sha1:f9cbeecc83805e50e0eae6f0ef68b361b34be033 + pristine_git_object: 24892d1581a089103a199db1812114447b0ffe2a src/Novu/ChannelConnections.cs: id: 1e9f562d8b58 - last_write_checksum: sha1:2b825d5cbcc3f9386482e7026d154f27627afe03 - pristine_git_object: aaef8b4139a4445af09f637311d20d344e1fdf0e + last_write_checksum: sha1:88c3990d869559924a26951e1422ee591ab51960 + pristine_git_object: 91b242f30205c1e995c36010c042df0c2f65ba89 src/Novu/ChannelEndpoints.cs: id: 7a5584cd437b - last_write_checksum: sha1:207e0eb0edcc74af053041caddb55ab1017e8ee8 - pristine_git_object: 8724910dba2ead1090323970b5ec9e24870a2550 + last_write_checksum: sha1:f2fed385e17502725ea199d9b7dd3b228e40245d + pristine_git_object: 34d5a87bda07e96711e479f9a6b6eb1eddeeabba src/Novu/Contexts.cs: id: 799d901ecdf5 - last_write_checksum: sha1:7376eaa0328ad420e01a4dcca170a10e8537fc90 - pristine_git_object: ebda54664e9c4bc7f6bb4b3845dd4a482d981224 + last_write_checksum: sha1:4b3c7f15a0cde76f22646fadf2c8e8fccefc2384 + pristine_git_object: 65a78635ac2b6c0376413a46519bd67a8c1c7c8b + src/Novu/EnvironmentVariables.cs: + id: 166f577787d6 + last_write_checksum: sha1:2be3478cb28a05413899e91a4337b8b0cbe435bf + pristine_git_object: 6c1e25b6d6fba89fc7e9049d25c3991c2601dc8c src/Novu/Environments.cs: id: 75454a42ec30 - last_write_checksum: sha1:8c0bfebee6caa813e73f73117cffb7e30efeb224 - pristine_git_object: fff8b56a53afd9194785c49907237539cabb94f9 + last_write_checksum: sha1:474c30de263b9db446809c9a9045626832026865 + pristine_git_object: c6da3f50ce5c98e6d06aa38a04335cf0afc768a9 src/Novu/Groups.cs: id: 739f4a8ada86 - last_write_checksum: sha1:d324075ece2332919c3151a4ef9bae76e5ad0d11 - pristine_git_object: 4862599d711906818ef11fa7fd000bd8d770214c + last_write_checksum: sha1:46b10c62566884cef233d684045e1d4fc04e1758 + pristine_git_object: 507af567c572e646dd06fab166270116a31a6c10 src/Novu/Hooks/HookTypes.cs: id: 04c18c9cb030 last_write_checksum: sha1:09532ceced3fc9ae6152c6d66854709bccabf0f6 @@ -2882,20 +3456,20 @@ trackedFiles: pristine_git_object: 1a63afc0a6a37d72b7ceaa56469e48a1ffe69402 src/Novu/Integrations.cs: id: 5abd394c909f - last_write_checksum: sha1:ce0906bd311229d79ca9d64621716e051c73f45b - pristine_git_object: 90e981840a4d45ff0a64e9777bee99352adc4e60 + last_write_checksum: sha1:33b04b0220a4e88b773e82651833fdcc5e22f9f0 + pristine_git_object: a6ab2efe4926102fe474e716dc6bed04b28303a0 src/Novu/Layouts.cs: id: 83eb43c824b2 - last_write_checksum: sha1:3e1e0bf0edb8e29c155658e5133b6de731a7db7a - pristine_git_object: 832be34d3194b84414786eb80ce0c5fd76b03311 + last_write_checksum: sha1:40f9588d050b7d1b79947a2f43ac7eb75158886c + pristine_git_object: 79012185965f96644c502b5035a1d611cb25f233 src/Novu/Master.cs: id: 98ed1eede6a8 - last_write_checksum: sha1:a1541b28d1e62e59fba5eedf4552727d055de074 - pristine_git_object: 5faa37331bf6eff38f9b2269716544a3aa340ab9 + last_write_checksum: sha1:4d5758fd73324a9af87e7231104bce3935465861 + pristine_git_object: ca6edfbe3209b8f7e9ec4ed0db22f964c0a889a8 src/Novu/Messages.cs: id: d151f231dcfd - last_write_checksum: sha1:d2cffc5cefbd73402a06d646698fc94cc59c7279 - pristine_git_object: fca9176eeceb021b64faba0e977349b052e6cda2 + last_write_checksum: sha1:7a720c843b8e0917a87d1a863ebf877295a83db2 + pristine_git_object: 92c2fd5f8166b09fc34245b76bde9246070a3647 src/Novu/Models/Components/ActionDto.cs: id: 16e5e97750c5 last_write_checksum: sha1:529e8c62c445580759846c034244b1e05f8a0dc8 @@ -2914,8 +3488,8 @@ trackedFiles: pristine_git_object: f8046f238ac957829f018087a29289113f9ae404 src/Novu/Models/Components/ActivityNotificationJobResponseDtoType.cs: id: 7c372e1e8102 - last_write_checksum: sha1:20ba6384bd102313df4465484f6761b1d9e18dca - pristine_git_object: 1c65c2796b25aeb30e727b93c8aa53f39e1a79fb + last_write_checksum: sha1:16b065d7f89b49fef62110a597185861551ab7d6 + pristine_git_object: e3b7b1d6ae309f422fb8e0deba0556396c60d57f src/Novu/Models/Components/ActivityNotificationResponseDto.cs: id: 33e3c91deb0b last_write_checksum: sha1:bb1f4d5cd30a054c3bce63cf97b3cb57b8c17abe @@ -3056,10 +3630,14 @@ trackedFiles: id: feed91c02265 last_write_checksum: sha1:fb9ce66347219ed134cc793abfc1801a4721d40f pristine_git_object: ec0ac1013eddf68ae3668cd5c36063a10c341980 + src/Novu/Models/Components/ChatRenderOutput.cs: + id: 262ab530c79b + last_write_checksum: sha1:b7d0650a1b56baedfe97423008ebb7439b05ff76 + pristine_git_object: 7328082bf08bd66bacdd2021446dfb94f9392d5d src/Novu/Models/Components/ChatStepResponseDto.cs: id: 275fa707c3b8 - last_write_checksum: sha1:62a4e748191504bd0646d79d0da3bda8d3b03e9e - pristine_git_object: bcdf00cb226423d132db7fbf17cbb77cbf4ade64 + last_write_checksum: sha1:106fddfd8cbf195bcd4e9ae1b3ac1de88d6b0b5f + pristine_git_object: 1f8792e63040401e5447bc7d7af25065af0aafe3 src/Novu/Models/Components/ChatStepResponseDtoControlValues.cs: id: 3b081eeed37c last_write_checksum: sha1:1825691a2337bf4a0ab455951bbec5ef72a59589 @@ -3094,8 +3672,8 @@ trackedFiles: pristine_git_object: 794b98448e983e0a8b2a8b0ddb540b393c44f42c src/Novu/Models/Components/ContentIssueEnum.cs: id: e3d8c253698b - last_write_checksum: sha1:e1879520b16d104bdff7ed10767922356b5922c5 - pristine_git_object: bef3f8cb14b3975d30392226bd8adb448a602669 + last_write_checksum: sha1:b34341ab424df5a7ae4f76b8cfc4d752390ef799 + pristine_git_object: 905304e4602161447b02fc53fa3953cb414f4e7b src/Novu/Models/Components/Context.cs: id: 838d6de01dba last_write_checksum: sha1:6c3af8b374e3f3e052bfc7a543c6eb790b6d7361 @@ -3106,8 +3684,8 @@ trackedFiles: pristine_git_object: 1b13b9e717b3619b0d393a8989329bb18983345b src/Novu/Models/Components/ControlValues.cs: id: da2aa8861cd6 - last_write_checksum: sha1:3b88ab19fa3bf9a06b475fda318bb6fa705b2343 - pristine_git_object: 539c6d4a3059b9c4a8a8b4c08bc086f7bc6df0a3 + last_write_checksum: sha1:b853eabc4d15616a7a3bd691c82cfe5000ae7eb1 + pristine_git_object: d112da26e01021170bc2ac82e90b3be7d71ca674 src/Novu/Models/Components/ControlVariables.cs: id: eb17848cf313 last_write_checksum: sha1:6e9598576a642fa8325698d10e69663a87a25fab @@ -3136,6 +3714,14 @@ trackedFiles: id: cc407edc2495 last_write_checksum: sha1:6ad7e4dad9b08ca96627856c56583d8b5525b294 pristine_git_object: 0d8999e6018c17b25501447f02c98b54d6a522c8 + src/Novu/Models/Components/CreateEnvironmentVariableRequestDto.cs: + id: 81b944d82e29 + last_write_checksum: sha1:a68575aaef5fb3f3b9e25edfdeed8b66c6780b8b + pristine_git_object: 14a89328c473252f4174a61c2928afa32ad8f754 + src/Novu/Models/Components/CreateEnvironmentVariableRequestDtoType.cs: + id: 3baa9ae65567 + last_write_checksum: sha1:cb5a95a73f0d3177e34169ed1ae80614b315ac91 + pristine_git_object: 4f1b65ca6f2f5f697685bee38c8673147ba5ec18 src/Novu/Models/Components/CreateIntegrationRequestDto.cs: id: d1cd483d6078 last_write_checksum: sha1:b25f642a472de5defb5df898dc6f1caa0f69120d @@ -3294,8 +3880,8 @@ trackedFiles: pristine_git_object: 624893ffac80085294c4f95a4e76823bb3e08d43 src/Novu/Models/Components/CustomStepResponseDto.cs: id: c37bfd9f9c07 - last_write_checksum: sha1:3735d2fc015b5f1272eb5fdf482c352702c99db2 - pristine_git_object: 034fc5a7470b4b2d4f52b1b16b812a1deaa80995 + last_write_checksum: sha1:5e0af4927bfdb8bc3fda468b397377331740ef6a + pristine_git_object: 76307f6c491865448fbf78c6b8206eb704641582 src/Novu/Models/Components/CustomStepResponseDtoControlValues.cs: id: 988d57737864 last_write_checksum: sha1:17d17e3a130a6f2db29a219f5432b34310b90512 @@ -3342,8 +3928,8 @@ trackedFiles: pristine_git_object: 20dc8110ebdf59d819a7aebcbe768f6fc8832e3b src/Novu/Models/Components/DelayStepResponseDto.cs: id: b69f06190f41 - last_write_checksum: sha1:1c38ca7221901f438cf7d0bde8c2e6b4af236137 - pristine_git_object: c0b01dab4f5cd7ee46f2f3cd0bfcd53855ca6589 + last_write_checksum: sha1:8c834d4fb2deeea9638c378f4bc3fd1f0226eb25 + pristine_git_object: 80e38de538af913e7207179238627284b366d7d6 src/Novu/Models/Components/DelayStepResponseDtoControlValues.cs: id: 8cb7ed444ba1 last_write_checksum: sha1:451e6690e18be691472aca8c4036793215c4c59d @@ -3392,6 +3978,30 @@ trackedFiles: id: 8f68065059d0 last_write_checksum: sha1:463cd802a9039108c6b541633881fb94cbb2bb38 pristine_git_object: 3935efeb7b74f22f23b740de4bced3463534e7a5 + src/Novu/Models/Components/DependencyReasonEnum.cs: + id: a588f9177539 + last_write_checksum: sha1:7fbf0bd126f04a1eead3707642256bba904b7e34 + pristine_git_object: d608718495638c4f4b4fe7266763684d93362247 + src/Novu/Models/Components/DiffActionEnum.cs: + id: 1cbd63e99018 + last_write_checksum: sha1:46fd1af12fb87df91cb2ed04a9654d36dd1eaaa3 + pristine_git_object: aa5bd11d498adcc20077c6fbadc9977d1997c893 + src/Novu/Models/Components/DiffEnvironmentRequestDto.cs: + id: 2cdd68a5bc8e + last_write_checksum: sha1:96e070c8b0ab4ee5ff7ac8c144bc0a9ce3b438f0 + pristine_git_object: 934e420402a13ecc75f8ae018a076a044867ed12 + src/Novu/Models/Components/DiffEnvironmentResponseDto.cs: + id: e8d4822f87c9 + last_write_checksum: sha1:305ad57117482c7132f9954a90ab57de88a81543 + pristine_git_object: 6313e52d82fd55f235d21d10cdcd45756544ea6b + src/Novu/Models/Components/DiffSummaryDto.cs: + id: cbeac4428ad4 + last_write_checksum: sha1:77422dd6d48d90c9ed8a82d8569724d85c8b355f + pristine_git_object: 96d6eec4d881004b637383e6c2f748f21e606772 + src/Novu/Models/Components/Diffs.cs: + id: 9faf028695d9 + last_write_checksum: sha1:6cbb59a6850418bf745d0d5d07bdeaee239cc2b7 + pristine_git_object: 329bdab085e817373fa34321f4ce56eeb6d746d5 src/Novu/Models/Components/DigestControlDto.cs: id: 9cfdd6215f0d last_write_checksum: sha1:f994fdb536d3c3c7e384a059b759ec417ca8c3a6 @@ -3428,10 +4038,14 @@ trackedFiles: id: e2eea6352d6c last_write_checksum: sha1:6b73e46050525fca84a2559feac0fe47b4a3ead7 pristine_git_object: 9395e81913d8131687d53d726b40c2b4ef074116 + src/Novu/Models/Components/DigestRegularOutput.cs: + id: 5308b884334d + last_write_checksum: sha1:1670f59e7fc49658d00f1031a60ff4b19078f1c8 + pristine_git_object: 696e1af18e3462a0510b4739186de42a73026a92 src/Novu/Models/Components/DigestStepResponseDto.cs: id: 606b2b4468c8 - last_write_checksum: sha1:5f359a74e4b7b29f81131a14d7e77c7fe9f16a74 - pristine_git_object: a3b1eb26e639f3178d31f9a9fc8e4bacdcb2a011 + last_write_checksum: sha1:f20ba379ace5310f520838369e0dbc40f09f59eb + pristine_git_object: 1fb15a950b975d85324d2b16fd8979c24325e321 src/Novu/Models/Components/DigestStepResponseDtoControlValues.cs: id: 58f734f61a16 last_write_checksum: sha1:1213e1867fdf1f1769b1055eb95c9a606edd7ab3 @@ -3492,6 +4106,10 @@ trackedFiles: id: f7cdb1bc26a4 last_write_checksum: sha1:f7a5046343e1a8edb747501419336a007c00192c pristine_git_object: 28ff5fd8a2640c9230da0255d8b35eccb305a1a4 + src/Novu/Models/Components/Eight.cs: + id: fbc219d54bdf + last_write_checksum: sha1:0166e84918b8f97f6e55214b402c45400a31d234 + pristine_git_object: fa5742722105e3a9d838613e9c3e1fc979f441c3 src/Novu/Models/Components/EmailBlock.cs: id: 54de04fd2f24 last_write_checksum: sha1:75122ac06edd6f220bc1f7f888ff72ceb2f22d49 @@ -3528,10 +4146,14 @@ trackedFiles: id: c01e23062168 last_write_checksum: sha1:5a6e11bb694b08594d3315713f236797f3d2e5f0 pristine_git_object: a5726575357d856ed9e41cbf0d8ec29cfe96fcf2 + src/Novu/Models/Components/EmailRenderOutput.cs: + id: 3720b4f1417c + last_write_checksum: sha1:e94907a5658f006d6b4b4f0060ee1d69959612ef + pristine_git_object: c6db5099fd05857ebd4aca720951799a7b584155 src/Novu/Models/Components/EmailStepResponseDto.cs: id: d9282f8d3caf - last_write_checksum: sha1:cea001c3d739e57b2d96bc7154735b3ab17c4a7f - pristine_git_object: db5a45a3f68d50ccc7de3f2299d9761a3be26b67 + last_write_checksum: sha1:2097fbb5dfe7c4e4dcbabbe94cb99d7c6704fe74 + pristine_git_object: d3d28be4cf4edce95e6b7cf7c154780abdadc7ed src/Novu/Models/Components/EmailStepResponseDtoControlValues.cs: id: d3294a5e7be5 last_write_checksum: sha1:1cee8552f84c55e128fd3689077e7e48763f5529 @@ -3552,6 +4174,10 @@ trackedFiles: id: 9796d38c3453 last_write_checksum: sha1:cd6716c5f7dc33a41afb00e050e1d41b059fe70f pristine_git_object: 078a01f3877bfb5040488348dcb25ffce024fdc5 + src/Novu/Models/Components/EnvironmentDiffSummaryDto.cs: + id: 618db051d028 + last_write_checksum: sha1:b2068a171f14fa754cf614f0a8c66e7ed6275185 + pristine_git_object: d7123453fcd20df958db5860d06499efc2d59905 src/Novu/Models/Components/EnvironmentResponseDto.cs: id: c1624d755d71 last_write_checksum: sha1:ac24cbdbf4a50814a10393c844d051e5146793ae @@ -3560,6 +4186,26 @@ trackedFiles: id: 1345f1ca6301 last_write_checksum: sha1:236da76eb0ccd62a7e67b2454d83d88a9f64bb37 pristine_git_object: a9b203d0dd5e906b101bb053ca8f7415bc945b76 + src/Novu/Models/Components/EnvironmentVariableResponseDto.cs: + id: ddef38e27b2f + last_write_checksum: sha1:c7e0a0b23d561dd92bdc709b862f52c570c5c6d5 + pristine_git_object: d8d08e69915f830edeca0bb52d4838fb313fc26a + src/Novu/Models/Components/EnvironmentVariableResponseDtoType.cs: + id: 8581fa628242 + last_write_checksum: sha1:75d399a1b4b286a8232a9d4a4ce7f9e10e11be04 + pristine_git_object: d5d182cd82960286f47a51ff75f61d3f9f388f28 + src/Novu/Models/Components/EnvironmentVariableValueDto.cs: + id: daad67383a52 + last_write_checksum: sha1:c6dd463b07d92fb1bb7f86e2335a1cbabf5da3ab + pristine_git_object: e11b4b5ffab360c79e9a2e608cee75ba0a3f44ea + src/Novu/Models/Components/EnvironmentVariableValueResponseDto.cs: + id: b059f1077967 + last_write_checksum: sha1:58ccca876a65d5210a9c4fa360e27bd03b80f513 + pristine_git_object: 12cc72baadf1b4a894ca9c71eab5f1d0a9ba9d47 + src/Novu/Models/Components/EnvironmentVariableWorkflowInfoDto.cs: + id: fa93708b449b + last_write_checksum: sha1:6df70e9f4f3771dac3cacec8c6c67a8acd658049 + pristine_git_object: d550b80fe815b9d1509c3a5cfdee99df1a740ace src/Novu/Models/Components/EventBody.cs: id: aa0bd84ff59a last_write_checksum: sha1:10bbdfc14ca700f6ec6cc222adad5b3fd00f8862 @@ -3576,6 +4222,10 @@ trackedFiles: id: a4e4aaba5409 last_write_checksum: sha1:70321f5d65601f8ba1931daec5d28f5de70b8904 pristine_git_object: fa042aece077985be6d0e09fac3b5404c014cf3a + src/Novu/Models/Components/FailedWorkflowDto.cs: + id: a727020fd2a8 + last_write_checksum: sha1:c087d969795141d1028e648db6ba39d036b59f5a + pristine_git_object: 6434d79b1bb6e9e711ef8f360d61dc924ae61131 src/Novu/Models/Components/FeedIdentifier.cs: id: "573541934623" last_write_checksum: sha1:bb8d581f159c1bd62bc70d8c31c0bbec781bcbed @@ -3588,6 +4238,10 @@ trackedFiles: id: edb532d92949 last_write_checksum: sha1:23140dbfae15a3fc408c7e047fa7da1ee840a10a pristine_git_object: 76e57b25f5fd6281530138d790c8b7e72d374aef + src/Novu/Models/Components/Filter.cs: + id: 01d0b4fbde05 + last_write_checksum: sha1:39e69a738641d2b35c1520fd816f0cb8188ff8e7 + pristine_git_object: 10ecdadb2758019acf7cb12eb994dc0d61d32c51 src/Novu/Models/Components/Five.cs: id: 6f8f63c77c17 last_write_checksum: sha1:02409ff2718d2be42d2f07c27aa90c8b91e25700 @@ -3620,6 +4274,50 @@ trackedFiles: id: 9e5ba98239cc last_write_checksum: sha1:30dd7f99237def4c557d0e90205a5edc1f58103f pristine_git_object: 4b7e8fb5cdd27fa14dd95df363ec3b26011c6c94 + src/Novu/Models/Components/GeneratePreviewRequestDto.cs: + id: 518497b48a49 + last_write_checksum: sha1:18e281ed06fe99aed52b60e9224bb189a3e66953 + pristine_git_object: ab5a3d15a5601363a1db4de795af81e2dc23e639 + src/Novu/Models/Components/GeneratePreviewResponseDto.cs: + id: f425c3b83e80 + last_write_checksum: sha1:964364a92065aafa16cb5877f3428285970e6d7a + pristine_git_object: 8445b00ec191c106600df75c657ce34dc20988a0 + src/Novu/Models/Components/GeneratePreviewResponseDtoResult.cs: + id: 46ef48844c22 + last_write_checksum: sha1:0847463bea3f6721fe2b6897940d67bdb2b029f1 + pristine_git_object: 5de9b2f1168d16cee7564721695e7c493de990d2 + src/Novu/Models/Components/GeneratePreviewResponseDtoResult3Type.cs: + id: 691353c8c496 + last_write_checksum: sha1:385942ccd92632c59e570c14e47286c6076b81aa + pristine_git_object: 3231bc2c1100937dcf8a6b1a0c7c0e35966a4910 + src/Novu/Models/Components/GeneratePreviewResponseDtoResult4Type.cs: + id: 80119df9db52 + last_write_checksum: sha1:40b3ca14e9787a633eb55eda39aa4c5ac2abdfc3 + pristine_git_object: 95ee6e39dfef243fc3d5495254977c14d548f48d + src/Novu/Models/Components/GeneratePreviewResponseDtoResult5Type.cs: + id: caf5d0d0f7a8 + last_write_checksum: sha1:4a523a2f60562f2ebf91e8c654e8daca952ec708 + pristine_git_object: 20d6d48b2d03b9c1c9cfc6677dae87a6bff40068 + src/Novu/Models/Components/GeneratePreviewResponseDtoResult6Type.cs: + id: da86762a9cfa + last_write_checksum: sha1:15d3193c045b6b5ab567fabfcb8f3ed62ecd9e25 + pristine_git_object: c3683d753524ca32a1382fd1fb57567636eacec0 + src/Novu/Models/Components/GeneratePreviewResponseDtoResult7Type.cs: + id: e65e6c30d9a1 + last_write_checksum: sha1:1aa1c320d475ef4836a379baf719ec5a5b5ea8f8 + pristine_git_object: c2def3e9f112e1d794d222b8af93de0bede1be5c + src/Novu/Models/Components/GeneratePreviewResponseDtoResult8Type.cs: + id: 43f468d436a2 + last_write_checksum: sha1:df42329f46b57f0e8bbbcbd03812f50bca8bc00b + pristine_git_object: bfd43461deb0979d8306b1396b9ef52e37b7c62f + src/Novu/Models/Components/GeneratePreviewResponseDtoResult9Type.cs: + id: 53047c0371bd + last_write_checksum: sha1:8d8767bf883982680108fc41e308bcd9f209d8f0 + pristine_git_object: 7f5b39b08c3cde13b843368c42945df159adbaf2 + src/Novu/Models/Components/GeneratePreviewResponseDtoResultType.cs: + id: 23d433baaea0 + last_write_checksum: sha1:4354084a54ed69d243b373e41aa01bd7aa6e0c31 + pristine_git_object: 58429803c5f8dfe9207c6d61fa234d9b0b304bfd src/Novu/Models/Components/GetChannelConnectionResponseDto.cs: id: f310bb5fa9db last_write_checksum: sha1:012683c5b507abd682f1e7ca5f728aa03c7371f3 @@ -3634,8 +4332,8 @@ trackedFiles: pristine_git_object: baaff9e1546e5f8dd7c10ab8cd4c5578cfae5ede src/Novu/Models/Components/GetChannelEndpointResponseDtoProviderId.cs: id: fb876403ca2b - last_write_checksum: sha1:cb89fd6c9df82e30777d82d7ca3ee1b404ba549f - pristine_git_object: 315cd6840118dc11ca7876f7ce4ed971684cfac9 + last_write_checksum: sha1:91b4b0bf0721b7d5b6daaa5ee8fd5b47a70e9811 + pristine_git_object: 49d3deca15945dd117e7f6cb531f8dc8cd0d14ef src/Novu/Models/Components/GetChannelEndpointResponseDtoType.cs: id: f35252ffdd2d last_write_checksum: sha1:c2fb86f628c45db5d66cc6868521a508c1b41a77 @@ -3648,6 +4346,10 @@ trackedFiles: id: 3e67259d0861 last_write_checksum: sha1:bb3abc8815ff216549b923f88c6281ba0fa67cd6 pristine_git_object: 219fbf0b5d2c60e25a31498fb8b863203bdf776d + src/Novu/Models/Components/GetEnvironmentVariableUsageResponseDto.cs: + id: a30405596508 + last_write_checksum: sha1:663c3587e2da985b332adc74b2ff9ea25760fb39 + pristine_git_object: 24140983d0bb904467b7bfb68fd11e093f3e77cb src/Novu/Models/Components/GetLayoutUsageResponseDto.cs: id: af05c9a5f455 last_write_checksum: sha1:0e194436d2ab748ee06d41c5b1d4c34bd4740133 @@ -3664,6 +4366,14 @@ trackedFiles: id: b325b4984fef last_write_checksum: sha1:ca774344cc46d104f087488eb47455f856879407 pristine_git_object: 876121210e6252ae3b470eb4ad3cb3798d8ff824 + src/Novu/Models/Components/GetSubscriberNotificationsCountResponseDto.cs: + id: c325016f5917 + last_write_checksum: sha1:1690f39626d493c92e09d14ec0d32e62ad1713c6 + pristine_git_object: 20040adb913ac2b051b8239507732baa236c0b33 + src/Novu/Models/Components/GetSubscriberNotificationsResponseDto.cs: + id: ec02abb4a98d + last_write_checksum: sha1:84a1bd7321ee9094126a38c4f7c4e9f5570f0581 + pristine_git_object: 059464f6c978c5a3dfe3bf3a2d30ad84f865b7eb src/Novu/Models/Components/GetSubscriberPreferencesDto.cs: id: 1ee9c33f8d3f last_write_checksum: sha1:6c8f4113f3a070c6ed08ecdc94c06db12bf1a40f @@ -3680,6 +4390,38 @@ trackedFiles: id: 736fce10e88c last_write_checksum: sha1:5f381cc28669782bddd3e20d46b54bb40203fd4c pristine_git_object: 404cb2b5975028d2a98136189cf481f7c9c1ca85 + src/Novu/Models/Components/HttpMethodEnum.cs: + id: 03660550d439 + last_write_checksum: sha1:6af0946f6a3f60dc4ce986fab1f14801b87bdebc + pristine_git_object: 2468a1cdbe971264443056959e786ef16d1dac6e + src/Novu/Models/Components/HttpRequestControlDto.cs: + id: 2c4028806170 + last_write_checksum: sha1:359517e439793e5d9faa0aa7dabc152e39185d3a + pristine_git_object: 9c24ad610708889337eb1c2b2bcf8f7272da3609 + src/Novu/Models/Components/HttpRequestControlsMetadataResponseDto.cs: + id: 647b504bad9e + last_write_checksum: sha1:2a8dde7b0684a70cb45ce5c19e536e0f3f2e6228 + pristine_git_object: 33c30f0ebe8cdd579baafddfa5565d9ae38dd3a2 + src/Novu/Models/Components/HttpRequestKeyValuePairDto.cs: + id: 16ea76c7d94b + last_write_checksum: sha1:04da7e23a5a245b4940cf2b45398fb9309b6307d + pristine_git_object: 6616da33306147b026c11c39fff961bf3da8a208 + src/Novu/Models/Components/HttpRequestStepResponseDto.cs: + id: 494135b3c265 + last_write_checksum: sha1:4f2d5b585f14f288a52ced47820be69742cff322 + pristine_git_object: 3e37f114fea85091c7deef8a01b52118efb34108 + src/Novu/Models/Components/HttpRequestStepResponseDtoControlValues.cs: + id: 11c80b876b0c + last_write_checksum: sha1:78f60ff80159d228060e6d61bc97a0b9b2e9ce6f + pristine_git_object: 8f5adc43a8b42995f08b92145fee4f3790c9ba33 + src/Novu/Models/Components/HttpRequestStepUpsertDto.cs: + id: 317fef30a432 + last_write_checksum: sha1:ee39c0ecbca20c84931d3167757f28ceced0c632 + pristine_git_object: a1eb7f34b1e3df807c3d3adeb6dfa4c52f3ea30d + src/Novu/Models/Components/HttpRequestStepUpsertDtoControlValues.cs: + id: aa7b98bc3892 + last_write_checksum: sha1:8a3035d5e94edd947b0f99efe1978f21e0442ebe + pristine_git_object: 3df95686ab0b0a2c80f75ca6d9cdf367cf7cb3af src/Novu/Models/Components/ImportMasterJsonRequestDto.cs: id: e9aba192a6ea last_write_checksum: sha1:e5fc37d290e79eb048ce520f803ef7ec4d0e3138 @@ -3696,10 +4438,14 @@ trackedFiles: id: 322236f2d34b last_write_checksum: sha1:9173fa6abbf0aa31bfb375314714dcce72c9c7b4 pristine_git_object: 8411b14078f1114e2d5615b637e284ed662ae677 + src/Novu/Models/Components/InAppRenderOutput.cs: + id: 2674ec6630c5 + last_write_checksum: sha1:7f55e1d85295471c3e963c1cb24fa04ba316138b + pristine_git_object: 28aee36c1ed3539889105c777676b59ec4671211 src/Novu/Models/Components/InAppStepResponseDto.cs: id: 8ddae2e9dab3 - last_write_checksum: sha1:0166c2715fbbeb1dd24905c6cf796a16fa303be7 - pristine_git_object: 185d2b8cf6e2359f7d086668fb56440775f05a8a + last_write_checksum: sha1:1609d27027cf3cebf1165664b9f6e69da67d9d1a + pristine_git_object: f59593ac6098bc9dd42c310369ad727fada84d3c src/Novu/Models/Components/InAppStepResponseDtoControlValues.cs: id: 07e7dc8acea7 last_write_checksum: sha1:f2ff5931e7a5bc26a89a4a5d9d004834efe2aa10 @@ -3716,6 +4462,18 @@ trackedFiles: id: abb737fb40e9 last_write_checksum: sha1:2afc6ac6a6841967e1ff536adbc929d14b9a0e1a pristine_git_object: 2b43487317afef978bf7d5ace013bb1b54a94302 + src/Novu/Models/Components/InboxActionDto.cs: + id: 90acd1aeb295 + last_write_checksum: sha1:765fa66caf7d1dc5fae481a469fb4944c9742763 + pristine_git_object: 0c46c25d882d4376c670888d418fd652cf404afe + src/Novu/Models/Components/InboxNotificationDto.cs: + id: c2161874937e + last_write_checksum: sha1:8d7e335df01461e114d3cc82239c588bb30b07fa + pristine_git_object: cef30ff4fb726279b00a601b288111f04b435ce2 + src/Novu/Models/Components/InboxSubscriberResponseDto.cs: + id: 056a9222fa57 + last_write_checksum: sha1:cdf1f58592951a0632a2509f9caac8cb0b1e18ba + pristine_git_object: 92f193ee26882c1a9794ee4c48e9f947c3ae8714 src/Novu/Models/Components/Integration.cs: id: b0cd708aae69 last_write_checksum: sha1:b96f052c59d11ef990173c8991f93e0ee90c1533 @@ -3726,16 +4484,12 @@ trackedFiles: pristine_git_object: 1d42afc7fd38cfe06480e8659813b4368023d364 src/Novu/Models/Components/IntegrationResponseDto.cs: id: aeee8fe38e23 - last_write_checksum: sha1:520ad720e2ae45f5cb50bf6fcb5c495817a4fe8c - pristine_git_object: 170488938f2af14e977f2a01668fb62c5ee302ae + last_write_checksum: sha1:3fb24dd746a5909e2135700877fac74661dcb999 + pristine_git_object: f59def69c71f3e9a28be877c1dd9ae7d07fb18ec src/Novu/Models/Components/IntegrationResponseDtoChannel.cs: id: f7f060e4932e - last_write_checksum: sha1:1efc1340c84cfc8dadf5270214fe9f80aee0c8f8 - pristine_git_object: c1ed4ef2eb9bfa480356dc7f0a0948319b9aa82a - src/Novu/Models/Components/IssueType.cs: - id: 53040535beaa - last_write_checksum: sha1:a193c9a79c24153482580a0ee85c685a1a002391 - pristine_git_object: d321bf4a39d87f42b438bb2f33d7de36036d04eb + last_write_checksum: sha1:c5164e7d55f95b1fb8a0fc30073d78cf4a4df909 + pristine_git_object: 6fca81acbe60b3c2950d4f8a33ddc3821157d559 src/Novu/Models/Components/Issues.cs: id: 136e0997ac33 last_write_checksum: sha1:2a6eea185ab44f355e12799f3940a5816277399b @@ -3808,6 +4562,10 @@ trackedFiles: id: bfd8f5b986f6 last_write_checksum: sha1:65fc0dccf825ca947b1b40db74a8880aa7bd9430 pristine_git_object: a129180ed8852a9d3b489acfe5d0f247465bf223 + src/Novu/Models/Components/LookBackWindow.cs: + id: baf624e0295b + last_write_checksum: sha1:02e78dcc090d9abf6c7adc8c256fa12ab678a0ca + pristine_git_object: d88b83a5aa9dff1337ccbab8592b659bfc24efc6 src/Novu/Models/Components/LookBackWindowDto.cs: id: 213e718d6e7f last_write_checksum: sha1:8e8bb2ebba90be833287c0446a29fa90c943cc11 @@ -3836,6 +4594,14 @@ trackedFiles: id: 07646883cc15 last_write_checksum: sha1:3510c7470d7481966f65663b9175fe477ba08e87 pristine_git_object: 91e1e1f39665bd0a40cb726d766ced9907301356 + src/Novu/Models/Components/MarkSubscriberNotificationsAsSeenDto.cs: + id: 2a84dba4305f + last_write_checksum: sha1:3f60cf8489a3d6bf0fea13c5905b31726e389b48 + pristine_git_object: f01876fd524bd120edea3535830bf4ad734f8f37 + src/Novu/Models/Components/MarkSubscriberNotificationsAsSeenDtoTags.cs: + id: 9798a671c4ac + last_write_checksum: sha1:b9ecdeeb7e176d4101c4ee2d76d3194b8611ef2e + pristine_git_object: a179549055e1cfe3214edf27d1c3290b7470e508 src/Novu/Models/Components/MessageAction.cs: id: 36a568ac8263 last_write_checksum: sha1:91426bee90bdd5ccd08c436b73b931551d7da562 @@ -3920,6 +4686,10 @@ trackedFiles: id: a653e8aae62c last_write_checksum: sha1:75433ff34e245e9940485b6f36466ab38742ad13 pristine_git_object: 9b6ea99d3fcdcab02f206558e9c3fcc1d0ba133a + src/Novu/Models/Components/Nine.cs: + id: 7188812b2519 + last_write_checksum: sha1:141ce4536e65f2d12f6e560fa411e1587f12fa90 + pristine_git_object: 73b6548724791c40930b784a9c88417459d30c77 src/Novu/Models/Components/NotificationFeedItemDto.cs: id: c1d6d7b30fbf last_write_checksum: sha1:cfabc0f833fc67dc0cb5676b156075830b980388 @@ -3964,6 +4734,10 @@ trackedFiles: id: 7dadcc520e10 last_write_checksum: sha1:9d6d2591d1dfa28908d69c387df0915005dfe617 pristine_git_object: 5a84b700d43b2a3d8153d0956be43617beaabe8e + src/Novu/Models/Components/NotificationWorkflowDto.cs: + id: 8c42373735cc + last_write_checksum: sha1:ab99ce1a014dc35f341de2a39b94f834d1a2918f + pristine_git_object: 1b5c84ab33329036be2ad44b282de36fff8d7437 src/Novu/Models/Components/On.cs: id: 4c38698bdebf last_write_checksum: sha1:21e1009d7e47649883fad21a331845108c2fd5ab @@ -4060,14 +4834,42 @@ trackedFiles: id: 33f814615f87 last_write_checksum: sha1:0e986d6ad2bcdc871abcee932d0af97d81d7e25d pristine_git_object: a5e419e041b5d219ccfb095280fed0d15c079a67 + src/Novu/Models/Components/PreviewErrorDto.cs: + id: 8a28765ee91f + last_write_checksum: sha1:866e253af49b7f3711c7e2227a8154d3e301c942 + pristine_git_object: f6bd44c699a334a9f2774539806f6fe1d92dfc60 + src/Novu/Models/Components/PreviewPayloadDto.cs: + id: c561091c0905 + last_write_checksum: sha1:532b47a08894a28c9afe7d58a51ee2e7462bcf19 + pristine_git_object: 4659f5b309b279125d4cec447e8fea848baec330 + src/Novu/Models/Components/PreviewPayloadDtoContext.cs: + id: fb2e0ab903d7 + last_write_checksum: sha1:94fb26fe93480b91b132876c2aefa78f92d4a573 + pristine_git_object: 9553ef83273e8b3b0438aeb95fccf1ac4b181a17 + src/Novu/Models/Components/PreviewPayloadDtoContext2.cs: + id: 9d0c3afef81d + last_write_checksum: sha1:6afcfcd96df5a0e5c11d5354a38ee34bea9a28a6 + pristine_git_object: 24252fdd904c1c938cd656846500d871e56d1cab src/Novu/Models/Components/ProviderId.cs: id: 50d68fbd006e - last_write_checksum: sha1:9350a86237d43b7d325cea008d18b6d12d31ec76 - pristine_git_object: 732845c4827b3cfc11494db670dd76d11c16c97f + last_write_checksum: sha1:d5ad4ccfb2e316ba2b3823bc8ba49de105087a3b + pristine_git_object: c3cf30a9435a024390cf7c30edf9f95b2fd462ae src/Novu/Models/Components/ProvidersIdEnum.cs: id: 26dfffe533bd - last_write_checksum: sha1:faff410121f63bc3548b2e0be858f93a13f57212 - pristine_git_object: 100ce1ce05e678b2b28bd6a52c1a9e23ffc8c75a + last_write_checksum: sha1:5ea3be94a799ad61140aa8922e4112e729ae9077 + pristine_git_object: 028dc18b387925901706b5f6300e24c92d3066a0 + src/Novu/Models/Components/PublishEnvironmentRequestDto.cs: + id: ea2a793059e8 + last_write_checksum: sha1:52381428db5be8acef59eb64d3ac1d1f45e563c5 + pristine_git_object: 860975482948c87d6a15c973b9925ca42a664fa9 + src/Novu/Models/Components/PublishEnvironmentResponseDto.cs: + id: 3f509dc7aae7 + last_write_checksum: sha1:3041d60984fd537322948f3202acb8021d381ec8 + pristine_git_object: 2751b4a524b55cabea5273184bc50896c8ae7ce7 + src/Novu/Models/Components/PublishSummaryDto.cs: + id: b7d9b2feda7c + last_write_checksum: sha1:b23c8ab9825d10180a7e327ef5dd6a6cecc79587 + pristine_git_object: 89f67c5b36fcf438e60f2360fd5661cb7cc42953 src/Novu/Models/Components/PushControlDto.cs: id: 375e5582627a last_write_checksum: sha1:875d6fbbde07094e51be9ecca626ba9547a41ae7 @@ -4076,10 +4878,14 @@ trackedFiles: id: aa893ee98f63 last_write_checksum: sha1:1194cb3d605bde58ec46de4e87a63b088fceb319 pristine_git_object: 91504ef3b1eb72bcd18b81d88cfe897ea7c4072b + src/Novu/Models/Components/PushRenderOutput.cs: + id: 4e2ed2e72c54 + last_write_checksum: sha1:cd05eea1485215865abe4bf85070f3d0bdca001a + pristine_git_object: 941acfd379c55b6c2aa3538f638343476effd294 src/Novu/Models/Components/PushStepResponseDto.cs: id: 1613d291c0d3 - last_write_checksum: sha1:6b6ee0d0a4e203c0b30734aaebf63c674e2ae319 - pristine_git_object: 4e17b5c9f3f13bc3cded27b91382bff9843199f6 + last_write_checksum: sha1:ae20f3e0b7abd2369315da834d0ad2feb10db769 + pristine_git_object: de1cd805375266f3328203958bfe0fe5069ec8b3 src/Novu/Models/Components/PushStepResponseDtoControlValues.cs: id: af2ee82f2235 last_write_checksum: sha1:407adf3f58262d54c999a2e26cc62bb18abded0d @@ -4094,8 +4900,8 @@ trackedFiles: pristine_git_object: d2142646d0250f15016f1e96b9212d8f4b88d657 src/Novu/Models/Components/RedirectDto.cs: id: 0e2d818493cf - last_write_checksum: sha1:e6fffd42cb8f1e6986e2aef1ee3b2595eb47e7ba - pristine_git_object: e6dc49cc4d6ec15bc40e88d2c9a645cf9ee83008 + last_write_checksum: sha1:be45a826b4a17e21cb7ca9f5bb0c552e9809ae53 + pristine_git_object: 87228f2ebef0c57b68d4d922016f9a5bf0b46b47 src/Novu/Models/Components/RemoveSubscriberResponseDto.cs: id: b6d561568a34 last_write_checksum: sha1:8f7f1b8b3869e0b07bb4ab473927aa5a6e7b6ab7 @@ -4104,10 +4910,50 @@ trackedFiles: id: 30dc4950e7d2 last_write_checksum: sha1:3cfa91441722282efb5927f328fdb9999230dd45 pristine_git_object: f059946918022367ee59ab1dd40e4f1092aa280a + src/Novu/Models/Components/ResourceDependencyDto.cs: + id: e730f24c5aff + last_write_checksum: sha1:d99c1e957425dc8e5ed66292ebb4d42b305cbba5 + pristine_git_object: b04bf0160862d3091139773c233c29ca02e649b6 + src/Novu/Models/Components/ResourceDiffDto.cs: + id: 81c4c7c03ef1 + last_write_checksum: sha1:f928a62e0cc96d27aeb1991ed7f23eb1334ce87c + pristine_git_object: bf79ac084c73cc008652107ac5c27f476e033e8d + src/Novu/Models/Components/ResourceDiffDtoSourceResource.cs: + id: 0fcdbc44efe3 + last_write_checksum: sha1:c0f413c64eb0b69a886a1b8472985fd7138d3b42 + pristine_git_object: 2502127b228541c69003fd6e3ac80d1dfa5b69c4 + src/Novu/Models/Components/ResourceDiffDtoTargetResource.cs: + id: d4628653552d + last_write_checksum: sha1:9270f2a938ebe116b7926323aa12b56997694e8a + pristine_git_object: 2502dc1f86c56b7e0002d76bff4b851e96592bc4 + src/Novu/Models/Components/ResourceDiffDtoTargetResourceUpdatedBy.cs: + id: 1a850e9982d4 + last_write_checksum: sha1:e5f1e43d11252e657656e51a25b930ce5d14b0db + pristine_git_object: 241600ecdfeaa4c263521b67d31c818a6b788218 + src/Novu/Models/Components/ResourceDiffDtoUpdatedBy.cs: + id: 2244b7b4826c + last_write_checksum: sha1:15b4606bc8c5aa5bc141c1099eb8dfa5fb37e246 + pristine_git_object: 31497da104ebefe7e25b4b5ac64f41662dd3cec5 + src/Novu/Models/Components/ResourceDiffResultDto.cs: + id: 92417125f20f + last_write_checksum: sha1:74a0e9a8aad01186fe209cf2b93cc2234ed75968 + pristine_git_object: b26e4dda2eabbcb13d204888c14e78aabbca7cc9 + src/Novu/Models/Components/ResourceDiffResultDtoSourceResourceUpdatedBy.cs: + id: 52e399727165 + last_write_checksum: sha1:ac7948b6cde629b80d3b9694694b2e71d51f6c3e + pristine_git_object: feeb469da4a01f3aebfdb8c2922b9178cd19d5df + src/Novu/Models/Components/ResourceDiffResultDtoUpdatedBy.cs: + id: 4b36ac4f10ee + last_write_checksum: sha1:4bc79a714d77b110b92c7681947e639ac8f3beb8 + pristine_git_object: 400e88b535dbce58befcea30cadfba19f8028bb2 src/Novu/Models/Components/ResourceOriginEnum.cs: id: bf7ae1f2aca9 last_write_checksum: sha1:a5c4c6b98155fcf4119782b8ea16a3f2cac430a2 pristine_git_object: 9aa78c90d90dd36d494aab34005f196f4ac73e93 + src/Novu/Models/Components/ResourceToPublishDto.cs: + id: 52988f380f8d + last_write_checksum: sha1:958d5020ba78f47c3a76a3ec5a6450aa4b55bdef + pristine_git_object: aa8ba8d2f29421423d34080d9cd6a2511e17e05c src/Novu/Models/Components/ResourceType.cs: id: 4d4352ec127f last_write_checksum: sha1:3c101cc0b079f3a1f6935b86c0eda666454f1d71 @@ -4120,14 +4966,26 @@ trackedFiles: id: 73c558141e4f last_write_checksum: sha1:b5fb71e7a26854c6a261d08d07f03477c34fbd33 pristine_git_object: 50c400fc955fabb5aaca79e662ae6feb868084a7 + src/Novu/Models/Components/Result2.cs: + id: facb5d7ce064 + last_write_checksum: sha1:7381d511cd599066db033981fa80d41854756f56 + pristine_git_object: ed7e35a1966ebee9fefa84c1cb7d49dcc6b07c4e + src/Novu/Models/Components/Result4.cs: + id: 4d8d0e080538 + last_write_checksum: sha1:56b22cd7a69e4197c6a343013ec6ab690f1decde + pristine_git_object: f945fb9c3b61821042f930fdfdb3946dfead1a6f + src/Novu/Models/Components/Result5.cs: + id: 32f2e6082a05 + last_write_checksum: sha1:ce4d0ad181b05eed30ffb5fa0f5be53ea6f7b6fd + pristine_git_object: 707e37deeeba28b6bb2a07ce01195e4223796043 src/Novu/Models/Components/ResultType.cs: id: "882810391883" last_write_checksum: sha1:d2a10060c03f97a5499f0e4e4c58d16b1c36334b pristine_git_object: 4c2bd09ec015d4e7b58c2165c7aa705eaea44f1a src/Novu/Models/Components/RuntimeIssueDto.cs: id: 35cda6507c86 - last_write_checksum: sha1:d58bf9ce05d9aaa6606b30bfa9806da0d46f0661 - pristine_git_object: 0e0af2c28cf39441bb3ea4e37b004575cfd18c0e + last_write_checksum: sha1:ddf2eea924b571853241bcdc13561013b9e97e6b + pristine_git_object: f1ba4c670e94f6c60071229335639b578edac65f src/Novu/Models/Components/Saturday.cs: id: 4f17a5d1b842 last_write_checksum: sha1:ad2639ec1d32b0866d2e74b173dd91a0e20361a8 @@ -4140,10 +4998,22 @@ trackedFiles: id: b34e93255836 last_write_checksum: sha1:acd8b97eb57bec2f86aa8acc57e7c3613a5d8ad0 pristine_git_object: 38240e1966bd27fccc572a6b4c0b9687620b2b0f + src/Novu/Models/Components/Seven.cs: + id: 62f50bc72665 + last_write_checksum: sha1:7fb60394173d2a1fb11a7cd31c601067529f4121 + pristine_git_object: d98ece2db4d2b27971593206b079e777e9606bdc src/Novu/Models/Components/SeverityLevelEnum.cs: id: b138cbd326e0 last_write_checksum: sha1:58f641290165f66b974edcee8746164b8c7bc612 pristine_git_object: d5f95f18502ead9e9206b78e71df10541b934076 + src/Novu/Models/Components/Six.cs: + id: 0507cb0405fa + last_write_checksum: sha1:2a49286c2e1588759331fff34f9f2e7ba3b9f804 + pristine_git_object: 248fca547b3eaf54f4992d0e6729f469f9268d52 + src/Novu/Models/Components/SkippedWorkflowDto.cs: + id: 202224d6ffe6 + last_write_checksum: sha1:642b2e053c32d6b79abeaed99fd03ededd433789 + pristine_git_object: 30cc4151dc9b6a6cfd46c27173394b74e8f0c722 src/Novu/Models/Components/SlackChannelEndpointDto.cs: id: 58c1b9296555 last_write_checksum: sha1:fabd57865dbd1295f382ef43317a254843320f4e @@ -4160,10 +5030,14 @@ trackedFiles: id: ab6600194eee last_write_checksum: sha1:4462a887e6be132a1facbb2c0aeb5bc936c45e96 pristine_git_object: 25b03fa495ca0b7da2483b1734d05f1c0094becf + src/Novu/Models/Components/SmsRenderOutput.cs: + id: b0e507b52fd1 + last_write_checksum: sha1:cc3fac6e575486db80423f9db81bbbe4034970e4 + pristine_git_object: d3c4512c1d383948bdb28477e9211932aaa54825 src/Novu/Models/Components/SmsStepResponseDto.cs: id: ad90db7e8747 - last_write_checksum: sha1:1cc61c5f6912f3563f0618610dd8dbfc732d07aa - pristine_git_object: 2444b17719162f8a019d45c69b15fde5186437c9 + last_write_checksum: sha1:558215e4976577aba30b8d366bc6d1a297ebc377 + pristine_git_object: d2f8fe196c7e208f45f482457b6aa63e3531b2b5 src/Novu/Models/Components/SmsStepResponseDtoControlValues.cs: id: 9d0afb5f1fee last_write_checksum: sha1:e4c6374524dd5606c9e3279e85c922cbcfdef4eb @@ -4176,6 +5050,14 @@ trackedFiles: id: 01cc5266fcdf last_write_checksum: sha1:cfeb2f828f1ea00471b04ce245e34fd254eaa4a4 pristine_git_object: 7fa0dc42c38010186019e239b7e6f434b31af1fd + src/Novu/Models/Components/SnoozeSubscriberNotificationDto.cs: + id: b814b93f28fa + last_write_checksum: sha1:073c56b63a3b7f84ab4aba6826cae812fda01627 + pristine_git_object: da59ce692cd6752257b712d9f709c48c5f7178b0 + src/Novu/Models/Components/SourceResource.cs: + id: 5bd8a59e4031 + last_write_checksum: sha1:9cefe28446452bbd8ba8aab5e9645e5d7bd8b4af + pristine_git_object: 4da730527dc1982f72906a46d6f78fa0d88a12b6 src/Novu/Models/Components/Status.cs: id: dd9a94bc9ab5 last_write_checksum: sha1:64dabf19f900a417f82d54c08bc249b4ee03348e @@ -4206,16 +5088,16 @@ trackedFiles: pristine_git_object: f7b36304753d187726e6123cb0a3ac47f0f2cecf src/Novu/Models/Components/StepResponseDto.cs: id: 5421f1ee7141 - last_write_checksum: sha1:d55f45008d6a254aa0e550378413a0fd295827b2 - pristine_git_object: 0d1902687fa42051125afc1302e15530830d5b51 + last_write_checksum: sha1:ccbaaab7940a2ce08178dc7aea67ab0614b56c12 + pristine_git_object: b87202e29c0c69bd15dd544a42d0be5119338e63 src/Novu/Models/Components/StepTypeEnum.cs: id: 34ec13a227e9 - last_write_checksum: sha1:b29308bd6a637c6b81f91c9f93ac140e0739b211 - pristine_git_object: 6e74acc2e86fb2ae52f6a2266324549a106f043b + last_write_checksum: sha1:b097b1949e909ff69637681030b410abe0eb2447 + pristine_git_object: 9b9d8e45a08ecc01211033d05a02abf60b4a3719 src/Novu/Models/Components/Steps.cs: id: cb4f5c32071f - last_write_checksum: sha1:533abc0aee53e882cb25a293575d818f8cf58a9f - pristine_git_object: 42cb43724f7ad18e4df9800a0ce0498868ad5e14 + last_write_checksum: sha1:4c77b2251fbd13d100fa6e526a79c55add982a37 + pristine_git_object: ef48fc8cfc68d77244bcb8015d30fbd449d5beaf src/Novu/Models/Components/StepsOverrides.cs: id: 5f2506bf92d5 last_write_checksum: sha1:bd2bde1d9bda1423173f005e66b6d8a686200ae1 @@ -4316,14 +5198,34 @@ trackedFiles: id: 09d3394e835e last_write_checksum: sha1:268515d2b260a73c9ea39a328178ce6a56e593fa pristine_git_object: 7532557f16d4b110b997f259d8a61f7d86a34fc0 + src/Novu/Models/Components/SyncActionEnum.cs: + id: 631e84642a9c + last_write_checksum: sha1:fc601caafb4600e98fc70e2efea245e4ab186319 + pristine_git_object: 101aed83962d1fd2586f48fb742336dec49cc13a + src/Novu/Models/Components/SyncResultDto.cs: + id: 3ece5cbd57be + last_write_checksum: sha1:b0a27535b6248c0a5d09a5d890a1767cbcb9d335 + pristine_git_object: 38684cac4a6e65c080a43f03d3507a1ea3684c37 src/Novu/Models/Components/SyncWorkflowDto.cs: id: 53cd08b85638 last_write_checksum: sha1:130274e435343696d2d710042ce65fb2a608a8d9 pristine_git_object: 30765720c988862bef4e3c2a29be20f2c4839c92 + src/Novu/Models/Components/SyncedWorkflowDto.cs: + id: 4d977ccc3b47 + last_write_checksum: sha1:cd9e1ec55e063dbaa390313fb8faea93d1146441 + pristine_git_object: 9d21c0d4ea0fc6ee009821836b168dd42e0aa77c + src/Novu/Models/Components/Tags.cs: + id: 274c068d40af + last_write_checksum: sha1:435f991b5e000dbdfd23a4dd6a221ff71e8de12e + pristine_git_object: e5e1f24a755bf12b23701aaa287cc8d0e67089d9 src/Novu/Models/Components/Target.cs: id: f89d693df3e9 - last_write_checksum: sha1:99ea36957f32edcdfa90294c0af0aa3f8669fb79 - pristine_git_object: 4b219fc7c30b416df471f94c04ec5a49b7f9240b + last_write_checksum: sha1:4d0a3b6f9ab57ad583f6e1e26c40bd656fa499c5 + pristine_git_object: 631b6471289e2ab14e23ccf2be5059a86f892ab2 + src/Novu/Models/Components/TargetResource.cs: + id: 898ca592db07 + last_write_checksum: sha1:3817b82a0042d4db0f00bd9fc32ca131b6b31a50 + pristine_git_object: bffeeda8b142aa5c3710f6f137ed79bd29f1ce8b src/Novu/Models/Components/Tenant.cs: id: 43f7d3407185 last_write_checksum: sha1:44f107a19d85f317172d01c2742f181d73b287b0 @@ -4336,6 +5238,10 @@ trackedFiles: id: 6c476bc17fe9 last_write_checksum: sha1:afb76896a741a332a9e16968aa1c4731df3cfbcf pristine_git_object: 5d469d0e49f603e0cfc058155a7a63a8d8b848d4 + src/Novu/Models/Components/Three.cs: + id: e5926e0dfc69 + last_write_checksum: sha1:b92570492944f8af4f1cec0352e3b74ee94204c3 + pristine_git_object: 49043efbc84e8000b4d2f246ad7b02c58df38652 src/Novu/Models/Components/ThrottleControlDto.cs: id: 265f2ca6dc03 last_write_checksum: sha1:9307d848d63545de657c5b1812b07eded6da75b9 @@ -4354,8 +5260,8 @@ trackedFiles: pristine_git_object: 3f0e168c67b4cf035109e572345858de5152f16f src/Novu/Models/Components/ThrottleStepResponseDto.cs: id: 7949210436ee - last_write_checksum: sha1:d994278fe0f2705de6ca38ffc5285818354caa6b - pristine_git_object: c4c00836fc3bfe67142a230d6d8bd1643f298bed + last_write_checksum: sha1:0dc5f94f38e8e96838cf404d211a16e27d4a5a82 + pristine_git_object: d4c6918be7f12f9ae3112fc95994ff2caaff2725 src/Novu/Models/Components/ThrottleStepResponseDtoControlValues.cs: id: 4ae0053e3077 last_write_checksum: sha1:8e3a4043be117d3a8b773123d444293f91f7b918 @@ -4384,6 +5290,10 @@ trackedFiles: id: f0d33cb6ed06 last_write_checksum: sha1:f61e442012fd393466e9adb4fde8c46cee19c8dc pristine_git_object: fc00faaf1060ec384c6f8cbcdde2ce82133208d2 + src/Novu/Models/Components/TimeUnitEnum.cs: + id: 0535810667cb + last_write_checksum: sha1:edaa54850a7e916cff537535ce4c2e1e1b074609 + pristine_git_object: d5f0864a0d659b438939981dfd24cccbd611b015 src/Novu/Models/Components/TimedConfig.cs: id: 6259c132c01b last_write_checksum: sha1:7eaad665f496f2a7151be79cc3b46814f1318434 @@ -4454,8 +5364,8 @@ trackedFiles: pristine_git_object: ca3b50a157000cf7ab258fcb433f8dcd6892faa6 src/Novu/Models/Components/TriggerEventResponseDto.cs: id: 96bee3b2adaa - last_write_checksum: sha1:1b047197a5147e18fb622a2e8379a81896d5c957 - pristine_git_object: 537cc5f2f89b91c608e3d7e40a50f91e36f2b2d5 + last_write_checksum: sha1:e78460e6748a4913974703f72453b459c732ba26 + pristine_git_object: ec0d85a0fa0aeaeb2105f5a0ce8b79db94003ca5 src/Novu/Models/Components/TriggerEventResponseDtoStatus.cs: id: 80e979ca7b82 last_write_checksum: sha1:de158d61b9837ffa77258ec0fbab032faa6fd632 @@ -4506,20 +5416,20 @@ trackedFiles: pristine_git_object: 0320b1a82e274234a737bbc1d0a6b49ba6357b41 src/Novu/Models/Components/UiComponentEnum.cs: id: faea2f45dd97 - last_write_checksum: sha1:9b9d382dc4da09719ff58b79837a6f2b8ecb68c4 - pristine_git_object: 5cebfd740d24ef5bcd312c062160acb7712a68d8 + last_write_checksum: sha1:0a32d0b0fd2682ce0a32382c90c835ef01fc3156 + pristine_git_object: c67b8ccc679d2183491eeee1f7fc62619a18adfc src/Novu/Models/Components/UiSchema.cs: id: 7a0aaddf6f1e last_write_checksum: sha1:ef51b7c4df9104d8b96b9107c4fed27e61ba2e58 pristine_git_object: b86d52caefe083437cc6b077069ee80b12b8d219 src/Novu/Models/Components/UiSchemaGroupEnum.cs: id: 4d2b615736bf - last_write_checksum: sha1:5bda3c04e3bdf4d07024c7e13c1a0fa02d43c491 - pristine_git_object: f77c4de1e3874680493a1abcfafad939c4b945a1 + last_write_checksum: sha1:8deda6713b6ab8f8b4fc1989efa895d1fb74787d + pristine_git_object: 34ed29732ba841da19c9cb6871f303799b4a3144 src/Novu/Models/Components/UiSchemaProperty.cs: id: 27458b3a0db6 - last_write_checksum: sha1:3e0e42f8feb0846b0fa7623d6dc86a665b007b21 - pristine_git_object: a0f515c19527b98e6c247182d79cc1776f2793aa + last_write_checksum: sha1:d0afac8b42c71dc3f33389029caf4a2df2c49984 + pristine_git_object: abcfa5f68cccbb0fc5a1b01f1f049cc8089ca795 src/Novu/Models/Components/Unit.cs: id: 8ca12b2a3fe9 last_write_checksum: sha1:653492028bca390b3d4f991e6abe871b3294ef33 @@ -4528,6 +5438,10 @@ trackedFiles: id: eb97970ae02a last_write_checksum: sha1:243d03f2b35bd0e260429cd17725d0246016b4a9 pristine_git_object: 4bc809e82ef10703545d5dc03c82dd12025d1122 + src/Novu/Models/Components/UpdateAllSubscriberNotificationsDto.cs: + id: bbdc43bafb27 + last_write_checksum: sha1:a16c3874b44c1c8e2167c1f91d9baaa0fb9247f7 + pristine_git_object: 739eb8642a23cec746f0cbea5be3685150757745 src/Novu/Models/Components/UpdateChannelConnectionRequestDto.cs: id: 04e3b6d151ef last_write_checksum: sha1:ca66cf51f39268cf53da5c60db7e9eff24c7a4ae @@ -4548,6 +5462,14 @@ trackedFiles: id: dfb075c55e4e last_write_checksum: sha1:2d22efe020e447e89a8ba33e27149ac8c047787e pristine_git_object: 5a72a687b9a0deeeca69733e365ad091a54d0137 + src/Novu/Models/Components/UpdateEnvironmentVariableRequestDto.cs: + id: e0d92ea97da5 + last_write_checksum: sha1:86144f2d6ed0d8d2c4e8578d831393108a3fddb6 + pristine_git_object: 028e3b66291f80fbbde124213ce14e7174110391 + src/Novu/Models/Components/UpdateEnvironmentVariableRequestDtoType.cs: + id: a8a8125ee4e2 + last_write_checksum: sha1:5a31f00d3f09545cea3cbf3bc0c566a918d8771c + pristine_git_object: 455ab9f938ea0bedd1baa77fb479c93f73113811 src/Novu/Models/Components/UpdateIntegrationRequestDto.cs: id: 27e4f50a278b last_write_checksum: sha1:fcd52f01458bc52cbe9595e21a7ee04720170242 @@ -4558,8 +5480,8 @@ trackedFiles: pristine_git_object: 71eeb5d3e3f830dba6af06ec6caac56afe287fed src/Novu/Models/Components/UpdateLayoutDto.cs: id: 640b86901db3 - last_write_checksum: sha1:6439d6abd85295ea79e2a4a2e9e3962edabec0c7 - pristine_git_object: 8913ed18e504528ef8162140d9ab09d8f25c5143 + last_write_checksum: sha1:63e08c8680dfd8856006b76222687c76f3c8799d + pristine_git_object: 476d05bac82aa1c1945bf2ddcf5c628916353894 src/Novu/Models/Components/UpdateSubscriberChannelRequestDto.cs: id: fd8bf7aa7d4f last_write_checksum: sha1:c09d7a605f4b9705a8b147ffbbe1559761aa99dc @@ -4586,8 +5508,8 @@ trackedFiles: pristine_git_object: a5ef3de248244aef013312658ac175b7d42453bc src/Novu/Models/Components/UpdateWorkflowDtoSteps.cs: id: 2133d60911fc - last_write_checksum: sha1:ec5aaf5eff1f51a8ae0000f4d3cc4264fea326c5 - pristine_git_object: 5316ad3364cef82d5db9ac641740620a66b1de47 + last_write_checksum: sha1:5527ffc4022829a464dcf27441bf9fb96cd6eca1 + pristine_git_object: 6af2bf45b0cdc62a91b841b57e43dc4719925765 src/Novu/Models/Components/UpdatedBy.cs: id: 5cba7026060d last_write_checksum: sha1:60aa494f45393a46c1fe91de59712c321acda427 @@ -4650,8 +5572,8 @@ trackedFiles: pristine_git_object: a1b2f0a2f9cc0f8d9d32b90dc0b9bd096b10a31f src/Novu/Models/Components/WorkflowCreationSourceEnum.cs: id: 28a0869b9312 - last_write_checksum: sha1:c171869119a62e6e07047cef230032848709d1d3 - pristine_git_object: f7488eb2de6e10ec1120ef6c8c86aa0fce3895d3 + last_write_checksum: sha1:e5dab219992dd1a911cce5dc52337c57d52de7a6 + pristine_git_object: a9b42bc0baf1561b9458caa6f6446f7f083a4cdb src/Novu/Models/Components/WorkflowInfoDto.cs: id: 10c3868f4272 last_write_checksum: sha1:c2c0be2724d0131bcb917912a7fbe4c037aa12bc @@ -4714,8 +5636,8 @@ trackedFiles: pristine_git_object: 13fb5bc5a20c50f49f327992269ea3efd7c66707 src/Novu/Models/Components/WorkflowResponseDtoSteps.cs: id: 841611b68101 - last_write_checksum: sha1:b590a451009f5a4c0c9228e97fca49640c6a279e - pristine_git_object: 0c14169cfeef5c23605ea5e83f7127bd3a7147ba + last_write_checksum: sha1:7415c0cfaf4868aace9a6429470137ed89e380c7 + pristine_git_object: 2190c77a2fbe994da02f007a4e1022582d437471 src/Novu/Models/Components/WorkflowResponseDtoUpdatedBy.cs: id: 8ae42aee31f4 last_write_checksum: sha1:af8e76df8562dd156a580a983b4951763ad7bb4b @@ -4776,6 +5698,10 @@ trackedFiles: id: 313bc3366f84 last_write_checksum: sha1:f895a568f0e92960d7f6aba6c7403eab2a3cd447 pristine_git_object: d916f3b2ea7393c2abf10ffa3d8f539892f43cc8 + src/Novu/Models/Requests/ActionType.cs: + id: be6d8b380b97 + last_write_checksum: sha1:ce05d5aa19499d067a97989abc959c5612f3aee4 + pristine_git_object: d1d10ca4fb09ec54399a2ed636b5fc3e77c29d01 src/Novu/Models/Requests/Channel.cs: id: 19c80f55de85 last_write_checksum: sha1:f0cfc6aa5c11884febcee1645bcf1072e45a1f96 @@ -4916,6 +5842,62 @@ trackedFiles: id: b1f6dba9faa6 last_write_checksum: sha1:684f6e98db4b4d6251bca0e4c1afe5ad2bfa1c2e pristine_git_object: 2ebd86c65b030349c7d08a2b3a89a9de1c7a18cc + src/Novu/Models/Requests/EnvironmentVariablesControllerCreateEnvironmentVariableRequest.cs: + id: 3629ed429f20 + last_write_checksum: sha1:7b543ae4feeb21b0f6d3c11f975f214a137f2cfa + pristine_git_object: dbb288441e70a1622bc0a33920f0e151d7cf278c + src/Novu/Models/Requests/EnvironmentVariablesControllerCreateEnvironmentVariableResponse.cs: + id: aa6e63bbc165 + last_write_checksum: sha1:c14589461b14bea89d95e8343ab8419448901d3d + pristine_git_object: fc79a4dd3e35b0e7369de52a084eeb86ebc0ca73 + src/Novu/Models/Requests/EnvironmentVariablesControllerDeleteEnvironmentVariableRequest.cs: + id: be6287ba3277 + last_write_checksum: sha1:67aba1eb817549aa16e6c9fa0798166ce6b39dde + pristine_git_object: 23440c9bc1bcf9697fe8b3aae7ecb19e28b3035c + src/Novu/Models/Requests/EnvironmentVariablesControllerDeleteEnvironmentVariableResponse.cs: + id: 2d4d0983f28f + last_write_checksum: sha1:fd52a3a33bea7dfbb32831eb026b109ef6364fca + pristine_git_object: 70f5c6f838edc209ca15fdc11de24bf773aed6bc + src/Novu/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableRequest.cs: + id: 92d02af8b822 + last_write_checksum: sha1:39fc38a80119907519f196d98ea115eeb2211958 + pristine_git_object: 868dd629ee33eb323b836d4fd78848f21da8ecd4 + src/Novu/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableResponse.cs: + id: d897d313914b + last_write_checksum: sha1:a88e650ce7d083f229bac5e6f5725fdc8290129e + pristine_git_object: 98fb6d503f756a31e9b76b654122401a1152b5b7 + src/Novu/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableUsageRequest.cs: + id: 6ed1f8126e76 + last_write_checksum: sha1:e2846767e98d0ea649c93af79252bb02041ccf52 + pristine_git_object: bb61ceb2c38985b64c98a49b8211a509b782815a + src/Novu/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableUsageResponse.cs: + id: 57e89e29b1ce + last_write_checksum: sha1:4c6fcfdadbc0946bc5a9a4926b3097f034639cd6 + pristine_git_object: 32aad29292a30d71d5a034cface240060396cbb0 + src/Novu/Models/Requests/EnvironmentVariablesControllerListEnvironmentVariablesRequest.cs: + id: 09d23c257c8a + last_write_checksum: sha1:1e214004db7765c7e68ce459571a6dbcf950d289 + pristine_git_object: 4023ddc6ad43edc5f74ebfb167622492cc4f03a5 + src/Novu/Models/Requests/EnvironmentVariablesControllerListEnvironmentVariablesResponse.cs: + id: 6b080e30e05b + last_write_checksum: sha1:842f9ad8b852e9e11702069805e0c95fb108d7e7 + pristine_git_object: db675f7affe5675a01009792116e8e67b4fb77e7 + src/Novu/Models/Requests/EnvironmentVariablesControllerUpdateEnvironmentVariableRequest.cs: + id: 4ac7c1b80151 + last_write_checksum: sha1:9620ee234ce6229bf6f3998ec3492938e49fff07 + pristine_git_object: af24432bd60248e772445e5f3991b6abfcc2e61a + src/Novu/Models/Requests/EnvironmentVariablesControllerUpdateEnvironmentVariableResponse.cs: + id: 541f3347c6ad + last_write_checksum: sha1:f4338f70de64666bf605f624b77c3198e5399de0 + pristine_git_object: 053153a02c9fdde42f60e2d5908f7c5c1c9667ef + src/Novu/Models/Requests/EnvironmentsControllerDiffEnvironmentRequest.cs: + id: 6f350b48021d + last_write_checksum: sha1:5a1ebd9e413181404cdcc0ffb4cdf21ad3cc6e1b + pristine_git_object: f7267116c8f4a7d37ab708214e3c440a8217b145 + src/Novu/Models/Requests/EnvironmentsControllerDiffEnvironmentResponse.cs: + id: bcfee2b15ccf + last_write_checksum: sha1:a0f3a290493e58f8b0cfd9ef53e2af90bed02739 + pristine_git_object: c1aae73a31877d9dda01ccb24d1749939f221fd4 src/Novu/Models/Requests/EnvironmentsControllerGetEnvironmentTagsRequest.cs: id: 8962d80431d5 last_write_checksum: sha1:1ce3a051378002babf824b05954051752e47c3f0 @@ -4924,6 +5906,14 @@ trackedFiles: id: 1b9baf1fa609 last_write_checksum: sha1:42fd5c27c8d2001f142e9b93f7646aa30d7fffa7 pristine_git_object: bcaebf2de9a6d759911b5ea86b9541f6d06a5908 + src/Novu/Models/Requests/EnvironmentsControllerPublishEnvironmentRequest.cs: + id: b5565d8ba82e + last_write_checksum: sha1:d932a0852c4c973aec845bf959d5a467c2611bea + pristine_git_object: c261e831eb9823da94fc49f35fc5522762ff0231 + src/Novu/Models/Requests/EnvironmentsControllerPublishEnvironmentResponse.cs: + id: 35c1c66ca790 + last_write_checksum: sha1:cee262e3e8d8671ee388213a4214d26fdf5487fb + pristine_git_object: 44398124ac8571295ca58f8c41d5d00907ae3bde src/Novu/Models/Requests/EnvironmentsControllerV1CreateEnvironmentRequest.cs: id: e166990b5b84 last_write_checksum: sha1:1073953019013f8fe5f9157807f5a5d191703d36 @@ -5180,6 +6170,10 @@ trackedFiles: id: 2023c7b9a667 last_write_checksum: sha1:d31d16bafecbf68ecde249454689b549f32752b2 pristine_git_object: b3e8e2bbc7a2f37e1ae0c460d75a328532d2a235 + src/Novu/Models/Requests/PathParamActionType.cs: + id: beabf7ff0d28 + last_write_checksum: sha1:9fde9319ad6ecf585cbfcd288f95c15b9a242946 + pristine_git_object: 92541a5d54c7af6e377b9ac9f6f847c09ce70a9d src/Novu/Models/Requests/PathParamResourceType.cs: id: ce85552b6cf9 last_write_checksum: sha1:7e582603716973040be7df266b27a021a3dc632e @@ -5196,14 +6190,50 @@ trackedFiles: id: b5cdbef0770f last_write_checksum: sha1:ed568b60ecc0aec9b97a08050a8ed4711e8d4e6d pristine_git_object: 6513f9eeed04c033bbf34bfd3d37a388f97d32bb + src/Novu/Models/Requests/Severity.cs: + id: d578444d920c + last_write_checksum: sha1:8dc0b7d4f55c1197d9ec3ea057bfa6e04b690cb0 + pristine_git_object: 9aa2d0ca8f18e8a72f9af46b4a204080620ef96b + src/Novu/Models/Requests/SubscribersControllerArchiveAllNotificationsRequest.cs: + id: 3d42fbf01eaf + last_write_checksum: sha1:8a48033bfc29594407d25c53fd29de5e1cf8ae3f + pristine_git_object: 8c515668f683544c6a0458b9aac8bd0031c30abf + src/Novu/Models/Requests/SubscribersControllerArchiveAllNotificationsResponse.cs: + id: cd3cb69bec94 + last_write_checksum: sha1:5c91d114575d4395f90eefe19dd21e09a7b5a55b + pristine_git_object: c18219759ce6f99920de0d160a0f465ea3213c23 + src/Novu/Models/Requests/SubscribersControllerArchiveAllReadNotificationsRequest.cs: + id: 07fc6f8b0883 + last_write_checksum: sha1:b2b8e6c3be8a7afc09aee3cc0259c9957d2b7917 + pristine_git_object: 17f50c942a33441620657cbbe1f74520bdb59ed5 + src/Novu/Models/Requests/SubscribersControllerArchiveAllReadNotificationsResponse.cs: + id: 55155505bd9c + last_write_checksum: sha1:b1b7e1c85a82c509b8b3eff756b283474cbdeb3a + pristine_git_object: 5dd5ee78c37699bec3ed080644ca5057bcf915d0 + src/Novu/Models/Requests/SubscribersControllerArchiveNotificationRequest.cs: + id: 9b3a04a9ed8b + last_write_checksum: sha1:572808113efce98b128bf63add286a2dc26738cb + pristine_git_object: 34af39accd0ed4e01bed7316f8a94b8bf1d1dcd3 + src/Novu/Models/Requests/SubscribersControllerArchiveNotificationResponse.cs: + id: 9b159c2d8c55 + last_write_checksum: sha1:4bdaf7c62acaec288b9b91c2f54c8bfd888dcc68 + pristine_git_object: 2ad13b3ea382df05c18530f79b2336fce87ff801 src/Novu/Models/Requests/SubscribersControllerBulkUpdateSubscriberPreferencesRequest.cs: id: d38fc805c167 - last_write_checksum: sha1:b6390532bc4a1e56c428476b4a32e912a0b17f4f - pristine_git_object: 7382fb8be8dc225e75927c7890eadec20ca2e80d + last_write_checksum: sha1:d75a32b7aae3b58a1de68662e5187a7c9162550d + pristine_git_object: 946512fcd1862c422ed428bda2a1c9dc755ab2ff src/Novu/Models/Requests/SubscribersControllerBulkUpdateSubscriberPreferencesResponse.cs: id: 06b3b04a5fc5 last_write_checksum: sha1:994158047373e245b4477eccf1d47223c3b30342 pristine_git_object: 2cdabdb1c196136e1914c81afd875bbe34b3f118 + src/Novu/Models/Requests/SubscribersControllerCompleteNotificationActionRequest.cs: + id: 74fc593aa0cf + last_write_checksum: sha1:8fc95eebb554fe9f57ce5f00fa0e5372e1a8a043 + pristine_git_object: d25821c2ee52d04daf8bfff99cbea3d09b7c7295 + src/Novu/Models/Requests/SubscribersControllerCompleteNotificationActionResponse.cs: + id: a9810f424155 + last_write_checksum: sha1:cd8e5ac55bb6bf808b786683f54fcaa857aaaddb + pristine_git_object: b6682d1c0a380c672c8cc5cc2b8696bb15cf7e40 src/Novu/Models/Requests/SubscribersControllerCreateSubscriberRequest.cs: id: c5c0005f79f1 last_write_checksum: sha1:cf8a457aee92f33690de14e1a84fa7646be3fa06 @@ -5212,18 +6242,50 @@ trackedFiles: id: 1d4edc8357eb last_write_checksum: sha1:a7bb3aafc4cfc4181d576cecec4cacd2a5a87af9 pristine_git_object: 76a997faf008eff79954072168d578f66d66d6cd + src/Novu/Models/Requests/SubscribersControllerDeleteAllNotificationsRequest.cs: + id: 0b77fda767e3 + last_write_checksum: sha1:cf344fbc0a091ccaae78794c1a97075117a9f5ca + pristine_git_object: dd2bcbeef657d4be1a1b77d774b19fa341cb8f0e + src/Novu/Models/Requests/SubscribersControllerDeleteAllNotificationsResponse.cs: + id: 26de87185902 + last_write_checksum: sha1:88a33f484ea9891d754b4b7b175b7a72d146d059 + pristine_git_object: df81bc89ab5ba62ecfc5734c4c3fc6a136b3dbaa + src/Novu/Models/Requests/SubscribersControllerDeleteNotificationRequest.cs: + id: bd40454ca431 + last_write_checksum: sha1:27239734e2455d5a6e96952db55a85b23ffefee0 + pristine_git_object: 495e0a928558a00757ac69db514cb15c23de3683 + src/Novu/Models/Requests/SubscribersControllerDeleteNotificationResponse.cs: + id: c9b7413627f9 + last_write_checksum: sha1:cd3125e52acca5e2a284368407fff6b11c9f3302 + pristine_git_object: 6c9705f497b085393676604c5498b058693f433f + src/Novu/Models/Requests/SubscribersControllerGetSubscriberNotificationsCountRequest.cs: + id: 46fab18ed82d + last_write_checksum: sha1:9378c8ffde914fc712fe827d212c9f0c0e950ddb + pristine_git_object: 78436775570f6fb986df4cd61b92e47f22980b0e + src/Novu/Models/Requests/SubscribersControllerGetSubscriberNotificationsCountResponse.cs: + id: 5640cf2d3742 + last_write_checksum: sha1:c66392256f051dc00268770b6cc42462358bffb5 + pristine_git_object: 793aab0ac7c0291afa2c28ddcccf75d1c71b5887 + src/Novu/Models/Requests/SubscribersControllerGetSubscriberNotificationsRequest.cs: + id: 1837cbf23699 + last_write_checksum: sha1:e84d968c7ec43e70d5e1812efd914c845c89cba5 + pristine_git_object: 71f6f8afbdf81557ab0853452556a7972554239e + src/Novu/Models/Requests/SubscribersControllerGetSubscriberNotificationsResponse.cs: + id: c9c698af454a + last_write_checksum: sha1:5b6b31fe31965a1182e61dc21d19dd84240020f4 + pristine_git_object: 39781f14b06d6942d684dc6cd943af7d919aa36e src/Novu/Models/Requests/SubscribersControllerGetSubscriberPreferencesRequest.cs: id: 057e4f72cf79 - last_write_checksum: sha1:63e06500c263a199aeeabc59667c59076eba6530 - pristine_git_object: 8a2351b0c97ada098e34a68ca6ba8b93037021c1 + last_write_checksum: sha1:cd0312c81dba4a175d652d2122a808ed2517deb5 + pristine_git_object: bf6188e5d60039028da5e6a9e98c707ec3efb02f src/Novu/Models/Requests/SubscribersControllerGetSubscriberPreferencesResponse.cs: id: 4e4fb8145a44 last_write_checksum: sha1:d9ed846eccf2b3179bfafeaf33283649398e414b pristine_git_object: 0067ddb9bb2c0a285d981c9d8f67132b78bf8c91 src/Novu/Models/Requests/SubscribersControllerGetSubscriberRequest.cs: id: 99690dcff7d3 - last_write_checksum: sha1:7a922e3be42a85606e23a4a0771332e253b70c4d - pristine_git_object: 503a955a9b4f045d46163f5781212812e3e023d2 + last_write_checksum: sha1:1653bdcf12612444d6040331eca05488d8e8b14d + pristine_git_object: 08581fc85701237face37a97b85a086298319e0c src/Novu/Models/Requests/SubscribersControllerGetSubscriberResponse.cs: id: c08bc44a3761 last_write_checksum: sha1:6ecd775cb08be1ba966a37686e07c98962170f25 @@ -5240,22 +6302,62 @@ trackedFiles: id: 1d7f7690d2e4 last_write_checksum: sha1:3f18a4e970c196f99f744e9e54b5313ee9e3fe76 pristine_git_object: a960e8afa6df3da31415c3d8e82939af48e4005c + src/Novu/Models/Requests/SubscribersControllerMarkAllNotificationsAsReadRequest.cs: + id: 92fa823864a8 + last_write_checksum: sha1:6cf228ce48c09cd136a2e738fa89f7f93c7e6c10 + pristine_git_object: 479d90ead0e321ee2acbb0b3da3c5009aee5bb73 + src/Novu/Models/Requests/SubscribersControllerMarkAllNotificationsAsReadResponse.cs: + id: 36dc478b0233 + last_write_checksum: sha1:b594241244224c2f704389572c8a36bff7c192e8 + pristine_git_object: dbc01136c2b70acd43e47f77d664369fb3733a14 + src/Novu/Models/Requests/SubscribersControllerMarkNotificationAsReadRequest.cs: + id: 862f0413b09c + last_write_checksum: sha1:63eacdb8f3fce949109012a6056389bebb3a9b9a + pristine_git_object: d31b6d32cec56ca2bdd3aea554b66e7bac39c169 + src/Novu/Models/Requests/SubscribersControllerMarkNotificationAsReadResponse.cs: + id: 87f7f8971a0e + last_write_checksum: sha1:dfce9d808c216489c39eccdd205402a09c7f0053 + pristine_git_object: 44c1abbe8eef95d213bd6eea976c060b5ea67c15 + src/Novu/Models/Requests/SubscribersControllerMarkNotificationAsUnreadRequest.cs: + id: fd530a0f9040 + last_write_checksum: sha1:9e81d10e460bef9f812f8d63f15e6a99cb8a0f98 + pristine_git_object: 6daf19b6d8748111a98c7e018baea7a1125f1632 + src/Novu/Models/Requests/SubscribersControllerMarkNotificationAsUnreadResponse.cs: + id: 4bb844a38547 + last_write_checksum: sha1:aecc170df6afc020983ea4015a21b59df6317a16 + pristine_git_object: d02f3a278ab5de09affe12746c76c0d2104498c6 + src/Novu/Models/Requests/SubscribersControllerMarkNotificationsAsSeenRequest.cs: + id: 94654cb09809 + last_write_checksum: sha1:c90d0e921f53f554c12912bcb54d2f3ce23499b3 + pristine_git_object: 987278ba7eaea51e952ff3bd85c9b749934028c0 + src/Novu/Models/Requests/SubscribersControllerMarkNotificationsAsSeenResponse.cs: + id: 19704a94770b + last_write_checksum: sha1:9ad51003d90121677863ad5da514853bd4291328 + pristine_git_object: 5aa9206dcc0cbacfaa107bf172de3bf277819b1e src/Novu/Models/Requests/SubscribersControllerPatchSubscriberRequest.cs: id: 91052c88eb3f - last_write_checksum: sha1:9744bfc942016b0568674abe570d2be5a260f747 - pristine_git_object: d54ec4352ed9dc81a2f8f1b1e23398688eb02c75 + last_write_checksum: sha1:0c570a8d2e4b31e63d7bde26f0b98b9cf0130a5f + pristine_git_object: 199bb6150fe745e4d0cfa76520b730866a6e989e src/Novu/Models/Requests/SubscribersControllerPatchSubscriberResponse.cs: id: 55c65c05d9f1 last_write_checksum: sha1:804587443d92f736694299a23395786a38fe879b pristine_git_object: d9ecb7fa68df420baa992d68f832a35c4d5cdcb5 src/Novu/Models/Requests/SubscribersControllerRemoveSubscriberRequest.cs: id: 68f37a57e363 - last_write_checksum: sha1:caf86b1def877741c0e285ca6983c84317ce4189 - pristine_git_object: 8b39d5b73f875769138253d54964931a26dd5d2d + last_write_checksum: sha1:5994ee6543aca8d3e3d8734d5a8cea574a241b4d + pristine_git_object: 615a01903056ddfff34c5513413404b9b21ac583 src/Novu/Models/Requests/SubscribersControllerRemoveSubscriberResponse.cs: id: 3c701f3bd1cd last_write_checksum: sha1:dd7c8a9e5d5347de17b83268f79922db18ebc53c pristine_git_object: 66e8057e9f07b9043e7d3589fdf5e15cea6de511 + src/Novu/Models/Requests/SubscribersControllerRevertNotificationActionRequest.cs: + id: 3fb11d5e0714 + last_write_checksum: sha1:68a832ed8e520f924dac08207778a982f96751b1 + pristine_git_object: 0ab37580e398c10dc7619f8b1043dc9ded4ffad4 + src/Novu/Models/Requests/SubscribersControllerRevertNotificationActionResponse.cs: + id: 1c46247f198c + last_write_checksum: sha1:8f3deac242d628be79c8a028da5ebc178fa89d29 + pristine_git_object: 007c5eda66e27f1c03ea51c21157a82e531199cd src/Novu/Models/Requests/SubscribersControllerSearchSubscribersRequest.cs: id: 3a89f2ac4c9b last_write_checksum: sha1:796b0d7c57e97fb07ceeb6012d978b091e24deae @@ -5264,10 +6366,34 @@ trackedFiles: id: 28bb266431f4 last_write_checksum: sha1:dc57d8455acdd37855692cf63a8366c0df6e89c6 pristine_git_object: 48bace1a526c3c90cb4bbdf1cec823a466dbf5ed + src/Novu/Models/Requests/SubscribersControllerSnoozeNotificationRequest.cs: + id: 28097434e730 + last_write_checksum: sha1:d3d70f138c38309a4673d415021ed50c47df5897 + pristine_git_object: 5deea977c0ba5525053512dc0d9b27c8af62a75c + src/Novu/Models/Requests/SubscribersControllerSnoozeNotificationResponse.cs: + id: 8ab74335434c + last_write_checksum: sha1:add98bf1b661b9b993416f6f616a13ed7aa781fa + pristine_git_object: c8a8b61da1299b063a79acf59d860aede7ea6d99 + src/Novu/Models/Requests/SubscribersControllerUnarchiveNotificationRequest.cs: + id: 2d3ef70762b5 + last_write_checksum: sha1:d4b96a96878e84fd78a5c556e2c47570104b3741 + pristine_git_object: 9f4503914f46d7739a4710474637d19822e7206e + src/Novu/Models/Requests/SubscribersControllerUnarchiveNotificationResponse.cs: + id: b3c0d2a188ca + last_write_checksum: sha1:3de42de0dd4e68bc1ac521adcdc3fa70b3b810d1 + pristine_git_object: b1f19f4c70f8b7596ce885facc437a292b0924cc + src/Novu/Models/Requests/SubscribersControllerUnsnoozeNotificationRequest.cs: + id: c860450bf7f5 + last_write_checksum: sha1:252c867ad8dfa2e2b2442606f8d6a6c646e67ce7 + pristine_git_object: 782e3d72f6513c539df430cc4d54f1ac43c3f4b4 + src/Novu/Models/Requests/SubscribersControllerUnsnoozeNotificationResponse.cs: + id: ab5326959e35 + last_write_checksum: sha1:ee1225064bc720a1490ab1794b1bdfa22abb193c + pristine_git_object: e2b7765420b97019d51f0617b101bea8c305eece src/Novu/Models/Requests/SubscribersControllerUpdateSubscriberPreferencesRequest.cs: id: 94be12d4d91b - last_write_checksum: sha1:359ea7313e07061714b540d524865e2131125fbe - pristine_git_object: 4934359b061580d2f81dae352859ca37a430f35e + last_write_checksum: sha1:fa751dd2db248a3a69c5f45c1a00a6e12f6948e9 + pristine_git_object: 5326c79132535faeb537fb67df25c5a947234220 src/Novu/Models/Requests/SubscribersControllerUpdateSubscriberPreferencesResponse.cs: id: 15ef83e458f4 last_write_checksum: sha1:d8742bcae07a897dd78f40361cd3690fd537e102 @@ -5548,6 +6674,14 @@ trackedFiles: id: 0ba3ad9b1953 last_write_checksum: sha1:c13d6c763eb95af28e42c2b62e989b635ecf224c pristine_git_object: 35464cc93a7362b0afbad9db710f360992915104 + src/Novu/Models/Requests/WorkflowControllerGeneratePreviewRequest.cs: + id: 13e36f5a37d9 + last_write_checksum: sha1:105364aac357fc215ea8245e55a8825105319e45 + pristine_git_object: fdaf20715cb4f720bb632acf9eb5b6ad37f5813b + src/Novu/Models/Requests/WorkflowControllerGeneratePreviewResponse.cs: + id: a24cf04387c9 + last_write_checksum: sha1:a4ff7209cb094fe4c169283f26d07dff9f2a88a2 + pristine_git_object: ee3b805196db10cc424daf434f43e1175cbed52d src/Novu/Models/Requests/WorkflowControllerGetWorkflowRequest.cs: id: ffbc9f25dea6 last_write_checksum: sha1:233410441ef6cd54cf4d10490ae31b80e46a032e @@ -5606,64 +6740,68 @@ trackedFiles: pristine_git_object: b4583878e4f92b00fe1052cb4f5c36ac2c7bfa73 src/Novu/Notifications.cs: id: 890909e4d1b4 - last_write_checksum: sha1:c31b7204040c05f8ada01cf581f8403c22235ed8 - pristine_git_object: 7be1c26744c380bd3590b1934259f71168a94af2 + last_write_checksum: sha1:f99673fb81d24060aaa01c4790701a31c865516a + pristine_git_object: 1dc893afdc347828f792d4e1c8430a94eb8f7fb0 src/Novu/Novu.csproj: id: d1fe7f089c20 - last_write_checksum: sha1:bacc30d5cee6ad745b0451b1d0b44efd2b506abd - pristine_git_object: 26d51c80d0fef56b70e162b807762c9f36ecd1a3 + last_write_checksum: sha1:4317c0e574c70b6e1da725c53f62e4d9ce607a5c + pristine_git_object: 2f1126c3b0eff7b65961f6366e92cb8da8dd4a81 + src/Novu/NovuNotifications.cs: + id: 1ac888357d41 + last_write_checksum: sha1:ed613ca1a9565354bdaedb280225cbab07be730e + pristine_git_object: 408f93fa371e1f142ffaac3e7f844576caf7d1eb src/Novu/NovuSDK.cs: id: 4ea74ce26f49 - last_write_checksum: sha1:46522d933ebe4cb810eca528afe52e114c2d3a72 - pristine_git_object: a5de27313205d0bd6c6e4253b2bca6e68b4f4491 + last_write_checksum: sha1:68411ae11b7bfe4c783f2603525245344e8a486b + pristine_git_object: 58e047ccf07c20ba529f7cbaf3c69d71e7226509 src/Novu/NovuTopics.cs: id: fba564bc282a - last_write_checksum: sha1:3abea55f1693a34e924bee86b5b2cd3985533ebe - pristine_git_object: 57d334765ed93c8bd0c7fc458c2a28bc1fd2c0df + last_write_checksum: sha1:c9ec5505f3e09b94fca99e0e0d30e9821426c526 + pristine_git_object: 4ef34c4205476c1af0b1f0ca87e40c85aa314a88 src/Novu/Preferences.cs: id: 40137ccca752 - last_write_checksum: sha1:614dacb36d8d62d04b028beded5e114db3c71474 - pristine_git_object: d1d4efd249da99cffa467ec141a7568c17170f1e + last_write_checksum: sha1:ce4143707f3c9d16d8f6785042ef178fbb589001 + pristine_git_object: 432e5231fbb780e4632f4940dd08b7165a0ab7a0 src/Novu/SDKConfig.cs: id: 228eb68fa757 - last_write_checksum: sha1:54cc066b42a7165814daa80f7f21e24ad19a20e9 - pristine_git_object: 469a90c21bf5cdbe60242bbe00dbd1b2b3f7d9a0 + last_write_checksum: sha1:a9a5cf56036e2c5fbcf8419bb43b85251ec0234f + pristine_git_object: 1ff3150592848d0fcff1d40a6564c11bb2c2e187 src/Novu/Steps.cs: id: 5b24d842ca7a - last_write_checksum: sha1:b207a706ce8b65feffb2a9dab099b0c389640d2a - pristine_git_object: 1d1f626b84421025972672a4c10db70e6b83273c + last_write_checksum: sha1:4cc3d5ccfd5186be128973d04e6517b19ca21153 + pristine_git_object: 4ec60c014c71a2a2a3f0b15b7f4f09caeeab533c src/Novu/Subscribers.cs: id: eedc2c3b6671 - last_write_checksum: sha1:55c3aeb19329a508ddb5246d8c0c1373c0fc765b - pristine_git_object: c6128dbe9cf4861d239309ef606d643d2b550833 + last_write_checksum: sha1:5562342460c8b9aa44514b00631e87bfc6ddcecd + pristine_git_object: b7a10127927beecd9a959929b5ebbf4aecb11738 src/Novu/SubscribersMessages.cs: id: fa2a636915ee - last_write_checksum: sha1:0e2a732633e871402b9fc97524ebe7f763c49593 - pristine_git_object: 258642718b5dfd6ac1be2a58cb64c2382f2571cb + last_write_checksum: sha1:7ab1126306b8735a09a3edad88cc35fbef75d33c + pristine_git_object: 72e8a9e503fc7754c9ff5c7acb74b9f3cfe310c5 src/Novu/SubscribersNotifications.cs: id: 5c5b9dd48319 - last_write_checksum: sha1:0f201360c5369d6a88c4c39290298f6ab399b43d - pristine_git_object: 94b98d66d7d93e406a66ad68f148a69dc1012f24 + last_write_checksum: sha1:2f5d8594e08cc0ad65c497cb35518ac60fb5a87a + pristine_git_object: 113eb05f5e7a9656190aea7d04a0494c67918e3c src/Novu/SubscribersPreferences.cs: id: dcc095134b0e - last_write_checksum: sha1:6a0eb66a30728995638f3597b6850cf93a8b3960 - pristine_git_object: 7a39eb438e8c479925cf13903417c806c85f919c + last_write_checksum: sha1:d18c7f00af214b0f2e0af2abbf1d63380aecc1f5 + pristine_git_object: 69fff82e1b84276ac827f86c69874f01eeb52f5d src/Novu/Subscriptions.cs: id: 99d13d89e96f - last_write_checksum: sha1:47d52e444f8fb5f417c25d8c8744f4c4bb728e03 - pristine_git_object: 5f89b86197e5f6b0b8904d91b65d72be4754c3f7 + last_write_checksum: sha1:9684957187fb04aa74883f7bd3c795a42301ee08 + pristine_git_object: bbaa42696615786a1a98655b6d50fc34ca1ac7c9 src/Novu/Topics.cs: id: 154821ae1022 - last_write_checksum: sha1:435e6192e674bedde0c34d018e51ece3d22cc6f3 - pristine_git_object: 064d25a016bce5e6f34f5f7733578176830ee8a1 + last_write_checksum: sha1:0a333d022d613ebfd6c9f62c5d2bd50826851d35 + pristine_git_object: be7a12994aef4985edb3ae5699d8cac172d66fe3 src/Novu/TopicsSubscribers.cs: id: f3a0c44871ee - last_write_checksum: sha1:05edbb38a28a5a2403a8429fa84b5645894fc3c6 - pristine_git_object: 8ca9f5d9c51d0de64ca643ba8a7fdb8a538ab8d7 + last_write_checksum: sha1:17d661944e1ca7e247597cca21d70beed4baaaee + pristine_git_object: 50173ebdd5fac7d0566a10859d865743d804e86f src/Novu/Translations.cs: id: dbd9265a926a - last_write_checksum: sha1:84346a9d688df589d7cf7322ac12f0ad56904efe - pristine_git_object: dfa95d7c0dde80689592925841c29d9e7a7cbf66 + last_write_checksum: sha1:6d74a9113f1486a0dc2a4216014e5be301a76469 + pristine_git_object: 13988fdab57be3c313f63a98f03e362493a55f71 src/Novu/Utils/AnyDeserializer.cs: id: a8fe926c79af last_write_checksum: sha1:fa5167ce9ec8567923dcece3ba6adc6a952c2ad4 @@ -5674,8 +6812,8 @@ trackedFiles: pristine_git_object: 9c9aae9055f608027cf99f2fded32e149f0b6f36 src/Novu/Utils/Constants.cs: id: 47b034209815 - last_write_checksum: sha1:a252feaf1fdf9de3c8461ca9474a60afb1a2ed73 - pristine_git_object: c0ab2d8da8f47bfb1b38fba40e5bd1b8da0e8c58 + last_write_checksum: sha1:c6554266f7156fc0342716f567984968c6941313 + pristine_git_object: 379501c9970790b0c60efd3a024da3e1a52c80b4 src/Novu/Utils/DecimalStrConverter.cs: id: c5c1dbe2ffcb last_write_checksum: sha1:e9b291cdfe54d763cfec70c8b9b83e59e0de7a5b @@ -5702,8 +6840,8 @@ trackedFiles: pristine_git_object: d0442d0a1506f76f972cac68adc9d7e03660baa9 src/Novu/Utils/RequestBodySerializer.cs: id: e0108c21a2da - last_write_checksum: sha1:31598a3de207317d8a50dbcbbf6abab142f80f68 - pristine_git_object: a6d9d20eeade48842ce595daf2e30bd84c9ee2f7 + last_write_checksum: sha1:40e49f5d6eb6d8c31d71023af558913d2c3312a0 + pristine_git_object: ea94ca52968885d480a382ae05ad6d1e10cef6cf src/Novu/Utils/ResponseBodyDeserializer.cs: id: 3a49c0f175d2 last_write_checksum: sha1:7b62e5a76d37db1723c439c92912832b2a457725 @@ -5714,36 +6852,36 @@ trackedFiles: pristine_git_object: 005cc60bc425ab197f98823483b79c18a7066bf4 src/Novu/Utils/Retries/Retries.cs: id: c679940f8c77 - last_write_checksum: sha1:fa7dcd0a4bb222a46f9ed3010591927ff7bea1d8 - pristine_git_object: 2e0cd6a87c43e296ff012f308a151e8e549f9423 + last_write_checksum: sha1:a907ad75a983e486ea0f3d0dbce0cbc384b4ad85 + pristine_git_object: 34d5f01fd81223281ef740395ffc9c4fd132fea5 src/Novu/Utils/Retries/RetryConfig.cs: id: a07d36633351 last_write_checksum: sha1:1511b201e45375d32add9e2a5385f8d032274705 pristine_git_object: f71ec1af7d74717510754638a07c1c69d682ebe6 src/Novu/Utils/SecurityMetadata.cs: id: 429dba7be36d - last_write_checksum: sha1:525fcbcacce5732452c31327feb2e9fba76a07b0 - pristine_git_object: 80d8a66ca07d691302e2d23605c8a125363011d7 + last_write_checksum: sha1:e8405f0ea89e16c4a376dd50632c1e484a64b50a + pristine_git_object: a8ddecd86ab29d1dc68cbe0c99866484216aed60 src/Novu/Utils/SpeakeasyHttpClient.cs: id: 19ac580f033c last_write_checksum: sha1:6a1cd2415c95cb59baa2d99801398e5a4813bcca pristine_git_object: a390e15243e05c5907be210c3fa247219649b2b9 src/Novu/Utils/SpeakeasyMetadata.cs: id: ea0737477f75 - last_write_checksum: sha1:b90ec0b5e9cfd8585d16ec8f8c8bb9dfea62a782 - pristine_git_object: 06c87e35f05dc6959241f72d1b4776f87a63e635 + last_write_checksum: sha1:af1a48f54633de83a5bce3205e71093048b4efc4 + pristine_git_object: 5b06db86feecc6d2a0e8fb7a8e52f1fb2f876688 src/Novu/Utils/URLBuilder.cs: id: e0b3b60cbe80 last_write_checksum: sha1:636c49f2c6904f83c361127da7c632283f0e3ed7 pristine_git_object: a22376a8d2d05c313a3c5a08881ce200afb6ab75 src/Novu/Utils/Utilities.cs: id: 755ed19909b5 - last_write_checksum: sha1:9123f2069363224e853e3a6ac028bcde55344c71 - pristine_git_object: eb511836d8c5d0b8ae71af3d44bf8038f3a11a7a + last_write_checksum: sha1:bd9192cb268789dffeda5adcbfb245efcbe051bd + pristine_git_object: de55ffb0e51b38cf9a03b48f2ddd3e80e962c603 src/Novu/Workflows.cs: id: 599f37d1d6d6 - last_write_checksum: sha1:8f469c1c21bfec8f354a3b015ce2f1f574527fc6 - pristine_git_object: a0ce9e5b2555eb7bb47b95ac246d734119ba8415 + last_write_checksum: sha1:5bde97fe2415a839674489c947cbffcd11158e16 + pristine_git_object: d960408f9cac47ae0cb791a89763a983a8b798ed examples: EventsController_trigger: speakeasy-default-events-controller-trigger: @@ -7260,8 +8398,430 @@ examples: application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123", "errors": {"fieldName1": {"messages": ["Field is required", "Must be a valid email address"], "value": "invalidEmail"}, "fieldName2": {"messages": ["Must be at least 18 years old"], "value": 17}, "fieldName3": {"messages": ["Must be a boolean value"], "value": true}, "fieldName4": {"messages": ["Must be a valid object"], "value": {}}, "fieldName5": {"messages": ["Field is missing"], "value": null}, "fieldName6": {"messages": ["Undefined value"]}}} "500": application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + EnvironmentsController_diffEnvironment: + speakeasy-default-environments-controller-diff-environment: + parameters: + path: + targetEnvironmentId: "6615943e7ace93b0540ae377" + requestBody: + application/json: {"sourceEnvironmentId": "507f1f77bcf86cd799439011"} + responses: + "200": + application/json: {"sourceEnvironmentId": "", "targetEnvironmentId": "", "resources": [{"resourceType": "BRIDGE", "sourceResource": {"updatedAt": "2024-01-15T10:30:00.000Z"}, "targetResource": {"updatedAt": "2024-01-15T10:30:00.000Z"}, "changes": [{"sourceResource": {"updatedAt": "2024-01-15T10:30:00.000Z"}, "targetResource": {"updatedAt": "2024-01-15T10:30:00.000Z"}, "resourceType": "ECHO", "action": "deleted"}], "summary": {"added": 4536.9, "modified": 4715.06, "deleted": 7919.8, "unchanged": 7466.34}}], "summary": {"totalEntities": 2495.22, "totalChanges": 5911.44, "hasChanges": true}} + "414": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "400": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "422": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123", "errors": {"fieldName1": {"messages": ["Field is required", "Must be a valid email address"], "value": "invalidEmail"}, "fieldName2": {"messages": ["Must be at least 18 years old"], "value": 17}, "fieldName3": {"messages": ["Must be a boolean value"], "value": true}, "fieldName4": {"messages": ["Must be a valid object"], "value": 8798.18}, "fieldName5": {"messages": ["Field is missing"], "value": null}, "fieldName6": {"messages": ["Undefined value"]}}} + "500": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + EnvironmentsController_publishEnvironment: + speakeasy-default-environments-controller-publish-environment: + parameters: + path: + targetEnvironmentId: "6615943e7ace93b0540ae377" + requestBody: + application/json: {"sourceEnvironmentId": "507f1f77bcf86cd799439011", "dryRun": false, "resources": [{"resourceType": "REGULAR", "resourceId": "workflow-id-1"}]} + responses: + "200": + application/json: {"results": [{"resourceType": "REGULAR", "successful": [], "failed": [{"resourceType": "ECHO", "resourceId": "", "resourceName": "", "error": ""}], "skipped": [{"resourceType": "BRIDGE", "resourceId": "", "resourceName": "", "reason": ""}], "totalProcessed": 3977.33}], "summary": {"resources": 1548.2, "successful": 1186.4, "failed": 5607.1, "skipped": 8053.79}} + "414": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "400": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "422": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123", "errors": {"fieldName1": {"messages": ["Field is required", "Must be a valid email address"], "value": "invalidEmail"}, "fieldName2": {"messages": ["Must be at least 18 years old"], "value": 17}, "fieldName3": {"messages": ["Must be a boolean value"], "value": true}, "fieldName4": {"messages": ["Must be a valid object"], "value": false}, "fieldName5": {"messages": ["Field is missing"], "value": null}, "fieldName6": {"messages": ["Undefined value"]}}} + "500": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + SubscribersController_getSubscriberNotifications: + speakeasy-default-subscribers-controller-get-subscriber-notifications: + parameters: + path: + subscriberId: "" + query: + limit: 10 + offset: 0 + createdGte: 1704067200000 + createdLte: 1735689599999 + responses: + "200": + application/json: {"data": [{"id": "", "transactionId": "", "body": "", "to": {"id": "", "subscriberId": ""}, "isRead": false, "isSeen": true, "isArchived": true, "isSnoozed": true, "createdAt": "1718005196143", "channelType": "in_app", "severity": "low"}], "hasMore": true, "filter": {}} + "414": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "400": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "422": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123", "errors": {"fieldName1": {"messages": ["Field is required", "Must be a valid email address"], "value": "invalidEmail"}, "fieldName2": {"messages": ["Must be at least 18 years old"], "value": 17}, "fieldName3": {"messages": ["Must be a boolean value"], "value": true}, "fieldName4": {"messages": ["Must be a valid object"], "value": 7184.76}, "fieldName5": {"messages": ["Field is missing"], "value": null}, "fieldName6": {"messages": ["Undefined value"]}}} + "500": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + SubscribersController_deleteNotification: + speakeasy-default-subscribers-controller-delete-notification: + parameters: + path: + subscriberId: "" + notificationId: "" + responses: + "414": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "400": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "422": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123", "errors": {"fieldName1": {"messages": ["Field is required", "Must be a valid email address"], "value": "invalidEmail"}, "fieldName2": {"messages": ["Must be at least 18 years old"], "value": 17}, "fieldName3": {"messages": ["Must be a boolean value"], "value": true}, "fieldName4": {"messages": ["Must be a valid object"], "value": "xx xx xx "}, "fieldName5": {"messages": ["Field is missing"], "value": null}, "fieldName6": {"messages": ["Undefined value"]}}} + "500": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + SubscribersController_completeNotificationAction: + speakeasy-default-subscribers-controller-complete-notification-action: + parameters: + path: + subscriberId: "" + notificationId: "" + actionType: "secondary" + responses: + "200": + application/json: {"id": "", "transactionId": "", "body": "", "to": {"id": "", "subscriberId": ""}, "isRead": false, "isSeen": false, "isArchived": true, "isSnoozed": false, "createdAt": "1720937619557", "channelType": "push", "severity": "none"} + "414": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "400": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "422": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123", "errors": {"fieldName1": {"messages": ["Field is required", "Must be a valid email address"], "value": "invalidEmail"}, "fieldName2": {"messages": ["Must be at least 18 years old"], "value": 17}, "fieldName3": {"messages": ["Must be a boolean value"], "value": true}, "fieldName4": {"messages": ["Must be a valid object"], "value": "xx xx xx "}, "fieldName5": {"messages": ["Field is missing"], "value": null}, "fieldName6": {"messages": ["Undefined value"]}}} + "500": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + SubscribersController_revertNotificationAction: + speakeasy-default-subscribers-controller-revert-notification-action: + parameters: + path: + subscriberId: "" + notificationId: "" + actionType: "primary" + responses: + "200": + application/json: {"id": "", "transactionId": "", "body": "", "to": {"id": "", "subscriberId": ""}, "isRead": false, "isSeen": false, "isArchived": false, "isSnoozed": true, "createdAt": "1732319296776", "channelType": "email", "severity": "medium"} + "414": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "400": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "422": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123", "errors": {"fieldName1": {"messages": ["Field is required", "Must be a valid email address"], "value": "invalidEmail"}, "fieldName2": {"messages": ["Must be at least 18 years old"], "value": 17}, "fieldName3": {"messages": ["Must be a boolean value"], "value": true}, "fieldName4": {"messages": ["Must be a valid object"], "value": "xx xx xx "}, "fieldName5": {"messages": ["Field is missing"], "value": null}, "fieldName6": {"messages": ["Undefined value"]}}} + "500": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + SubscribersController_archiveNotification: + speakeasy-default-subscribers-controller-archive-notification: + parameters: + path: + subscriberId: "" + notificationId: "" + responses: + "200": + application/json: {"id": "", "transactionId": "", "body": "", "to": {"id": "", "subscriberId": ""}, "isRead": false, "isSeen": true, "isArchived": true, "isSnoozed": true, "createdAt": "1722007690839", "channelType": "in_app", "severity": "low"} + "414": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "400": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "422": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123", "errors": {"fieldName1": {"messages": ["Field is required", "Must be a valid email address"], "value": "invalidEmail"}, "fieldName2": {"messages": ["Must be at least 18 years old"], "value": 17}, "fieldName3": {"messages": ["Must be a boolean value"], "value": true}, "fieldName4": {"messages": ["Must be a valid object"], "value": 9244.04}, "fieldName5": {"messages": ["Field is missing"], "value": null}, "fieldName6": {"messages": ["Undefined value"]}}} + "500": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + SubscribersController_markNotificationAsRead: + speakeasy-default-subscribers-controller-mark-notification-as-read: + parameters: + path: + subscriberId: "" + notificationId: "" + responses: + "200": + application/json: {"id": "", "transactionId": "", "body": "", "to": {"id": "", "subscriberId": ""}, "isRead": false, "isSeen": false, "isArchived": true, "isSnoozed": true, "createdAt": "1730112582938", "channelType": "push", "severity": "high"} + "414": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "400": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "422": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123", "errors": {"fieldName1": {"messages": ["Field is required", "Must be a valid email address"], "value": "invalidEmail"}, "fieldName2": {"messages": ["Must be at least 18 years old"], "value": 17}, "fieldName3": {"messages": ["Must be a boolean value"], "value": true}, "fieldName4": {"messages": ["Must be a valid object"], "value": {}}, "fieldName5": {"messages": ["Field is missing"], "value": null}, "fieldName6": {"messages": ["Undefined value"]}}} + "500": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + SubscribersController_snoozeNotification: + speakeasy-default-subscribers-controller-snooze-notification: + parameters: + path: + subscriberId: "" + notificationId: "" + requestBody: + application/json: {"snoozeUntil": "2026-03-01T10:00:00Z"} + responses: + "200": + application/json: {"id": "", "transactionId": "", "body": "", "to": {"id": "", "subscriberId": ""}, "isRead": true, "isSeen": false, "isArchived": true, "isSnoozed": true, "createdAt": "1733991021454", "channelType": "chat", "severity": "medium"} + "414": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "400": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "422": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123", "errors": {"fieldName1": {"messages": ["Field is required", "Must be a valid email address"], "value": "invalidEmail"}, "fieldName2": {"messages": ["Must be at least 18 years old"], "value": 17}, "fieldName3": {"messages": ["Must be a boolean value"], "value": true}, "fieldName4": {"messages": ["Must be a valid object"], "value": [{"key": ""}]}, "fieldName5": {"messages": ["Field is missing"], "value": null}, "fieldName6": {"messages": ["Undefined value"]}}} + "500": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + SubscribersController_unarchiveNotification: + speakeasy-default-subscribers-controller-unarchive-notification: + parameters: + path: + subscriberId: "" + notificationId: "" + responses: + "200": + application/json: {"id": "", "transactionId": "", "body": "", "to": {"id": "", "subscriberId": ""}, "isRead": false, "isSeen": false, "isArchived": false, "isSnoozed": true, "createdAt": "1711880035185", "channelType": "email", "severity": "high"} + "414": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "400": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "422": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123", "errors": {"fieldName1": {"messages": ["Field is required", "Must be a valid email address"], "value": "invalidEmail"}, "fieldName2": {"messages": ["Must be at least 18 years old"], "value": 17}, "fieldName3": {"messages": ["Must be a boolean value"], "value": true}, "fieldName4": {"messages": ["Must be a valid object"], "value": 7563.41}, "fieldName5": {"messages": ["Field is missing"], "value": null}, "fieldName6": {"messages": ["Undefined value"]}}} + "500": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + SubscribersController_markNotificationAsUnread: + speakeasy-default-subscribers-controller-mark-notification-as-unread: + parameters: + path: + subscriberId: "" + notificationId: "" + responses: + "200": + application/json: {"id": "", "transactionId": "", "body": "", "to": {"id": "", "subscriberId": ""}, "isRead": false, "isSeen": false, "isArchived": false, "isSnoozed": false, "createdAt": "1709953113134", "channelType": "sms", "severity": "low"} + "414": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "400": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "422": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123", "errors": {"fieldName1": {"messages": ["Field is required", "Must be a valid email address"], "value": "invalidEmail"}, "fieldName2": {"messages": ["Must be at least 18 years old"], "value": 17}, "fieldName3": {"messages": ["Must be a boolean value"], "value": true}, "fieldName4": {"messages": ["Must be a valid object"], "value": "xx xx xx "}, "fieldName5": {"messages": ["Field is missing"], "value": null}, "fieldName6": {"messages": ["Undefined value"]}}} + "500": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + SubscribersController_unsnoozeNotification: + speakeasy-default-subscribers-controller-unsnooze-notification: + parameters: + path: + subscriberId: "" + notificationId: "" + responses: + "200": + application/json: {"id": "", "transactionId": "", "body": "", "to": {"id": "", "subscriberId": ""}, "isRead": false, "isSeen": false, "isArchived": false, "isSnoozed": false, "createdAt": "1706480856288", "channelType": "chat", "severity": "low"} + "414": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "400": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "422": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123", "errors": {"fieldName1": {"messages": ["Field is required", "Must be a valid email address"], "value": "invalidEmail"}, "fieldName2": {"messages": ["Must be at least 18 years old"], "value": 17}, "fieldName3": {"messages": ["Must be a boolean value"], "value": true}, "fieldName4": {"messages": ["Must be a valid object"], "value": true}, "fieldName5": {"messages": ["Field is missing"], "value": null}, "fieldName6": {"messages": ["Undefined value"]}}} + "500": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + SubscribersController_archiveAllNotifications: + speakeasy-default-subscribers-controller-archive-all-notifications: + parameters: + path: + subscriberId: "" + requestBody: + application/json: {} + responses: + "414": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "400": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "422": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123", "errors": {"fieldName1": {"messages": ["Field is required", "Must be a valid email address"], "value": "invalidEmail"}, "fieldName2": {"messages": ["Must be at least 18 years old"], "value": 17}, "fieldName3": {"messages": ["Must be a boolean value"], "value": true}, "fieldName4": {"messages": ["Must be a valid object"], "value": []}, "fieldName5": {"messages": ["Field is missing"], "value": null}, "fieldName6": {"messages": ["Undefined value"]}}} + "500": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + SubscribersController_getSubscriberNotificationsCount: + speakeasy-default-subscribers-controller-get-subscriber-notifications-count: + parameters: + path: + subscriberId: "" + query: + filters: "[{\"read\":false,\"archived\":false},{\"tags\":[\"important\"]},{\"tags\":{\"and\":[{\"or\":[\"a\",\"b\"]},{\"or\":[\"c\"]}]}}]" + responses: + "200": + application/json: [{"count": 8917.76, "filter": {"key": ""}}] + "414": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "400": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "422": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123", "errors": {"fieldName1": {"messages": ["Field is required", "Must be a valid email address"], "value": "invalidEmail"}, "fieldName2": {"messages": ["Must be at least 18 years old"], "value": 17}, "fieldName3": {"messages": ["Must be a boolean value"], "value": true}, "fieldName4": {"messages": ["Must be a valid object"], "value": []}, "fieldName5": {"messages": ["Field is missing"], "value": null}, "fieldName6": {"messages": ["Undefined value"]}}} + "500": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + SubscribersController_deleteAllNotifications: + speakeasy-default-subscribers-controller-delete-all-notifications: + parameters: + path: + subscriberId: "" + requestBody: + application/json: {} + responses: + "414": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "400": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "422": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123", "errors": {"fieldName1": {"messages": ["Field is required", "Must be a valid email address"], "value": "invalidEmail"}, "fieldName2": {"messages": ["Must be at least 18 years old"], "value": 17}, "fieldName3": {"messages": ["Must be a boolean value"], "value": true}, "fieldName4": {"messages": ["Must be a valid object"], "value": 8140.75}, "fieldName5": {"messages": ["Field is missing"], "value": null}, "fieldName6": {"messages": ["Undefined value"]}}} + "500": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + SubscribersController_markAllNotificationsAsRead: + speakeasy-default-subscribers-controller-mark-all-notifications-as-read: + parameters: + path: + subscriberId: "" + requestBody: + application/json: {} + responses: + "414": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "400": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "422": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123", "errors": {"fieldName1": {"messages": ["Field is required", "Must be a valid email address"], "value": "invalidEmail"}, "fieldName2": {"messages": ["Must be at least 18 years old"], "value": 17}, "fieldName3": {"messages": ["Must be a boolean value"], "value": true}, "fieldName4": {"messages": ["Must be a valid object"], "value": {}}, "fieldName5": {"messages": ["Field is missing"], "value": null}, "fieldName6": {"messages": ["Undefined value"]}}} + "500": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + SubscribersController_archiveAllReadNotifications: + speakeasy-default-subscribers-controller-archive-all-read-notifications: + parameters: + path: + subscriberId: "" + requestBody: + application/json: {} + responses: + "414": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "400": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "422": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123", "errors": {"fieldName1": {"messages": ["Field is required", "Must be a valid email address"], "value": "invalidEmail"}, "fieldName2": {"messages": ["Must be at least 18 years old"], "value": 17}, "fieldName3": {"messages": ["Must be a boolean value"], "value": true}, "fieldName4": {"messages": ["Must be a valid object"], "value": "xx xx xx "}, "fieldName5": {"messages": ["Field is missing"], "value": null}, "fieldName6": {"messages": ["Undefined value"]}}} + "500": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + SubscribersController_markNotificationsAsSeen: + speakeasy-default-subscribers-controller-mark-notifications-as-seen: + parameters: + path: + subscriberId: "" + requestBody: + application/json: {} + responses: + "414": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "400": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "422": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123", "errors": {"fieldName1": {"messages": ["Field is required", "Must be a valid email address"], "value": "invalidEmail"}, "fieldName2": {"messages": ["Must be at least 18 years old"], "value": 17}, "fieldName3": {"messages": ["Must be a boolean value"], "value": true}, "fieldName4": {"messages": ["Must be a valid object"], "value": [7844.83]}, "fieldName5": {"messages": ["Field is missing"], "value": null}, "fieldName6": {"messages": ["Undefined value"]}}} + "500": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + WorkflowController_generatePreview: + speakeasy-default-workflow-controller-generate-preview: + parameters: + path: + workflowId: "" + stepId: "" + requestBody: + application/json: {"previewPayload": {"subscriber": {"channels": [{"providerId": "novu-slack", "credentials": {"webhookUrl": "https://example.com/webhook", "channel": "general", "deviceTokens": ["token1", "token2", "token3"], "alertUid": "12345-abcde", "title": "Critical Alert", "imageUrl": "https://example.com/image.png", "state": "resolved", "externalUrl": "https://example.com/details"}, "_integrationId": ""}]}, "context": {"key": "org-acme"}}} + responses: + "201": + application/json: {"previewPayloadExample": {"subscriber": {"channels": [{"providerId": "novu-slack", "credentials": {"webhookUrl": "https://example.com/webhook", "channel": "general", "deviceTokens": ["token1", "token2", "token3"], "alertUid": "12345-abcde", "title": "Critical Alert", "imageUrl": "https://example.com/image.png", "state": "resolved", "externalUrl": "https://example.com/details"}, "_integrationId": ""}]}, "context": {"key": "org-acme"}}, "result": {}} + "414": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "400": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "422": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123", "errors": {"fieldName1": {"messages": ["Field is required", "Must be a valid email address"], "value": "invalidEmail"}, "fieldName2": {"messages": ["Must be at least 18 years old"], "value": 17}, "fieldName3": {"messages": ["Must be a boolean value"], "value": true}, "fieldName4": {"messages": ["Must be a valid object"], "value": 4002.94}, "fieldName5": {"messages": ["Field is missing"], "value": null}, "fieldName6": {"messages": ["Undefined value"]}}} + "500": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + EnvironmentVariablesController_listEnvironmentVariables: + speakeasy-default-environment-variables-controller-list-environment-variables: + responses: + "200": + application/json: [{"_id": "", "_organizationId": "", "key": "", "type": "string", "isSecret": true, "values": [], "createdAt": "1706473664670", "updatedAt": "1735673165458"}] + "414": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "400": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "422": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123", "errors": {"fieldName1": {"messages": ["Field is required", "Must be a valid email address"], "value": "invalidEmail"}, "fieldName2": {"messages": ["Must be at least 18 years old"], "value": 17}, "fieldName3": {"messages": ["Must be a boolean value"], "value": true}, "fieldName4": {"messages": ["Must be a valid object"], "value": "xx xx xx "}, "fieldName5": {"messages": ["Field is missing"], "value": null}, "fieldName6": {"messages": ["Undefined value"]}}} + "500": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + EnvironmentVariablesController_createEnvironmentVariable: + speakeasy-default-environment-variables-controller-create-environment-variable: + requestBody: + application/json: {"key": ""} + responses: + "200": + application/json: {"_id": "", "_organizationId": "", "key": "", "type": "string", "isSecret": true, "values": [], "createdAt": "1717108706789", "updatedAt": "1735627858441"} + "414": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "400": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "422": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123", "errors": {"fieldName1": {"messages": ["Field is required", "Must be a valid email address"], "value": "invalidEmail"}, "fieldName2": {"messages": ["Must be at least 18 years old"], "value": 17}, "fieldName3": {"messages": ["Must be a boolean value"], "value": true}, "fieldName4": {"messages": ["Must be a valid object"], "value": []}, "fieldName5": {"messages": ["Field is missing"], "value": null}, "fieldName6": {"messages": ["Undefined value"]}}} + "500": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + EnvironmentVariablesController_getEnvironmentVariable: + speakeasy-default-environment-variables-controller-get-environment-variable: + parameters: + path: + variableKey: "BASE_URL" + responses: + "200": + application/json: {"_id": "", "_organizationId": "", "key": "", "type": "string", "isSecret": false, "values": [{"_environmentId": "", "value": ""}], "createdAt": "1710536460779", "updatedAt": "1735619742616"} + "414": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "400": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "422": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123", "errors": {"fieldName1": {"messages": ["Field is required", "Must be a valid email address"], "value": "invalidEmail"}, "fieldName2": {"messages": ["Must be at least 18 years old"], "value": 17}, "fieldName3": {"messages": ["Must be a boolean value"], "value": true}, "fieldName4": {"messages": ["Must be a valid object"], "value": {}}, "fieldName5": {"messages": ["Field is missing"], "value": null}, "fieldName6": {"messages": ["Undefined value"]}}} + "500": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + EnvironmentVariablesController_updateEnvironmentVariable: + speakeasy-default-environment-variables-controller-update-environment-variable: + parameters: + path: + variableKey: "BASE_URL" + requestBody: + application/json: {} + responses: + "200": + application/json: {"_id": "", "_organizationId": "", "key": "", "type": "string", "isSecret": true, "values": [{"_environmentId": "", "value": ""}], "createdAt": "1724810279964", "updatedAt": "1735653406294"} + "414": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "400": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "422": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123", "errors": {"fieldName1": {"messages": ["Field is required", "Must be a valid email address"], "value": "invalidEmail"}, "fieldName2": {"messages": ["Must be at least 18 years old"], "value": 17}, "fieldName3": {"messages": ["Must be a boolean value"], "value": true}, "fieldName4": {"messages": ["Must be a valid object"], "value": "xx xx xx "}, "fieldName5": {"messages": ["Field is missing"], "value": null}, "fieldName6": {"messages": ["Undefined value"]}}} + "500": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + EnvironmentVariablesController_deleteEnvironmentVariable: + speakeasy-default-environment-variables-controller-delete-environment-variable: + parameters: + path: + variableKey: "BASE_URL" + responses: + "414": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "400": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "422": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123", "errors": {"fieldName1": {"messages": ["Field is required", "Must be a valid email address"], "value": "invalidEmail"}, "fieldName2": {"messages": ["Must be at least 18 years old"], "value": 17}, "fieldName3": {"messages": ["Must be a boolean value"], "value": true}, "fieldName4": {"messages": ["Must be a valid object"], "value": "xx xx xx "}, "fieldName5": {"messages": ["Field is missing"], "value": null}, "fieldName6": {"messages": ["Undefined value"]}}} + "500": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + EnvironmentVariablesController_getEnvironmentVariableUsage: + speakeasy-default-environment-variables-controller-get-environment-variable-usage: + parameters: + path: + variableKey: "BASE_URL" + responses: + "200": + application/json: {"workflows": [{"name": "Welcome Email", "workflowId": "welcome-email"}]} + "414": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "400": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} + "422": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123", "errors": {"fieldName1": {"messages": ["Field is required", "Must be a valid email address"], "value": "invalidEmail"}, "fieldName2": {"messages": ["Must be at least 18 years old"], "value": 17}, "fieldName3": {"messages": ["Must be a boolean value"], "value": true}, "fieldName4": {"messages": ["Must be a valid object"], "value": {}}, "fieldName5": {"messages": ["Field is missing"], "value": null}, "fieldName6": {"messages": ["Undefined value"]}}} + "500": + application/json: {"statusCode": 404, "timestamp": "2024-12-12T13:00:00Z", "path": "/api/v1/resource", "ctx": {"workflowId": "some_wf_id", "stepId": "some_wf_id"}, "errorId": "abc123"} examplesVersion: 1.0.2 generatedTests: {} +releaseNotes: "## Csharp SDK Changes:\n* `Novu.Layouts.Create()`: `response.controls.UiSchema` **Changed** (Breaking ⚠️)\n* `Novu.Notifications.Retrieve()`: `response` **Changed** (Breaking ⚠️)\n* `Novu.Notifications.Get()`: `response.data[]` **Changed** (Breaking ⚠️)\n* `Novu.ChannelEndpoints.Update()`: `response.providerId.Enum(cmTelecom)` **Added** (Breaking ⚠️)\n* `Novu.ChannelEndpoints.Retrieve()`: `response.providerId.Enum(cmTelecom)` **Added** (Breaking ⚠️)\n* `Novu.ChannelEndpoints.Create()`: `response.providerId.Enum(cmTelecom)` **Added** (Breaking ⚠️)\n* `Novu.ChannelEndpoints.List()`: \n * `request.ProviderId` **Changed**\n * `response.data[].ProviderId.Enum(cmTelecom)` **Added** (Breaking ⚠️)\n* `Novu.ChannelConnections.Update()`: `response.providerId.Enum(cmTelecom)` **Added** (Breaking ⚠️)\n* `Novu.ChannelConnections.Retrieve()`: `response.providerId.Enum(cmTelecom)` **Added** (Breaking ⚠️)\n* `Novu.ChannelConnections.Create()`: `response.providerId.Enum(cmTelecom)` **Added** (Breaking ⚠️)\n* `Novu.ChannelConnections.List()`: \n * `request.ProviderId` **Changed**\n * `response.data[].ProviderId.Enum(cmTelecom)` **Added** (Breaking ⚠️)\n* `Novu.Workflows.Steps.Retrieve()`: `response` **Changed** (Breaking ⚠️)\n* `Novu.Workflows.Sync()`: `response` **Changed** (Breaking ⚠️)\n* `Novu.Workflows.Patch()`: `response` **Changed** (Breaking ⚠️)\n* `Novu.Workflows.Get()`: `response` **Changed** (Breaking ⚠️)\n* `Novu.Workflows.Update()`: \n * `request.updateWorkflowDto.Steps[]` **Changed** (Breaking ⚠️)\n * `response` **Changed** (Breaking ⚠️)\n* `Novu.Workflows.List()`: `response.workflows[]` **Changed** (Breaking ⚠️)\n* `Novu.Workflows.Create()`: \n * `request.createWorkflowDto` **Changed** (Breaking ⚠️)\n * `response` **Changed** (Breaking ⚠️)\n* `Novu.Layouts.Duplicate()`: `response.controls.UiSchema` **Changed** (Breaking ⚠️)\n* `Novu.Layouts.Retrieve()`: `response.controls.UiSchema` **Changed** (Breaking ⚠️)\n* `Novu.Layouts.Update()`: `response.controls.UiSchema` **Changed** (Breaking ⚠️)\n* `Novu.Layouts.List()`: `response.layouts[].Controls.UiSchema` **Changed** (Breaking ⚠️)\n* `Novu.Subscribers.Notifications.ArchiveAll()`: **Added**\n* `Novu.Subscribers.Notifications.MarkAllAsRead()`: **Added**\n* `Novu.EnvironmentVariables.Usage()`: **Added**\n* `Novu.Trigger()`: `response.activityFeedLink` **Added**\n* `Novu.Broadcast()`: `response.activityFeedLink` **Added**\n* `Novu.TriggerBulk()`: `response.[].ActivityFeedLink` **Added**\n* `Novu.EnvironmentVariables.Update()`: **Added**\n* `Novu.EnvironmentVariables.Retrieve()`: **Added**\n* `Novu.EnvironmentVariables.Create()`: **Added**\n* `Novu.EnvironmentVariables.List()`: **Added**\n* `Novu.Workflows.Steps.GeneratePreview()`: **Added**\n* `Novu.Subscribers.Notifications.MarkAsSeen()`: **Added**\n* `Novu.Subscribers.Notifications.ArchiveAllRead()`: **Added**\n* `Novu.EnvironmentVariables.Delete()`: **Added**\n* `Novu.Subscribers.Notifications.DeleteAll()`: **Added**\n* `Novu.Subscribers.Notifications.Count()`: **Added**\n* `Novu.Environments.Diff()`: **Added**\n* `Novu.Subscribers.Notifications.Unsnooze()`: **Added**\n* `Novu.Subscribers.Notifications.MarkAsUnread()`: **Added**\n* `Novu.Subscribers.Notifications.Unarchive()`: **Added**\n* `Novu.Subscribers.Notifications.Snooze()`: **Added**\n* `Novu.Subscribers.Notifications.MarkAsRead()`: **Added**\n* `Novu.Subscribers.Notifications.Archive()`: **Added**\n* `Novu.Subscribers.Notifications.RevertAction()`: **Added**\n* `Novu.Subscribers.Notifications.CompleteAction()`: **Added**\n* `Novu.Subscribers.Notifications.Delete()`: **Added**\n* `Novu.Subscribers.Notifications.List()`: **Added**\n* `Novu.Environments.Publish()`: **Added**\n" generatedFiles: - .gitattributes - NUGET.md diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index bddc049a..bd586409 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -29,7 +29,7 @@ generation: generateNewTests: false skipResponseBodyAssertions: false csharp: - version: 3.14.0 + version: 3.15.0 additionalDependencies: [] author: Speakeasy baseErrorName: BaseException @@ -38,6 +38,7 @@ csharp: disableNamespacePascalCasingApr2024: true dotnetVersion: net8.0 enableCancellationToken: false + enableFormatting: false enableSourceLink: false flattenGlobalSecurity: true flatteningOrder: parameters-first diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index eabb02f9..00920f3e 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,21 +1,20 @@ -speakeasyVersion: 1.725.0 +speakeasyVersion: 1.761.3 sources: Novu API: sourceNamespace: novu-api-csharp - sourceRevisionDigest: sha256:ed14922657f3d2f2326127bdcf1061c555ad53372da4a27b09e507fcd65f1ad3 - sourceBlobDigest: sha256:cef71d8a8a5887c689eb3d1a7f1a63a1c58deb8ee765414368ef9e333a6428a6 + sourceRevisionDigest: sha256:c7ae3158896634abf0997139395b9bd35b100686d4c8995c41442f610ce3e6b5 + sourceBlobDigest: sha256:4c9544987d559a53c7b0c502a8ef69d6f177742f888ab12f61578eac4de94bdd tags: - latest - - speakeasy-sdk-regen-1769645679 - - 3.13.0 + - 3.15.0 targets: novu: source: Novu API sourceNamespace: novu-api-csharp - sourceRevisionDigest: sha256:ed14922657f3d2f2326127bdcf1061c555ad53372da4a27b09e507fcd65f1ad3 - sourceBlobDigest: sha256:cef71d8a8a5887c689eb3d1a7f1a63a1c58deb8ee765414368ef9e333a6428a6 + sourceRevisionDigest: sha256:c7ae3158896634abf0997139395b9bd35b100686d4c8995c41442f610ce3e6b5 + sourceBlobDigest: sha256:4c9544987d559a53c7b0c502a8ef69d6f177742f888ab12f61578eac4de94bdd codeSamplesNamespace: novu-api-csharp-code-samples - codeSamplesRevisionDigest: sha256:28429cda51710333917dda71eea10bb1f1cd5f4ea698339b4357d75d80dc3fdd + codeSamplesRevisionDigest: sha256:4993552159f9f883f9d39ff64ac72902f609909ed5d639be14946121e80122fc workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/NUGET.md b/NUGET.md index 60c0688b..76d8a9d6 100644 --- a/NUGET.md +++ b/NUGET.md @@ -390,9 +390,9 @@ catch (System.Net.Http.HttpRequestException ex) * [`System.Net.Http.HttpRequestException`](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httprequestexception): Network connectivity error. For more details about the underlying cause, inspect the `ex.InnerException`. * Inheriting from [`BaseException`](./src/Novu/Models/Errors/BaseException.cs): - * [`PayloadValidationExceptionDto`](./src/Novu/Models/Errors/PayloadValidationExceptionDto.cs): Status code `400`. Applicable to 3 of 93 methods.* - * [`SubscriberResponseDto`](./src/Novu/Models/Errors/SubscriberResponseDto.cs): Created. Status code `409`. Applicable to 1 of 93 methods.* - * [`TopicResponseDto`](./src/Novu/Models/Errors/TopicResponseDto.cs): OK. Status code `409`. Applicable to 1 of 93 methods.* + * [`PayloadValidationExceptionDto`](./src/Novu/Models/Errors/PayloadValidationExceptionDto.cs): Status code `400`. Applicable to 3 of 118 methods.* + * [`SubscriberResponseDto`](./src/Novu/Models/Errors/SubscriberResponseDto.cs): Created. Status code `409`. Applicable to 1 of 118 methods.* + * [`TopicResponseDto`](./src/Novu/Models/Errors/TopicResponseDto.cs): OK. Status code `409`. Applicable to 1 of 118 methods.* * [`ResponseValidationError`](./src/Novu/Models/Errors/ResponseValidationError.cs): Thrown when the response data could not be deserialized into the expected type. \* Refer to the [relevant documentation](#available-resources-and-operations) to determine whether an exception applies to a specific operation. diff --git a/README.md b/README.md index aa61d477..e1844667 100644 --- a/README.md +++ b/README.md @@ -269,7 +269,7 @@ var res = await sdk.TriggerAsync(triggerEventRequestDto: new TriggerEventRequest ### [Activity](docs/sdks/activity/README.md) -* [Track](docs/sdks/activity/README.md#track) - Track activity and engagement events +* [Track](docs/sdks/activity/README.md#track) - Track provider activity and engagement events ### [ChannelConnections](docs/sdks/channelconnections/README.md) @@ -295,9 +295,20 @@ var res = await sdk.TriggerAsync(triggerEventRequestDto: new TriggerEventRequest * [Retrieve](docs/sdks/contexts/README.md#retrieve) - Retrieve a context * [Delete](docs/sdks/contexts/README.md#delete) - Delete a context +### [EnvironmentVariables](docs/sdks/environmentvariables/README.md) + +* [List](docs/sdks/environmentvariables/README.md#list) - List all variables +* [Create](docs/sdks/environmentvariables/README.md#create) - Create a variable +* [Retrieve](docs/sdks/environmentvariables/README.md#retrieve) - Get environment variable +* [Update](docs/sdks/environmentvariables/README.md#update) - Update a variable +* [Delete](docs/sdks/environmentvariables/README.md#delete) - Delete environment variable +* [Usage](docs/sdks/environmentvariables/README.md#usage) - Retrieve a variable usage + ### [Environments](docs/sdks/environments/README.md) * [GetTags](docs/sdks/environments/README.md#gettags) - List environment tags +* [Diff](docs/sdks/environments/README.md#diff) - Compare resources between environments +* [Publish](docs/sdks/environments/README.md#publish) - Publish resources to target environment * [Create](docs/sdks/environments/README.md#create) - Create an environment * [List](docs/sdks/environments/README.md#list) - List all environments * [Update](docs/sdks/environments/README.md#update) - Update an environment @@ -349,6 +360,25 @@ var res = await sdk.TriggerAsync(triggerEventRequestDto: new TriggerEventRequest * [DeleteCredentials](docs/sdks/subscribers/README.md#deletecredentials) - Delete provider credentials * [UpdateOnlineStatus](docs/sdks/subscribers/README.md#updateonlinestatus) - Update subscriber online status +#### [Subscribers.Notifications](docs/sdks/novunotifications/README.md) + +* [List](docs/sdks/novunotifications/README.md#list) - Retrieve subscriber notifications +* [Delete](docs/sdks/novunotifications/README.md#delete) - Delete a notification +* [CompleteAction](docs/sdks/novunotifications/README.md#completeaction) - Complete a notification action +* [RevertAction](docs/sdks/novunotifications/README.md#revertaction) - Revert a notification action +* [Archive](docs/sdks/novunotifications/README.md#archive) - Archive a notification +* [MarkAsRead](docs/sdks/novunotifications/README.md#markasread) - Mark a notification as read +* [Snooze](docs/sdks/novunotifications/README.md#snooze) - Snooze a notification +* [Unarchive](docs/sdks/novunotifications/README.md#unarchive) - Unarchive a notification +* [MarkAsUnread](docs/sdks/novunotifications/README.md#markasunread) - Mark a notification as unread +* [Unsnooze](docs/sdks/novunotifications/README.md#unsnooze) - Unsnooze a notification +* [ArchiveAll](docs/sdks/novunotifications/README.md#archiveall) - Archive all notifications +* [Count](docs/sdks/novunotifications/README.md#count) - Retrieve subscriber notifications count +* [DeleteAll](docs/sdks/novunotifications/README.md#deleteall) - Delete all notifications +* [MarkAllAsRead](docs/sdks/novunotifications/README.md#markallasread) - Mark all notifications as read +* [ArchiveAllRead](docs/sdks/novunotifications/README.md#archiveallread) - Archive all read notifications +* [MarkAsSeen](docs/sdks/novunotifications/README.md#markasseen) - Mark notifications as seen + #### [Subscribers.Preferences](docs/sdks/preferences/README.md) * [BulkUpdate](docs/sdks/preferences/README.md#bulkupdate) - Bulk update subscriber preferences @@ -423,6 +453,7 @@ var res = await sdk.TriggerAsync(triggerEventRequestDto: new TriggerEventRequest #### [Workflows.Steps](docs/sdks/steps/README.md) +* [GeneratePreview](docs/sdks/steps/README.md#generatepreview) - Generate a step preview * [Retrieve](docs/sdks/steps/README.md#retrieve) - Retrieve workflow step @@ -617,9 +648,9 @@ catch (System.Net.Http.HttpRequestException ex) * [`System.Net.Http.HttpRequestException`](https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httprequestexception): Network connectivity error. For more details about the underlying cause, inspect the `ex.InnerException`. * Inheriting from [`BaseException`](./src/Novu/Models/Errors/BaseException.cs): - * [`PayloadValidationExceptionDto`](./src/Novu/Models/Errors/PayloadValidationExceptionDto.cs): Status code `400`. Applicable to 3 of 93 methods.* - * [`SubscriberResponseDto`](./src/Novu/Models/Errors/SubscriberResponseDto.cs): Created. Status code `409`. Applicable to 1 of 93 methods.* - * [`TopicResponseDto`](./src/Novu/Models/Errors/TopicResponseDto.cs): OK. Status code `409`. Applicable to 1 of 93 methods.* + * [`PayloadValidationExceptionDto`](./src/Novu/Models/Errors/PayloadValidationExceptionDto.cs): Status code `400`. Applicable to 3 of 118 methods.* + * [`SubscriberResponseDto`](./src/Novu/Models/Errors/SubscriberResponseDto.cs): Created. Status code `409`. Applicable to 1 of 118 methods.* + * [`TopicResponseDto`](./src/Novu/Models/Errors/TopicResponseDto.cs): OK. Status code `409`. Applicable to 1 of 118 methods.* * [`ResponseValidationError`](./src/Novu/Models/Errors/ResponseValidationError.cs): Thrown when the response data could not be deserialized into the expected type. diff --git a/RELEASES.md b/RELEASES.md index 5327da4e..6cc8df6c 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -118,4 +118,14 @@ Based on: ### Generated - [csharp v3.14.0] . ### Releases -- [NuGet v3.14.0] https://www.nuget.org/packages/Novu/3.14.0 - . \ No newline at end of file +- [NuGet v3.14.0] https://www.nuget.org/packages/Novu/3.14.0 - . + +## 2026-04-13 15:11:22 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.761.3 (2.879.11) https://github.com/speakeasy-api/speakeasy +### Generated +- [csharp v3.15.0] . +### Releases +- [NuGet v3.15.0] https://www.nuget.org/packages/Novu/3.15.0 - . \ No newline at end of file diff --git a/docs/Models/Components/ActivityNotificationJobResponseDtoType.md b/docs/Models/Components/ActivityNotificationJobResponseDtoType.md index 47c10483..53325b64 100644 --- a/docs/Models/Components/ActivityNotificationJobResponseDtoType.md +++ b/docs/Models/Components/ActivityNotificationJobResponseDtoType.md @@ -2,18 +2,27 @@ Type of the job +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = ActivityNotificationJobResponseDtoType.InApp; +``` + ## Values -| Name | Value | -| ---------- | ---------- | -| `InApp` | in_app | -| `Email` | email | -| `Sms` | sms | -| `Chat` | chat | -| `Push` | push | -| `Digest` | digest | -| `Trigger` | trigger | -| `Delay` | delay | -| `Throttle` | throttle | -| `Custom` | custom | \ No newline at end of file +| Name | Value | +| ------------- | ------------- | +| `InApp` | in_app | +| `Email` | email | +| `Sms` | sms | +| `Chat` | chat | +| `Push` | push | +| `Digest` | digest | +| `Trigger` | trigger | +| `Delay` | delay | +| `Throttle` | throttle | +| `Custom` | custom | +| `HttpRequest` | http_request | \ No newline at end of file diff --git a/docs/Models/Components/ActorTypeEnum.md b/docs/Models/Components/ActorTypeEnum.md index ad1d5f14..f63f75e5 100644 --- a/docs/Models/Components/ActorTypeEnum.md +++ b/docs/Models/Components/ActorTypeEnum.md @@ -2,6 +2,14 @@ The type of the actor, indicating the role in the notification process. +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = ActorTypeEnum.None; +``` + ## Values diff --git a/docs/Models/Components/BackoffUnit.md b/docs/Models/Components/BackoffUnit.md index cf5fcc00..da45b379 100644 --- a/docs/Models/Components/BackoffUnit.md +++ b/docs/Models/Components/BackoffUnit.md @@ -1,5 +1,13 @@ # BackoffUnit +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = BackoffUnit.Seconds; +``` + ## Values diff --git a/docs/Models/Components/BuilderFieldTypeEnum.md b/docs/Models/Components/BuilderFieldTypeEnum.md index cbdae91a..f696350b 100644 --- a/docs/Models/Components/BuilderFieldTypeEnum.md +++ b/docs/Models/Components/BuilderFieldTypeEnum.md @@ -1,5 +1,13 @@ # BuilderFieldTypeEnum +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = BuilderFieldTypeEnum.Boolean; +``` + ## Values diff --git a/docs/Models/Components/ButtonTypeEnum.md b/docs/Models/Components/ButtonTypeEnum.md index 6ccec9ac..fa38947f 100644 --- a/docs/Models/Components/ButtonTypeEnum.md +++ b/docs/Models/Components/ButtonTypeEnum.md @@ -2,6 +2,14 @@ Type of button for the action result +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = ButtonTypeEnum.Primary; +``` + ## Values diff --git a/docs/Models/Components/Channel.md b/docs/Models/Components/Channel.md index db190256..19f8fc78 100644 --- a/docs/Models/Components/Channel.md +++ b/docs/Models/Components/Channel.md @@ -2,6 +2,14 @@ The channel type (email, sms, push, chat, etc.). +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = Channel.InApp; +``` + ## Values diff --git a/docs/Models/Components/ChannelCTATypeEnum.md b/docs/Models/Components/ChannelCTATypeEnum.md index 294f5d80..b680eb63 100644 --- a/docs/Models/Components/ChannelCTATypeEnum.md +++ b/docs/Models/Components/ChannelCTATypeEnum.md @@ -2,6 +2,14 @@ Type of call to action +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = ChannelCTATypeEnum.Redirect; +``` + ## Values diff --git a/docs/Models/Components/ChannelTypeEnum.md b/docs/Models/Components/ChannelTypeEnum.md index d4eeb7e8..1ef571d9 100644 --- a/docs/Models/Components/ChannelTypeEnum.md +++ b/docs/Models/Components/ChannelTypeEnum.md @@ -2,6 +2,14 @@ Channel type through which the message is sent +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = ChannelTypeEnum.InApp; +``` + ## Values diff --git a/docs/Models/Components/ChatOrPushProviderEnum.md b/docs/Models/Components/ChatOrPushProviderEnum.md index f7baaae2..be4a2267 100644 --- a/docs/Models/Components/ChatOrPushProviderEnum.md +++ b/docs/Models/Components/ChatOrPushProviderEnum.md @@ -2,6 +2,14 @@ The provider identifier for the credentials +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = ChatOrPushProviderEnum.Slack; +``` + ## Values diff --git a/docs/Models/Components/ChatRenderOutput.md b/docs/Models/Components/ChatRenderOutput.md new file mode 100644 index 00000000..a9fb5810 --- /dev/null +++ b/docs/Models/Components/ChatRenderOutput.md @@ -0,0 +1,8 @@ +# ChatRenderOutput + + +## Fields + +| Field | Type | Required | Description | +| ------------------------ | ------------------------ | ------------------------ | ------------------------ | +| `Body` | *string* | :heavy_check_mark: | Body of the chat message | \ No newline at end of file diff --git a/docs/Models/Components/ChatStepResponseDto.md b/docs/Models/Components/ChatStepResponseDto.md index e8ec1d75..87675ed1 100644 --- a/docs/Models/Components/ChatStepResponseDto.md +++ b/docs/Models/Components/ChatStepResponseDto.md @@ -16,4 +16,5 @@ | `Origin` | [ResourceOriginEnum](../../Models/Components/ResourceOriginEnum.md) | :heavy_check_mark: | Origin of the layout | | `WorkflowId` | *string* | :heavy_check_mark: | Workflow identifier | | `WorkflowDatabaseId` | *string* | :heavy_check_mark: | Workflow database identifier | -| `Issues` | [StepIssuesDto](../../Models/Components/StepIssuesDto.md) | :heavy_minus_sign: | Issues associated with the step | \ No newline at end of file +| `Issues` | [StepIssuesDto](../../Models/Components/StepIssuesDto.md) | :heavy_minus_sign: | Issues associated with the step | +| `StepResolverHash` | *string* | :heavy_minus_sign: | Hash identifying the deployed Cloudflare Worker for this step | \ No newline at end of file diff --git a/docs/Models/Components/ContentIssueEnum.md b/docs/Models/Components/ContentIssueEnum.md index 54ecbcff..6b18a89f 100644 --- a/docs/Models/Components/ContentIssueEnum.md +++ b/docs/Models/Components/ContentIssueEnum.md @@ -2,6 +2,14 @@ Type of step content issue +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = ContentIssueEnum.IllegalVariableInControlValue; +``` + ## Values @@ -9,5 +17,6 @@ Type of step content issue | --------------------------------- | --------------------------------- | | `IllegalVariableInControlValue` | ILLEGAL_VARIABLE_IN_CONTROL_VALUE | | `InvalidFilterArgInVariable` | INVALID_FILTER_ARG_IN_VARIABLE | +| `InvalidUrl` | INVALID_URL | | `MissingValue` | MISSING_VALUE | | `TierLimitExceeded` | TIER_LIMIT_EXCEEDED | \ No newline at end of file diff --git a/docs/Models/Components/ControlValues.md b/docs/Models/Components/ControlValues.md index ecf1fba6..7c998325 100644 --- a/docs/Models/Components/ControlValues.md +++ b/docs/Models/Components/ControlValues.md @@ -1,6 +1,6 @@ # ControlValues -Control values for the layout +Control values for the layout. Omit to leave unchanged, or set to null to clear stored control values. ## Fields diff --git a/docs/Models/Components/CreateEnvironmentVariableRequestDto.md b/docs/Models/Components/CreateEnvironmentVariableRequestDto.md new file mode 100644 index 00000000..c2218ea4 --- /dev/null +++ b/docs/Models/Components/CreateEnvironmentVariableRequestDto.md @@ -0,0 +1,11 @@ +# CreateEnvironmentVariableRequestDto + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | +| `Key` | *string* | :heavy_check_mark: | Unique key for the variable. Must start with a letter and contain only letters, digits, and underscores. | +| `Type` | [CreateEnvironmentVariableRequestDtoType](../../Models/Components/CreateEnvironmentVariableRequestDtoType.md) | :heavy_minus_sign: | The type of the variable | +| `IsSecret` | *bool* | :heavy_minus_sign: | Whether this variable is a secret (encrypted at rest, masked in responses) | +| `Values` | List<[EnvironmentVariableValueDto](../../Models/Components/EnvironmentVariableValueDto.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/CreateEnvironmentVariableRequestDtoType.md b/docs/Models/Components/CreateEnvironmentVariableRequestDtoType.md new file mode 100644 index 00000000..4c333956 --- /dev/null +++ b/docs/Models/Components/CreateEnvironmentVariableRequestDtoType.md @@ -0,0 +1,18 @@ +# CreateEnvironmentVariableRequestDtoType + +The type of the variable + +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = CreateEnvironmentVariableRequestDtoType.String; +``` + + +## Values + +| Name | Value | +| -------- | -------- | +| `String` | string | \ No newline at end of file diff --git a/docs/Models/Components/CreateIntegrationRequestDtoChannel.md b/docs/Models/Components/CreateIntegrationRequestDtoChannel.md index c5bcfc10..8157f04c 100644 --- a/docs/Models/Components/CreateIntegrationRequestDtoChannel.md +++ b/docs/Models/Components/CreateIntegrationRequestDtoChannel.md @@ -2,6 +2,14 @@ The channel type for the integration +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = CreateIntegrationRequestDtoChannel.InApp; +``` + ## Values diff --git a/docs/Models/Components/CreateMsTeamsChannelEndpointDtoType.md b/docs/Models/Components/CreateMsTeamsChannelEndpointDtoType.md index aed22524..e3f157ad 100644 --- a/docs/Models/Components/CreateMsTeamsChannelEndpointDtoType.md +++ b/docs/Models/Components/CreateMsTeamsChannelEndpointDtoType.md @@ -2,6 +2,14 @@ Type of channel endpoint +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = CreateMsTeamsChannelEndpointDtoType.MsTeamsChannel; +``` + ## Values diff --git a/docs/Models/Components/CreateMsTeamsUserEndpointDtoType.md b/docs/Models/Components/CreateMsTeamsUserEndpointDtoType.md index 870ac2d8..c64cd038 100644 --- a/docs/Models/Components/CreateMsTeamsUserEndpointDtoType.md +++ b/docs/Models/Components/CreateMsTeamsUserEndpointDtoType.md @@ -2,6 +2,14 @@ Type of channel endpoint +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = CreateMsTeamsUserEndpointDtoType.MsTeamsUser; +``` + ## Values diff --git a/docs/Models/Components/CreatePhoneEndpointDtoType.md b/docs/Models/Components/CreatePhoneEndpointDtoType.md index b5a6139c..da032a2c 100644 --- a/docs/Models/Components/CreatePhoneEndpointDtoType.md +++ b/docs/Models/Components/CreatePhoneEndpointDtoType.md @@ -2,6 +2,14 @@ Type of channel endpoint +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = CreatePhoneEndpointDtoType.Phone; +``` + ## Values diff --git a/docs/Models/Components/CreateSlackChannelEndpointDtoType.md b/docs/Models/Components/CreateSlackChannelEndpointDtoType.md index 6b85b029..94ca107c 100644 --- a/docs/Models/Components/CreateSlackChannelEndpointDtoType.md +++ b/docs/Models/Components/CreateSlackChannelEndpointDtoType.md @@ -2,6 +2,14 @@ Type of channel endpoint +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = CreateSlackChannelEndpointDtoType.SlackChannel; +``` + ## Values diff --git a/docs/Models/Components/CreateSlackUserEndpointDtoType.md b/docs/Models/Components/CreateSlackUserEndpointDtoType.md index 2ad3730c..6616f88b 100644 --- a/docs/Models/Components/CreateSlackUserEndpointDtoType.md +++ b/docs/Models/Components/CreateSlackUserEndpointDtoType.md @@ -2,6 +2,14 @@ Type of channel endpoint +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = CreateSlackUserEndpointDtoType.SlackUser; +``` + ## Values diff --git a/docs/Models/Components/CreateWebhookEndpointDtoType.md b/docs/Models/Components/CreateWebhookEndpointDtoType.md index 41ab638e..d53ec8f8 100644 --- a/docs/Models/Components/CreateWebhookEndpointDtoType.md +++ b/docs/Models/Components/CreateWebhookEndpointDtoType.md @@ -2,6 +2,14 @@ Type of channel endpoint +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = CreateWebhookEndpointDtoType.Webhook; +``` + ## Values diff --git a/docs/Models/Components/CustomStepResponseDto.md b/docs/Models/Components/CustomStepResponseDto.md index 8aa061fc..575ad434 100644 --- a/docs/Models/Components/CustomStepResponseDto.md +++ b/docs/Models/Components/CustomStepResponseDto.md @@ -16,4 +16,5 @@ | `Origin` | [ResourceOriginEnum](../../Models/Components/ResourceOriginEnum.md) | :heavy_check_mark: | Origin of the layout | | `WorkflowId` | *string* | :heavy_check_mark: | Workflow identifier | | `WorkflowDatabaseId` | *string* | :heavy_check_mark: | Workflow database identifier | -| `Issues` | [StepIssuesDto](../../Models/Components/StepIssuesDto.md) | :heavy_minus_sign: | Issues associated with the step | \ No newline at end of file +| `Issues` | [StepIssuesDto](../../Models/Components/StepIssuesDto.md) | :heavy_minus_sign: | Issues associated with the step | +| `StepResolverHash` | *string* | :heavy_minus_sign: | Hash identifying the deployed Cloudflare Worker for this step | \ No newline at end of file diff --git a/docs/Models/Components/DelayRegularMetadataType.md b/docs/Models/Components/DelayRegularMetadataType.md index a620c477..88803ab3 100644 --- a/docs/Models/Components/DelayRegularMetadataType.md +++ b/docs/Models/Components/DelayRegularMetadataType.md @@ -1,5 +1,13 @@ # DelayRegularMetadataType +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = DelayRegularMetadataType.Regular; +``` + ## Values diff --git a/docs/Models/Components/DelayRegularMetadataUnit.md b/docs/Models/Components/DelayRegularMetadataUnit.md index f6f7471e..9987c4c7 100644 --- a/docs/Models/Components/DelayRegularMetadataUnit.md +++ b/docs/Models/Components/DelayRegularMetadataUnit.md @@ -1,5 +1,13 @@ # DelayRegularMetadataUnit +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = DelayRegularMetadataUnit.Seconds; +``` + ## Values diff --git a/docs/Models/Components/DelayScheduledMetadataType.md b/docs/Models/Components/DelayScheduledMetadataType.md index 26aa5b3b..99dc7664 100644 --- a/docs/Models/Components/DelayScheduledMetadataType.md +++ b/docs/Models/Components/DelayScheduledMetadataType.md @@ -1,5 +1,13 @@ # DelayScheduledMetadataType +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = DelayScheduledMetadataType.Scheduled; +``` + ## Values diff --git a/docs/Models/Components/DelayStepResponseDto.md b/docs/Models/Components/DelayStepResponseDto.md index 47351350..8caf9124 100644 --- a/docs/Models/Components/DelayStepResponseDto.md +++ b/docs/Models/Components/DelayStepResponseDto.md @@ -16,4 +16,5 @@ | `Origin` | [ResourceOriginEnum](../../Models/Components/ResourceOriginEnum.md) | :heavy_check_mark: | Origin of the layout | | `WorkflowId` | *string* | :heavy_check_mark: | Workflow identifier | | `WorkflowDatabaseId` | *string* | :heavy_check_mark: | Workflow database identifier | -| `Issues` | [StepIssuesDto](../../Models/Components/StepIssuesDto.md) | :heavy_minus_sign: | Issues associated with the step | \ No newline at end of file +| `Issues` | [StepIssuesDto](../../Models/Components/StepIssuesDto.md) | :heavy_minus_sign: | Issues associated with the step | +| `StepResolverHash` | *string* | :heavy_minus_sign: | Hash identifying the deployed Cloudflare Worker for this step | \ No newline at end of file diff --git a/docs/Models/Components/DelayStepResponseDtoType.md b/docs/Models/Components/DelayStepResponseDtoType.md index 9ddd5f1a..77d1137c 100644 --- a/docs/Models/Components/DelayStepResponseDtoType.md +++ b/docs/Models/Components/DelayStepResponseDtoType.md @@ -2,6 +2,14 @@ Type of the delay. Currently only 'regular' is supported by the schema. +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = DelayStepResponseDtoType.Regular; +``` + ## Values diff --git a/docs/Models/Components/DelayStepResponseDtoUnit.md b/docs/Models/Components/DelayStepResponseDtoUnit.md index 8cb3af02..22bd75fe 100644 --- a/docs/Models/Components/DelayStepResponseDtoUnit.md +++ b/docs/Models/Components/DelayStepResponseDtoUnit.md @@ -2,6 +2,14 @@ Unit of time for the delay amount. +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = DelayStepResponseDtoUnit.Seconds; +``` + ## Values diff --git a/docs/Models/Components/DeleteMessageResponseDtoStatus.md b/docs/Models/Components/DeleteMessageResponseDtoStatus.md index 9ed9e324..e9b9200c 100644 --- a/docs/Models/Components/DeleteMessageResponseDtoStatus.md +++ b/docs/Models/Components/DeleteMessageResponseDtoStatus.md @@ -2,6 +2,14 @@ The status enum for the performed action +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = DeleteMessageResponseDtoStatus.Deleted; +``` + ## Values diff --git a/docs/Models/Components/DependencyReasonEnum.md b/docs/Models/Components/DependencyReasonEnum.md new file mode 100644 index 00000000..e85b3a1f --- /dev/null +++ b/docs/Models/Components/DependencyReasonEnum.md @@ -0,0 +1,19 @@ +# DependencyReasonEnum + +Reason for the dependency + +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = DependencyReasonEnum.LayoutRequiredForWorkflow; +``` + + +## Values + +| Name | Value | +| ---------------------------- | ---------------------------- | +| `LayoutRequiredForWorkflow` | LAYOUT_REQUIRED_FOR_WORKFLOW | +| `LayoutExistsInTarget` | LAYOUT_EXISTS_IN_TARGET | \ No newline at end of file diff --git a/docs/Models/Components/DiffActionEnum.md b/docs/Models/Components/DiffActionEnum.md new file mode 100644 index 00000000..ab796dfa --- /dev/null +++ b/docs/Models/Components/DiffActionEnum.md @@ -0,0 +1,22 @@ +# DiffActionEnum + +Type of change + +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = DiffActionEnum.Added; +``` + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `Added` | added | +| `Modified` | modified | +| `Deleted` | deleted | +| `Unchanged` | unchanged | +| `Moved` | moved | \ No newline at end of file diff --git a/docs/Models/Components/DiffEnvironmentRequestDto.md b/docs/Models/Components/DiffEnvironmentRequestDto.md new file mode 100644 index 00000000..f41a810f --- /dev/null +++ b/docs/Models/Components/DiffEnvironmentRequestDto.md @@ -0,0 +1,8 @@ +# DiffEnvironmentRequestDto + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | +| `SourceEnvironmentId` | *string* | :heavy_minus_sign: | Source environment ID to compare from. Defaults to the Development environment if not provided. | 507f1f77bcf86cd799439011 | \ No newline at end of file diff --git a/docs/Models/Components/DiffEnvironmentResponseDto.md b/docs/Models/Components/DiffEnvironmentResponseDto.md new file mode 100644 index 00000000..4cab7bad --- /dev/null +++ b/docs/Models/Components/DiffEnvironmentResponseDto.md @@ -0,0 +1,11 @@ +# DiffEnvironmentResponseDto + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `SourceEnvironmentId` | *string* | :heavy_check_mark: | Source environment ID | +| `TargetEnvironmentId` | *string* | :heavy_check_mark: | Target environment ID | +| `Resources` | List<[ResourceDiffResultDto](../../Models/Components/ResourceDiffResultDto.md)> | :heavy_check_mark: | Diff resources by resource type | +| `Summary` | [EnvironmentDiffSummaryDto](../../Models/Components/EnvironmentDiffSummaryDto.md) | :heavy_check_mark: | Overall summary | \ No newline at end of file diff --git a/docs/Models/Components/DiffSummaryDto.md b/docs/Models/Components/DiffSummaryDto.md new file mode 100644 index 00000000..0c92780a --- /dev/null +++ b/docs/Models/Components/DiffSummaryDto.md @@ -0,0 +1,11 @@ +# DiffSummaryDto + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | +| `Added` | *double* | :heavy_check_mark: | Number of added resources (workflows and steps) | +| `Modified` | *double* | :heavy_check_mark: | Number of modified resources (workflows and steps) | +| `Deleted` | *double* | :heavy_check_mark: | Number of deleted resources (workflows and steps) | +| `Unchanged` | *double* | :heavy_check_mark: | Number of unchanged resources (workflows and steps) | \ No newline at end of file diff --git a/docs/Models/Components/Diffs.md b/docs/Models/Components/Diffs.md new file mode 100644 index 00000000..6f3a47f6 --- /dev/null +++ b/docs/Models/Components/Diffs.md @@ -0,0 +1,11 @@ +# Diffs + +Detailed changes (only for modified resources) + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | +| `Previous` | Dictionary | :heavy_minus_sign: | Previous state of the resource (null for added resources) | +| `New` | Dictionary | :heavy_minus_sign: | New state of the resource (null for deleted resources) | \ No newline at end of file diff --git a/docs/Models/Components/DigestControlDtoType.md b/docs/Models/Components/DigestControlDtoType.md index 62e6c480..c12926dd 100644 --- a/docs/Models/Components/DigestControlDtoType.md +++ b/docs/Models/Components/DigestControlDtoType.md @@ -2,6 +2,14 @@ The type of digest strategy. Determines which fields are applicable. +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = DigestControlDtoType.Regular; +``` + ## Values diff --git a/docs/Models/Components/DigestControlDtoUnit.md b/docs/Models/Components/DigestControlDtoUnit.md index 70af6d31..68d76791 100644 --- a/docs/Models/Components/DigestControlDtoUnit.md +++ b/docs/Models/Components/DigestControlDtoUnit.md @@ -2,6 +2,14 @@ The unit of time for the digest interval (for REGULAR type). +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = DigestControlDtoUnit.Seconds; +``` + ## Values diff --git a/docs/Models/Components/DigestMetadataDtoUnit.md b/docs/Models/Components/DigestMetadataDtoUnit.md index e2c4bd7b..8a947f4b 100644 --- a/docs/Models/Components/DigestMetadataDtoUnit.md +++ b/docs/Models/Components/DigestMetadataDtoUnit.md @@ -2,6 +2,14 @@ Unit of the digest +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = DigestMetadataDtoUnit.Seconds; +``` + ## Values diff --git a/docs/Models/Components/DigestRegularMetadataType.md b/docs/Models/Components/DigestRegularMetadataType.md index 41f918a6..f5256f35 100644 --- a/docs/Models/Components/DigestRegularMetadataType.md +++ b/docs/Models/Components/DigestRegularMetadataType.md @@ -1,5 +1,13 @@ # DigestRegularMetadataType +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = DigestRegularMetadataType.Regular; +``` + ## Values diff --git a/docs/Models/Components/DigestRegularMetadataUnit.md b/docs/Models/Components/DigestRegularMetadataUnit.md index 63b32cdd..276846b3 100644 --- a/docs/Models/Components/DigestRegularMetadataUnit.md +++ b/docs/Models/Components/DigestRegularMetadataUnit.md @@ -1,5 +1,13 @@ # DigestRegularMetadataUnit +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = DigestRegularMetadataUnit.Seconds; +``` + ## Values diff --git a/docs/Models/Components/DigestRegularOutput.md b/docs/Models/Components/DigestRegularOutput.md new file mode 100644 index 00000000..97cd3724 --- /dev/null +++ b/docs/Models/Components/DigestRegularOutput.md @@ -0,0 +1,11 @@ +# DigestRegularOutput + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | +| `Amount` | *double* | :heavy_check_mark: | Amount of time units | +| `Unit` | [TimeUnitEnum](../../Models/Components/TimeUnitEnum.md) | :heavy_check_mark: | Time unit | +| `DigestKey` | *string* | :heavy_minus_sign: | Optional digest key | +| `LookBackWindow` | [LookBackWindow](../../Models/Components/LookBackWindow.md) | :heavy_minus_sign: | Look back window configuration | \ No newline at end of file diff --git a/docs/Models/Components/DigestStepResponseDto.md b/docs/Models/Components/DigestStepResponseDto.md index d0bd8f1f..c895638c 100644 --- a/docs/Models/Components/DigestStepResponseDto.md +++ b/docs/Models/Components/DigestStepResponseDto.md @@ -16,4 +16,5 @@ | `Origin` | [ResourceOriginEnum](../../Models/Components/ResourceOriginEnum.md) | :heavy_check_mark: | Origin of the layout | | `WorkflowId` | *string* | :heavy_check_mark: | Workflow identifier | | `WorkflowDatabaseId` | *string* | :heavy_check_mark: | Workflow database identifier | -| `Issues` | [StepIssuesDto](../../Models/Components/StepIssuesDto.md) | :heavy_minus_sign: | Issues associated with the step | \ No newline at end of file +| `Issues` | [StepIssuesDto](../../Models/Components/StepIssuesDto.md) | :heavy_minus_sign: | Issues associated with the step | +| `StepResolverHash` | *string* | :heavy_minus_sign: | Hash identifying the deployed Cloudflare Worker for this step | \ No newline at end of file diff --git a/docs/Models/Components/DigestStepResponseDtoType.md b/docs/Models/Components/DigestStepResponseDtoType.md index fc1bf8c0..c2490fdb 100644 --- a/docs/Models/Components/DigestStepResponseDtoType.md +++ b/docs/Models/Components/DigestStepResponseDtoType.md @@ -2,6 +2,14 @@ The type of digest strategy. Determines which fields are applicable. +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = DigestStepResponseDtoType.Regular; +``` + ## Values diff --git a/docs/Models/Components/DigestStepResponseDtoUnit.md b/docs/Models/Components/DigestStepResponseDtoUnit.md index 97d4bc2b..d95a3649 100644 --- a/docs/Models/Components/DigestStepResponseDtoUnit.md +++ b/docs/Models/Components/DigestStepResponseDtoUnit.md @@ -2,6 +2,14 @@ The unit of time for the digest interval (for REGULAR type). +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = DigestStepResponseDtoUnit.Seconds; +``` + ## Values diff --git a/docs/Models/Components/DigestTimedConfigDtoWeekDays.md b/docs/Models/Components/DigestTimedConfigDtoWeekDays.md index 8cc2fc62..bb1bed08 100644 --- a/docs/Models/Components/DigestTimedConfigDtoWeekDays.md +++ b/docs/Models/Components/DigestTimedConfigDtoWeekDays.md @@ -1,5 +1,13 @@ # DigestTimedConfigDtoWeekDays +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = DigestTimedConfigDtoWeekDays.Monday; +``` + ## Values diff --git a/docs/Models/Components/DigestTimedMetadataType.md b/docs/Models/Components/DigestTimedMetadataType.md index cf2b1a41..533b1d00 100644 --- a/docs/Models/Components/DigestTimedMetadataType.md +++ b/docs/Models/Components/DigestTimedMetadataType.md @@ -1,5 +1,13 @@ # DigestTimedMetadataType +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = DigestTimedMetadataType.Timed; +``` + ## Values diff --git a/docs/Models/Components/DigestTimedMetadataUnit.md b/docs/Models/Components/DigestTimedMetadataUnit.md index 359ed736..baf0b4ef 100644 --- a/docs/Models/Components/DigestTimedMetadataUnit.md +++ b/docs/Models/Components/DigestTimedMetadataUnit.md @@ -1,5 +1,13 @@ # DigestTimedMetadataUnit +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = DigestTimedMetadataUnit.Seconds; +``` + ## Values diff --git a/docs/Models/Components/DigestTypeEnum.md b/docs/Models/Components/DigestTypeEnum.md index a3c59b7b..64dd2471 100644 --- a/docs/Models/Components/DigestTypeEnum.md +++ b/docs/Models/Components/DigestTypeEnum.md @@ -2,6 +2,14 @@ The Digest Type +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = DigestTypeEnum.Regular; +``` + ## Values diff --git a/docs/Models/Components/DigestUnitEnum.md b/docs/Models/Components/DigestUnitEnum.md index b21c8579..ee4ccd91 100644 --- a/docs/Models/Components/DigestUnitEnum.md +++ b/docs/Models/Components/DigestUnitEnum.md @@ -2,6 +2,14 @@ Regular digest: Unit for backoff +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = DigestUnitEnum.Seconds; +``` + ## Values diff --git a/docs/Models/Components/DirectionEnum.md b/docs/Models/Components/DirectionEnum.md index e3baa2ea..c0b16699 100644 --- a/docs/Models/Components/DirectionEnum.md +++ b/docs/Models/Components/DirectionEnum.md @@ -1,5 +1,13 @@ # DirectionEnum +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = DirectionEnum.Asc; +``` + ## Values diff --git a/docs/Models/Components/EditorType.md b/docs/Models/Components/EditorType.md index 9b1e20de..c6cb8197 100644 --- a/docs/Models/Components/EditorType.md +++ b/docs/Models/Components/EditorType.md @@ -2,6 +2,14 @@ Editor type of the layout. +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = EditorType.Html; +``` + ## Values diff --git a/docs/Models/Components/Eight.md b/docs/Models/Components/Eight.md new file mode 100644 index 00000000..9e28ffbf --- /dev/null +++ b/docs/Models/Components/Eight.md @@ -0,0 +1,9 @@ +# Eight + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | +| `Type` | [GeneratePreviewResponseDtoResult8Type](../../Models/Components/GeneratePreviewResponseDtoResult8Type.md) | :heavy_minus_sign: | N/A | +| `Preview` | [DigestRegularOutput](../../Models/Components/DigestRegularOutput.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/EmailBlockTypeEnum.md b/docs/Models/Components/EmailBlockTypeEnum.md index afef49b5..64fda007 100644 --- a/docs/Models/Components/EmailBlockTypeEnum.md +++ b/docs/Models/Components/EmailBlockTypeEnum.md @@ -2,6 +2,14 @@ Type of the email block +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = EmailBlockTypeEnum.Button; +``` + ## Values diff --git a/docs/Models/Components/EmailControlDtoEditorType.md b/docs/Models/Components/EmailControlDtoEditorType.md index c4de3665..6d4840fe 100644 --- a/docs/Models/Components/EmailControlDtoEditorType.md +++ b/docs/Models/Components/EmailControlDtoEditorType.md @@ -2,6 +2,14 @@ Type of editor to use for the body. +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = EmailControlDtoEditorType.Block; +``` + ## Values diff --git a/docs/Models/Components/EmailRenderOutput.md b/docs/Models/Components/EmailRenderOutput.md new file mode 100644 index 00000000..fd3d3b14 --- /dev/null +++ b/docs/Models/Components/EmailRenderOutput.md @@ -0,0 +1,9 @@ +# EmailRenderOutput + + +## Fields + +| Field | Type | Required | Description | +| -------------------- | -------------------- | -------------------- | -------------------- | +| `Subject` | *string* | :heavy_check_mark: | Subject of the email | +| `Body` | *string* | :heavy_check_mark: | Body of the email | \ No newline at end of file diff --git a/docs/Models/Components/EmailStepResponseDto.md b/docs/Models/Components/EmailStepResponseDto.md index 3317f721..9e5579e8 100644 --- a/docs/Models/Components/EmailStepResponseDto.md +++ b/docs/Models/Components/EmailStepResponseDto.md @@ -16,4 +16,5 @@ | `Origin` | [ResourceOriginEnum](../../Models/Components/ResourceOriginEnum.md) | :heavy_check_mark: | Origin of the layout | | `WorkflowId` | *string* | :heavy_check_mark: | Workflow identifier | | `WorkflowDatabaseId` | *string* | :heavy_check_mark: | Workflow database identifier | -| `Issues` | [StepIssuesDto](../../Models/Components/StepIssuesDto.md) | :heavy_minus_sign: | Issues associated with the step | \ No newline at end of file +| `Issues` | [StepIssuesDto](../../Models/Components/StepIssuesDto.md) | :heavy_minus_sign: | Issues associated with the step | +| `StepResolverHash` | *string* | :heavy_minus_sign: | Hash identifying the deployed Cloudflare Worker for this step | \ No newline at end of file diff --git a/docs/Models/Components/EmailStepResponseDtoEditorType.md b/docs/Models/Components/EmailStepResponseDtoEditorType.md index f77e9b75..e346b958 100644 --- a/docs/Models/Components/EmailStepResponseDtoEditorType.md +++ b/docs/Models/Components/EmailStepResponseDtoEditorType.md @@ -2,6 +2,14 @@ Type of editor to use for the body. +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = EmailStepResponseDtoEditorType.Block; +``` + ## Values diff --git a/docs/Models/Components/EnvironmentDiffSummaryDto.md b/docs/Models/Components/EnvironmentDiffSummaryDto.md new file mode 100644 index 00000000..09e590f3 --- /dev/null +++ b/docs/Models/Components/EnvironmentDiffSummaryDto.md @@ -0,0 +1,10 @@ +# EnvironmentDiffSummaryDto + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- | +| `TotalEntities` | *double* | :heavy_check_mark: | Total number of entities compared | +| `TotalChanges` | *double* | :heavy_check_mark: | Total number of changes detected | +| `HasChanges` | *bool* | :heavy_check_mark: | Whether any changes were detected | \ No newline at end of file diff --git a/docs/Models/Components/EnvironmentResponseDtoType.md b/docs/Models/Components/EnvironmentResponseDtoType.md index 3bc89bf8..3ad3fd36 100644 --- a/docs/Models/Components/EnvironmentResponseDtoType.md +++ b/docs/Models/Components/EnvironmentResponseDtoType.md @@ -2,6 +2,14 @@ Type of the environment +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = EnvironmentResponseDtoType.Dev; +``` + ## Values diff --git a/docs/Models/Components/EnvironmentVariableResponseDto.md b/docs/Models/Components/EnvironmentVariableResponseDto.md new file mode 100644 index 00000000..b7fe9206 --- /dev/null +++ b/docs/Models/Components/EnvironmentVariableResponseDto.md @@ -0,0 +1,15 @@ +# EnvironmentVariableResponseDto + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `Id` | *string* | :heavy_check_mark: | N/A | +| `OrganizationId` | *string* | :heavy_check_mark: | N/A | +| `Key` | *string* | :heavy_check_mark: | N/A | +| `Type` | [EnvironmentVariableResponseDtoType](../../Models/Components/EnvironmentVariableResponseDtoType.md) | :heavy_check_mark: | N/A | +| `IsSecret` | *bool* | :heavy_check_mark: | N/A | +| `Values` | List<[EnvironmentVariableValueResponseDto](../../Models/Components/EnvironmentVariableValueResponseDto.md)> | :heavy_check_mark: | N/A | +| `CreatedAt` | *string* | :heavy_check_mark: | N/A | +| `UpdatedAt` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/EnvironmentVariableResponseDtoType.md b/docs/Models/Components/EnvironmentVariableResponseDtoType.md new file mode 100644 index 00000000..188134f3 --- /dev/null +++ b/docs/Models/Components/EnvironmentVariableResponseDtoType.md @@ -0,0 +1,16 @@ +# EnvironmentVariableResponseDtoType + +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = EnvironmentVariableResponseDtoType.String; +``` + + +## Values + +| Name | Value | +| -------- | -------- | +| `String` | string | \ No newline at end of file diff --git a/docs/Models/Components/EnvironmentVariableValueDto.md b/docs/Models/Components/EnvironmentVariableValueDto.md new file mode 100644 index 00000000..92ad0a02 --- /dev/null +++ b/docs/Models/Components/EnvironmentVariableValueDto.md @@ -0,0 +1,9 @@ +# EnvironmentVariableValueDto + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `EnvironmentId` | *string* | :heavy_check_mark: | N/A | +| `Value` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/EnvironmentVariableValueResponseDto.md b/docs/Models/Components/EnvironmentVariableValueResponseDto.md new file mode 100644 index 00000000..1e4f8b5a --- /dev/null +++ b/docs/Models/Components/EnvironmentVariableValueResponseDto.md @@ -0,0 +1,9 @@ +# EnvironmentVariableValueResponseDto + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | +| `EnvironmentId` | *string* | :heavy_check_mark: | N/A | +| `Value` | *string* | :heavy_check_mark: | Value is masked (••••••••) for secret variables | \ No newline at end of file diff --git a/docs/Models/Components/EnvironmentVariableWorkflowInfoDto.md b/docs/Models/Components/EnvironmentVariableWorkflowInfoDto.md new file mode 100644 index 00000000..463cad4d --- /dev/null +++ b/docs/Models/Components/EnvironmentVariableWorkflowInfoDto.md @@ -0,0 +1,9 @@ +# EnvironmentVariableWorkflowInfoDto + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | +| `Name` | *string* | :heavy_check_mark: | The name of the workflow | Welcome Email | +| `WorkflowId` | *string* | :heavy_check_mark: | The unique identifier of the workflow | welcome-email | \ No newline at end of file diff --git a/docs/Models/Components/ExecutionDetailsSourceEnum.md b/docs/Models/Components/ExecutionDetailsSourceEnum.md index 93ecc87c..a8898d01 100644 --- a/docs/Models/Components/ExecutionDetailsSourceEnum.md +++ b/docs/Models/Components/ExecutionDetailsSourceEnum.md @@ -2,6 +2,14 @@ Source of the execution detail +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = ExecutionDetailsSourceEnum.Credentials; +``` + ## Values diff --git a/docs/Models/Components/ExecutionDetailsStatusEnum.md b/docs/Models/Components/ExecutionDetailsStatusEnum.md index 314b0148..23790a7d 100644 --- a/docs/Models/Components/ExecutionDetailsStatusEnum.md +++ b/docs/Models/Components/ExecutionDetailsStatusEnum.md @@ -2,6 +2,14 @@ Status of the execution detail +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = ExecutionDetailsStatusEnum.Success; +``` + ## Values diff --git a/docs/Models/Components/FailedWorkflowDto.md b/docs/Models/Components/FailedWorkflowDto.md new file mode 100644 index 00000000..154e582d --- /dev/null +++ b/docs/Models/Components/FailedWorkflowDto.md @@ -0,0 +1,12 @@ +# FailedWorkflowDto + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `ResourceType` | [ResourceTypeEnum](../../Models/Components/ResourceTypeEnum.md) | :heavy_check_mark: | Type of the layout | +| `ResourceId` | *string* | :heavy_check_mark: | Resource ID | +| `ResourceName` | *string* | :heavy_check_mark: | Resource name | +| `Error` | *string* | :heavy_check_mark: | Error message | +| `Stack` | *string* | :heavy_minus_sign: | Error stack trace | \ No newline at end of file diff --git a/docs/Models/Components/Filter.md b/docs/Models/Components/Filter.md new file mode 100644 index 00000000..c80e8255 --- /dev/null +++ b/docs/Models/Components/Filter.md @@ -0,0 +1,9 @@ +# Filter + +The filter applied to the notifications + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/Models/Components/GeneratePreviewRequestDto.md b/docs/Models/Components/GeneratePreviewRequestDto.md new file mode 100644 index 00000000..629a7748 --- /dev/null +++ b/docs/Models/Components/GeneratePreviewRequestDto.md @@ -0,0 +1,9 @@ +# GeneratePreviewRequestDto + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `ControlValues` | Dictionary | :heavy_minus_sign: | Optional control values | +| `PreviewPayload` | [PreviewPayloadDto](../../Models/Components/PreviewPayloadDto.md) | :heavy_minus_sign: | Optional payload for preview generation | \ No newline at end of file diff --git a/docs/Models/Components/GeneratePreviewResponseDto.md b/docs/Models/Components/GeneratePreviewResponseDto.md new file mode 100644 index 00000000..06a0ed56 --- /dev/null +++ b/docs/Models/Components/GeneratePreviewResponseDto.md @@ -0,0 +1,11 @@ +# GeneratePreviewResponseDto + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | +| `PreviewPayloadExample` | [PreviewPayloadDto](../../Models/Components/PreviewPayloadDto.md) | :heavy_check_mark: | Preview payload example | +| `Schema` | Dictionary | :heavy_minus_sign: | The payload schema that was used to generate the preview payload example | +| `NovuSignature` | *string* | :heavy_minus_sign: | Sample novu-signature header value for HTTP request steps | +| `Result` | [GeneratePreviewResponseDtoResult](../../Models/Components/GeneratePreviewResponseDtoResult.md) | :heavy_check_mark: | Preview result | \ No newline at end of file diff --git a/docs/Models/Components/GeneratePreviewResponseDtoResult.md b/docs/Models/Components/GeneratePreviewResponseDtoResult.md new file mode 100644 index 00000000..27dd7a75 --- /dev/null +++ b/docs/Models/Components/GeneratePreviewResponseDtoResult.md @@ -0,0 +1,60 @@ +# GeneratePreviewResponseDtoResult + +Preview result + + +## Supported Types + +### MapOfAny + +```csharp +GeneratePreviewResponseDtoResult.CreateMapOfAny(/* values here */); +``` + +### Result2 + +```csharp +GeneratePreviewResponseDtoResult.CreateResult2(/* values here */); +``` + +### Three + +```csharp +GeneratePreviewResponseDtoResult.CreateThree(/* values here */); +``` + +### Result4 + +```csharp +GeneratePreviewResponseDtoResult.CreateResult4(/* values here */); +``` + +### Result5 + +```csharp +GeneratePreviewResponseDtoResult.CreateResult5(/* values here */); +``` + +### Six + +```csharp +GeneratePreviewResponseDtoResult.CreateSix(/* values here */); +``` + +### Seven + +```csharp +GeneratePreviewResponseDtoResult.CreateSeven(/* values here */); +``` + +### Eight + +```csharp +GeneratePreviewResponseDtoResult.CreateEight(/* values here */); +``` + +### Nine + +```csharp +GeneratePreviewResponseDtoResult.CreateNine(/* values here */); +``` diff --git a/docs/Models/Components/GeneratePreviewResponseDtoResult3Type.md b/docs/Models/Components/GeneratePreviewResponseDtoResult3Type.md new file mode 100644 index 00000000..ba1310ec --- /dev/null +++ b/docs/Models/Components/GeneratePreviewResponseDtoResult3Type.md @@ -0,0 +1,16 @@ +# GeneratePreviewResponseDtoResult3Type + +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = GeneratePreviewResponseDtoResult3Type.Email; +``` + + +## Values + +| Name | Value | +| ------- | ------- | +| `Email` | email | \ No newline at end of file diff --git a/docs/Models/Components/GeneratePreviewResponseDtoResult4Type.md b/docs/Models/Components/GeneratePreviewResponseDtoResult4Type.md new file mode 100644 index 00000000..253f6e9b --- /dev/null +++ b/docs/Models/Components/GeneratePreviewResponseDtoResult4Type.md @@ -0,0 +1,16 @@ +# GeneratePreviewResponseDtoResult4Type + +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = GeneratePreviewResponseDtoResult4Type.InApp; +``` + + +## Values + +| Name | Value | +| ------- | ------- | +| `InApp` | in_app | \ No newline at end of file diff --git a/docs/Models/Components/GeneratePreviewResponseDtoResult5Type.md b/docs/Models/Components/GeneratePreviewResponseDtoResult5Type.md new file mode 100644 index 00000000..9eec2ce0 --- /dev/null +++ b/docs/Models/Components/GeneratePreviewResponseDtoResult5Type.md @@ -0,0 +1,16 @@ +# GeneratePreviewResponseDtoResult5Type + +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = GeneratePreviewResponseDtoResult5Type.Sms; +``` + + +## Values + +| Name | Value | +| ----- | ----- | +| `Sms` | sms | \ No newline at end of file diff --git a/docs/Models/Components/GeneratePreviewResponseDtoResult6Type.md b/docs/Models/Components/GeneratePreviewResponseDtoResult6Type.md new file mode 100644 index 00000000..51d80e35 --- /dev/null +++ b/docs/Models/Components/GeneratePreviewResponseDtoResult6Type.md @@ -0,0 +1,16 @@ +# GeneratePreviewResponseDtoResult6Type + +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = GeneratePreviewResponseDtoResult6Type.Push; +``` + + +## Values + +| Name | Value | +| ------ | ------ | +| `Push` | push | \ No newline at end of file diff --git a/docs/Models/Components/GeneratePreviewResponseDtoResult7Type.md b/docs/Models/Components/GeneratePreviewResponseDtoResult7Type.md new file mode 100644 index 00000000..954dc45a --- /dev/null +++ b/docs/Models/Components/GeneratePreviewResponseDtoResult7Type.md @@ -0,0 +1,16 @@ +# GeneratePreviewResponseDtoResult7Type + +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = GeneratePreviewResponseDtoResult7Type.Chat; +``` + + +## Values + +| Name | Value | +| ------ | ------ | +| `Chat` | chat | \ No newline at end of file diff --git a/docs/Models/Components/GeneratePreviewResponseDtoResult8Type.md b/docs/Models/Components/GeneratePreviewResponseDtoResult8Type.md new file mode 100644 index 00000000..a03945d2 --- /dev/null +++ b/docs/Models/Components/GeneratePreviewResponseDtoResult8Type.md @@ -0,0 +1,16 @@ +# GeneratePreviewResponseDtoResult8Type + +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = GeneratePreviewResponseDtoResult8Type.Delay; +``` + + +## Values + +| Name | Value | +| ------- | ------- | +| `Delay` | delay | \ No newline at end of file diff --git a/docs/Models/Components/GeneratePreviewResponseDtoResult9Type.md b/docs/Models/Components/GeneratePreviewResponseDtoResult9Type.md new file mode 100644 index 00000000..08bb524f --- /dev/null +++ b/docs/Models/Components/GeneratePreviewResponseDtoResult9Type.md @@ -0,0 +1,16 @@ +# GeneratePreviewResponseDtoResult9Type + +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = GeneratePreviewResponseDtoResult9Type.Digest; +``` + + +## Values + +| Name | Value | +| -------- | -------- | +| `Digest` | digest | \ No newline at end of file diff --git a/docs/Models/Components/GeneratePreviewResponseDtoResultType.md b/docs/Models/Components/GeneratePreviewResponseDtoResultType.md new file mode 100644 index 00000000..f79ab9f1 --- /dev/null +++ b/docs/Models/Components/GeneratePreviewResponseDtoResultType.md @@ -0,0 +1,16 @@ +# GeneratePreviewResponseDtoResultType + +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = GeneratePreviewResponseDtoResultType.Email; +``` + + +## Values + +| Name | Value | +| ------- | ------- | +| `Email` | email | \ No newline at end of file diff --git a/docs/Models/Components/GetChannelEndpointResponseDtoChannel.md b/docs/Models/Components/GetChannelEndpointResponseDtoChannel.md index 21d08388..e2f563f8 100644 --- a/docs/Models/Components/GetChannelEndpointResponseDtoChannel.md +++ b/docs/Models/Components/GetChannelEndpointResponseDtoChannel.md @@ -2,6 +2,14 @@ The channel type (email, sms, push, chat, etc.). +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = GetChannelEndpointResponseDtoChannel.InApp; +``` + ## Values diff --git a/docs/Models/Components/GetChannelEndpointResponseDtoProviderId.md b/docs/Models/Components/GetChannelEndpointResponseDtoProviderId.md index ea4ec6a4..2f9c5a0e 100644 --- a/docs/Models/Components/GetChannelEndpointResponseDtoProviderId.md +++ b/docs/Models/Components/GetChannelEndpointResponseDtoProviderId.md @@ -2,6 +2,14 @@ The provider identifier (e.g., sendgrid, twilio, slack, etc.). +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = GetChannelEndpointResponseDtoProviderId.Emailjs; +``` + ## Values @@ -64,6 +72,7 @@ The provider identifier (e.g., sendgrid, twilio, slack, etc.). | `Imedia` | imedia | | `Sinch` | sinch | | `IsendproSms` | isendpro-sms | +| `CmTelecom` | cm-telecom | | `Fcm` | fcm | | `Apns` | apns | | `Expo` | expo | diff --git a/docs/Models/Components/GetChannelEndpointResponseDtoType.md b/docs/Models/Components/GetChannelEndpointResponseDtoType.md index dd580f6f..23bdd50d 100644 --- a/docs/Models/Components/GetChannelEndpointResponseDtoType.md +++ b/docs/Models/Components/GetChannelEndpointResponseDtoType.md @@ -2,6 +2,14 @@ Type of channel endpoint +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = GetChannelEndpointResponseDtoType.SlackChannel; +``` + ## Values diff --git a/docs/Models/Components/GetEnvironmentVariableUsageResponseDto.md b/docs/Models/Components/GetEnvironmentVariableUsageResponseDto.md new file mode 100644 index 00000000..d4f4a30a --- /dev/null +++ b/docs/Models/Components/GetEnvironmentVariableUsageResponseDto.md @@ -0,0 +1,8 @@ +# GetEnvironmentVariableUsageResponseDto + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | +| `Workflows` | List<[EnvironmentVariableWorkflowInfoDto](../../Models/Components/EnvironmentVariableWorkflowInfoDto.md)> | :heavy_check_mark: | Array of workflows that reference this environment variable | \ No newline at end of file diff --git a/docs/Models/Components/GetSubscriberNotificationsCountResponseDto.md b/docs/Models/Components/GetSubscriberNotificationsCountResponseDto.md new file mode 100644 index 00000000..28e8bfd8 --- /dev/null +++ b/docs/Models/Components/GetSubscriberNotificationsCountResponseDto.md @@ -0,0 +1,9 @@ +# GetSubscriberNotificationsCountResponseDto + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | +| `Count` | *double* | :heavy_check_mark: | The count of notifications matching the filter | +| `Filter` | Dictionary | :heavy_check_mark: | The filter applied | \ No newline at end of file diff --git a/docs/Models/Components/GetSubscriberNotificationsResponseDto.md b/docs/Models/Components/GetSubscriberNotificationsResponseDto.md new file mode 100644 index 00000000..54dd90d2 --- /dev/null +++ b/docs/Models/Components/GetSubscriberNotificationsResponseDto.md @@ -0,0 +1,10 @@ +# GetSubscriberNotificationsResponseDto + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `Data` | List<[InboxNotificationDto](../../Models/Components/InboxNotificationDto.md)> | :heavy_check_mark: | Array of notifications | +| `HasMore` | *bool* | :heavy_check_mark: | Indicates if there are more notifications available | +| `Filter` | [Filter](../../Models/Components/Filter.md) | :heavy_check_mark: | The filter applied to the notifications | \ No newline at end of file diff --git a/docs/Models/Components/HttpMethodEnum.md b/docs/Models/Components/HttpMethodEnum.md new file mode 100644 index 00000000..61ab0b6e --- /dev/null +++ b/docs/Models/Components/HttpMethodEnum.md @@ -0,0 +1,22 @@ +# HttpMethodEnum + +HTTP method + +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = HttpMethodEnum.Get; +``` + + +## Values + +| Name | Value | +| -------- | -------- | +| `Get` | GET | +| `Post` | POST | +| `Put` | PUT | +| `Delete` | DELETE | +| `Patch` | PATCH | \ No newline at end of file diff --git a/docs/Models/Components/HttpRequestControlDto.md b/docs/Models/Components/HttpRequestControlDto.md new file mode 100644 index 00000000..f286735e --- /dev/null +++ b/docs/Models/Components/HttpRequestControlDto.md @@ -0,0 +1,14 @@ +# HttpRequestControlDto + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `Method` | [HttpMethodEnum](../../Models/Components/HttpMethodEnum.md) | :heavy_check_mark: | HTTP method | +| `Url` | *string* | :heavy_check_mark: | Target URL for the HTTP request | +| `Headers` | List<[HttpRequestKeyValuePairDto](../../Models/Components/HttpRequestKeyValuePairDto.md)> | :heavy_minus_sign: | Request headers as key-value pairs | +| `Body` | List<[HttpRequestKeyValuePairDto](../../Models/Components/HttpRequestKeyValuePairDto.md)> | :heavy_minus_sign: | Request body as key-value pairs | +| `ResponseBodySchema` | Dictionary | :heavy_minus_sign: | JSON schema to validate response body against | +| `EnforceSchemaValidation` | *bool* | :heavy_minus_sign: | Whether to enforce response body schema validation | +| `ContinueOnFailure` | *bool* | :heavy_minus_sign: | Whether to continue workflow execution on failure | \ No newline at end of file diff --git a/docs/Models/Components/HttpRequestControlsMetadataResponseDto.md b/docs/Models/Components/HttpRequestControlsMetadataResponseDto.md new file mode 100644 index 00000000..9eedcdc1 --- /dev/null +++ b/docs/Models/Components/HttpRequestControlsMetadataResponseDto.md @@ -0,0 +1,10 @@ +# HttpRequestControlsMetadataResponseDto + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `DataSchema` | Dictionary | :heavy_minus_sign: | JSON Schema for data | +| `UiSchema` | [UiSchema](../../Models/Components/UiSchema.md) | :heavy_minus_sign: | UI Schema for rendering | +| `Values` | [HttpRequestControlDto](../../Models/Components/HttpRequestControlDto.md) | :heavy_check_mark: | Control values specific to HTTP Request step | \ No newline at end of file diff --git a/docs/Models/Components/HttpRequestKeyValuePairDto.md b/docs/Models/Components/HttpRequestKeyValuePairDto.md new file mode 100644 index 00000000..ede7f26e --- /dev/null +++ b/docs/Models/Components/HttpRequestKeyValuePairDto.md @@ -0,0 +1,9 @@ +# HttpRequestKeyValuePairDto + + +## Fields + +| Field | Type | Required | Description | +| --------------------------- | --------------------------- | --------------------------- | --------------------------- | +| `Key` | *string* | :heavy_check_mark: | Key of the key-value pair | +| `Value` | *string* | :heavy_check_mark: | Value of the key-value pair | \ No newline at end of file diff --git a/docs/Models/Components/HttpRequestStepResponseDto.md b/docs/Models/Components/HttpRequestStepResponseDto.md new file mode 100644 index 00000000..340e82e5 --- /dev/null +++ b/docs/Models/Components/HttpRequestStepResponseDto.md @@ -0,0 +1,20 @@ +# HttpRequestStepResponseDto + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | +| `Controls` | [HttpRequestControlsMetadataResponseDto](../../Models/Components/HttpRequestControlsMetadataResponseDto.md) | :heavy_check_mark: | Controls metadata for the HTTP request step | +| `ControlValues` | [HttpRequestStepResponseDtoControlValues](../../Models/Components/HttpRequestStepResponseDtoControlValues.md) | :heavy_minus_sign: | Control values for the HTTP request step | +| `Variables` | Dictionary | :heavy_check_mark: | JSON Schema for variables, follows the JSON Schema standard | +| `StepId` | *string* | :heavy_check_mark: | Unique identifier of the step | +| `Id` | *string* | :heavy_check_mark: | Database identifier of the step | +| `Name` | *string* | :heavy_check_mark: | Name of the step | +| `Slug` | *string* | :heavy_check_mark: | Slug of the step | +| `Type` | [StepTypeEnum](../../Models/Components/StepTypeEnum.md) | :heavy_check_mark: | Type of the step | +| `Origin` | [ResourceOriginEnum](../../Models/Components/ResourceOriginEnum.md) | :heavy_check_mark: | Origin of the layout | +| `WorkflowId` | *string* | :heavy_check_mark: | Workflow identifier | +| `WorkflowDatabaseId` | *string* | :heavy_check_mark: | Workflow database identifier | +| `Issues` | [StepIssuesDto](../../Models/Components/StepIssuesDto.md) | :heavy_minus_sign: | Issues associated with the step | +| `StepResolverHash` | *string* | :heavy_minus_sign: | Hash identifying the deployed Cloudflare Worker for this step | \ No newline at end of file diff --git a/docs/Models/Components/HttpRequestStepResponseDtoControlValues.md b/docs/Models/Components/HttpRequestStepResponseDtoControlValues.md new file mode 100644 index 00000000..5a168773 --- /dev/null +++ b/docs/Models/Components/HttpRequestStepResponseDtoControlValues.md @@ -0,0 +1,17 @@ +# HttpRequestStepResponseDtoControlValues + +Control values for the HTTP request step + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `Method` | [HttpMethodEnum](../../Models/Components/HttpMethodEnum.md) | :heavy_check_mark: | HTTP method | +| `Url` | *string* | :heavy_check_mark: | Target URL for the HTTP request | +| `Headers` | List<[HttpRequestKeyValuePairDto](../../Models/Components/HttpRequestKeyValuePairDto.md)> | :heavy_minus_sign: | Request headers as key-value pairs | +| `Body` | List<[HttpRequestKeyValuePairDto](../../Models/Components/HttpRequestKeyValuePairDto.md)> | :heavy_minus_sign: | Request body as key-value pairs | +| `ResponseBodySchema` | Dictionary | :heavy_minus_sign: | JSON schema to validate response body against | +| `EnforceSchemaValidation` | *bool* | :heavy_minus_sign: | Whether to enforce response body schema validation | +| `ContinueOnFailure` | *bool* | :heavy_minus_sign: | Whether to continue workflow execution on failure | +| `AdditionalProperties` | Dictionary | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/HttpRequestStepUpsertDto.md b/docs/Models/Components/HttpRequestStepUpsertDto.md new file mode 100644 index 00000000..cc5fd855 --- /dev/null +++ b/docs/Models/Components/HttpRequestStepUpsertDto.md @@ -0,0 +1,12 @@ +# HttpRequestStepUpsertDto + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | +| `Id` | *string* | :heavy_minus_sign: | Database identifier of the step. Used for updating the step. | +| `StepId` | *string* | :heavy_minus_sign: | Unique identifier for the step | +| `Name` | *string* | :heavy_check_mark: | Name of the step | +| `Type` | [StepTypeEnum](../../Models/Components/StepTypeEnum.md) | :heavy_check_mark: | Type of the step | +| `ControlValues` | [HttpRequestStepUpsertDtoControlValues](../../Models/Components/HttpRequestStepUpsertDtoControlValues.md) | :heavy_minus_sign: | Control values for the HTTP Request step. | \ No newline at end of file diff --git a/docs/Models/Components/HttpRequestStepUpsertDtoControlValues.md b/docs/Models/Components/HttpRequestStepUpsertDtoControlValues.md new file mode 100644 index 00000000..e31705a1 --- /dev/null +++ b/docs/Models/Components/HttpRequestStepUpsertDtoControlValues.md @@ -0,0 +1,18 @@ +# HttpRequestStepUpsertDtoControlValues + +Control values for the HTTP Request step. + + +## Supported Types + +### HttpRequestControlDto + +```csharp +HttpRequestStepUpsertDtoControlValues.CreateHttpRequestControlDto(/* values here */); +``` + +### MapOfAny + +```csharp +HttpRequestStepUpsertDtoControlValues.CreateMapOfAny(/* values here */); +``` diff --git a/docs/Models/Components/InAppRenderOutput.md b/docs/Models/Components/InAppRenderOutput.md new file mode 100644 index 00000000..90b6ff49 --- /dev/null +++ b/docs/Models/Components/InAppRenderOutput.md @@ -0,0 +1,14 @@ +# InAppRenderOutput + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | +| `Subject` | *string* | :heavy_minus_sign: | Subject of the in-app notification | +| `Body` | *string* | :heavy_check_mark: | Body of the in-app notification | +| `Avatar` | *string* | :heavy_minus_sign: | Avatar for the in-app notification | +| `PrimaryAction` | [ActionDto](../../Models/Components/ActionDto.md) | :heavy_minus_sign: | Primary action details | +| `SecondaryAction` | [ActionDto](../../Models/Components/ActionDto.md) | :heavy_minus_sign: | Secondary action details | +| `Data` | Dictionary | :heavy_minus_sign: | Additional data | +| `Redirect` | [RedirectDto](../../Models/Components/RedirectDto.md) | :heavy_minus_sign: | Redirect details | \ No newline at end of file diff --git a/docs/Models/Components/InAppStepResponseDto.md b/docs/Models/Components/InAppStepResponseDto.md index b307f27b..e01d5da5 100644 --- a/docs/Models/Components/InAppStepResponseDto.md +++ b/docs/Models/Components/InAppStepResponseDto.md @@ -16,4 +16,5 @@ | `Origin` | [ResourceOriginEnum](../../Models/Components/ResourceOriginEnum.md) | :heavy_check_mark: | Origin of the layout | | `WorkflowId` | *string* | :heavy_check_mark: | Workflow identifier | | `WorkflowDatabaseId` | *string* | :heavy_check_mark: | Workflow database identifier | -| `Issues` | [StepIssuesDto](../../Models/Components/StepIssuesDto.md) | :heavy_minus_sign: | Issues associated with the step | \ No newline at end of file +| `Issues` | [StepIssuesDto](../../Models/Components/StepIssuesDto.md) | :heavy_minus_sign: | Issues associated with the step | +| `StepResolverHash` | *string* | :heavy_minus_sign: | Hash identifying the deployed Cloudflare Worker for this step | \ No newline at end of file diff --git a/docs/Models/Components/InboxActionDto.md b/docs/Models/Components/InboxActionDto.md new file mode 100644 index 00000000..2f6df56e --- /dev/null +++ b/docs/Models/Components/InboxActionDto.md @@ -0,0 +1,10 @@ +# InboxActionDto + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | +| `Label` | *string* | :heavy_check_mark: | Label of the action button | +| `IsCompleted` | *bool* | :heavy_check_mark: | Whether the action has been completed | +| `Redirect` | [RedirectDto](../../Models/Components/RedirectDto.md) | :heavy_minus_sign: | Redirect configuration for the action | \ No newline at end of file diff --git a/docs/Models/Components/InboxNotificationDto.md b/docs/Models/Components/InboxNotificationDto.md new file mode 100644 index 00000000..67b490ab --- /dev/null +++ b/docs/Models/Components/InboxNotificationDto.md @@ -0,0 +1,31 @@ +# InboxNotificationDto + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `Id` | *string* | :heavy_check_mark: | Unique identifier of the notification | +| `TransactionId` | *string* | :heavy_check_mark: | Transaction identifier of the notification | +| `Subject` | *string* | :heavy_minus_sign: | Subject of the notification | +| `Body` | *string* | :heavy_check_mark: | Body content of the notification | +| `To` | [InboxSubscriberResponseDto](../../Models/Components/InboxSubscriberResponseDto.md) | :heavy_check_mark: | Subscriber this notification was sent to | +| `IsRead` | *bool* | :heavy_check_mark: | Whether the notification has been read | +| `IsSeen` | *bool* | :heavy_check_mark: | Whether the notification has been seen | +| `IsArchived` | *bool* | :heavy_check_mark: | Whether the notification has been archived | +| `IsSnoozed` | *bool* | :heavy_check_mark: | Whether the notification is snoozed | +| `SnoozedUntil` | *string* | :heavy_minus_sign: | ISO timestamp when the notification will be unsnoozed | +| `DeliveredAt` | List<*string*> | :heavy_minus_sign: | Timestamps when the notification was delivered | +| `CreatedAt` | *string* | :heavy_check_mark: | ISO timestamp when the notification was created | +| `ReadAt` | *string* | :heavy_minus_sign: | ISO timestamp when the notification was read | +| `FirstSeenAt` | *string* | :heavy_minus_sign: | ISO timestamp when the notification was first seen | +| `ArchivedAt` | *string* | :heavy_minus_sign: | ISO timestamp when the notification was archived | +| `Avatar` | *string* | :heavy_minus_sign: | Avatar URL for the notification | +| `PrimaryAction` | [InboxActionDto](../../Models/Components/InboxActionDto.md) | :heavy_minus_sign: | Primary action button for the notification | +| `SecondaryAction` | [InboxActionDto](../../Models/Components/InboxActionDto.md) | :heavy_minus_sign: | Secondary action button for the notification | +| `ChannelType` | [ChannelTypeEnum](../../Models/Components/ChannelTypeEnum.md) | :heavy_check_mark: | Channel type through which the message is sent | +| `Tags` | List<*string*> | :heavy_minus_sign: | Tags associated with the notification | +| `Data` | Dictionary | :heavy_minus_sign: | Custom data payload of the notification | +| `Redirect` | [RedirectDto](../../Models/Components/RedirectDto.md) | :heavy_minus_sign: | Redirect configuration for the notification | +| `Workflow` | [NotificationWorkflowDto](../../Models/Components/NotificationWorkflowDto.md) | :heavy_minus_sign: | Workflow associated with the notification | +| `Severity` | [SeverityLevelEnum](../../Models/Components/SeverityLevelEnum.md) | :heavy_check_mark: | Severity of the workflow | \ No newline at end of file diff --git a/docs/Models/Components/InboxSubscriberResponseDto.md b/docs/Models/Components/InboxSubscriberResponseDto.md new file mode 100644 index 00000000..527e60ac --- /dev/null +++ b/docs/Models/Components/InboxSubscriberResponseDto.md @@ -0,0 +1,12 @@ +# InboxSubscriberResponseDto + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | +| `Id` | *string* | :heavy_check_mark: | Unique identifier of the subscriber | +| `FirstName` | *string* | :heavy_minus_sign: | First name of the subscriber | +| `LastName` | *string* | :heavy_minus_sign: | Last name of the subscriber | +| `Avatar` | *string* | :heavy_minus_sign: | Avatar URL of the subscriber | +| `SubscriberId` | *string* | :heavy_check_mark: | External subscriber identifier | \ No newline at end of file diff --git a/docs/Models/Components/IntegrationIssueEnum.md b/docs/Models/Components/IntegrationIssueEnum.md index 1292c4ad..0be83857 100644 --- a/docs/Models/Components/IntegrationIssueEnum.md +++ b/docs/Models/Components/IntegrationIssueEnum.md @@ -2,6 +2,14 @@ Type of integration issue +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = IntegrationIssueEnum.MissingIntegration; +``` + ## Values diff --git a/docs/Models/Components/IntegrationResponseDto.md b/docs/Models/Components/IntegrationResponseDto.md index 764ce49d..f92ff1dc 100644 --- a/docs/Models/Components/IntegrationResponseDto.md +++ b/docs/Models/Components/IntegrationResponseDto.md @@ -11,7 +11,7 @@ | `Name` | *string* | :heavy_check_mark: | The name of the integration, which is used to identify it in the user interface. | | `Identifier` | *string* | :heavy_check_mark: | A unique string identifier for the integration, often used for API calls or internal references. | | `ProviderId` | *string* | :heavy_check_mark: | The identifier for the provider of the integration (e.g., "mailgun", "twilio"). | -| `Channel` | [IntegrationResponseDtoChannel](../../Models/Components/IntegrationResponseDtoChannel.md) | :heavy_check_mark: | The channel type for the integration, which defines how the integration communicates (e.g., email, SMS). | +| `Channel` | [IntegrationResponseDtoChannel](../../Models/Components/IntegrationResponseDtoChannel.md) | :heavy_check_mark: | The channel type for the integration, which defines how it communicates (e.g., email, SMS). | | `Credentials` | [CredentialsDto](../../Models/Components/CredentialsDto.md) | :heavy_check_mark: | The credentials required for the integration to function, including API keys and other sensitive information. | | `Configurations` | [ConfigurationsDto](../../Models/Components/ConfigurationsDto.md) | :heavy_minus_sign: | The configurations required for enabling the additional configurations of the integration. | | `Active` | *bool* | :heavy_check_mark: | Indicates whether the integration is currently active. An active integration will process events and messages. | diff --git a/docs/Models/Components/IntegrationResponseDtoChannel.md b/docs/Models/Components/IntegrationResponseDtoChannel.md index ee2622a6..8c163b16 100644 --- a/docs/Models/Components/IntegrationResponseDtoChannel.md +++ b/docs/Models/Components/IntegrationResponseDtoChannel.md @@ -1,6 +1,14 @@ # IntegrationResponseDtoChannel -The channel type for the integration, which defines how the integration communicates (e.g., email, SMS). +The channel type for the integration, which defines how it communicates (e.g., email, SMS). + +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = IntegrationResponseDtoChannel.InApp; +``` ## Values diff --git a/docs/Models/Components/IssueType.md b/docs/Models/Components/IssueType.md deleted file mode 100644 index b7862225..00000000 --- a/docs/Models/Components/IssueType.md +++ /dev/null @@ -1,12 +0,0 @@ -# IssueType - - -## Values - -| Name | Value | -| -------------------------- | -------------------------- | -| `MissingValue` | MISSING_VALUE | -| `MaxLengthAccessed` | MAX_LENGTH_ACCESSED | -| `WorkflowIdAlreadyExists` | WORKFLOW_ID_ALREADY_EXISTS | -| `DuplicatedValue` | DUPLICATED_VALUE | -| `LimitReached` | LIMIT_REACHED | \ No newline at end of file diff --git a/docs/Models/Components/LayoutCreationSourceEnum.md b/docs/Models/Components/LayoutCreationSourceEnum.md index 70245b1c..a6512793 100644 --- a/docs/Models/Components/LayoutCreationSourceEnum.md +++ b/docs/Models/Components/LayoutCreationSourceEnum.md @@ -2,6 +2,14 @@ Source of layout creation +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = LayoutCreationSourceEnum.Dashboard; +``` + ## Values diff --git a/docs/Models/Components/LayoutResponseDtoSortField.md b/docs/Models/Components/LayoutResponseDtoSortField.md index eda45b6e..78d9e887 100644 --- a/docs/Models/Components/LayoutResponseDtoSortField.md +++ b/docs/Models/Components/LayoutResponseDtoSortField.md @@ -1,5 +1,13 @@ # LayoutResponseDtoSortField +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = LayoutResponseDtoSortField.CreatedAt; +``` + ## Values diff --git a/docs/Models/Components/LookBackWindow.md b/docs/Models/Components/LookBackWindow.md new file mode 100644 index 00000000..958bf272 --- /dev/null +++ b/docs/Models/Components/LookBackWindow.md @@ -0,0 +1,9 @@ +# LookBackWindow + +Look back window configuration + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/Models/Components/LookBackWindowDtoUnit.md b/docs/Models/Components/LookBackWindowDtoUnit.md index 24858309..b355b031 100644 --- a/docs/Models/Components/LookBackWindowDtoUnit.md +++ b/docs/Models/Components/LookBackWindowDtoUnit.md @@ -2,6 +2,14 @@ Unit of time for the look-back window. +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = LookBackWindowDtoUnit.Seconds; +``` + ## Values diff --git a/docs/Models/Components/MarkAs.md b/docs/Models/Components/MarkAs.md index 2797ca96..ff5c82c5 100644 --- a/docs/Models/Components/MarkAs.md +++ b/docs/Models/Components/MarkAs.md @@ -2,6 +2,14 @@ Mark all subscriber messages as read, unread, seen or unseen +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = MarkAs.Read; +``` + ## Values diff --git a/docs/Models/Components/MarkMessageActionAsSeenDtoStatus.md b/docs/Models/Components/MarkMessageActionAsSeenDtoStatus.md index e35a3da7..8fc1f710 100644 --- a/docs/Models/Components/MarkMessageActionAsSeenDtoStatus.md +++ b/docs/Models/Components/MarkMessageActionAsSeenDtoStatus.md @@ -2,6 +2,14 @@ Message action status +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = MarkMessageActionAsSeenDtoStatus.Pending; +``` + ## Values diff --git a/docs/Models/Components/MarkSubscriberNotificationsAsSeenDto.md b/docs/Models/Components/MarkSubscriberNotificationsAsSeenDto.md new file mode 100644 index 00000000..778b3537 --- /dev/null +++ b/docs/Models/Components/MarkSubscriberNotificationsAsSeenDto.md @@ -0,0 +1,11 @@ +# MarkSubscriberNotificationsAsSeenDto + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `NotificationIds` | List<*string*> | :heavy_minus_sign: | Specific notification IDs to mark as seen | +| `Tags` | [MarkSubscriberNotificationsAsSeenDtoTags](../../Models/Components/MarkSubscriberNotificationsAsSeenDtoTags.md) | :heavy_minus_sign: | Filter notifications by workflow tags (OR for string[], or { and: [{ or: string[] }, ...] } for AND of OR-groups). | +| `Data` | *string* | :heavy_minus_sign: | Filter notifications by data attributes (JSON string) | +| `ContextKeys` | List<*string*> | :heavy_minus_sign: | Context keys for filtering notifications | \ No newline at end of file diff --git a/docs/Models/Components/MarkSubscriberNotificationsAsSeenDtoTags.md b/docs/Models/Components/MarkSubscriberNotificationsAsSeenDtoTags.md new file mode 100644 index 00000000..3abb5be5 --- /dev/null +++ b/docs/Models/Components/MarkSubscriberNotificationsAsSeenDtoTags.md @@ -0,0 +1,9 @@ +# MarkSubscriberNotificationsAsSeenDtoTags + +Filter notifications by workflow tags (OR for string[], or { and: [{ or: string[] }, ...] } for AND of OR-groups). + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/Models/Components/MessageActionStatusEnum.md b/docs/Models/Components/MessageActionStatusEnum.md index 14c1415c..dcbc3b68 100644 --- a/docs/Models/Components/MessageActionStatusEnum.md +++ b/docs/Models/Components/MessageActionStatusEnum.md @@ -2,6 +2,14 @@ Status of the message action +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = MessageActionStatusEnum.Pending; +``` + ## Values diff --git a/docs/Models/Components/MessageMarkAsRequestDtoMarkAs.md b/docs/Models/Components/MessageMarkAsRequestDtoMarkAs.md index 067ecbe5..38761dbb 100644 --- a/docs/Models/Components/MessageMarkAsRequestDtoMarkAs.md +++ b/docs/Models/Components/MessageMarkAsRequestDtoMarkAs.md @@ -1,5 +1,13 @@ # MessageMarkAsRequestDtoMarkAs +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = MessageMarkAsRequestDtoMarkAs.Read; +``` + ## Values diff --git a/docs/Models/Components/MessageStatusEnum.md b/docs/Models/Components/MessageStatusEnum.md index 4f1d29b5..f587c4ff 100644 --- a/docs/Models/Components/MessageStatusEnum.md +++ b/docs/Models/Components/MessageStatusEnum.md @@ -2,6 +2,14 @@ Status of the message +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = MessageStatusEnum.Sent; +``` + ## Values diff --git a/docs/Models/Components/MonthlyType.md b/docs/Models/Components/MonthlyType.md index c413ed05..641158b0 100644 --- a/docs/Models/Components/MonthlyType.md +++ b/docs/Models/Components/MonthlyType.md @@ -1,5 +1,13 @@ # MonthlyType +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = MonthlyType.Each; +``` + ## Values diff --git a/docs/Models/Components/MonthlyTypeEnum.md b/docs/Models/Components/MonthlyTypeEnum.md index 21c07788..8b1c231a 100644 --- a/docs/Models/Components/MonthlyTypeEnum.md +++ b/docs/Models/Components/MonthlyTypeEnum.md @@ -2,6 +2,14 @@ Type of monthly schedule +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = MonthlyTypeEnum.Each; +``` + ## Values diff --git a/docs/Models/Components/Nine.md b/docs/Models/Components/Nine.md new file mode 100644 index 00000000..26a9b8d8 --- /dev/null +++ b/docs/Models/Components/Nine.md @@ -0,0 +1,9 @@ +# Nine + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | +| `Type` | [GeneratePreviewResponseDtoResult9Type](../../Models/Components/GeneratePreviewResponseDtoResult9Type.md) | :heavy_minus_sign: | N/A | +| `Preview` | [DigestRegularOutput](../../Models/Components/DigestRegularOutput.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/NotificationFeedItemDtoStatus.md b/docs/Models/Components/NotificationFeedItemDtoStatus.md index cd6b68b9..263467fa 100644 --- a/docs/Models/Components/NotificationFeedItemDtoStatus.md +++ b/docs/Models/Components/NotificationFeedItemDtoStatus.md @@ -2,6 +2,14 @@ Current status of the notification. +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = NotificationFeedItemDtoStatus.Sent; +``` + ## Values diff --git a/docs/Models/Components/NotificationTriggerDtoType.md b/docs/Models/Components/NotificationTriggerDtoType.md index 011141fe..ee21a294 100644 --- a/docs/Models/Components/NotificationTriggerDtoType.md +++ b/docs/Models/Components/NotificationTriggerDtoType.md @@ -2,6 +2,14 @@ Type of the trigger +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = NotificationTriggerDtoType.Event; +``` + ## Values diff --git a/docs/Models/Components/NotificationTriggerType.md b/docs/Models/Components/NotificationTriggerType.md index e4c714b7..c6978d3c 100644 --- a/docs/Models/Components/NotificationTriggerType.md +++ b/docs/Models/Components/NotificationTriggerType.md @@ -1,5 +1,13 @@ # NotificationTriggerType +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = NotificationTriggerType.Event; +``` + ## Values diff --git a/docs/Models/Components/NotificationWorkflowDto.md b/docs/Models/Components/NotificationWorkflowDto.md new file mode 100644 index 00000000..5faae8f5 --- /dev/null +++ b/docs/Models/Components/NotificationWorkflowDto.md @@ -0,0 +1,14 @@ +# NotificationWorkflowDto + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `Id` | *string* | :heavy_check_mark: | Unique identifier of the workflow | +| `Identifier` | *string* | :heavy_check_mark: | Workflow identifier used for triggering | +| `Name` | *string* | :heavy_check_mark: | Human-readable name of the workflow | +| `Critical` | *bool* | :heavy_check_mark: | Whether this workflow is marked as critical | +| `Tags` | List<*string*> | :heavy_minus_sign: | Tags associated with the workflow | +| `Data` | Dictionary | :heavy_minus_sign: | Custom data associated with the workflow | +| `Severity` | [SeverityLevelEnum](../../Models/Components/SeverityLevelEnum.md) | :heavy_check_mark: | Severity of the workflow | \ No newline at end of file diff --git a/docs/Models/Components/On.md b/docs/Models/Components/On.md index 7e05cd61..1a790369 100644 --- a/docs/Models/Components/On.md +++ b/docs/Models/Components/On.md @@ -1,5 +1,13 @@ # On +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = On.Subscriber; +``` + ## Values diff --git a/docs/Models/Components/Operator.md b/docs/Models/Components/Operator.md index ace65a6c..a1b41cd7 100644 --- a/docs/Models/Components/Operator.md +++ b/docs/Models/Components/Operator.md @@ -1,5 +1,13 @@ # Operator +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = Operator.Larger; +``` + ## Values diff --git a/docs/Models/Components/Ordinal.md b/docs/Models/Components/Ordinal.md index fee404a5..5500038a 100644 --- a/docs/Models/Components/Ordinal.md +++ b/docs/Models/Components/Ordinal.md @@ -1,5 +1,13 @@ # Ordinal +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = Ordinal.One; +``` + ## Values diff --git a/docs/Models/Components/OrdinalEnum.md b/docs/Models/Components/OrdinalEnum.md index 83ee4113..a5c2590f 100644 --- a/docs/Models/Components/OrdinalEnum.md +++ b/docs/Models/Components/OrdinalEnum.md @@ -2,6 +2,14 @@ Ordinal position for the digest +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = OrdinalEnum.One; +``` + ## Values diff --git a/docs/Models/Components/OrdinalValue.md b/docs/Models/Components/OrdinalValue.md index 63dddaa1..8e5feb6c 100644 --- a/docs/Models/Components/OrdinalValue.md +++ b/docs/Models/Components/OrdinalValue.md @@ -1,5 +1,13 @@ # OrdinalValue +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = OrdinalValue.Day; +``` + ## Values diff --git a/docs/Models/Components/OrdinalValueEnum.md b/docs/Models/Components/OrdinalValueEnum.md index 1532382c..38c67762 100644 --- a/docs/Models/Components/OrdinalValueEnum.md +++ b/docs/Models/Components/OrdinalValueEnum.md @@ -2,6 +2,14 @@ Value of the ordinal +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = OrdinalValueEnum.Day; +``` + ## Values diff --git a/docs/Models/Components/PreferenceLevelEnum.md b/docs/Models/Components/PreferenceLevelEnum.md index eece3afc..27e9a6b2 100644 --- a/docs/Models/Components/PreferenceLevelEnum.md +++ b/docs/Models/Components/PreferenceLevelEnum.md @@ -2,6 +2,14 @@ The level of the preference (global or template) +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = PreferenceLevelEnum.Global; +``` + ## Values diff --git a/docs/Models/Components/PreferenceOverrideSourceEnum.md b/docs/Models/Components/PreferenceOverrideSourceEnum.md index 3f38687d..786a8e2d 100644 --- a/docs/Models/Components/PreferenceOverrideSourceEnum.md +++ b/docs/Models/Components/PreferenceOverrideSourceEnum.md @@ -2,6 +2,14 @@ The source of overrides +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = PreferenceOverrideSourceEnum.Subscriber; +``` + ## Values diff --git a/docs/Models/Components/PreviewErrorDto.md b/docs/Models/Components/PreviewErrorDto.md new file mode 100644 index 00000000..ccd5b0d4 --- /dev/null +++ b/docs/Models/Components/PreviewErrorDto.md @@ -0,0 +1,10 @@ +# PreviewErrorDto + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------- | ---------------------------- | ---------------------------- | ---------------------------- | +| `Title` | *string* | :heavy_check_mark: | Short error title | +| `Message` | *string* | :heavy_check_mark: | Detailed error message | +| `Hint` | *string* | :heavy_check_mark: | Actionable hint for the user | \ No newline at end of file diff --git a/docs/Models/Components/PreviewPayloadDto.md b/docs/Models/Components/PreviewPayloadDto.md new file mode 100644 index 00000000..f1b6ab2f --- /dev/null +++ b/docs/Models/Components/PreviewPayloadDto.md @@ -0,0 +1,12 @@ +# PreviewPayloadDto + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | +| `Subscriber` | [SubscriberResponseDtoOptional](../../Models/Components/SubscriberResponseDtoOptional.md) | :heavy_minus_sign: | Partial subscriber information | +| `Payload` | Dictionary | :heavy_minus_sign: | Payload data | +| `Steps` | Dictionary | :heavy_minus_sign: | Steps data | +| `Context` | Dictionary | :heavy_minus_sign: | N/A | +| `Env` | Dictionary | :heavy_minus_sign: | Environment variables data | \ No newline at end of file diff --git a/docs/Models/Components/PreviewPayloadDtoContext.md b/docs/Models/Components/PreviewPayloadDtoContext.md new file mode 100644 index 00000000..fa772317 --- /dev/null +++ b/docs/Models/Components/PreviewPayloadDtoContext.md @@ -0,0 +1,16 @@ +# PreviewPayloadDtoContext + + +## Supported Types + +### Str + +```csharp +PreviewPayloadDtoContext.CreateStr(/* values here */); +``` + +### PreviewPayloadDtoContext2 + +```csharp +PreviewPayloadDtoContext.CreatePreviewPayloadDtoContext2(/* values here */); +``` diff --git a/docs/Models/Components/PreviewPayloadDtoContext2.md b/docs/Models/Components/PreviewPayloadDtoContext2.md new file mode 100644 index 00000000..8ffb83c7 --- /dev/null +++ b/docs/Models/Components/PreviewPayloadDtoContext2.md @@ -0,0 +1,11 @@ +# PreviewPayloadDtoContext2 + +Rich context object with id and optional data + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | +| `Id` | *string* | :heavy_check_mark: | N/A | org-acme | +| `Data` | Dictionary | :heavy_minus_sign: | Optional additional context data | {
"name": "Acme Corp",
"region": "us-east-1"
} | \ No newline at end of file diff --git a/docs/Models/Components/ProviderId.md b/docs/Models/Components/ProviderId.md index 1b41810e..153d022c 100644 --- a/docs/Models/Components/ProviderId.md +++ b/docs/Models/Components/ProviderId.md @@ -2,6 +2,14 @@ The provider identifier (e.g., sendgrid, twilio, slack, etc.). +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = ProviderId.Emailjs; +``` + ## Values @@ -64,6 +72,7 @@ The provider identifier (e.g., sendgrid, twilio, slack, etc.). | `Imedia` | imedia | | `Sinch` | sinch | | `IsendproSms` | isendpro-sms | +| `CmTelecom` | cm-telecom | | `Fcm` | fcm | | `Apns` | apns | | `Expo` | expo | diff --git a/docs/Models/Components/ProvidersIdEnum.md b/docs/Models/Components/ProvidersIdEnum.md index 0592d349..1f662bfd 100644 --- a/docs/Models/Components/ProvidersIdEnum.md +++ b/docs/Models/Components/ProvidersIdEnum.md @@ -2,6 +2,14 @@ Provider ID of the job +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = ProvidersIdEnum.Emailjs; +``` + ## Values @@ -64,6 +72,7 @@ Provider ID of the job | `Imedia` | imedia | | `Sinch` | sinch | | `IsendproSms` | isendpro-sms | +| `CmTelecom` | cm-telecom | | `Fcm` | fcm | | `Apns` | apns | | `Expo` | expo | diff --git a/docs/Models/Components/PublishEnvironmentRequestDto.md b/docs/Models/Components/PublishEnvironmentRequestDto.md new file mode 100644 index 00000000..fe64a993 --- /dev/null +++ b/docs/Models/Components/PublishEnvironmentRequestDto.md @@ -0,0 +1,10 @@ +# PublishEnvironmentRequestDto + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `SourceEnvironmentId` | *string* | :heavy_minus_sign: | Source environment ID to sync from. Defaults to the Development environment if not provided. | 507f1f77bcf86cd799439011 | +| `DryRun` | *bool* | :heavy_minus_sign: | Perform a dry run without making actual changes | | +| `Resources` | List<[ResourceToPublishDto](../../Models/Components/ResourceToPublishDto.md)> | :heavy_minus_sign: | Array of specific resources to publish. If not provided, all resources will be published. | | \ No newline at end of file diff --git a/docs/Models/Components/PublishEnvironmentResponseDto.md b/docs/Models/Components/PublishEnvironmentResponseDto.md new file mode 100644 index 00000000..1d2d2e0a --- /dev/null +++ b/docs/Models/Components/PublishEnvironmentResponseDto.md @@ -0,0 +1,9 @@ +# PublishEnvironmentResponseDto + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | +| `Results` | List<[SyncResultDto](../../Models/Components/SyncResultDto.md)> | :heavy_check_mark: | Sync results by resource type | +| `Summary` | [PublishSummaryDto](../../Models/Components/PublishSummaryDto.md) | :heavy_check_mark: | Summary of the sync operation | \ No newline at end of file diff --git a/docs/Models/Components/PublishSummaryDto.md b/docs/Models/Components/PublishSummaryDto.md new file mode 100644 index 00000000..607028cf --- /dev/null +++ b/docs/Models/Components/PublishSummaryDto.md @@ -0,0 +1,11 @@ +# PublishSummaryDto + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------- | ----------------------------- | ----------------------------- | ----------------------------- | +| `Resources` | *double* | :heavy_check_mark: | Number of resources processed | +| `Successful` | *double* | :heavy_check_mark: | Number of successful syncs | +| `Failed` | *double* | :heavy_check_mark: | Number of failed syncs | +| `Skipped` | *double* | :heavy_check_mark: | Number of skipped resources | \ No newline at end of file diff --git a/docs/Models/Components/PushRenderOutput.md b/docs/Models/Components/PushRenderOutput.md new file mode 100644 index 00000000..9cbe78b3 --- /dev/null +++ b/docs/Models/Components/PushRenderOutput.md @@ -0,0 +1,9 @@ +# PushRenderOutput + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | +| `Subject` | *string* | :heavy_check_mark: | Subject of the push notification | +| `Body` | *string* | :heavy_check_mark: | Body of the push notification | \ No newline at end of file diff --git a/docs/Models/Components/PushStepResponseDto.md b/docs/Models/Components/PushStepResponseDto.md index b20b668e..c1af11d3 100644 --- a/docs/Models/Components/PushStepResponseDto.md +++ b/docs/Models/Components/PushStepResponseDto.md @@ -16,4 +16,5 @@ | `Origin` | [ResourceOriginEnum](../../Models/Components/ResourceOriginEnum.md) | :heavy_check_mark: | Origin of the layout | | `WorkflowId` | *string* | :heavy_check_mark: | Workflow identifier | | `WorkflowDatabaseId` | *string* | :heavy_check_mark: | Workflow database identifier | -| `Issues` | [StepIssuesDto](../../Models/Components/StepIssuesDto.md) | :heavy_minus_sign: | Issues associated with the step | \ No newline at end of file +| `Issues` | [StepIssuesDto](../../Models/Components/StepIssuesDto.md) | :heavy_minus_sign: | Issues associated with the step | +| `StepResolverHash` | *string* | :heavy_minus_sign: | Hash identifying the deployed Cloudflare Worker for this step | \ No newline at end of file diff --git a/docs/Models/Components/RedirectDto.md b/docs/Models/Components/RedirectDto.md index 7392c5dd..eb119ec7 100644 --- a/docs/Models/Components/RedirectDto.md +++ b/docs/Models/Components/RedirectDto.md @@ -3,7 +3,7 @@ ## Fields -| Field | Type | Required | Description | -| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | -| `Url` | *string* | :heavy_minus_sign: | URL for redirection. Must be a valid URL or start with / or {{ variable }}. | -| `Target` | [Target](../../Models/Components/Target.md) | :heavy_minus_sign: | Target window for the redirection. | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | +| `Url` | *string* | :heavy_check_mark: | URL to redirect to | +| `Target` | [Target](../../Models/Components/Target.md) | :heavy_minus_sign: | Target attribute for the redirect link | \ No newline at end of file diff --git a/docs/Models/Components/ResourceDependencyDto.md b/docs/Models/Components/ResourceDependencyDto.md new file mode 100644 index 00000000..c8ac83e5 --- /dev/null +++ b/docs/Models/Components/ResourceDependencyDto.md @@ -0,0 +1,12 @@ +# ResourceDependencyDto + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `ResourceType` | [ResourceTypeEnum](../../Models/Components/ResourceTypeEnum.md) | :heavy_check_mark: | Type of the layout | +| `ResourceId` | *string* | :heavy_check_mark: | ID of the dependent resource | +| `ResourceName` | *string* | :heavy_check_mark: | Name of the dependent resource | +| `IsBlocking` | *bool* | :heavy_check_mark: | Whether this dependency blocks the operation | +| `Reason` | [DependencyReasonEnum](../../Models/Components/DependencyReasonEnum.md) | :heavy_check_mark: | Reason for the dependency | \ No newline at end of file diff --git a/docs/Models/Components/ResourceDiffDto.md b/docs/Models/Components/ResourceDiffDto.md new file mode 100644 index 00000000..be640139 --- /dev/null +++ b/docs/Models/Components/ResourceDiffDto.md @@ -0,0 +1,15 @@ +# ResourceDiffDto + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `SourceResource` | [ResourceDiffDtoSourceResource](../../Models/Components/ResourceDiffDtoSourceResource.md) | :heavy_minus_sign: | Source resource information | +| `TargetResource` | [ResourceDiffDtoTargetResource](../../Models/Components/ResourceDiffDtoTargetResource.md) | :heavy_minus_sign: | Target resource information | +| `ResourceType` | [ResourceTypeEnum](../../Models/Components/ResourceTypeEnum.md) | :heavy_check_mark: | Type of the layout | +| `Action` | [DiffActionEnum](../../Models/Components/DiffActionEnum.md) | :heavy_check_mark: | Type of change | +| `Diffs` | [Diffs](../../Models/Components/Diffs.md) | :heavy_minus_sign: | Detailed changes (only for modified resources) | +| `StepType` | *string* | :heavy_minus_sign: | Step type (only for step resources) | +| `PreviousIndex` | *double* | :heavy_minus_sign: | Previous index in steps array (for moved/deleted steps) | +| `NewIndex` | *double* | :heavy_minus_sign: | New index in steps array (for moved/added steps) | \ No newline at end of file diff --git a/docs/Models/Components/ResourceDiffDtoSourceResource.md b/docs/Models/Components/ResourceDiffDtoSourceResource.md new file mode 100644 index 00000000..6d738c8a --- /dev/null +++ b/docs/Models/Components/ResourceDiffDtoSourceResource.md @@ -0,0 +1,13 @@ +# ResourceDiffDtoSourceResource + +Source resource information + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `Id` | *string* | :heavy_minus_sign: | Resource ID (workflow ID or step ID) | | +| `Name` | *string* | :heavy_minus_sign: | Resource name (workflow name or step name) | | +| `UpdatedBy` | [ResourceDiffDtoUpdatedBy](../../Models/Components/ResourceDiffDtoUpdatedBy.md) | :heavy_minus_sign: | User who last updated the resource | | +| `UpdatedAt` | [DateTime](https://learn.microsoft.com/en-us/dotnet/api/system.datetime?view=net-5.0) | :heavy_minus_sign: | When the resource was last updated | 2024-01-15T10:30:00.000Z | \ No newline at end of file diff --git a/docs/Models/Components/ResourceDiffDtoTargetResource.md b/docs/Models/Components/ResourceDiffDtoTargetResource.md new file mode 100644 index 00000000..d1de8560 --- /dev/null +++ b/docs/Models/Components/ResourceDiffDtoTargetResource.md @@ -0,0 +1,13 @@ +# ResourceDiffDtoTargetResource + +Target resource information + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `Id` | *string* | :heavy_minus_sign: | Resource ID (workflow ID or step ID) | | +| `Name` | *string* | :heavy_minus_sign: | Resource name (workflow name or step name) | | +| `UpdatedBy` | [ResourceDiffDtoTargetResourceUpdatedBy](../../Models/Components/ResourceDiffDtoTargetResourceUpdatedBy.md) | :heavy_minus_sign: | User who last updated the resource | | +| `UpdatedAt` | [DateTime](https://learn.microsoft.com/en-us/dotnet/api/system.datetime?view=net-5.0) | :heavy_minus_sign: | When the resource was last updated | 2024-01-15T10:30:00.000Z | \ No newline at end of file diff --git a/docs/Models/Components/ResourceDiffDtoTargetResourceUpdatedBy.md b/docs/Models/Components/ResourceDiffDtoTargetResourceUpdatedBy.md new file mode 100644 index 00000000..c38f0995 --- /dev/null +++ b/docs/Models/Components/ResourceDiffDtoTargetResourceUpdatedBy.md @@ -0,0 +1,13 @@ +# ResourceDiffDtoTargetResourceUpdatedBy + +User who last updated the resource + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `Id` | *string* | :heavy_check_mark: | User ID | +| `FirstName` | *string* | :heavy_check_mark: | User first name | +| `LastName` | *string* | :heavy_minus_sign: | User last name | +| `ExternalId` | *string* | :heavy_minus_sign: | User external ID | \ No newline at end of file diff --git a/docs/Models/Components/ResourceDiffDtoUpdatedBy.md b/docs/Models/Components/ResourceDiffDtoUpdatedBy.md new file mode 100644 index 00000000..2a0a2789 --- /dev/null +++ b/docs/Models/Components/ResourceDiffDtoUpdatedBy.md @@ -0,0 +1,13 @@ +# ResourceDiffDtoUpdatedBy + +User who last updated the resource + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `Id` | *string* | :heavy_check_mark: | User ID | +| `FirstName` | *string* | :heavy_check_mark: | User first name | +| `LastName` | *string* | :heavy_minus_sign: | User last name | +| `ExternalId` | *string* | :heavy_minus_sign: | User external ID | \ No newline at end of file diff --git a/docs/Models/Components/ResourceDiffResultDto.md b/docs/Models/Components/ResourceDiffResultDto.md new file mode 100644 index 00000000..6b35313d --- /dev/null +++ b/docs/Models/Components/ResourceDiffResultDto.md @@ -0,0 +1,13 @@ +# ResourceDiffResultDto + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| `ResourceType` | [ResourceTypeEnum](../../Models/Components/ResourceTypeEnum.md) | :heavy_check_mark: | Type of the layout | +| `SourceResource` | [SourceResource](../../Models/Components/SourceResource.md) | :heavy_minus_sign: | Source resource information | +| `TargetResource` | [TargetResource](../../Models/Components/TargetResource.md) | :heavy_minus_sign: | Target resource information | +| `Changes` | List<[ResourceDiffDto](../../Models/Components/ResourceDiffDto.md)> | :heavy_check_mark: | List of specific changes for this resource | +| `Summary` | [DiffSummaryDto](../../Models/Components/DiffSummaryDto.md) | :heavy_check_mark: | Summary of changes for this resource | +| `Dependencies` | List<[ResourceDependencyDto](../../Models/Components/ResourceDependencyDto.md)> | :heavy_minus_sign: | Dependencies that affect this resource | \ No newline at end of file diff --git a/docs/Models/Components/ResourceDiffResultDtoSourceResourceUpdatedBy.md b/docs/Models/Components/ResourceDiffResultDtoSourceResourceUpdatedBy.md new file mode 100644 index 00000000..b1fcf975 --- /dev/null +++ b/docs/Models/Components/ResourceDiffResultDtoSourceResourceUpdatedBy.md @@ -0,0 +1,13 @@ +# ResourceDiffResultDtoSourceResourceUpdatedBy + +User who last updated the resource + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `Id` | *string* | :heavy_check_mark: | User ID | +| `FirstName` | *string* | :heavy_check_mark: | User first name | +| `LastName` | *string* | :heavy_minus_sign: | User last name | +| `ExternalId` | *string* | :heavy_minus_sign: | User external ID | \ No newline at end of file diff --git a/docs/Models/Components/ResourceDiffResultDtoUpdatedBy.md b/docs/Models/Components/ResourceDiffResultDtoUpdatedBy.md new file mode 100644 index 00000000..94e50437 --- /dev/null +++ b/docs/Models/Components/ResourceDiffResultDtoUpdatedBy.md @@ -0,0 +1,13 @@ +# ResourceDiffResultDtoUpdatedBy + +User who last updated the resource + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `Id` | *string* | :heavy_check_mark: | User ID | +| `FirstName` | *string* | :heavy_check_mark: | User first name | +| `LastName` | *string* | :heavy_minus_sign: | User last name | +| `ExternalId` | *string* | :heavy_minus_sign: | User external ID | \ No newline at end of file diff --git a/docs/Models/Components/ResourceOriginEnum.md b/docs/Models/Components/ResourceOriginEnum.md index 0c82bd42..1d6c8b45 100644 --- a/docs/Models/Components/ResourceOriginEnum.md +++ b/docs/Models/Components/ResourceOriginEnum.md @@ -2,6 +2,14 @@ Origin of the layout +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = ResourceOriginEnum.NovuCloud; +``` + ## Values diff --git a/docs/Models/Components/ResourceToPublishDto.md b/docs/Models/Components/ResourceToPublishDto.md new file mode 100644 index 00000000..5ae9d155 --- /dev/null +++ b/docs/Models/Components/ResourceToPublishDto.md @@ -0,0 +1,9 @@ +# ResourceToPublishDto + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `ResourceType` | [ResourceTypeEnum](../../Models/Components/ResourceTypeEnum.md) | :heavy_check_mark: | Type of the layout | | +| `ResourceId` | *string* | :heavy_check_mark: | Unique identifier of the resource to publish | workflow-id-1 | \ No newline at end of file diff --git a/docs/Models/Components/ResourceType.md b/docs/Models/Components/ResourceType.md index 07f1a03f..cef2f4f6 100644 --- a/docs/Models/Components/ResourceType.md +++ b/docs/Models/Components/ResourceType.md @@ -2,6 +2,14 @@ The resource type to associate translation with +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = ResourceType.Workflow; +``` + ## Values diff --git a/docs/Models/Components/ResourceTypeEnum.md b/docs/Models/Components/ResourceTypeEnum.md index 45caf980..c20e3fc2 100644 --- a/docs/Models/Components/ResourceTypeEnum.md +++ b/docs/Models/Components/ResourceTypeEnum.md @@ -2,6 +2,14 @@ Type of the layout +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = ResourceTypeEnum.Regular; +``` + ## Values diff --git a/docs/Models/Components/Result2.md b/docs/Models/Components/Result2.md new file mode 100644 index 00000000..5f0004fb --- /dev/null +++ b/docs/Models/Components/Result2.md @@ -0,0 +1,10 @@ +# Result2 + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | +| `Type` | [GeneratePreviewResponseDtoResultType](../../Models/Components/GeneratePreviewResponseDtoResultType.md) | :heavy_minus_sign: | N/A | +| `Preview` | [EmailRenderOutput](../../Models/Components/EmailRenderOutput.md) | :heavy_minus_sign: | N/A | +| `Error` | [PreviewErrorDto](../../Models/Components/PreviewErrorDto.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/Result4.md b/docs/Models/Components/Result4.md new file mode 100644 index 00000000..2ee817dd --- /dev/null +++ b/docs/Models/Components/Result4.md @@ -0,0 +1,10 @@ +# Result4 + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | +| `Type` | [GeneratePreviewResponseDtoResult4Type](../../Models/Components/GeneratePreviewResponseDtoResult4Type.md) | :heavy_minus_sign: | N/A | +| `Preview` | [InAppRenderOutput](../../Models/Components/InAppRenderOutput.md) | :heavy_minus_sign: | N/A | +| `Error` | [PreviewErrorDto](../../Models/Components/PreviewErrorDto.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/Result5.md b/docs/Models/Components/Result5.md new file mode 100644 index 00000000..06333b5d --- /dev/null +++ b/docs/Models/Components/Result5.md @@ -0,0 +1,10 @@ +# Result5 + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | +| `Type` | [GeneratePreviewResponseDtoResult5Type](../../Models/Components/GeneratePreviewResponseDtoResult5Type.md) | :heavy_minus_sign: | N/A | +| `Preview` | [SmsRenderOutput](../../Models/Components/SmsRenderOutput.md) | :heavy_minus_sign: | N/A | +| `Error` | [PreviewErrorDto](../../Models/Components/PreviewErrorDto.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/ResultType.md b/docs/Models/Components/ResultType.md index 3e5a5b18..7a734827 100644 --- a/docs/Models/Components/ResultType.md +++ b/docs/Models/Components/ResultType.md @@ -1,5 +1,13 @@ # ResultType +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = ResultType.Email; +``` + ## Values diff --git a/docs/Models/Components/RuntimeIssueDto.md b/docs/Models/Components/RuntimeIssueDto.md index 0e057c6a..ad21f87d 100644 --- a/docs/Models/Components/RuntimeIssueDto.md +++ b/docs/Models/Components/RuntimeIssueDto.md @@ -3,8 +3,5 @@ ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | -| `IssueType` | [IssueType](../../Models/Components/IssueType.md) | :heavy_check_mark: | N/A | -| `VariableName` | *string* | :heavy_minus_sign: | N/A | -| `Message` | *string* | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/Models/Components/Seven.md b/docs/Models/Components/Seven.md new file mode 100644 index 00000000..5e763ead --- /dev/null +++ b/docs/Models/Components/Seven.md @@ -0,0 +1,10 @@ +# Seven + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | +| `Type` | [GeneratePreviewResponseDtoResult7Type](../../Models/Components/GeneratePreviewResponseDtoResult7Type.md) | :heavy_minus_sign: | N/A | +| `Preview` | [ChatRenderOutput](../../Models/Components/ChatRenderOutput.md) | :heavy_minus_sign: | N/A | +| `Error` | [PreviewErrorDto](../../Models/Components/PreviewErrorDto.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/SeverityLevelEnum.md b/docs/Models/Components/SeverityLevelEnum.md index f90d60d9..4d9d4893 100644 --- a/docs/Models/Components/SeverityLevelEnum.md +++ b/docs/Models/Components/SeverityLevelEnum.md @@ -2,6 +2,14 @@ Severity of the workflow +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = SeverityLevelEnum.High; +``` + ## Values diff --git a/docs/Models/Components/Six.md b/docs/Models/Components/Six.md new file mode 100644 index 00000000..76cb2019 --- /dev/null +++ b/docs/Models/Components/Six.md @@ -0,0 +1,10 @@ +# Six + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | +| `Type` | [GeneratePreviewResponseDtoResult6Type](../../Models/Components/GeneratePreviewResponseDtoResult6Type.md) | :heavy_minus_sign: | N/A | +| `Preview` | [PushRenderOutput](../../Models/Components/PushRenderOutput.md) | :heavy_minus_sign: | N/A | +| `Error` | [PreviewErrorDto](../../Models/Components/PreviewErrorDto.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/SkippedWorkflowDto.md b/docs/Models/Components/SkippedWorkflowDto.md new file mode 100644 index 00000000..72eaabaf --- /dev/null +++ b/docs/Models/Components/SkippedWorkflowDto.md @@ -0,0 +1,11 @@ +# SkippedWorkflowDto + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `ResourceType` | [ResourceTypeEnum](../../Models/Components/ResourceTypeEnum.md) | :heavy_check_mark: | Type of the layout | +| `ResourceId` | *string* | :heavy_check_mark: | Resource ID | +| `ResourceName` | *string* | :heavy_check_mark: | Resource name | +| `Reason` | *string* | :heavy_check_mark: | Reason for skipping | \ No newline at end of file diff --git a/docs/Models/Components/SmsRenderOutput.md b/docs/Models/Components/SmsRenderOutput.md new file mode 100644 index 00000000..dedabf54 --- /dev/null +++ b/docs/Models/Components/SmsRenderOutput.md @@ -0,0 +1,8 @@ +# SmsRenderOutput + + +## Fields + +| Field | Type | Required | Description | +| ----------------------- | ----------------------- | ----------------------- | ----------------------- | +| `Body` | *string* | :heavy_check_mark: | Body of the SMS message | \ No newline at end of file diff --git a/docs/Models/Components/SmsStepResponseDto.md b/docs/Models/Components/SmsStepResponseDto.md index 93d865a7..aae337a3 100644 --- a/docs/Models/Components/SmsStepResponseDto.md +++ b/docs/Models/Components/SmsStepResponseDto.md @@ -16,4 +16,5 @@ | `Origin` | [ResourceOriginEnum](../../Models/Components/ResourceOriginEnum.md) | :heavy_check_mark: | Origin of the layout | | `WorkflowId` | *string* | :heavy_check_mark: | Workflow identifier | | `WorkflowDatabaseId` | *string* | :heavy_check_mark: | Workflow database identifier | -| `Issues` | [StepIssuesDto](../../Models/Components/StepIssuesDto.md) | :heavy_minus_sign: | Issues associated with the step | \ No newline at end of file +| `Issues` | [StepIssuesDto](../../Models/Components/StepIssuesDto.md) | :heavy_minus_sign: | Issues associated with the step | +| `StepResolverHash` | *string* | :heavy_minus_sign: | Hash identifying the deployed Cloudflare Worker for this step | \ No newline at end of file diff --git a/docs/Models/Components/SnoozeSubscriberNotificationDto.md b/docs/Models/Components/SnoozeSubscriberNotificationDto.md new file mode 100644 index 00000000..45526cbd --- /dev/null +++ b/docs/Models/Components/SnoozeSubscriberNotificationDto.md @@ -0,0 +1,8 @@ +# SnoozeSubscriberNotificationDto + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `SnoozeUntil` | [DateTime](https://learn.microsoft.com/en-us/dotnet/api/system.datetime?view=net-5.0) | :heavy_check_mark: | The date and time until which the notification should be snoozed | 2026-03-01T10:00:00Z | \ No newline at end of file diff --git a/docs/Models/Components/SourceResource.md b/docs/Models/Components/SourceResource.md new file mode 100644 index 00000000..b8874bda --- /dev/null +++ b/docs/Models/Components/SourceResource.md @@ -0,0 +1,13 @@ +# SourceResource + +Source resource information + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | +| `Id` | *string* | :heavy_minus_sign: | Resource ID (workflow ID or step ID) | | +| `Name` | *string* | :heavy_minus_sign: | Resource name (workflow name or step name) | | +| `UpdatedBy` | [ResourceDiffResultDtoSourceResourceUpdatedBy](../../Models/Components/ResourceDiffResultDtoSourceResourceUpdatedBy.md) | :heavy_minus_sign: | User who last updated the resource | | +| `UpdatedAt` | [DateTime](https://learn.microsoft.com/en-us/dotnet/api/system.datetime?view=net-5.0) | :heavy_minus_sign: | When the resource was last updated | 2024-01-15T10:30:00.000Z | \ No newline at end of file diff --git a/docs/Models/Components/Status.md b/docs/Models/Components/Status.md index 8a06bb3f..b6a0b8f4 100644 --- a/docs/Models/Components/Status.md +++ b/docs/Models/Components/Status.md @@ -2,6 +2,14 @@ Status of the event +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = Status.Opened; +``` + ## Values diff --git a/docs/Models/Components/StepFilterDtoValue.md b/docs/Models/Components/StepFilterDtoValue.md index da30612b..ad7a0f19 100644 --- a/docs/Models/Components/StepFilterDtoValue.md +++ b/docs/Models/Components/StepFilterDtoValue.md @@ -1,5 +1,13 @@ # StepFilterDtoValue +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = StepFilterDtoValue.And; +``` + ## Values diff --git a/docs/Models/Components/StepResponseDto.md b/docs/Models/Components/StepResponseDto.md index f9a39fbe..31a2eeb0 100644 --- a/docs/Models/Components/StepResponseDto.md +++ b/docs/Models/Components/StepResponseDto.md @@ -16,4 +16,5 @@ | `Origin` | [ResourceOriginEnum](../../Models/Components/ResourceOriginEnum.md) | :heavy_check_mark: | Origin of the layout | | `WorkflowId` | *string* | :heavy_check_mark: | Workflow identifier | | `WorkflowDatabaseId` | *string* | :heavy_check_mark: | Workflow database identifier | -| `Issues` | [StepIssuesDto](../../Models/Components/StepIssuesDto.md) | :heavy_minus_sign: | Issues associated with the step | \ No newline at end of file +| `Issues` | [StepIssuesDto](../../Models/Components/StepIssuesDto.md) | :heavy_minus_sign: | Issues associated with the step | +| `StepResolverHash` | *string* | :heavy_minus_sign: | Hash identifying the deployed Cloudflare Worker for this step | \ No newline at end of file diff --git a/docs/Models/Components/StepTypeEnum.md b/docs/Models/Components/StepTypeEnum.md index 55aab803..560106e7 100644 --- a/docs/Models/Components/StepTypeEnum.md +++ b/docs/Models/Components/StepTypeEnum.md @@ -2,18 +2,27 @@ Type of the step +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = StepTypeEnum.InApp; +``` + ## Values -| Name | Value | -| ---------- | ---------- | -| `InApp` | in_app | -| `Email` | email | -| `Sms` | sms | -| `Chat` | chat | -| `Push` | push | -| `Digest` | digest | -| `Trigger` | trigger | -| `Delay` | delay | -| `Throttle` | throttle | -| `Custom` | custom | \ No newline at end of file +| Name | Value | +| ------------- | ------------- | +| `InApp` | in_app | +| `Email` | email | +| `Sms` | sms | +| `Chat` | chat | +| `Push` | push | +| `Digest` | digest | +| `Trigger` | trigger | +| `Delay` | delay | +| `Throttle` | throttle | +| `Custom` | custom | +| `HttpRequest` | http_request | \ No newline at end of file diff --git a/docs/Models/Components/Steps.md b/docs/Models/Components/Steps.md index 12b37f33..f86afb99 100644 --- a/docs/Models/Components/Steps.md +++ b/docs/Models/Components/Steps.md @@ -56,3 +56,9 @@ Steps.CreateThrottle(/* values here */); ```csharp Steps.CreateCustom(/* values here */); ``` + +### HttpRequest + +```csharp +Steps.CreateHttpRequest(/* values here */); +``` diff --git a/docs/Models/Components/SubscriberChannelDtoProviderId.md b/docs/Models/Components/SubscriberChannelDtoProviderId.md index 926e99a5..f3ff5965 100644 --- a/docs/Models/Components/SubscriberChannelDtoProviderId.md +++ b/docs/Models/Components/SubscriberChannelDtoProviderId.md @@ -2,6 +2,14 @@ The ID of the chat or push provider. +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = SubscriberChannelDtoProviderId.Slack; +``` + ## Values diff --git a/docs/Models/Components/SyncActionEnum.md b/docs/Models/Components/SyncActionEnum.md new file mode 100644 index 00000000..93d663a3 --- /dev/null +++ b/docs/Models/Components/SyncActionEnum.md @@ -0,0 +1,21 @@ +# SyncActionEnum + +Sync action performed + +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = SyncActionEnum.Created; +``` + + +## Values + +| Name | Value | +| --------- | --------- | +| `Created` | created | +| `Updated` | updated | +| `Skipped` | skipped | +| `Deleted` | deleted | \ No newline at end of file diff --git a/docs/Models/Components/SyncResultDto.md b/docs/Models/Components/SyncResultDto.md new file mode 100644 index 00000000..e719da3f --- /dev/null +++ b/docs/Models/Components/SyncResultDto.md @@ -0,0 +1,12 @@ +# SyncResultDto + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `ResourceType` | [ResourceTypeEnum](../../Models/Components/ResourceTypeEnum.md) | :heavy_check_mark: | Type of the layout | +| `Successful` | List<[SyncedWorkflowDto](../../Models/Components/SyncedWorkflowDto.md)> | :heavy_check_mark: | Successfully synced resources | +| `Failed` | List<[FailedWorkflowDto](../../Models/Components/FailedWorkflowDto.md)> | :heavy_check_mark: | Failed resource syncs | +| `Skipped` | List<[SkippedWorkflowDto](../../Models/Components/SkippedWorkflowDto.md)> | :heavy_check_mark: | Skipped resources | +| `TotalProcessed` | *double* | :heavy_check_mark: | Total number of resources processed | \ No newline at end of file diff --git a/docs/Models/Components/SyncedWorkflowDto.md b/docs/Models/Components/SyncedWorkflowDto.md new file mode 100644 index 00000000..fd3b6521 --- /dev/null +++ b/docs/Models/Components/SyncedWorkflowDto.md @@ -0,0 +1,11 @@ +# SyncedWorkflowDto + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | +| `ResourceType` | [ResourceTypeEnum](../../Models/Components/ResourceTypeEnum.md) | :heavy_check_mark: | Type of the layout | +| `ResourceId` | *string* | :heavy_check_mark: | Resource ID | +| `ResourceName` | *string* | :heavy_check_mark: | Resource name | +| `Action` | [SyncActionEnum](../../Models/Components/SyncActionEnum.md) | :heavy_check_mark: | Sync action performed | \ No newline at end of file diff --git a/docs/Models/Components/Tags.md b/docs/Models/Components/Tags.md new file mode 100644 index 00000000..a25f7f11 --- /dev/null +++ b/docs/Models/Components/Tags.md @@ -0,0 +1,9 @@ +# Tags + +Filter notifications by workflow tags (OR for string[], or { and: [{ or: string[] }, ...] } for AND of OR-groups). + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/Models/Components/Target.md b/docs/Models/Components/Target.md index 1acfe0f3..a9378673 100644 --- a/docs/Models/Components/Target.md +++ b/docs/Models/Components/Target.md @@ -1,6 +1,14 @@ # Target -Target window for the redirection. +Target attribute for the redirect link + +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = Target.Self; +``` ## Values diff --git a/docs/Models/Components/TargetResource.md b/docs/Models/Components/TargetResource.md new file mode 100644 index 00000000..a14602de --- /dev/null +++ b/docs/Models/Components/TargetResource.md @@ -0,0 +1,13 @@ +# TargetResource + +Target resource information + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| `Id` | *string* | :heavy_minus_sign: | Resource ID (workflow ID or step ID) | | +| `Name` | *string* | :heavy_minus_sign: | Resource name (workflow name or step name) | | +| `UpdatedBy` | [ResourceDiffResultDtoUpdatedBy](../../Models/Components/ResourceDiffResultDtoUpdatedBy.md) | :heavy_minus_sign: | User who last updated the resource | | +| `UpdatedAt` | [DateTime](https://learn.microsoft.com/en-us/dotnet/api/system.datetime?view=net-5.0) | :heavy_minus_sign: | When the resource was last updated | 2024-01-15T10:30:00.000Z | \ No newline at end of file diff --git a/docs/Models/Components/TextAlignEnum.md b/docs/Models/Components/TextAlignEnum.md index d771203c..f09566fa 100644 --- a/docs/Models/Components/TextAlignEnum.md +++ b/docs/Models/Components/TextAlignEnum.md @@ -2,6 +2,14 @@ Text alignment for the email block +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = TextAlignEnum.Center; +``` + ## Values diff --git a/docs/Models/Components/Three.md b/docs/Models/Components/Three.md new file mode 100644 index 00000000..03429c65 --- /dev/null +++ b/docs/Models/Components/Three.md @@ -0,0 +1,10 @@ +# Three + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | +| `Type` | [GeneratePreviewResponseDtoResult3Type](../../Models/Components/GeneratePreviewResponseDtoResult3Type.md) | :heavy_minus_sign: | N/A | +| `Preview` | [EmailRenderOutput](../../Models/Components/EmailRenderOutput.md) | :heavy_minus_sign: | N/A | +| `Error` | [PreviewErrorDto](../../Models/Components/PreviewErrorDto.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/ThrottleControlDtoType.md b/docs/Models/Components/ThrottleControlDtoType.md index b7e597ce..475a5aa2 100644 --- a/docs/Models/Components/ThrottleControlDtoType.md +++ b/docs/Models/Components/ThrottleControlDtoType.md @@ -2,6 +2,14 @@ The type of throttle window. +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = ThrottleControlDtoType.Fixed; +``` + ## Values diff --git a/docs/Models/Components/ThrottleControlDtoUnit.md b/docs/Models/Components/ThrottleControlDtoUnit.md index 1a3c5bae..d7bd64b7 100644 --- a/docs/Models/Components/ThrottleControlDtoUnit.md +++ b/docs/Models/Components/ThrottleControlDtoUnit.md @@ -2,6 +2,14 @@ The unit of time for the throttle window (required for fixed type). +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = ThrottleControlDtoUnit.Minutes; +``` + ## Values diff --git a/docs/Models/Components/ThrottleStepResponseDto.md b/docs/Models/Components/ThrottleStepResponseDto.md index a973b087..bebffeb3 100644 --- a/docs/Models/Components/ThrottleStepResponseDto.md +++ b/docs/Models/Components/ThrottleStepResponseDto.md @@ -16,4 +16,5 @@ | `Origin` | [ResourceOriginEnum](../../Models/Components/ResourceOriginEnum.md) | :heavy_check_mark: | Origin of the layout | | `WorkflowId` | *string* | :heavy_check_mark: | Workflow identifier | | `WorkflowDatabaseId` | *string* | :heavy_check_mark: | Workflow database identifier | -| `Issues` | [StepIssuesDto](../../Models/Components/StepIssuesDto.md) | :heavy_minus_sign: | Issues associated with the step | \ No newline at end of file +| `Issues` | [StepIssuesDto](../../Models/Components/StepIssuesDto.md) | :heavy_minus_sign: | Issues associated with the step | +| `StepResolverHash` | *string* | :heavy_minus_sign: | Hash identifying the deployed Cloudflare Worker for this step | \ No newline at end of file diff --git a/docs/Models/Components/ThrottleStepResponseDtoType.md b/docs/Models/Components/ThrottleStepResponseDtoType.md index 3d8c0b87..dfba6960 100644 --- a/docs/Models/Components/ThrottleStepResponseDtoType.md +++ b/docs/Models/Components/ThrottleStepResponseDtoType.md @@ -2,6 +2,14 @@ The type of throttle window. +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = ThrottleStepResponseDtoType.Fixed; +``` + ## Values diff --git a/docs/Models/Components/ThrottleStepResponseDtoUnit.md b/docs/Models/Components/ThrottleStepResponseDtoUnit.md index e15980e9..38e6542f 100644 --- a/docs/Models/Components/ThrottleStepResponseDtoUnit.md +++ b/docs/Models/Components/ThrottleStepResponseDtoUnit.md @@ -2,6 +2,14 @@ The unit of time for the throttle window (required for fixed type). +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = ThrottleStepResponseDtoUnit.Minutes; +``` + ## Values diff --git a/docs/Models/Components/TimeUnitEnum.md b/docs/Models/Components/TimeUnitEnum.md new file mode 100644 index 00000000..d0faf4f8 --- /dev/null +++ b/docs/Models/Components/TimeUnitEnum.md @@ -0,0 +1,23 @@ +# TimeUnitEnum + +Time unit + +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = TimeUnitEnum.Seconds; +``` + + +## Values + +| Name | Value | +| --------- | --------- | +| `Seconds` | seconds | +| `Minutes` | minutes | +| `Hours` | hours | +| `Days` | days | +| `Weeks` | weeks | +| `Months` | months | \ No newline at end of file diff --git a/docs/Models/Components/TranslationGroupDtoResourceType.md b/docs/Models/Components/TranslationGroupDtoResourceType.md index a26dba51..9610c6ed 100644 --- a/docs/Models/Components/TranslationGroupDtoResourceType.md +++ b/docs/Models/Components/TranslationGroupDtoResourceType.md @@ -2,6 +2,14 @@ Resource type +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = TranslationGroupDtoResourceType.Workflow; +``` + ## Values diff --git a/docs/Models/Components/TranslationResponseDtoResourceType.md b/docs/Models/Components/TranslationResponseDtoResourceType.md index 09eed7d3..6551d887 100644 --- a/docs/Models/Components/TranslationResponseDtoResourceType.md +++ b/docs/Models/Components/TranslationResponseDtoResourceType.md @@ -2,6 +2,14 @@ Resource type +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = TranslationResponseDtoResourceType.Workflow; +``` + ## Values diff --git a/docs/Models/Components/TriggerEventResponseDto.md b/docs/Models/Components/TriggerEventResponseDto.md index af078909..9bd4bfce 100644 --- a/docs/Models/Components/TriggerEventResponseDto.md +++ b/docs/Models/Components/TriggerEventResponseDto.md @@ -9,4 +9,5 @@ | `Status` | [TriggerEventResponseDtoStatus](../../Models/Components/TriggerEventResponseDtoStatus.md) | :heavy_check_mark: | Status of the trigger | | `Error` | List<*string*> | :heavy_minus_sign: | In case of an error, this field will contain the error message(s) | | `TransactionId` | *string* | :heavy_minus_sign: | The returned transaction ID of the trigger | +| `ActivityFeedLink` | *string* | :heavy_minus_sign: | Link to the activity feed for this trigger event | | `JobData` | [JobData](../../Models/Components/JobData.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/TriggerEventResponseDtoStatus.md b/docs/Models/Components/TriggerEventResponseDtoStatus.md index 6beb5391..8c09f94d 100644 --- a/docs/Models/Components/TriggerEventResponseDtoStatus.md +++ b/docs/Models/Components/TriggerEventResponseDtoStatus.md @@ -2,6 +2,14 @@ Status of the trigger +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = TriggerEventResponseDtoStatus.Error; +``` + ## Values diff --git a/docs/Models/Components/TriggerRecipientsTypeEnum.md b/docs/Models/Components/TriggerRecipientsTypeEnum.md index dbc0ab48..0a060e20 100644 --- a/docs/Models/Components/TriggerRecipientsTypeEnum.md +++ b/docs/Models/Components/TriggerRecipientsTypeEnum.md @@ -1,5 +1,13 @@ # TriggerRecipientsTypeEnum +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = TriggerRecipientsTypeEnum.Subscriber; +``` + ## Values diff --git a/docs/Models/Components/Type.md b/docs/Models/Components/Type.md index b3bd5307..8799b011 100644 --- a/docs/Models/Components/Type.md +++ b/docs/Models/Components/Type.md @@ -2,6 +2,14 @@ Type of the delay. Currently only 'regular' is supported by the schema. +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = Type.Regular; +``` + ## Values diff --git a/docs/Models/Components/UiComponentEnum.md b/docs/Models/Components/UiComponentEnum.md index 04e77f55..0c0ffa82 100644 --- a/docs/Models/Components/UiComponentEnum.md +++ b/docs/Models/Components/UiComponentEnum.md @@ -2,45 +2,64 @@ Component type for the UI Schema Property +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = UiComponentEnum.EmailEditorSelect; + +// Open enum: use .Of() to create instances from custom string values +var custom = UiComponentEnum.Of("custom_value"); +``` + ## Values -| Name | Value | -| ---------------------------------- | ---------------------------------- | -| `EmailEditorSelect` | EMAIL_EDITOR_SELECT | -| `LayoutSelect` | LAYOUT_SELECT | -| `BlockEditor` | BLOCK_EDITOR | -| `EmailBody` | EMAIL_BODY | -| `TextFullLine` | TEXT_FULL_LINE | -| `TextInlineLabel` | TEXT_INLINE_LABEL | -| `InAppBody` | IN_APP_BODY | -| `InAppAvatar` | IN_APP_AVATAR | -| `InAppPrimarySubject` | IN_APP_PRIMARY_SUBJECT | -| `InAppButtonDropdown` | IN_APP_BUTTON_DROPDOWN | -| `InAppDisableSanitizationSwitch` | IN_APP_DISABLE_SANITIZATION_SWITCH | -| `DisableSanitizationSwitch` | DISABLE_SANITIZATION_SWITCH | -| `UrlTextBox` | URL_TEXT_BOX | -| `DigestAmount` | DIGEST_AMOUNT | -| `DigestUnit` | DIGEST_UNIT | -| `DigestType` | DIGEST_TYPE | -| `DigestKey` | DIGEST_KEY | -| `DigestCron` | DIGEST_CRON | -| `DelayAmount` | DELAY_AMOUNT | -| `DelayUnit` | DELAY_UNIT | -| `DelayType` | DELAY_TYPE | -| `DelayCron` | DELAY_CRON | -| `DelayDynamicKey` | DELAY_DYNAMIC_KEY | -| `ThrottleType` | THROTTLE_TYPE | -| `ThrottleWindow` | THROTTLE_WINDOW | -| `ThrottleUnit` | THROTTLE_UNIT | -| `ThrottleDynamicKey` | THROTTLE_DYNAMIC_KEY | -| `ThrottleThreshold` | THROTTLE_THRESHOLD | -| `ThrottleKey` | THROTTLE_KEY | -| `ExtendToSchedule` | EXTEND_TO_SCHEDULE | -| `SmsBody` | SMS_BODY | -| `ChatBody` | CHAT_BODY | -| `PushBody` | PUSH_BODY | -| `PushSubject` | PUSH_SUBJECT | -| `QueryEditor` | QUERY_EDITOR | -| `Data` | DATA | -| `LayoutEmail` | LAYOUT_EMAIL | \ No newline at end of file +| Name | Value | +| ------------------------------------- | ------------------------------------- | +| `EmailEditorSelect` | EMAIL_EDITOR_SELECT | +| `LayoutSelect` | LAYOUT_SELECT | +| `BlockEditor` | BLOCK_EDITOR | +| `EmailBody` | EMAIL_BODY | +| `TextFullLine` | TEXT_FULL_LINE | +| `TextInlineLabel` | TEXT_INLINE_LABEL | +| `InAppBody` | IN_APP_BODY | +| `InAppAvatar` | IN_APP_AVATAR | +| `InAppPrimarySubject` | IN_APP_PRIMARY_SUBJECT | +| `InAppButtonDropdown` | IN_APP_BUTTON_DROPDOWN | +| `InAppDisableSanitizationSwitch` | IN_APP_DISABLE_SANITIZATION_SWITCH | +| `DisableSanitizationSwitch` | DISABLE_SANITIZATION_SWITCH | +| `UrlTextBox` | URL_TEXT_BOX | +| `DigestAmount` | DIGEST_AMOUNT | +| `DigestUnit` | DIGEST_UNIT | +| `DigestType` | DIGEST_TYPE | +| `DigestKey` | DIGEST_KEY | +| `DigestCron` | DIGEST_CRON | +| `DelayAmount` | DELAY_AMOUNT | +| `DelayUnit` | DELAY_UNIT | +| `DelayType` | DELAY_TYPE | +| `DelayCron` | DELAY_CRON | +| `DelayDynamicKey` | DELAY_DYNAMIC_KEY | +| `ThrottleType` | THROTTLE_TYPE | +| `ThrottleWindow` | THROTTLE_WINDOW | +| `ThrottleUnit` | THROTTLE_UNIT | +| `ThrottleDynamicKey` | THROTTLE_DYNAMIC_KEY | +| `ThrottleThreshold` | THROTTLE_THRESHOLD | +| `ThrottleKey` | THROTTLE_KEY | +| `ExtendToSchedule` | EXTEND_TO_SCHEDULE | +| `SmsBody` | SMS_BODY | +| `ChatBody` | CHAT_BODY | +| `PushBody` | PUSH_BODY | +| `PushSubject` | PUSH_SUBJECT | +| `QueryEditor` | QUERY_EDITOR | +| `Data` | DATA | +| `LayoutEmail` | LAYOUT_EMAIL | +| `DestinationMethod` | DESTINATION_METHOD | +| `DestinationUrl` | DESTINATION_URL | +| `DestinationHeaders` | DESTINATION_HEADERS | +| `DestinationBody` | DESTINATION_BODY | +| `DestinationResponseBodySchema` | DESTINATION_RESPONSE_BODY_SCHEMA | +| `DestinationEnforceSchemaValidation` | DESTINATION_ENFORCE_SCHEMA_VALIDATION | +| `DestinationContinueOnFailure` | DESTINATION_CONTINUE_ON_FAILURE | +| `DestinationTimeout` | DESTINATION_TIMEOUT | \ No newline at end of file diff --git a/docs/Models/Components/UiSchemaGroupEnum.md b/docs/Models/Components/UiSchemaGroupEnum.md index 154b8f5d..ff87f7cc 100644 --- a/docs/Models/Components/UiSchemaGroupEnum.md +++ b/docs/Models/Components/UiSchemaGroupEnum.md @@ -2,18 +2,27 @@ Group of the UI Schema +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = UiSchemaGroupEnum.InApp; +``` + ## Values -| Name | Value | -| ---------- | ---------- | -| `InApp` | IN_APP | -| `Email` | EMAIL | -| `Digest` | DIGEST | -| `Delay` | DELAY | -| `Throttle` | THROTTLE | -| `Sms` | SMS | -| `Chat` | CHAT | -| `Push` | PUSH | -| `Skip` | SKIP | -| `Layout` | LAYOUT | \ No newline at end of file +| Name | Value | +| ------------- | ------------- | +| `InApp` | IN_APP | +| `Email` | EMAIL | +| `Digest` | DIGEST | +| `Delay` | DELAY | +| `Throttle` | THROTTLE | +| `Sms` | SMS | +| `Chat` | CHAT | +| `Push` | PUSH | +| `Skip` | SKIP | +| `Layout` | LAYOUT | +| `HttpRequest` | HTTP_REQUEST | \ No newline at end of file diff --git a/docs/Models/Components/Unit.md b/docs/Models/Components/Unit.md index 8c84bfce..4bfb84b5 100644 --- a/docs/Models/Components/Unit.md +++ b/docs/Models/Components/Unit.md @@ -2,6 +2,14 @@ Unit of time for the delay amount. +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = Unit.Seconds; +``` + ## Values diff --git a/docs/Models/Components/UpdateAllSubscriberNotificationsDto.md b/docs/Models/Components/UpdateAllSubscriberNotificationsDto.md new file mode 100644 index 00000000..ccb7fe5f --- /dev/null +++ b/docs/Models/Components/UpdateAllSubscriberNotificationsDto.md @@ -0,0 +1,10 @@ +# UpdateAllSubscriberNotificationsDto + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `Tags` | [Tags](../../Models/Components/Tags.md) | :heavy_minus_sign: | Filter notifications by workflow tags (OR for string[], or { and: [{ or: string[] }, ...] } for AND of OR-groups). | +| `Data` | *string* | :heavy_minus_sign: | Filter notifications by data attributes (JSON string) | +| `ContextKeys` | List<*string*> | :heavy_minus_sign: | Context keys for filtering notifications | \ No newline at end of file diff --git a/docs/Models/Components/UpdateEnvironmentVariableRequestDto.md b/docs/Models/Components/UpdateEnvironmentVariableRequestDto.md new file mode 100644 index 00000000..3cce4ec6 --- /dev/null +++ b/docs/Models/Components/UpdateEnvironmentVariableRequestDto.md @@ -0,0 +1,11 @@ +# UpdateEnvironmentVariableRequestDto + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | +| `Key` | *string* | :heavy_minus_sign: | Unique key for the variable. Must start with a letter and contain only letters, digits, and underscores. | +| `Type` | [UpdateEnvironmentVariableRequestDtoType](../../Models/Components/UpdateEnvironmentVariableRequestDtoType.md) | :heavy_minus_sign: | The type of the variable | +| `IsSecret` | *bool* | :heavy_minus_sign: | N/A | +| `Values` | List<[EnvironmentVariableValueDto](../../Models/Components/EnvironmentVariableValueDto.md)> | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/Models/Components/UpdateEnvironmentVariableRequestDtoType.md b/docs/Models/Components/UpdateEnvironmentVariableRequestDtoType.md new file mode 100644 index 00000000..13bb207b --- /dev/null +++ b/docs/Models/Components/UpdateEnvironmentVariableRequestDtoType.md @@ -0,0 +1,18 @@ +# UpdateEnvironmentVariableRequestDtoType + +The type of the variable + +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = UpdateEnvironmentVariableRequestDtoType.String; +``` + + +## Values + +| Name | Value | +| -------- | -------- | +| `String` | string | \ No newline at end of file diff --git a/docs/Models/Components/UpdateLayoutDto.md b/docs/Models/Components/UpdateLayoutDto.md index 831c934a..347c2279 100644 --- a/docs/Models/Components/UpdateLayoutDto.md +++ b/docs/Models/Components/UpdateLayoutDto.md @@ -3,8 +3,8 @@ ## Fields -| Field | Type | Required | Description | -| --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | -| `Name` | *string* | :heavy_check_mark: | Name of the layout | -| `IsTranslationEnabled` | *bool* | :heavy_minus_sign: | Enable or disable translations for this layout | -| `ControlValues` | [ControlValues](../../Models/Components/ControlValues.md) | :heavy_minus_sign: | Control values for the layout | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `Name` | *string* | :heavy_check_mark: | Name of the layout | +| `IsTranslationEnabled` | *bool* | :heavy_minus_sign: | Enable or disable translations for this layout | +| `ControlValues` | [ControlValues](../../Models/Components/ControlValues.md) | :heavy_minus_sign: | Control values for the layout. Omit to leave unchanged, or set to null to clear stored control values. | \ No newline at end of file diff --git a/docs/Models/Components/UpdateWorkflowDtoSteps.md b/docs/Models/Components/UpdateWorkflowDtoSteps.md index fa24b9b7..a7c5c840 100644 --- a/docs/Models/Components/UpdateWorkflowDtoSteps.md +++ b/docs/Models/Components/UpdateWorkflowDtoSteps.md @@ -50,3 +50,9 @@ UpdateWorkflowDtoSteps.CreateDigest(/* values here */); ```csharp UpdateWorkflowDtoSteps.CreateCustom(/* values here */); ``` + +### HttpRequest + +```csharp +UpdateWorkflowDtoSteps.CreateHttpRequest(/* values here */); +``` diff --git a/docs/Models/Components/WeekDays.md b/docs/Models/Components/WeekDays.md index 3a38a5f1..e7fe9cc7 100644 --- a/docs/Models/Components/WeekDays.md +++ b/docs/Models/Components/WeekDays.md @@ -1,5 +1,13 @@ # WeekDays +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = WeekDays.Monday; +``` + ## Values diff --git a/docs/Models/Components/WorkflowCreationSourceEnum.md b/docs/Models/Components/WorkflowCreationSourceEnum.md index cae733ab..b3164f93 100644 --- a/docs/Models/Components/WorkflowCreationSourceEnum.md +++ b/docs/Models/Components/WorkflowCreationSourceEnum.md @@ -2,6 +2,14 @@ Source of workflow creation +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = WorkflowCreationSourceEnum.TemplateStore; +``` + ## Values @@ -16,4 +24,5 @@ Source of workflow creation | `Dropdown` | dropdown | | `OnboardingGetStarted` | onboarding_get_started | | `Bridge` | bridge | -| `Dashboard` | dashboard | \ No newline at end of file +| `Dashboard` | dashboard | +| `Ai` | ai | \ No newline at end of file diff --git a/docs/Models/Components/WorkflowResponseDtoSortField.md b/docs/Models/Components/WorkflowResponseDtoSortField.md index b5ce14da..84e81b07 100644 --- a/docs/Models/Components/WorkflowResponseDtoSortField.md +++ b/docs/Models/Components/WorkflowResponseDtoSortField.md @@ -1,5 +1,13 @@ # WorkflowResponseDtoSortField +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = WorkflowResponseDtoSortField.CreatedAt; +``` + ## Values diff --git a/docs/Models/Components/WorkflowResponseDtoSteps.md b/docs/Models/Components/WorkflowResponseDtoSteps.md index 73da4780..eb0abb04 100644 --- a/docs/Models/Components/WorkflowResponseDtoSteps.md +++ b/docs/Models/Components/WorkflowResponseDtoSteps.md @@ -56,3 +56,9 @@ WorkflowResponseDtoSteps.CreateCustom(/* values here */); ```csharp WorkflowResponseDtoSteps.CreateThrottle(/* values here */); ``` + +### HttpRequest + +```csharp +WorkflowResponseDtoSteps.CreateHttpRequest(/* values here */); +``` diff --git a/docs/Models/Components/WorkflowStatusEnum.md b/docs/Models/Components/WorkflowStatusEnum.md index 0a6b6e5d..679f4ade 100644 --- a/docs/Models/Components/WorkflowStatusEnum.md +++ b/docs/Models/Components/WorkflowStatusEnum.md @@ -2,6 +2,14 @@ Status of the workflow +## Example Usage + +```csharp +using Novu.Models.Components; + +var value = WorkflowStatusEnum.Active; +``` + ## Values diff --git a/docs/Models/Requests/ActionType.md b/docs/Models/Requests/ActionType.md new file mode 100644 index 00000000..b2d012d6 --- /dev/null +++ b/docs/Models/Requests/ActionType.md @@ -0,0 +1,19 @@ +# ActionType + +The type of action (primary or secondary) + +## Example Usage + +```csharp +using Novu.Models.Requests; + +var value = ActionType.Primary; +``` + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `Primary` | primary | +| `Secondary` | secondary | \ No newline at end of file diff --git a/docs/Models/Requests/Channel.md b/docs/Models/Requests/Channel.md index 18785c7f..1f11e154 100644 --- a/docs/Models/Requests/Channel.md +++ b/docs/Models/Requests/Channel.md @@ -2,6 +2,14 @@ Filter by channel type (email, sms, push, chat, etc.). +## Example Usage + +```csharp +using Novu.Models.Requests; + +var value = Channel.InApp; +``` + ## Values diff --git a/docs/Models/Requests/ChannelConnectionsControllerListChannelConnectionsQueryParamOrderDirection.md b/docs/Models/Requests/ChannelConnectionsControllerListChannelConnectionsQueryParamOrderDirection.md index 4b6ba20e..b1fe4885 100644 --- a/docs/Models/Requests/ChannelConnectionsControllerListChannelConnectionsQueryParamOrderDirection.md +++ b/docs/Models/Requests/ChannelConnectionsControllerListChannelConnectionsQueryParamOrderDirection.md @@ -2,6 +2,14 @@ Direction of sorting +## Example Usage + +```csharp +using Novu.Models.Requests; + +var value = ChannelConnectionsControllerListChannelConnectionsQueryParamOrderDirection.Asc; +``` + ## Values diff --git a/docs/Models/Requests/ChannelEndpointsControllerListChannelEndpointsQueryParamOrderDirection.md b/docs/Models/Requests/ChannelEndpointsControllerListChannelEndpointsQueryParamOrderDirection.md index d016a361..1531ed79 100644 --- a/docs/Models/Requests/ChannelEndpointsControllerListChannelEndpointsQueryParamOrderDirection.md +++ b/docs/Models/Requests/ChannelEndpointsControllerListChannelEndpointsQueryParamOrderDirection.md @@ -2,6 +2,14 @@ Direction of sorting +## Example Usage + +```csharp +using Novu.Models.Requests; + +var value = ChannelEndpointsControllerListChannelEndpointsQueryParamOrderDirection.Asc; +``` + ## Values diff --git a/docs/Models/Requests/Criticality.md b/docs/Models/Requests/Criticality.md index b6be648f..81c0378e 100644 --- a/docs/Models/Requests/Criticality.md +++ b/docs/Models/Requests/Criticality.md @@ -1,5 +1,13 @@ # Criticality +## Example Usage + +```csharp +using Novu.Models.Requests; + +var value = Criticality.Critical; +``` + ## Values diff --git a/docs/Models/Requests/EnvironmentVariablesControllerCreateEnvironmentVariableRequest.md b/docs/Models/Requests/EnvironmentVariablesControllerCreateEnvironmentVariableRequest.md new file mode 100644 index 00000000..1bb79c37 --- /dev/null +++ b/docs/Models/Requests/EnvironmentVariablesControllerCreateEnvironmentVariableRequest.md @@ -0,0 +1,9 @@ +# EnvironmentVariablesControllerCreateEnvironmentVariableRequest + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | +| `CreateEnvironmentVariableRequestDto` | [CreateEnvironmentVariableRequestDto](../../Models/Components/CreateEnvironmentVariableRequestDto.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/EnvironmentVariablesControllerCreateEnvironmentVariableResponse.md b/docs/Models/Requests/EnvironmentVariablesControllerCreateEnvironmentVariableResponse.md new file mode 100644 index 00000000..ec530ff6 --- /dev/null +++ b/docs/Models/Requests/EnvironmentVariablesControllerCreateEnvironmentVariableResponse.md @@ -0,0 +1,10 @@ +# EnvironmentVariablesControllerCreateEnvironmentVariableResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| `HttpMeta` | [HTTPMetadata](../../Models/Components/HTTPMetadata.md) | :heavy_check_mark: | N/A | +| `EnvironmentVariableResponseDto` | [EnvironmentVariableResponseDto](../../Models/Components/EnvironmentVariableResponseDto.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/EnvironmentVariablesControllerDeleteEnvironmentVariableRequest.md b/docs/Models/Requests/EnvironmentVariablesControllerDeleteEnvironmentVariableRequest.md new file mode 100644 index 00000000..4534584c --- /dev/null +++ b/docs/Models/Requests/EnvironmentVariablesControllerDeleteEnvironmentVariableRequest.md @@ -0,0 +1,9 @@ +# EnvironmentVariablesControllerDeleteEnvironmentVariableRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `VariableKey` | *string* | :heavy_check_mark: | The unique key of the environment variable (e.g. BASE_URL) | BASE_URL | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | | \ No newline at end of file diff --git a/docs/Models/Requests/EnvironmentVariablesControllerDeleteEnvironmentVariableResponse.md b/docs/Models/Requests/EnvironmentVariablesControllerDeleteEnvironmentVariableResponse.md new file mode 100644 index 00000000..351ca2fe --- /dev/null +++ b/docs/Models/Requests/EnvironmentVariablesControllerDeleteEnvironmentVariableResponse.md @@ -0,0 +1,9 @@ +# EnvironmentVariablesControllerDeleteEnvironmentVariableResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | +| `HttpMeta` | [HTTPMetadata](../../Models/Components/HTTPMetadata.md) | :heavy_check_mark: | N/A | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableRequest.md b/docs/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableRequest.md new file mode 100644 index 00000000..4aa40c32 --- /dev/null +++ b/docs/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableRequest.md @@ -0,0 +1,9 @@ +# EnvironmentVariablesControllerGetEnvironmentVariableRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `VariableKey` | *string* | :heavy_check_mark: | The unique key of the environment variable (e.g. BASE_URL) | BASE_URL | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | | \ No newline at end of file diff --git a/docs/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableResponse.md b/docs/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableResponse.md new file mode 100644 index 00000000..96ac89d0 --- /dev/null +++ b/docs/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableResponse.md @@ -0,0 +1,10 @@ +# EnvironmentVariablesControllerGetEnvironmentVariableResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| `HttpMeta` | [HTTPMetadata](../../Models/Components/HTTPMetadata.md) | :heavy_check_mark: | N/A | +| `EnvironmentVariableResponseDto` | [EnvironmentVariableResponseDto](../../Models/Components/EnvironmentVariableResponseDto.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableUsageRequest.md b/docs/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableUsageRequest.md new file mode 100644 index 00000000..12f36057 --- /dev/null +++ b/docs/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableUsageRequest.md @@ -0,0 +1,9 @@ +# EnvironmentVariablesControllerGetEnvironmentVariableUsageRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `VariableKey` | *string* | :heavy_check_mark: | The unique key of the environment variable (e.g. BASE_URL) | BASE_URL | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | | \ No newline at end of file diff --git a/docs/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableUsageResponse.md b/docs/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableUsageResponse.md new file mode 100644 index 00000000..f79c411b --- /dev/null +++ b/docs/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableUsageResponse.md @@ -0,0 +1,10 @@ +# EnvironmentVariablesControllerGetEnvironmentVariableUsageResponse + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `HttpMeta` | [HTTPMetadata](../../Models/Components/HTTPMetadata.md) | :heavy_check_mark: | N/A | +| `GetEnvironmentVariableUsageResponseDto` | [GetEnvironmentVariableUsageResponseDto](../../Models/Components/GetEnvironmentVariableUsageResponseDto.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/EnvironmentVariablesControllerListEnvironmentVariablesRequest.md b/docs/Models/Requests/EnvironmentVariablesControllerListEnvironmentVariablesRequest.md new file mode 100644 index 00000000..fd7904ed --- /dev/null +++ b/docs/Models/Requests/EnvironmentVariablesControllerListEnvironmentVariablesRequest.md @@ -0,0 +1,9 @@ +# EnvironmentVariablesControllerListEnvironmentVariablesRequest + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | +| `Search` | *string* | :heavy_minus_sign: | Filter variables by key (case-insensitive partial match) | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | \ No newline at end of file diff --git a/docs/Models/Requests/EnvironmentVariablesControllerListEnvironmentVariablesResponse.md b/docs/Models/Requests/EnvironmentVariablesControllerListEnvironmentVariablesResponse.md new file mode 100644 index 00000000..5eebfd44 --- /dev/null +++ b/docs/Models/Requests/EnvironmentVariablesControllerListEnvironmentVariablesResponse.md @@ -0,0 +1,10 @@ +# EnvironmentVariablesControllerListEnvironmentVariablesResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | +| `HttpMeta` | [HTTPMetadata](../../Models/Components/HTTPMetadata.md) | :heavy_check_mark: | N/A | +| `EnvironmentVariableResponseDtos` | List<[EnvironmentVariableResponseDto](../../Models/Components/EnvironmentVariableResponseDto.md)> | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/EnvironmentVariablesControllerUpdateEnvironmentVariableRequest.md b/docs/Models/Requests/EnvironmentVariablesControllerUpdateEnvironmentVariableRequest.md new file mode 100644 index 00000000..a135f715 --- /dev/null +++ b/docs/Models/Requests/EnvironmentVariablesControllerUpdateEnvironmentVariableRequest.md @@ -0,0 +1,10 @@ +# EnvironmentVariablesControllerUpdateEnvironmentVariableRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | +| `VariableKey` | *string* | :heavy_check_mark: | The unique key of the environment variable (e.g. BASE_URL) | BASE_URL | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | | +| `UpdateEnvironmentVariableRequestDto` | [UpdateEnvironmentVariableRequestDto](../../Models/Components/UpdateEnvironmentVariableRequestDto.md) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/Models/Requests/EnvironmentVariablesControllerUpdateEnvironmentVariableResponse.md b/docs/Models/Requests/EnvironmentVariablesControllerUpdateEnvironmentVariableResponse.md new file mode 100644 index 00000000..29aa5249 --- /dev/null +++ b/docs/Models/Requests/EnvironmentVariablesControllerUpdateEnvironmentVariableResponse.md @@ -0,0 +1,10 @@ +# EnvironmentVariablesControllerUpdateEnvironmentVariableResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| `HttpMeta` | [HTTPMetadata](../../Models/Components/HTTPMetadata.md) | :heavy_check_mark: | N/A | +| `EnvironmentVariableResponseDto` | [EnvironmentVariableResponseDto](../../Models/Components/EnvironmentVariableResponseDto.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/EnvironmentsControllerDiffEnvironmentRequest.md b/docs/Models/Requests/EnvironmentsControllerDiffEnvironmentRequest.md new file mode 100644 index 00000000..1f32a883 --- /dev/null +++ b/docs/Models/Requests/EnvironmentsControllerDiffEnvironmentRequest.md @@ -0,0 +1,10 @@ +# EnvironmentsControllerDiffEnvironmentRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `TargetEnvironmentId` | *string* | :heavy_check_mark: | Target environment ID (MongoDB ObjectId) to compare against | 6615943e7ace93b0540ae377 | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | | +| `DiffEnvironmentRequestDto` | [DiffEnvironmentRequestDto](../../Models/Components/DiffEnvironmentRequestDto.md) | :heavy_check_mark: | Diff request configuration | | \ No newline at end of file diff --git a/docs/Models/Requests/EnvironmentsControllerDiffEnvironmentResponse.md b/docs/Models/Requests/EnvironmentsControllerDiffEnvironmentResponse.md new file mode 100644 index 00000000..12a618fd --- /dev/null +++ b/docs/Models/Requests/EnvironmentsControllerDiffEnvironmentResponse.md @@ -0,0 +1,10 @@ +# EnvironmentsControllerDiffEnvironmentResponse + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `HttpMeta` | [HTTPMetadata](../../Models/Components/HTTPMetadata.md) | :heavy_check_mark: | N/A | +| `DiffEnvironmentResponseDto` | [DiffEnvironmentResponseDto](../../Models/Components/DiffEnvironmentResponseDto.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/EnvironmentsControllerPublishEnvironmentRequest.md b/docs/Models/Requests/EnvironmentsControllerPublishEnvironmentRequest.md new file mode 100644 index 00000000..96cb9d1e --- /dev/null +++ b/docs/Models/Requests/EnvironmentsControllerPublishEnvironmentRequest.md @@ -0,0 +1,10 @@ +# EnvironmentsControllerPublishEnvironmentRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| `TargetEnvironmentId` | *string* | :heavy_check_mark: | Target environment ID (MongoDB ObjectId) to publish resources to | 6615943e7ace93b0540ae377 | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | | +| `PublishEnvironmentRequestDto` | [PublishEnvironmentRequestDto](../../Models/Components/PublishEnvironmentRequestDto.md) | :heavy_check_mark: | Publish request configuration | | \ No newline at end of file diff --git a/docs/Models/Requests/EnvironmentsControllerPublishEnvironmentResponse.md b/docs/Models/Requests/EnvironmentsControllerPublishEnvironmentResponse.md new file mode 100644 index 00000000..5c41b672 --- /dev/null +++ b/docs/Models/Requests/EnvironmentsControllerPublishEnvironmentResponse.md @@ -0,0 +1,10 @@ +# EnvironmentsControllerPublishEnvironmentResponse + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `HttpMeta` | [HTTPMetadata](../../Models/Components/HTTPMetadata.md) | :heavy_check_mark: | N/A | +| `PublishEnvironmentResponseDto` | [PublishEnvironmentResponseDto](../../Models/Components/PublishEnvironmentResponseDto.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/MessagesControllerDeleteMessagesByTransactionIdQueryParamChannel.md b/docs/Models/Requests/MessagesControllerDeleteMessagesByTransactionIdQueryParamChannel.md index 431084ac..c49e5360 100644 --- a/docs/Models/Requests/MessagesControllerDeleteMessagesByTransactionIdQueryParamChannel.md +++ b/docs/Models/Requests/MessagesControllerDeleteMessagesByTransactionIdQueryParamChannel.md @@ -2,6 +2,14 @@ The channel of the message to be deleted +## Example Usage + +```csharp +using Novu.Models.Requests; + +var value = MessagesControllerDeleteMessagesByTransactionIdQueryParamChannel.InApp; +``` + ## Values diff --git a/docs/Models/Requests/OrderDirection.md b/docs/Models/Requests/OrderDirection.md index 92532739..89a7d882 100644 --- a/docs/Models/Requests/OrderDirection.md +++ b/docs/Models/Requests/OrderDirection.md @@ -2,6 +2,14 @@ Direction of sorting +## Example Usage + +```csharp +using Novu.Models.Requests; + +var value = OrderDirection.Asc; +``` + ## Values diff --git a/docs/Models/Requests/PathParamActionType.md b/docs/Models/Requests/PathParamActionType.md new file mode 100644 index 00000000..044540a6 --- /dev/null +++ b/docs/Models/Requests/PathParamActionType.md @@ -0,0 +1,19 @@ +# PathParamActionType + +The type of action (primary or secondary) + +## Example Usage + +```csharp +using Novu.Models.Requests; + +var value = PathParamActionType.Primary; +``` + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `Primary` | primary | +| `Secondary` | secondary | \ No newline at end of file diff --git a/docs/Models/Requests/PathParamResourceType.md b/docs/Models/Requests/PathParamResourceType.md index abd785df..b9b9b7b5 100644 --- a/docs/Models/Requests/PathParamResourceType.md +++ b/docs/Models/Requests/PathParamResourceType.md @@ -2,6 +2,14 @@ Resource type +## Example Usage + +```csharp +using Novu.Models.Requests; + +var value = PathParamResourceType.Workflow; +``` + ## Values diff --git a/docs/Models/Requests/QueryParamChannel.md b/docs/Models/Requests/QueryParamChannel.md index c5697999..2b9e500a 100644 --- a/docs/Models/Requests/QueryParamChannel.md +++ b/docs/Models/Requests/QueryParamChannel.md @@ -2,6 +2,14 @@ Channel type to filter results. +## Example Usage + +```csharp +using Novu.Models.Requests; + +var value = QueryParamChannel.InApp; +``` + ## Values diff --git a/docs/Models/Requests/QueryParamOrderDirection.md b/docs/Models/Requests/QueryParamOrderDirection.md index f39516d6..7143e422 100644 --- a/docs/Models/Requests/QueryParamOrderDirection.md +++ b/docs/Models/Requests/QueryParamOrderDirection.md @@ -2,6 +2,14 @@ Direction of sorting +## Example Usage + +```csharp +using Novu.Models.Requests; + +var value = QueryParamOrderDirection.Asc; +``` + ## Values diff --git a/docs/Models/Requests/ResourceType.md b/docs/Models/Requests/ResourceType.md index 77036ae7..9b349e9e 100644 --- a/docs/Models/Requests/ResourceType.md +++ b/docs/Models/Requests/ResourceType.md @@ -2,6 +2,14 @@ The resource type to associate localizations with +## Example Usage + +```csharp +using Novu.Models.Requests; + +var value = ResourceType.Workflow; +``` + ## Values diff --git a/docs/Models/Requests/Severity.md b/docs/Models/Requests/Severity.md new file mode 100644 index 00000000..d897e80c --- /dev/null +++ b/docs/Models/Requests/Severity.md @@ -0,0 +1,19 @@ +# Severity + +## Example Usage + +```csharp +using Novu.Models.Requests; + +var value = Severity.High; +``` + + +## Values + +| Name | Value | +| -------- | -------- | +| `High` | high | +| `Medium` | medium | +| `Low` | low | +| `None` | none | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerArchiveAllNotificationsRequest.md b/docs/Models/Requests/SubscribersControllerArchiveAllNotificationsRequest.md new file mode 100644 index 00000000..1bed51ab --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerArchiveAllNotificationsRequest.md @@ -0,0 +1,10 @@ +# SubscribersControllerArchiveAllNotificationsRequest + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | +| `UpdateAllSubscriberNotificationsDto` | [UpdateAllSubscriberNotificationsDto](../../Models/Components/UpdateAllSubscriberNotificationsDto.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerArchiveAllNotificationsResponse.md b/docs/Models/Requests/SubscribersControllerArchiveAllNotificationsResponse.md new file mode 100644 index 00000000..57f3f119 --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerArchiveAllNotificationsResponse.md @@ -0,0 +1,9 @@ +# SubscribersControllerArchiveAllNotificationsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | +| `HttpMeta` | [HTTPMetadata](../../Models/Components/HTTPMetadata.md) | :heavy_check_mark: | N/A | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerArchiveAllReadNotificationsRequest.md b/docs/Models/Requests/SubscribersControllerArchiveAllReadNotificationsRequest.md new file mode 100644 index 00000000..83400ce6 --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerArchiveAllReadNotificationsRequest.md @@ -0,0 +1,10 @@ +# SubscribersControllerArchiveAllReadNotificationsRequest + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | +| `UpdateAllSubscriberNotificationsDto` | [UpdateAllSubscriberNotificationsDto](../../Models/Components/UpdateAllSubscriberNotificationsDto.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerArchiveAllReadNotificationsResponse.md b/docs/Models/Requests/SubscribersControllerArchiveAllReadNotificationsResponse.md new file mode 100644 index 00000000..d64142bb --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerArchiveAllReadNotificationsResponse.md @@ -0,0 +1,9 @@ +# SubscribersControllerArchiveAllReadNotificationsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | +| `HttpMeta` | [HTTPMetadata](../../Models/Components/HTTPMetadata.md) | :heavy_check_mark: | N/A | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerArchiveNotificationRequest.md b/docs/Models/Requests/SubscribersControllerArchiveNotificationRequest.md new file mode 100644 index 00000000..944b8083 --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerArchiveNotificationRequest.md @@ -0,0 +1,11 @@ +# SubscribersControllerArchiveNotificationRequest + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | +| `NotificationId` | *string* | :heavy_check_mark: | The identifier of the notification | +| `ContextKeys` | List<*string*> | :heavy_minus_sign: | Context keys for filtering | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerArchiveNotificationResponse.md b/docs/Models/Requests/SubscribersControllerArchiveNotificationResponse.md new file mode 100644 index 00000000..f4568a47 --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerArchiveNotificationResponse.md @@ -0,0 +1,10 @@ +# SubscribersControllerArchiveNotificationResponse + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `HttpMeta` | [HTTPMetadata](../../Models/Components/HTTPMetadata.md) | :heavy_check_mark: | N/A | +| `InboxNotificationDto` | [InboxNotificationDto](../../Models/Components/InboxNotificationDto.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerBulkUpdateSubscriberPreferencesRequest.md b/docs/Models/Requests/SubscribersControllerBulkUpdateSubscriberPreferencesRequest.md index 633e271e..c3b1a9e1 100644 --- a/docs/Models/Requests/SubscribersControllerBulkUpdateSubscriberPreferencesRequest.md +++ b/docs/Models/Requests/SubscribersControllerBulkUpdateSubscriberPreferencesRequest.md @@ -5,6 +5,6 @@ | Field | Type | Required | Description | | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | -| `SubscriberId` | *string* | :heavy_check_mark: | N/A | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | | `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | | `BulkUpdateSubscriberPreferencesDto` | [BulkUpdateSubscriberPreferencesDto](../../Models/Components/BulkUpdateSubscriberPreferencesDto.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerCompleteNotificationActionRequest.md b/docs/Models/Requests/SubscribersControllerCompleteNotificationActionRequest.md new file mode 100644 index 00000000..ee4ec741 --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerCompleteNotificationActionRequest.md @@ -0,0 +1,12 @@ +# SubscribersControllerCompleteNotificationActionRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | +| `NotificationId` | *string* | :heavy_check_mark: | The identifier of the notification | +| `ActionType` | [ActionType](../../Models/Requests/ActionType.md) | :heavy_check_mark: | The type of action (primary or secondary) | +| `ContextKeys` | List<*string*> | :heavy_minus_sign: | Context keys for filtering | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerCompleteNotificationActionResponse.md b/docs/Models/Requests/SubscribersControllerCompleteNotificationActionResponse.md new file mode 100644 index 00000000..0e8bdf80 --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerCompleteNotificationActionResponse.md @@ -0,0 +1,10 @@ +# SubscribersControllerCompleteNotificationActionResponse + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `HttpMeta` | [HTTPMetadata](../../Models/Components/HTTPMetadata.md) | :heavy_check_mark: | N/A | +| `InboxNotificationDto` | [InboxNotificationDto](../../Models/Components/InboxNotificationDto.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerDeleteAllNotificationsRequest.md b/docs/Models/Requests/SubscribersControllerDeleteAllNotificationsRequest.md new file mode 100644 index 00000000..24248478 --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerDeleteAllNotificationsRequest.md @@ -0,0 +1,10 @@ +# SubscribersControllerDeleteAllNotificationsRequest + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | +| `UpdateAllSubscriberNotificationsDto` | [UpdateAllSubscriberNotificationsDto](../../Models/Components/UpdateAllSubscriberNotificationsDto.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerDeleteAllNotificationsResponse.md b/docs/Models/Requests/SubscribersControllerDeleteAllNotificationsResponse.md new file mode 100644 index 00000000..aec474cd --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerDeleteAllNotificationsResponse.md @@ -0,0 +1,9 @@ +# SubscribersControllerDeleteAllNotificationsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | +| `HttpMeta` | [HTTPMetadata](../../Models/Components/HTTPMetadata.md) | :heavy_check_mark: | N/A | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerDeleteNotificationRequest.md b/docs/Models/Requests/SubscribersControllerDeleteNotificationRequest.md new file mode 100644 index 00000000..0cffd59f --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerDeleteNotificationRequest.md @@ -0,0 +1,11 @@ +# SubscribersControllerDeleteNotificationRequest + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | +| `NotificationId` | *string* | :heavy_check_mark: | The identifier of the notification | +| `ContextKeys` | List<*string*> | :heavy_minus_sign: | Context keys for filtering | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerDeleteNotificationResponse.md b/docs/Models/Requests/SubscribersControllerDeleteNotificationResponse.md new file mode 100644 index 00000000..3e9ed924 --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerDeleteNotificationResponse.md @@ -0,0 +1,9 @@ +# SubscribersControllerDeleteNotificationResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | +| `HttpMeta` | [HTTPMetadata](../../Models/Components/HTTPMetadata.md) | :heavy_check_mark: | N/A | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerGetSubscriberNotificationsCountRequest.md b/docs/Models/Requests/SubscribersControllerGetSubscriberNotificationsCountRequest.md new file mode 100644 index 00000000..37e278b7 --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerGetSubscriberNotificationsCountRequest.md @@ -0,0 +1,10 @@ +# SubscribersControllerGetSubscriberNotificationsCountRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | | +| `Filters` | *string* | :heavy_check_mark: | Array of filter objects (max 30) to count notifications by different criteria | [{"read":false,"archived":false},{"tags":["important"]},{"tags":{"and":[{"or":["a","b"]},{"or":["c"]}]}}] | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerGetSubscriberNotificationsCountResponse.md b/docs/Models/Requests/SubscribersControllerGetSubscriberNotificationsCountResponse.md new file mode 100644 index 00000000..2840b348 --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerGetSubscriberNotificationsCountResponse.md @@ -0,0 +1,10 @@ +# SubscribersControllerGetSubscriberNotificationsCountResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | +| `HttpMeta` | [HTTPMetadata](../../Models/Components/HTTPMetadata.md) | :heavy_check_mark: | N/A | +| `GetSubscriberNotificationsCountResponseDtos` | List<[GetSubscriberNotificationsCountResponseDto](../../Models/Components/GetSubscriberNotificationsCountResponseDto.md)> | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerGetSubscriberNotificationsRequest.md b/docs/Models/Requests/SubscribersControllerGetSubscriberNotificationsRequest.md new file mode 100644 index 00000000..ee94661c --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerGetSubscriberNotificationsRequest.md @@ -0,0 +1,21 @@ +# SubscribersControllerGetSubscriberNotificationsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | | +| `Limit` | *double* | :heavy_minus_sign: | N/A | 10 | +| `After` | *string* | :heavy_minus_sign: | N/A | | +| `Offset` | *double* | :heavy_minus_sign: | N/A | 0 | +| `Read` | *bool* | :heavy_minus_sign: | Filter by read/unread state | | +| `Archived` | *bool* | :heavy_minus_sign: | Filter by archived state | | +| `Snoozed` | *bool* | :heavy_minus_sign: | Filter by snoozed state | | +| `Seen` | *bool* | :heavy_minus_sign: | Filter by seen state | | +| `Data` | *string* | :heavy_minus_sign: | Filter by data attributes (JSON string) | | +| `Severity` | List<[Severity](../../Models/Requests/Severity.md)> | :heavy_minus_sign: | Filter by severity levels | | +| `CreatedGte` | *double* | :heavy_minus_sign: | Filter notifications created on or after this timestamp (Unix timestamp in milliseconds) | 1704067200000 | +| `CreatedLte` | *double* | :heavy_minus_sign: | Filter notifications created on or before this timestamp (Unix timestamp in milliseconds) | 1735689599999 | +| `ContextKeys` | List<*string*> | :heavy_minus_sign: | Context keys for filtering notifications in multi-context scenarios | | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerGetSubscriberNotificationsResponse.md b/docs/Models/Requests/SubscribersControllerGetSubscriberNotificationsResponse.md new file mode 100644 index 00000000..4dfb1e13 --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerGetSubscriberNotificationsResponse.md @@ -0,0 +1,10 @@ +# SubscribersControllerGetSubscriberNotificationsResponse + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | +| `HttpMeta` | [HTTPMetadata](../../Models/Components/HTTPMetadata.md) | :heavy_check_mark: | N/A | +| `GetSubscriberNotificationsResponseDto` | [GetSubscriberNotificationsResponseDto](../../Models/Components/GetSubscriberNotificationsResponseDto.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerGetSubscriberPreferencesRequest.md b/docs/Models/Requests/SubscribersControllerGetSubscriberPreferencesRequest.md index a0f8cab9..6154008c 100644 --- a/docs/Models/Requests/SubscribersControllerGetSubscriberPreferencesRequest.md +++ b/docs/Models/Requests/SubscribersControllerGetSubscriberPreferencesRequest.md @@ -5,7 +5,7 @@ | Field | Type | Required | Description | Example | | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `SubscriberId` | *string* | :heavy_check_mark: | N/A | | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | | | `Criticality` | [Criticality](../../Models/Requests/Criticality.md) | :heavy_minus_sign: | N/A | | | `ContextKeys` | List<*string*> | :heavy_minus_sign: | Context keys for filtering preferences (e.g., ["tenant:acme"]) | [
"tenant:acme"
] | | `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerGetSubscriberRequest.md b/docs/Models/Requests/SubscribersControllerGetSubscriberRequest.md index f9ea3d58..edfb0d87 100644 --- a/docs/Models/Requests/SubscribersControllerGetSubscriberRequest.md +++ b/docs/Models/Requests/SubscribersControllerGetSubscriberRequest.md @@ -5,5 +5,5 @@ | Field | Type | Required | Description | | --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- | -| `SubscriberId` | *string* | :heavy_check_mark: | N/A | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | | `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerListSubscriberTopicsQueryParamOrderDirection.md b/docs/Models/Requests/SubscribersControllerListSubscriberTopicsQueryParamOrderDirection.md index 92ac5cff..aefceb8d 100644 --- a/docs/Models/Requests/SubscribersControllerListSubscriberTopicsQueryParamOrderDirection.md +++ b/docs/Models/Requests/SubscribersControllerListSubscriberTopicsQueryParamOrderDirection.md @@ -2,6 +2,14 @@ Direction of sorting +## Example Usage + +```csharp +using Novu.Models.Requests; + +var value = SubscribersControllerListSubscriberTopicsQueryParamOrderDirection.Asc; +``` + ## Values diff --git a/docs/Models/Requests/SubscribersControllerMarkAllNotificationsAsReadRequest.md b/docs/Models/Requests/SubscribersControllerMarkAllNotificationsAsReadRequest.md new file mode 100644 index 00000000..91e4f39c --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerMarkAllNotificationsAsReadRequest.md @@ -0,0 +1,10 @@ +# SubscribersControllerMarkAllNotificationsAsReadRequest + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | +| `UpdateAllSubscriberNotificationsDto` | [UpdateAllSubscriberNotificationsDto](../../Models/Components/UpdateAllSubscriberNotificationsDto.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerMarkAllNotificationsAsReadResponse.md b/docs/Models/Requests/SubscribersControllerMarkAllNotificationsAsReadResponse.md new file mode 100644 index 00000000..fc8813fd --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerMarkAllNotificationsAsReadResponse.md @@ -0,0 +1,9 @@ +# SubscribersControllerMarkAllNotificationsAsReadResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | +| `HttpMeta` | [HTTPMetadata](../../Models/Components/HTTPMetadata.md) | :heavy_check_mark: | N/A | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerMarkNotificationAsReadRequest.md b/docs/Models/Requests/SubscribersControllerMarkNotificationAsReadRequest.md new file mode 100644 index 00000000..abdbbd49 --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerMarkNotificationAsReadRequest.md @@ -0,0 +1,11 @@ +# SubscribersControllerMarkNotificationAsReadRequest + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | +| `NotificationId` | *string* | :heavy_check_mark: | The identifier of the notification | +| `ContextKeys` | List<*string*> | :heavy_minus_sign: | Context keys for filtering | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerMarkNotificationAsReadResponse.md b/docs/Models/Requests/SubscribersControllerMarkNotificationAsReadResponse.md new file mode 100644 index 00000000..38917bbe --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerMarkNotificationAsReadResponse.md @@ -0,0 +1,10 @@ +# SubscribersControllerMarkNotificationAsReadResponse + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `HttpMeta` | [HTTPMetadata](../../Models/Components/HTTPMetadata.md) | :heavy_check_mark: | N/A | +| `InboxNotificationDto` | [InboxNotificationDto](../../Models/Components/InboxNotificationDto.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerMarkNotificationAsUnreadRequest.md b/docs/Models/Requests/SubscribersControllerMarkNotificationAsUnreadRequest.md new file mode 100644 index 00000000..8d450b0c --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerMarkNotificationAsUnreadRequest.md @@ -0,0 +1,11 @@ +# SubscribersControllerMarkNotificationAsUnreadRequest + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | +| `NotificationId` | *string* | :heavy_check_mark: | The identifier of the notification | +| `ContextKeys` | List<*string*> | :heavy_minus_sign: | Context keys for filtering | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerMarkNotificationAsUnreadResponse.md b/docs/Models/Requests/SubscribersControllerMarkNotificationAsUnreadResponse.md new file mode 100644 index 00000000..c7ed4f8a --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerMarkNotificationAsUnreadResponse.md @@ -0,0 +1,10 @@ +# SubscribersControllerMarkNotificationAsUnreadResponse + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `HttpMeta` | [HTTPMetadata](../../Models/Components/HTTPMetadata.md) | :heavy_check_mark: | N/A | +| `InboxNotificationDto` | [InboxNotificationDto](../../Models/Components/InboxNotificationDto.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerMarkNotificationsAsSeenRequest.md b/docs/Models/Requests/SubscribersControllerMarkNotificationsAsSeenRequest.md new file mode 100644 index 00000000..3076afe9 --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerMarkNotificationsAsSeenRequest.md @@ -0,0 +1,10 @@ +# SubscribersControllerMarkNotificationsAsSeenRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | +| `MarkSubscriberNotificationsAsSeenDto` | [MarkSubscriberNotificationsAsSeenDto](../../Models/Components/MarkSubscriberNotificationsAsSeenDto.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerMarkNotificationsAsSeenResponse.md b/docs/Models/Requests/SubscribersControllerMarkNotificationsAsSeenResponse.md new file mode 100644 index 00000000..306a78da --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerMarkNotificationsAsSeenResponse.md @@ -0,0 +1,9 @@ +# SubscribersControllerMarkNotificationsAsSeenResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | +| `HttpMeta` | [HTTPMetadata](../../Models/Components/HTTPMetadata.md) | :heavy_check_mark: | N/A | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerPatchSubscriberRequest.md b/docs/Models/Requests/SubscribersControllerPatchSubscriberRequest.md index 162c7971..bf14d43e 100644 --- a/docs/Models/Requests/SubscribersControllerPatchSubscriberRequest.md +++ b/docs/Models/Requests/SubscribersControllerPatchSubscriberRequest.md @@ -5,6 +5,6 @@ | Field | Type | Required | Description | | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | -| `SubscriberId` | *string* | :heavy_check_mark: | N/A | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | | `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | | `PatchSubscriberRequestDto` | [PatchSubscriberRequestDto](../../Models/Components/PatchSubscriberRequestDto.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerRemoveSubscriberRequest.md b/docs/Models/Requests/SubscribersControllerRemoveSubscriberRequest.md index 90252436..c43062cb 100644 --- a/docs/Models/Requests/SubscribersControllerRemoveSubscriberRequest.md +++ b/docs/Models/Requests/SubscribersControllerRemoveSubscriberRequest.md @@ -5,5 +5,5 @@ | Field | Type | Required | Description | | --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- | -| `SubscriberId` | *string* | :heavy_check_mark: | N/A | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | | `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerRevertNotificationActionRequest.md b/docs/Models/Requests/SubscribersControllerRevertNotificationActionRequest.md new file mode 100644 index 00000000..7080696e --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerRevertNotificationActionRequest.md @@ -0,0 +1,12 @@ +# SubscribersControllerRevertNotificationActionRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | +| `NotificationId` | *string* | :heavy_check_mark: | The identifier of the notification | +| `ActionType` | [PathParamActionType](../../Models/Requests/PathParamActionType.md) | :heavy_check_mark: | The type of action (primary or secondary) | +| `ContextKeys` | List<*string*> | :heavy_minus_sign: | Context keys for filtering | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerRevertNotificationActionResponse.md b/docs/Models/Requests/SubscribersControllerRevertNotificationActionResponse.md new file mode 100644 index 00000000..6433c308 --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerRevertNotificationActionResponse.md @@ -0,0 +1,10 @@ +# SubscribersControllerRevertNotificationActionResponse + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `HttpMeta` | [HTTPMetadata](../../Models/Components/HTTPMetadata.md) | :heavy_check_mark: | N/A | +| `InboxNotificationDto` | [InboxNotificationDto](../../Models/Components/InboxNotificationDto.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerSnoozeNotificationRequest.md b/docs/Models/Requests/SubscribersControllerSnoozeNotificationRequest.md new file mode 100644 index 00000000..571d1644 --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerSnoozeNotificationRequest.md @@ -0,0 +1,12 @@ +# SubscribersControllerSnoozeNotificationRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | +| `NotificationId` | *string* | :heavy_check_mark: | The identifier of the notification | +| `ContextKeys` | List<*string*> | :heavy_minus_sign: | Context keys for filtering | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | +| `SnoozeSubscriberNotificationDto` | [SnoozeSubscriberNotificationDto](../../Models/Components/SnoozeSubscriberNotificationDto.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerSnoozeNotificationResponse.md b/docs/Models/Requests/SubscribersControllerSnoozeNotificationResponse.md new file mode 100644 index 00000000..c6325cfb --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerSnoozeNotificationResponse.md @@ -0,0 +1,10 @@ +# SubscribersControllerSnoozeNotificationResponse + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `HttpMeta` | [HTTPMetadata](../../Models/Components/HTTPMetadata.md) | :heavy_check_mark: | N/A | +| `InboxNotificationDto` | [InboxNotificationDto](../../Models/Components/InboxNotificationDto.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerUnarchiveNotificationRequest.md b/docs/Models/Requests/SubscribersControllerUnarchiveNotificationRequest.md new file mode 100644 index 00000000..1fa62c01 --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerUnarchiveNotificationRequest.md @@ -0,0 +1,11 @@ +# SubscribersControllerUnarchiveNotificationRequest + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | +| `NotificationId` | *string* | :heavy_check_mark: | The identifier of the notification | +| `ContextKeys` | List<*string*> | :heavy_minus_sign: | Context keys for filtering | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerUnarchiveNotificationResponse.md b/docs/Models/Requests/SubscribersControllerUnarchiveNotificationResponse.md new file mode 100644 index 00000000..3326e718 --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerUnarchiveNotificationResponse.md @@ -0,0 +1,10 @@ +# SubscribersControllerUnarchiveNotificationResponse + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `HttpMeta` | [HTTPMetadata](../../Models/Components/HTTPMetadata.md) | :heavy_check_mark: | N/A | +| `InboxNotificationDto` | [InboxNotificationDto](../../Models/Components/InboxNotificationDto.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerUnsnoozeNotificationRequest.md b/docs/Models/Requests/SubscribersControllerUnsnoozeNotificationRequest.md new file mode 100644 index 00000000..3e77ca42 --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerUnsnoozeNotificationRequest.md @@ -0,0 +1,11 @@ +# SubscribersControllerUnsnoozeNotificationRequest + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | +| `NotificationId` | *string* | :heavy_check_mark: | The identifier of the notification | +| `ContextKeys` | List<*string*> | :heavy_minus_sign: | Context keys for filtering | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerUnsnoozeNotificationResponse.md b/docs/Models/Requests/SubscribersControllerUnsnoozeNotificationResponse.md new file mode 100644 index 00000000..d52a2c4b --- /dev/null +++ b/docs/Models/Requests/SubscribersControllerUnsnoozeNotificationResponse.md @@ -0,0 +1,10 @@ +# SubscribersControllerUnsnoozeNotificationResponse + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `HttpMeta` | [HTTPMetadata](../../Models/Components/HTTPMetadata.md) | :heavy_check_mark: | N/A | +| `InboxNotificationDto` | [InboxNotificationDto](../../Models/Components/InboxNotificationDto.md) | :heavy_minus_sign: | OK | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/SubscribersControllerUpdateSubscriberPreferencesRequest.md b/docs/Models/Requests/SubscribersControllerUpdateSubscriberPreferencesRequest.md index ebc47062..4c47d18c 100644 --- a/docs/Models/Requests/SubscribersControllerUpdateSubscriberPreferencesRequest.md +++ b/docs/Models/Requests/SubscribersControllerUpdateSubscriberPreferencesRequest.md @@ -5,6 +5,6 @@ | Field | Type | Required | Description | | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | -| `SubscriberId` | *string* | :heavy_check_mark: | N/A | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | | `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | | `PatchSubscriberPreferencesDto` | [PatchSubscriberPreferencesDto](../../Models/Components/PatchSubscriberPreferencesDto.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/Models/Requests/TopicsControllerListTopicSubscriptionsQueryParamOrderDirection.md b/docs/Models/Requests/TopicsControllerListTopicSubscriptionsQueryParamOrderDirection.md index 315a9b30..ba50d95e 100644 --- a/docs/Models/Requests/TopicsControllerListTopicSubscriptionsQueryParamOrderDirection.md +++ b/docs/Models/Requests/TopicsControllerListTopicSubscriptionsQueryParamOrderDirection.md @@ -2,6 +2,14 @@ Direction of sorting +## Example Usage + +```csharp +using Novu.Models.Requests; + +var value = TopicsControllerListTopicSubscriptionsQueryParamOrderDirection.Asc; +``` + ## Values diff --git a/docs/Models/Requests/TopicsControllerListTopicsQueryParamOrderDirection.md b/docs/Models/Requests/TopicsControllerListTopicsQueryParamOrderDirection.md index 6bb880a6..b1e8e4eb 100644 --- a/docs/Models/Requests/TopicsControllerListTopicsQueryParamOrderDirection.md +++ b/docs/Models/Requests/TopicsControllerListTopicsQueryParamOrderDirection.md @@ -2,6 +2,14 @@ Direction of sorting +## Example Usage + +```csharp +using Novu.Models.Requests; + +var value = TopicsControllerListTopicsQueryParamOrderDirection.Asc; +``` + ## Values diff --git a/docs/Models/Requests/TranslationControllerDeleteTranslationEndpointPathParamResourceType.md b/docs/Models/Requests/TranslationControllerDeleteTranslationEndpointPathParamResourceType.md index c567f082..6af0f86c 100644 --- a/docs/Models/Requests/TranslationControllerDeleteTranslationEndpointPathParamResourceType.md +++ b/docs/Models/Requests/TranslationControllerDeleteTranslationEndpointPathParamResourceType.md @@ -2,6 +2,14 @@ Resource type +## Example Usage + +```csharp +using Novu.Models.Requests; + +var value = TranslationControllerDeleteTranslationEndpointPathParamResourceType.Workflow; +``` + ## Values diff --git a/docs/Models/Requests/TranslationControllerDeleteTranslationGroupEndpointPathParamResourceType.md b/docs/Models/Requests/TranslationControllerDeleteTranslationGroupEndpointPathParamResourceType.md index c800e7de..9a8ae3a3 100644 --- a/docs/Models/Requests/TranslationControllerDeleteTranslationGroupEndpointPathParamResourceType.md +++ b/docs/Models/Requests/TranslationControllerDeleteTranslationGroupEndpointPathParamResourceType.md @@ -2,6 +2,14 @@ Resource type +## Example Usage + +```csharp +using Novu.Models.Requests; + +var value = TranslationControllerDeleteTranslationGroupEndpointPathParamResourceType.Workflow; +``` + ## Values diff --git a/docs/Models/Requests/TranslationControllerGetTranslationGroupEndpointPathParamResourceType.md b/docs/Models/Requests/TranslationControllerGetTranslationGroupEndpointPathParamResourceType.md index 10a5e033..9496c36b 100644 --- a/docs/Models/Requests/TranslationControllerGetTranslationGroupEndpointPathParamResourceType.md +++ b/docs/Models/Requests/TranslationControllerGetTranslationGroupEndpointPathParamResourceType.md @@ -2,6 +2,14 @@ Resource type +## Example Usage + +```csharp +using Novu.Models.Requests; + +var value = TranslationControllerGetTranslationGroupEndpointPathParamResourceType.Workflow; +``` + ## Values diff --git a/docs/Models/Requests/WorkflowControllerGeneratePreviewRequest.md b/docs/Models/Requests/WorkflowControllerGeneratePreviewRequest.md new file mode 100644 index 00000000..8c98ddcf --- /dev/null +++ b/docs/Models/Requests/WorkflowControllerGeneratePreviewRequest.md @@ -0,0 +1,11 @@ +# WorkflowControllerGeneratePreviewRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `WorkflowId` | *string* | :heavy_check_mark: | N/A | +| `StepId` | *string* | :heavy_check_mark: | N/A | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | +| `GeneratePreviewRequestDto` | [GeneratePreviewRequestDto](../../Models/Components/GeneratePreviewRequestDto.md) | :heavy_check_mark: | Preview generation details | \ No newline at end of file diff --git a/docs/Models/Requests/WorkflowControllerGeneratePreviewResponse.md b/docs/Models/Requests/WorkflowControllerGeneratePreviewResponse.md new file mode 100644 index 00000000..0b36d798 --- /dev/null +++ b/docs/Models/Requests/WorkflowControllerGeneratePreviewResponse.md @@ -0,0 +1,10 @@ +# WorkflowControllerGeneratePreviewResponse + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `HttpMeta` | [HTTPMetadata](../../Models/Components/HTTPMetadata.md) | :heavy_check_mark: | N/A | +| `GeneratePreviewResponseDto` | [GeneratePreviewResponseDto](../../Models/Components/GeneratePreviewResponseDto.md) | :heavy_minus_sign: | Created | +| `Headers` | Dictionary> | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/sdks/activity/README.md b/docs/sdks/activity/README.md index ebeb7e54..62af29d7 100644 --- a/docs/sdks/activity/README.md +++ b/docs/sdks/activity/README.md @@ -4,7 +4,7 @@ ### Available Operations -* [Track](#track) - Track activity and engagement events +* [Track](#track) - Track provider activity and engagement events ## Track diff --git a/docs/sdks/environments/README.md b/docs/sdks/environments/README.md index 08ed7118..7cd64353 100644 --- a/docs/sdks/environments/README.md +++ b/docs/sdks/environments/README.md @@ -8,6 +8,8 @@ Environments allow you to manage different stages of your application developmen ### Available Operations * [GetTags](#gettags) - List environment tags +* [Diff](#diff) - Compare resources between environments +* [Publish](#publish) - Publish resources to target environment * [Create](#create) - Create an environment * [List](#list) - List all environments * [Update](#update) - Update an environment @@ -52,6 +54,103 @@ var res = await sdk.Environments.GetTagsAsync(environmentId: "6615943e7ace93b054 | Novu.Models.Errors.ErrorDto | 500 | application/json | | Novu.Models.Errors.APIException | 4XX, 5XX | \*/\* | +## Diff + +Compares workflows and other resources between the source and target environments, returning detailed diff information including additions, modifications, and deletions. + +### Example Usage + + +```csharp +using Novu; +using Novu.Models.Components; + +var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE"); + +var res = await sdk.Environments.DiffAsync( + targetEnvironmentId: "6615943e7ace93b0540ae377", + diffEnvironmentRequestDto: new DiffEnvironmentRequestDto() { + SourceEnvironmentId = "507f1f77bcf86cd799439011", + } +); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `TargetEnvironmentId` | *string* | :heavy_check_mark: | Target environment ID (MongoDB ObjectId) to compare against | 6615943e7ace93b0540ae377 | +| `DiffEnvironmentRequestDto` | [DiffEnvironmentRequestDto](../../Models/Components/DiffEnvironmentRequestDto.md) | :heavy_check_mark: | Diff request configuration | | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | | + +### Response + +**[EnvironmentsControllerDiffEnvironmentResponse](../../Models/Requests/EnvironmentsControllerDiffEnvironmentResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| Novu.Models.Errors.ErrorDto | 414 | application/json | +| Novu.Models.Errors.ErrorDto | 400, 401, 403, 404, 405, 409, 413, 415 | application/json | +| Novu.Models.Errors.ValidationErrorDto | 422 | application/json | +| Novu.Models.Errors.ErrorDto | 500 | application/json | +| Novu.Models.Errors.APIException | 4XX, 5XX | \*/\* | + +## Publish + +Publishes all workflows and resources from the source environment to the target environment. Optionally specify specific resources to publish or use dryRun mode to preview changes. + +### Example Usage + + +```csharp +using Novu; +using Novu.Models.Components; +using System.Collections.Generic; + +var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE"); + +var res = await sdk.Environments.PublishAsync( + targetEnvironmentId: "6615943e7ace93b0540ae377", + publishEnvironmentRequestDto: new PublishEnvironmentRequestDto() { + SourceEnvironmentId = "507f1f77bcf86cd799439011", + Resources = new List() { + new ResourceToPublishDto() { + ResourceType = ResourceTypeEnum.Regular, + ResourceId = "workflow-id-1", + }, + }, + } +); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| `TargetEnvironmentId` | *string* | :heavy_check_mark: | Target environment ID (MongoDB ObjectId) to publish resources to | 6615943e7ace93b0540ae377 | +| `PublishEnvironmentRequestDto` | [PublishEnvironmentRequestDto](../../Models/Components/PublishEnvironmentRequestDto.md) | :heavy_check_mark: | Publish request configuration | | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | | + +### Response + +**[EnvironmentsControllerPublishEnvironmentResponse](../../Models/Requests/EnvironmentsControllerPublishEnvironmentResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| Novu.Models.Errors.ErrorDto | 414 | application/json | +| Novu.Models.Errors.ErrorDto | 400, 401, 403, 404, 405, 409, 413, 415 | application/json | +| Novu.Models.Errors.ValidationErrorDto | 422 | application/json | +| Novu.Models.Errors.ErrorDto | 500 | application/json | +| Novu.Models.Errors.APIException | 4XX, 5XX | \*/\* | + ## Create Creates a new environment within the current organization. diff --git a/docs/sdks/environmentvariables/README.md b/docs/sdks/environmentvariables/README.md new file mode 100644 index 00000000..591eff30 --- /dev/null +++ b/docs/sdks/environmentvariables/README.md @@ -0,0 +1,252 @@ +# EnvironmentVariables + +## Overview + +### Available Operations + +* [List](#list) - List all variables +* [Create](#create) - Create a variable +* [Retrieve](#retrieve) - Get environment variable +* [Update](#update) - Update a variable +* [Delete](#delete) - Delete environment variable +* [Usage](#usage) - Retrieve a variable usage + +## List + +Returns all environment variables for the current organization. Secret values are masked. + +### Example Usage + + +```csharp +using Novu; +using Novu.Models.Components; + +var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE"); + +var res = await sdk.EnvironmentVariables.ListAsync(); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | +| `Search` | *string* | :heavy_minus_sign: | Filter variables by key (case-insensitive partial match) | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | + +### Response + +**[EnvironmentVariablesControllerListEnvironmentVariablesResponse](../../Models/Requests/EnvironmentVariablesControllerListEnvironmentVariablesResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| Novu.Models.Errors.ErrorDto | 414 | application/json | +| Novu.Models.Errors.ErrorDto | 400, 401, 403, 404, 405, 409, 413, 415 | application/json | +| Novu.Models.Errors.ValidationErrorDto | 422 | application/json | +| Novu.Models.Errors.ErrorDto | 500 | application/json | +| Novu.Models.Errors.APIException | 4XX, 5XX | \*/\* | + +## Create + +Creates a new environment variable. Keys must be uppercase with underscores only (e.g. BASE_URL). Secret variables are encrypted at rest and masked in API responses. + +### Example Usage + + +```csharp +using Novu; +using Novu.Models.Components; + +var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE"); + +var res = await sdk.EnvironmentVariables.CreateAsync(createEnvironmentVariableRequestDto: new CreateEnvironmentVariableRequestDto() { + Key = "", +}); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | +| `CreateEnvironmentVariableRequestDto` | [CreateEnvironmentVariableRequestDto](../../Models/Components/CreateEnvironmentVariableRequestDto.md) | :heavy_check_mark: | N/A | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | + +### Response + +**[EnvironmentVariablesControllerCreateEnvironmentVariableResponse](../../Models/Requests/EnvironmentVariablesControllerCreateEnvironmentVariableResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------- | ------------------------------------- | ------------------------------------- | +| Novu.Models.Errors.ErrorDto | 414 | application/json | +| Novu.Models.Errors.ErrorDto | 400, 401, 403, 404, 405, 413, 415 | application/json | +| Novu.Models.Errors.ValidationErrorDto | 422 | application/json | +| Novu.Models.Errors.ErrorDto | 500 | application/json | +| Novu.Models.Errors.APIException | 4XX, 5XX | \*/\* | + +## Retrieve + +Returns a single environment variable by key. Secret values are masked. + +### Example Usage + + +```csharp +using Novu; +using Novu.Models.Components; + +var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE"); + +var res = await sdk.EnvironmentVariables.RetrieveAsync(variableKey: "BASE_URL"); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `VariableKey` | *string* | :heavy_check_mark: | The unique key of the environment variable (e.g. BASE_URL) | BASE_URL | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | | + +### Response + +**[EnvironmentVariablesControllerGetEnvironmentVariableResponse](../../Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------- | ------------------------------------- | ------------------------------------- | +| Novu.Models.Errors.ErrorDto | 414 | application/json | +| Novu.Models.Errors.ErrorDto | 400, 401, 403, 405, 409, 413, 415 | application/json | +| Novu.Models.Errors.ValidationErrorDto | 422 | application/json | +| Novu.Models.Errors.ErrorDto | 500 | application/json | +| Novu.Models.Errors.APIException | 4XX, 5XX | \*/\* | + +## Update + +Updates an existing environment variable. Providing values replaces all existing per-environment values. + +### Example Usage + + +```csharp +using Novu; +using Novu.Models.Components; + +var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE"); + +var res = await sdk.EnvironmentVariables.UpdateAsync( + variableKey: "BASE_URL", + updateEnvironmentVariableRequestDto: new UpdateEnvironmentVariableRequestDto() {} +); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | +| `VariableKey` | *string* | :heavy_check_mark: | The unique key of the environment variable (e.g. BASE_URL) | BASE_URL | +| `UpdateEnvironmentVariableRequestDto` | [UpdateEnvironmentVariableRequestDto](../../Models/Components/UpdateEnvironmentVariableRequestDto.md) | :heavy_check_mark: | N/A | | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | | + +### Response + +**[EnvironmentVariablesControllerUpdateEnvironmentVariableResponse](../../Models/Requests/EnvironmentVariablesControllerUpdateEnvironmentVariableResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------- | ------------------------------------- | ------------------------------------- | +| Novu.Models.Errors.ErrorDto | 414 | application/json | +| Novu.Models.Errors.ErrorDto | 400, 401, 403, 405, 409, 413, 415 | application/json | +| Novu.Models.Errors.ValidationErrorDto | 422 | application/json | +| Novu.Models.Errors.ErrorDto | 500 | application/json | +| Novu.Models.Errors.APIException | 4XX, 5XX | \*/\* | + +## Delete + +Deletes an environment variable by key. + +### Example Usage + + +```csharp +using Novu; +using Novu.Models.Components; + +var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE"); + +var res = await sdk.EnvironmentVariables.DeleteAsync(variableKey: "BASE_URL"); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `VariableKey` | *string* | :heavy_check_mark: | The unique key of the environment variable (e.g. BASE_URL) | BASE_URL | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | | + +### Response + +**[EnvironmentVariablesControllerDeleteEnvironmentVariableResponse](../../Models/Requests/EnvironmentVariablesControllerDeleteEnvironmentVariableResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------- | ------------------------------------- | ------------------------------------- | +| Novu.Models.Errors.ErrorDto | 414 | application/json | +| Novu.Models.Errors.ErrorDto | 400, 401, 403, 405, 409, 413, 415 | application/json | +| Novu.Models.Errors.ValidationErrorDto | 422 | application/json | +| Novu.Models.Errors.ErrorDto | 500 | application/json | +| Novu.Models.Errors.APIException | 4XX, 5XX | \*/\* | + +## Usage + +Returns the workflows that reference this environment variable via `{{env.KEY}}` in their step controls. **variableId** is required. + +### Example Usage + + +```csharp +using Novu; +using Novu.Models.Components; + +var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE"); + +var res = await sdk.EnvironmentVariables.UsageAsync(variableKey: "BASE_URL"); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `VariableKey` | *string* | :heavy_check_mark: | The unique key of the environment variable (e.g. BASE_URL) | BASE_URL | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | | + +### Response + +**[EnvironmentVariablesControllerGetEnvironmentVariableUsageResponse](../../Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableUsageResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------- | ------------------------------------- | ------------------------------------- | +| Novu.Models.Errors.ErrorDto | 414 | application/json | +| Novu.Models.Errors.ErrorDto | 400, 401, 403, 405, 409, 413, 415 | application/json | +| Novu.Models.Errors.ValidationErrorDto | 422 | application/json | +| Novu.Models.Errors.ErrorDto | 500 | application/json | +| Novu.Models.Errors.APIException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/novunotifications/README.md b/docs/sdks/novunotifications/README.md new file mode 100644 index 00000000..3326a17a --- /dev/null +++ b/docs/sdks/novunotifications/README.md @@ -0,0 +1,730 @@ +# Subscribers.Notifications + +## Overview + +### Available Operations + +* [List](#list) - Retrieve subscriber notifications +* [Delete](#delete) - Delete a notification +* [CompleteAction](#completeaction) - Complete a notification action +* [RevertAction](#revertaction) - Revert a notification action +* [Archive](#archive) - Archive a notification +* [MarkAsRead](#markasread) - Mark a notification as read +* [Snooze](#snooze) - Snooze a notification +* [Unarchive](#unarchive) - Unarchive a notification +* [MarkAsUnread](#markasunread) - Mark a notification as unread +* [Unsnooze](#unsnooze) - Unsnooze a notification +* [ArchiveAll](#archiveall) - Archive all notifications +* [Count](#count) - Retrieve subscriber notifications count +* [DeleteAll](#deleteall) - Delete all notifications +* [MarkAllAsRead](#markallasread) - Mark all notifications as read +* [ArchiveAllRead](#archiveallread) - Archive all read notifications +* [MarkAsSeen](#markasseen) - Mark notifications as seen + +## List + +Retrieve in-app (inbox) notifications for a subscriber by its unique key identifier **subscriberId**. + Supports filtering by tags, read/archived/snoozed/seen state, data attributes, severity, date range, and context keys. + +### Example Usage + + +```csharp +using Novu; +using Novu.Models.Components; +using Novu.Models.Requests; + +var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE"); + +SubscribersControllerGetSubscriberNotificationsRequest req = new SubscribersControllerGetSubscriberNotificationsRequest() { + SubscriberId = "", + Offset = 0D, + CreatedGte = 1704067200000D, + CreatedLte = 1735689599999D, +}; + +var res = await sdk.Subscribers.Notifications.ListAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| `request` | [SubscribersControllerGetSubscriberNotificationsRequest](../../Models/Requests/SubscribersControllerGetSubscriberNotificationsRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[SubscribersControllerGetSubscriberNotificationsResponse](../../Models/Requests/SubscribersControllerGetSubscriberNotificationsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| Novu.Models.Errors.ErrorDto | 414 | application/json | +| Novu.Models.Errors.ErrorDto | 400, 401, 403, 404, 405, 409, 413, 415 | application/json | +| Novu.Models.Errors.ValidationErrorDto | 422 | application/json | +| Novu.Models.Errors.ErrorDto | 500 | application/json | +| Novu.Models.Errors.APIException | 4XX, 5XX | \*/\* | + +## Delete + +Delete a specific in-app (inbox) notification permanently by its unique identifier **notificationId**. + +### Example Usage + + +```csharp +using Novu; +using Novu.Models.Components; + +var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE"); + +var res = await sdk.Subscribers.Notifications.DeleteAsync( + subscriberId: "", + notificationId: "" +); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | +| `NotificationId` | *string* | :heavy_check_mark: | The identifier of the notification | +| `ContextKeys` | List<*string*> | :heavy_minus_sign: | Context keys for filtering | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | + +### Response + +**[SubscribersControllerDeleteNotificationResponse](../../Models/Requests/SubscribersControllerDeleteNotificationResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| Novu.Models.Errors.ErrorDto | 414 | application/json | +| Novu.Models.Errors.ErrorDto | 400, 401, 403, 404, 405, 409, 413, 415 | application/json | +| Novu.Models.Errors.ValidationErrorDto | 422 | application/json | +| Novu.Models.Errors.ErrorDto | 500 | application/json | +| Novu.Models.Errors.APIException | 4XX, 5XX | \*/\* | + +## CompleteAction + +Mark a single in-app (inbox) notification's action (primary or secondary) as completed by its unique identifier **notificationId** and action type **actionType**. + +### Example Usage + + +```csharp +using Novu; +using Novu.Models.Components; +using Novu.Models.Requests; + +var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE"); + +SubscribersControllerCompleteNotificationActionRequest req = new SubscribersControllerCompleteNotificationActionRequest() { + SubscriberId = "", + NotificationId = "", + ActionType = ActionType.Secondary, +}; + +var res = await sdk.Subscribers.Notifications.CompleteActionAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| `request` | [SubscribersControllerCompleteNotificationActionRequest](../../Models/Requests/SubscribersControllerCompleteNotificationActionRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[SubscribersControllerCompleteNotificationActionResponse](../../Models/Requests/SubscribersControllerCompleteNotificationActionResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| Novu.Models.Errors.ErrorDto | 414 | application/json | +| Novu.Models.Errors.ErrorDto | 400, 401, 403, 404, 405, 409, 413, 415 | application/json | +| Novu.Models.Errors.ValidationErrorDto | 422 | application/json | +| Novu.Models.Errors.ErrorDto | 500 | application/json | +| Novu.Models.Errors.APIException | 4XX, 5XX | \*/\* | + +## RevertAction + +Revert a single in-app (inbox) notification's action (primary or secondary) to pending state by its unique identifier **notificationId** and action type **actionType**. + +### Example Usage + + +```csharp +using Novu; +using Novu.Models.Components; +using Novu.Models.Requests; + +var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE"); + +SubscribersControllerRevertNotificationActionRequest req = new SubscribersControllerRevertNotificationActionRequest() { + SubscriberId = "", + NotificationId = "", + ActionType = PathParamActionType.Primary, +}; + +var res = await sdk.Subscribers.Notifications.RevertActionAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | +| `request` | [SubscribersControllerRevertNotificationActionRequest](../../Models/Requests/SubscribersControllerRevertNotificationActionRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[SubscribersControllerRevertNotificationActionResponse](../../Models/Requests/SubscribersControllerRevertNotificationActionResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| Novu.Models.Errors.ErrorDto | 414 | application/json | +| Novu.Models.Errors.ErrorDto | 400, 401, 403, 404, 405, 409, 413, 415 | application/json | +| Novu.Models.Errors.ValidationErrorDto | 422 | application/json | +| Novu.Models.Errors.ErrorDto | 500 | application/json | +| Novu.Models.Errors.APIException | 4XX, 5XX | \*/\* | + +## Archive + +Archive a specific in-app (inbox) notification by its unique identifier **notificationId**. + +### Example Usage + + +```csharp +using Novu; +using Novu.Models.Components; + +var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE"); + +var res = await sdk.Subscribers.Notifications.ArchiveAsync( + subscriberId: "", + notificationId: "" +); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | +| `NotificationId` | *string* | :heavy_check_mark: | The identifier of the notification | +| `ContextKeys` | List<*string*> | :heavy_minus_sign: | Context keys for filtering | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | + +### Response + +**[SubscribersControllerArchiveNotificationResponse](../../Models/Requests/SubscribersControllerArchiveNotificationResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| Novu.Models.Errors.ErrorDto | 414 | application/json | +| Novu.Models.Errors.ErrorDto | 400, 401, 403, 404, 405, 409, 413, 415 | application/json | +| Novu.Models.Errors.ValidationErrorDto | 422 | application/json | +| Novu.Models.Errors.ErrorDto | 500 | application/json | +| Novu.Models.Errors.APIException | 4XX, 5XX | \*/\* | + +## MarkAsRead + +Mark a specific in-app (inbox) notification as read by its unique identifier **notificationId**. + +### Example Usage + + +```csharp +using Novu; +using Novu.Models.Components; + +var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE"); + +var res = await sdk.Subscribers.Notifications.MarkAsReadAsync( + subscriberId: "", + notificationId: "" +); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | +| `NotificationId` | *string* | :heavy_check_mark: | The identifier of the notification | +| `ContextKeys` | List<*string*> | :heavy_minus_sign: | Context keys for filtering | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | + +### Response + +**[SubscribersControllerMarkNotificationAsReadResponse](../../Models/Requests/SubscribersControllerMarkNotificationAsReadResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| Novu.Models.Errors.ErrorDto | 414 | application/json | +| Novu.Models.Errors.ErrorDto | 400, 401, 403, 404, 405, 409, 413, 415 | application/json | +| Novu.Models.Errors.ValidationErrorDto | 422 | application/json | +| Novu.Models.Errors.ErrorDto | 500 | application/json | +| Novu.Models.Errors.APIException | 4XX, 5XX | \*/\* | + +## Snooze + +Snooze a specific in-app (inbox) notification by its unique identifier **notificationId** until a specified time. + +### Example Usage + + +```csharp +using Novu; +using Novu.Models.Components; +using Novu.Models.Requests; +using System; + +var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE"); + +SubscribersControllerSnoozeNotificationRequest req = new SubscribersControllerSnoozeNotificationRequest() { + SubscriberId = "", + NotificationId = "", + SnoozeSubscriberNotificationDto = new SnoozeSubscriberNotificationDto() { + SnoozeUntil = System.DateTime.Parse("2026-03-01T10:00:00Z").ToUniversalTime(), + }, +}; + +var res = await sdk.Subscribers.Notifications.SnoozeAsync(req); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | +| `request` | [SubscribersControllerSnoozeNotificationRequest](../../Models/Requests/SubscribersControllerSnoozeNotificationRequest.md) | :heavy_check_mark: | The request object to use for the request. | + +### Response + +**[SubscribersControllerSnoozeNotificationResponse](../../Models/Requests/SubscribersControllerSnoozeNotificationResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| Novu.Models.Errors.ErrorDto | 414 | application/json | +| Novu.Models.Errors.ErrorDto | 400, 401, 403, 404, 405, 409, 413, 415 | application/json | +| Novu.Models.Errors.ValidationErrorDto | 422 | application/json | +| Novu.Models.Errors.ErrorDto | 500 | application/json | +| Novu.Models.Errors.APIException | 4XX, 5XX | \*/\* | + +## Unarchive + +Unarchive a specific in-app (inbox) notification by its unique identifier **notificationId**. + +### Example Usage + + +```csharp +using Novu; +using Novu.Models.Components; + +var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE"); + +var res = await sdk.Subscribers.Notifications.UnarchiveAsync( + subscriberId: "", + notificationId: "" +); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | +| `NotificationId` | *string* | :heavy_check_mark: | The identifier of the notification | +| `ContextKeys` | List<*string*> | :heavy_minus_sign: | Context keys for filtering | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | + +### Response + +**[SubscribersControllerUnarchiveNotificationResponse](../../Models/Requests/SubscribersControllerUnarchiveNotificationResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| Novu.Models.Errors.ErrorDto | 414 | application/json | +| Novu.Models.Errors.ErrorDto | 400, 401, 403, 404, 405, 409, 413, 415 | application/json | +| Novu.Models.Errors.ValidationErrorDto | 422 | application/json | +| Novu.Models.Errors.ErrorDto | 500 | application/json | +| Novu.Models.Errors.APIException | 4XX, 5XX | \*/\* | + +## MarkAsUnread + +Mark a specific in-app (inbox) notification as unread by its unique identifier **notificationId**. + +### Example Usage + + +```csharp +using Novu; +using Novu.Models.Components; + +var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE"); + +var res = await sdk.Subscribers.Notifications.MarkAsUnreadAsync( + subscriberId: "", + notificationId: "" +); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | +| `NotificationId` | *string* | :heavy_check_mark: | The identifier of the notification | +| `ContextKeys` | List<*string*> | :heavy_minus_sign: | Context keys for filtering | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | + +### Response + +**[SubscribersControllerMarkNotificationAsUnreadResponse](../../Models/Requests/SubscribersControllerMarkNotificationAsUnreadResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| Novu.Models.Errors.ErrorDto | 414 | application/json | +| Novu.Models.Errors.ErrorDto | 400, 401, 403, 404, 405, 409, 413, 415 | application/json | +| Novu.Models.Errors.ValidationErrorDto | 422 | application/json | +| Novu.Models.Errors.ErrorDto | 500 | application/json | +| Novu.Models.Errors.APIException | 4XX, 5XX | \*/\* | + +## Unsnooze + +Unsnooze a specific in-app (inbox) notification by its unique identifier **notificationId**. + +### Example Usage + + +```csharp +using Novu; +using Novu.Models.Components; + +var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE"); + +var res = await sdk.Subscribers.Notifications.UnsnoozeAsync( + subscriberId: "", + notificationId: "" +); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | +| `NotificationId` | *string* | :heavy_check_mark: | The identifier of the notification | +| `ContextKeys` | List<*string*> | :heavy_minus_sign: | Context keys for filtering | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | + +### Response + +**[SubscribersControllerUnsnoozeNotificationResponse](../../Models/Requests/SubscribersControllerUnsnoozeNotificationResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| Novu.Models.Errors.ErrorDto | 414 | application/json | +| Novu.Models.Errors.ErrorDto | 400, 401, 403, 404, 405, 409, 413, 415 | application/json | +| Novu.Models.Errors.ValidationErrorDto | 422 | application/json | +| Novu.Models.Errors.ErrorDto | 500 | application/json | +| Novu.Models.Errors.APIException | 4XX, 5XX | \*/\* | + +## ArchiveAll + +Archive all in-app (inbox) notifications matching the specified filters. Supports context-based filtering. + +### Example Usage + + +```csharp +using Novu; +using Novu.Models.Components; + +var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE"); + +var res = await sdk.Subscribers.Notifications.ArchiveAllAsync( + subscriberId: "", + updateAllSubscriberNotificationsDto: new UpdateAllSubscriberNotificationsDto() {} +); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | +| `UpdateAllSubscriberNotificationsDto` | [UpdateAllSubscriberNotificationsDto](../../Models/Components/UpdateAllSubscriberNotificationsDto.md) | :heavy_check_mark: | N/A | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | + +### Response + +**[SubscribersControllerArchiveAllNotificationsResponse](../../Models/Requests/SubscribersControllerArchiveAllNotificationsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| Novu.Models.Errors.ErrorDto | 414 | application/json | +| Novu.Models.Errors.ErrorDto | 400, 401, 403, 404, 405, 409, 413, 415 | application/json | +| Novu.Models.Errors.ValidationErrorDto | 422 | application/json | +| Novu.Models.Errors.ErrorDto | 500 | application/json | +| Novu.Models.Errors.APIException | 4XX, 5XX | \*/\* | + +## Count + +Retrieve count of in-app (inbox) notifications for a subscriber by its unique key identifier **subscriberId**. + Supports multiple filters to count in-app (inbox) notifications by different criteria, including context keys. + +### Example Usage + + +```csharp +using Novu; +using Novu.Models.Components; + +var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE"); + +var res = await sdk.Subscribers.Notifications.CountAsync( + subscriberId: "", + filters: "[{\"read\":false,\"archived\":false},{\"tags\":[\"important\"]},{\"tags\":{\"and\":[{\"or\":[\"a\",\"b\"]},{\"or\":[\"c\"]}]}}]" +); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | | +| `Filters` | *string* | :heavy_check_mark: | Array of filter objects (max 30) to count notifications by different criteria | [{"read":false,"archived":false},{"tags":["important"]},{"tags":{"and":[{"or":["a","b"]},{"or":["c"]}]}}] | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | | + +### Response + +**[SubscribersControllerGetSubscriberNotificationsCountResponse](../../Models/Requests/SubscribersControllerGetSubscriberNotificationsCountResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| Novu.Models.Errors.ErrorDto | 414 | application/json | +| Novu.Models.Errors.ErrorDto | 400, 401, 403, 404, 405, 409, 413, 415 | application/json | +| Novu.Models.Errors.ValidationErrorDto | 422 | application/json | +| Novu.Models.Errors.ErrorDto | 500 | application/json | +| Novu.Models.Errors.APIException | 4XX, 5XX | \*/\* | + +## DeleteAll + +Permanently delete all in-app (inbox) notifications matching the specified filters. Supports context-based filtering. + +### Example Usage + + +```csharp +using Novu; +using Novu.Models.Components; + +var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE"); + +var res = await sdk.Subscribers.Notifications.DeleteAllAsync( + subscriberId: "", + updateAllSubscriberNotificationsDto: new UpdateAllSubscriberNotificationsDto() {} +); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | +| `UpdateAllSubscriberNotificationsDto` | [UpdateAllSubscriberNotificationsDto](../../Models/Components/UpdateAllSubscriberNotificationsDto.md) | :heavy_check_mark: | N/A | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | + +### Response + +**[SubscribersControllerDeleteAllNotificationsResponse](../../Models/Requests/SubscribersControllerDeleteAllNotificationsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| Novu.Models.Errors.ErrorDto | 414 | application/json | +| Novu.Models.Errors.ErrorDto | 400, 401, 403, 404, 405, 409, 413, 415 | application/json | +| Novu.Models.Errors.ValidationErrorDto | 422 | application/json | +| Novu.Models.Errors.ErrorDto | 500 | application/json | +| Novu.Models.Errors.APIException | 4XX, 5XX | \*/\* | + +## MarkAllAsRead + +Mark all in-app (inbox) notifications matching the specified filters as read. Supports context-based filtering. + +### Example Usage + + +```csharp +using Novu; +using Novu.Models.Components; + +var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE"); + +var res = await sdk.Subscribers.Notifications.MarkAllAsReadAsync( + subscriberId: "", + updateAllSubscriberNotificationsDto: new UpdateAllSubscriberNotificationsDto() {} +); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | +| `UpdateAllSubscriberNotificationsDto` | [UpdateAllSubscriberNotificationsDto](../../Models/Components/UpdateAllSubscriberNotificationsDto.md) | :heavy_check_mark: | N/A | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | + +### Response + +**[SubscribersControllerMarkAllNotificationsAsReadResponse](../../Models/Requests/SubscribersControllerMarkAllNotificationsAsReadResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| Novu.Models.Errors.ErrorDto | 414 | application/json | +| Novu.Models.Errors.ErrorDto | 400, 401, 403, 404, 405, 409, 413, 415 | application/json | +| Novu.Models.Errors.ValidationErrorDto | 422 | application/json | +| Novu.Models.Errors.ErrorDto | 500 | application/json | +| Novu.Models.Errors.APIException | 4XX, 5XX | \*/\* | + +## ArchiveAllRead + +Archive all read in-app (inbox) notifications matching the specified filters. Supports context-based filtering. + +### Example Usage + + +```csharp +using Novu; +using Novu.Models.Components; + +var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE"); + +var res = await sdk.Subscribers.Notifications.ArchiveAllReadAsync( + subscriberId: "", + updateAllSubscriberNotificationsDto: new UpdateAllSubscriberNotificationsDto() {} +); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | +| `UpdateAllSubscriberNotificationsDto` | [UpdateAllSubscriberNotificationsDto](../../Models/Components/UpdateAllSubscriberNotificationsDto.md) | :heavy_check_mark: | N/A | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | + +### Response + +**[SubscribersControllerArchiveAllReadNotificationsResponse](../../Models/Requests/SubscribersControllerArchiveAllReadNotificationsResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| Novu.Models.Errors.ErrorDto | 414 | application/json | +| Novu.Models.Errors.ErrorDto | 400, 401, 403, 404, 405, 409, 413, 415 | application/json | +| Novu.Models.Errors.ValidationErrorDto | 422 | application/json | +| Novu.Models.Errors.ErrorDto | 500 | application/json | +| Novu.Models.Errors.APIException | 4XX, 5XX | \*/\* | + +## MarkAsSeen + +Mark specific and multiple in-app (inbox) notifications as seen. Supports context-based filtering. + +### Example Usage + + +```csharp +using Novu; +using Novu.Models.Components; + +var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE"); + +var res = await sdk.Subscribers.Notifications.MarkAsSeenAsync( + subscriberId: "", + markSubscriberNotificationsAsSeenDto: new MarkSubscriberNotificationsAsSeenDto() {} +); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | +| `MarkSubscriberNotificationsAsSeenDto` | [MarkSubscriberNotificationsAsSeenDto](../../Models/Components/MarkSubscriberNotificationsAsSeenDto.md) | :heavy_check_mark: | N/A | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | + +### Response + +**[SubscribersControllerMarkNotificationsAsSeenResponse](../../Models/Requests/SubscribersControllerMarkNotificationsAsSeenResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| Novu.Models.Errors.ErrorDto | 414 | application/json | +| Novu.Models.Errors.ErrorDto | 400, 401, 403, 404, 405, 409, 413, 415 | application/json | +| Novu.Models.Errors.ValidationErrorDto | 422 | application/json | +| Novu.Models.Errors.ErrorDto | 500 | application/json | +| Novu.Models.Errors.APIException | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/preferences/README.md b/docs/sdks/preferences/README.md index 8aadafc0..8209de97 100644 --- a/docs/sdks/preferences/README.md +++ b/docs/sdks/preferences/README.md @@ -40,7 +40,7 @@ var res = await sdk.Subscribers.Preferences.BulkUpdateAsync( | Parameter | Type | Required | Description | | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | -| `SubscriberId` | *string* | :heavy_check_mark: | N/A | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | | `BulkUpdateSubscriberPreferencesDto` | [BulkUpdateSubscriberPreferencesDto](../../Models/Components/BulkUpdateSubscriberPreferencesDto.md) | :heavy_check_mark: | N/A | | `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | diff --git a/docs/sdks/steps/README.md b/docs/sdks/steps/README.md index 53fb75a6..4035d464 100644 --- a/docs/sdks/steps/README.md +++ b/docs/sdks/steps/README.md @@ -4,8 +4,85 @@ ### Available Operations +* [GeneratePreview](#generatepreview) - Generate a step preview * [Retrieve](#retrieve) - Retrieve workflow step +## GeneratePreview + +Generates a preview for a specific workflow step by its unique identifier **stepId** + +### Example Usage + + +```csharp +using Novu; +using Novu.Models.Components; +using System.Collections.Generic; + +var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE"); + +var res = await sdk.Workflows.Steps.GeneratePreviewAsync( + workflowId: "", + stepId: "", + generatePreviewRequestDto: new GeneratePreviewRequestDto() { + PreviewPayload = new PreviewPayloadDto() { + Subscriber = new SubscriberResponseDtoOptional() { + Channels = new List() { + new ChannelSettingsDto() { + ProviderId = ChatOrPushProviderEnum.NovuSlack, + Credentials = new ChannelCredentials() { + WebhookUrl = "https://example.com/webhook", + Channel = "general", + DeviceTokens = new List() { + "token1", + "token2", + "token3", + }, + AlertUid = "12345-abcde", + Title = "Critical Alert", + ImageUrl = "https://example.com/image.png", + State = "resolved", + ExternalUrl = "https://example.com/details", + }, + IntegrationId = "", + }, + }, + }, + Context = new Dictionary() { + { "key", PreviewPayloadDtoContext.CreateStr( + "org-acme" + ) }, + }, + }, + } +); + +// handle response +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `WorkflowId` | *string* | :heavy_check_mark: | N/A | +| `StepId` | *string* | :heavy_check_mark: | N/A | +| `GeneratePreviewRequestDto` | [GeneratePreviewRequestDto](../../Models/Components/GeneratePreviewRequestDto.md) | :heavy_check_mark: | Preview generation details | +| `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | + +### Response + +**[WorkflowControllerGeneratePreviewResponse](../../Models/Requests/WorkflowControllerGeneratePreviewResponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| Novu.Models.Errors.ErrorDto | 414 | application/json | +| Novu.Models.Errors.ErrorDto | 400, 401, 403, 404, 405, 409, 413, 415 | application/json | +| Novu.Models.Errors.ValidationErrorDto | 422 | application/json | +| Novu.Models.Errors.ErrorDto | 500 | application/json | +| Novu.Models.Errors.APIException | 4XX, 5XX | \*/\* | + ## Retrieve Retrieves data for a specific step in a workflow diff --git a/docs/sdks/subscribers/README.md b/docs/sdks/subscribers/README.md index ee72f031..a5a772b8 100644 --- a/docs/sdks/subscribers/README.md +++ b/docs/sdks/subscribers/README.md @@ -136,7 +136,7 @@ var res = await sdk.Subscribers.RetrieveAsync(subscriberId: ""); | Parameter | Type | Required | Description | | --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- | -| `SubscriberId` | *string* | :heavy_check_mark: | N/A | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | | `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | ### Response @@ -187,7 +187,7 @@ var res = await sdk.Subscribers.PatchAsync( | Parameter | Type | Required | Description | | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | -| `SubscriberId` | *string* | :heavy_check_mark: | N/A | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | | `PatchSubscriberRequestDto` | [PatchSubscriberRequestDto](../../Models/Components/PatchSubscriberRequestDto.md) | :heavy_check_mark: | N/A | | `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | @@ -228,7 +228,7 @@ var res = await sdk.Subscribers.DeleteAsync(subscriberId: ""); | Parameter | Type | Required | Description | | --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- | -| `SubscriberId` | *string* | :heavy_check_mark: | N/A | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | | `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | ### Response diff --git a/docs/sdks/subscriberspreferences/README.md b/docs/sdks/subscriberspreferences/README.md index fb5a678e..6b7ed185 100644 --- a/docs/sdks/subscriberspreferences/README.md +++ b/docs/sdks/subscriberspreferences/README.md @@ -38,7 +38,7 @@ var res = await sdk.SubscribersPreferences.ListAsync( | Parameter | Type | Required | Description | Example | | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `SubscriberId` | *string* | :heavy_check_mark: | N/A | | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | | | `Criticality` | [Criticality](../../Models/Requests/Criticality.md) | :heavy_minus_sign: | N/A | | | `ContextKeys` | List<*string*> | :heavy_minus_sign: | Context keys for filtering preferences (e.g., ["tenant:acme"]) | [
"tenant:acme"
] | | `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | | @@ -159,7 +159,7 @@ var res = await sdk.SubscribersPreferences.UpdateAsync( | Parameter | Type | Required | Description | | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | -| `SubscriberId` | *string* | :heavy_check_mark: | N/A | +| `SubscriberId` | *string* | :heavy_check_mark: | The identifier of the subscriber | | `PatchSubscriberPreferencesDto` | [PatchSubscriberPreferencesDto](../../Models/Components/PatchSubscriberPreferencesDto.md) | :heavy_check_mark: | N/A | | `IdempotencyKey` | *string* | :heavy_minus_sign: | A header for idempotency purposes | diff --git a/docs/sdks/translations/README.md b/docs/sdks/translations/README.md index 6de57229..63e7531b 100644 --- a/docs/sdks/translations/README.md +++ b/docs/sdks/translations/README.md @@ -3,7 +3,7 @@ ## Overview Used to localize your notifications to different languages. - + ### Available Operations diff --git a/src/Novu/Activity.cs b/src/Novu/Activity.cs index 8f4e4d47..24892d15 100644 --- a/src/Novu/Activity.cs +++ b/src/Novu/Activity.cs @@ -25,7 +25,7 @@ namespace Novu public interface IActivity { /// - /// Track activity and engagement events. + /// Track provider activity and engagement events. /// /// /// Track activity and engagement events for a specific delivery provider. @@ -63,7 +63,7 @@ public Activity(SDKConfig config) } /// - /// Track activity and engagement events. + /// Track provider activity and engagement events. /// /// /// Track activity and engagement events for a specific delivery provider. @@ -105,6 +105,11 @@ public async Task TrackAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "RequestBody", "json", false, false); if (serializedBody != null) { diff --git a/src/Novu/ChannelConnections.cs b/src/Novu/ChannelConnections.cs index aaef8b41..91b242f3 100644 --- a/src/Novu/ChannelConnections.cs +++ b/src/Novu/ChannelConnections.cs @@ -173,6 +173,11 @@ public async Task L httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); @@ -418,6 +423,11 @@ public async Task httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "CreateChannelConnectionRequestDto", "json", false, false); if (serializedBody != null) { @@ -669,6 +679,11 @@ public async Task httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "UpdateChannelConnectionRequestDto", "json", false, false); if (serializedBody != null) { @@ -1169,6 +1189,11 @@ public async Task httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); diff --git a/src/Novu/ChannelEndpoints.cs b/src/Novu/ChannelEndpoints.cs index 8724910d..34d5a87b 100644 --- a/src/Novu/ChannelEndpoints.cs +++ b/src/Novu/ChannelEndpoints.cs @@ -28,7 +28,8 @@ public interface IChannelEndpoints /// List all channel endpoints. /// /// - /// List all channel endpoints for a resource based on query filters. + /// List all channel endpoints for a resource based on query filters.
+ /// This operation requires either or to be set in the security parameter when initializing the SDK. ///
/// A parameter. /// The retry configuration to use for this operation. @@ -47,7 +48,8 @@ public Task ListAsync( /// Create a channel endpoint. /// /// - /// Create a new channel endpoint for a resource. + /// Create a new channel endpoint for a resource.
+ /// This operation requires either or to be set in the security parameter when initializing the SDK. ///
/// Channel endpoint creation request. The structure varies based on the type field. /// A header for idempotency purposes. @@ -69,7 +71,8 @@ public Task CreateAsyn /// Retrieve a channel endpoint. /// /// - /// Retrieve a specific channel endpoint by its unique identifier. + /// Retrieve a specific channel endpoint by its unique identifier.
+ /// This operation requires either or to be set in the security parameter when initializing the SDK. ///
/// The unique identifier of the channel endpoint. /// A header for idempotency purposes. @@ -91,7 +94,8 @@ public Task RetrieveAsync /// Update a channel endpoint. /// /// - /// Update an existing channel endpoint by its unique identifier. + /// Update an existing channel endpoint by its unique identifier.
+ /// This operation requires either or to be set in the security parameter when initializing the SDK. ///
/// The unique identifier of the channel endpoint. /// A parameter. @@ -115,7 +119,8 @@ public Task UpdateAsyn /// Delete a channel endpoint. /// /// - /// Delete a specific channel endpoint by its unique identifier. + /// Delete a specific channel endpoint by its unique identifier.
+ /// This operation requires either or to be set in the security parameter when initializing the SDK. ///
/// The unique identifier of the channel endpoint. /// A header for idempotency purposes. @@ -151,7 +156,8 @@ public ChannelEndpoints(SDKConfig config) /// List all channel endpoints. /// /// - /// List all channel endpoints for a resource based on query filters. + /// List all channel endpoints for a resource based on query filters.
+ /// This operation requires either or to be set in the security parameter when initializing the SDK. ///
/// A parameter. /// The retry configuration to use for this operation. @@ -173,9 +179,14 @@ public async Task ListA httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource, new string[] { "SecretKey", "SecretKey" }).Apply(httpRequest); } var hookCtx = new HookContext(SDKConfiguration, baseUrl, "ChannelEndpointsController_listChannelEndpoints", null, SDKConfiguration.SecuritySource); @@ -385,7 +396,8 @@ public async Task ListA /// Create a channel endpoint. /// /// - /// Create a new channel endpoint for a resource. + /// Create a new channel endpoint for a resource.
+ /// This operation requires either or to be set in the security parameter when initializing the SDK. ///
/// Channel endpoint creation request. The structure varies based on the type field. /// A header for idempotency purposes. @@ -418,6 +430,11 @@ public async Task Crea httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "RequestBody", "json", false, false); if (serializedBody != null) { @@ -426,7 +443,7 @@ public async Task Crea if (SDKConfiguration.SecuritySource != null) { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource, new string[] { "SecretKey", "SecretKey" }).Apply(httpRequest); } var hookCtx = new HookContext(SDKConfiguration, baseUrl, "ChannelEndpointsController_createChannelEndpoint", null, SDKConfiguration.SecuritySource); @@ -636,7 +653,8 @@ public async Task Crea /// Retrieve a channel endpoint. /// /// - /// Retrieve a specific channel endpoint by its unique identifier. + /// Retrieve a specific channel endpoint by its unique identifier.
+ /// This operation requires either or to be set in the security parameter when initializing the SDK. ///
/// The unique identifier of the channel endpoint. /// A header for idempotency purposes. @@ -669,9 +687,14 @@ public async Task Retriev httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource, new string[] { "SecretKey", "SecretKey" }).Apply(httpRequest); } var hookCtx = new HookContext(SDKConfiguration, baseUrl, "ChannelEndpointsController_getChannelEndpoint", null, SDKConfiguration.SecuritySource); @@ -881,7 +904,8 @@ public async Task Retriev /// Update a channel endpoint. /// /// - /// Update an existing channel endpoint by its unique identifier. + /// Update an existing channel endpoint by its unique identifier.
+ /// This operation requires either or to be set in the security parameter when initializing the SDK. ///
/// The unique identifier of the channel endpoint. /// A parameter. @@ -918,6 +942,11 @@ public async Task Upda httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "UpdateChannelEndpointRequestDto", "json", false, false); if (serializedBody != null) { @@ -926,7 +955,7 @@ public async Task Upda if (SDKConfiguration.SecuritySource != null) { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource, new string[] { "SecretKey", "SecretKey" }).Apply(httpRequest); } var hookCtx = new HookContext(SDKConfiguration, baseUrl, "ChannelEndpointsController_updateChannelEndpoint", null, SDKConfiguration.SecuritySource); @@ -1136,7 +1165,8 @@ public async Task Upda /// Delete a channel endpoint. /// /// - /// Delete a specific channel endpoint by its unique identifier. + /// Delete a specific channel endpoint by its unique identifier.
+ /// This operation requires either or to be set in the security parameter when initializing the SDK. ///
/// The unique identifier of the channel endpoint. /// A header for idempotency purposes. @@ -1169,9 +1199,14 @@ public async Task Dele httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource, new string[] { "SecretKey", "SecretKey" }).Apply(httpRequest); } var hookCtx = new HookContext(SDKConfiguration, baseUrl, "ChannelEndpointsController_deleteChannelEndpoint", null, SDKConfiguration.SecuritySource); diff --git a/src/Novu/Contexts.cs b/src/Novu/Contexts.cs index ebda5466..65a78635 100644 --- a/src/Novu/Contexts.cs +++ b/src/Novu/Contexts.cs @@ -205,6 +205,11 @@ public async Task CreateAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "CreateContextRequestDto", "json", false, false); if (serializedBody != null) { @@ -450,6 +455,11 @@ public async Task ListAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); @@ -705,6 +715,11 @@ public async Task UpdateAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "UpdateContextRequestDto", "json", false, false); if (serializedBody != null) { @@ -961,6 +976,11 @@ public async Task RetrieveAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); @@ -1211,6 +1231,11 @@ public async Task DeleteAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); diff --git a/src/Novu/EnvironmentVariables.cs b/src/Novu/EnvironmentVariables.cs new file mode 100644 index 00000000..6c1e25b6 --- /dev/null +++ b/src/Novu/EnvironmentVariables.cs @@ -0,0 +1,1669 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu +{ + using Newtonsoft.Json; + using Novu.Hooks; + using Novu.Models.Components; + using Novu.Models.Errors; + using Novu.Models.Requests; + using Novu.Utils; + using Novu.Utils.Retries; + using System; + using System.Collections.Generic; + using System.Net.Http; + using System.Net.Http.Headers; + using System.Threading.Tasks; + + public interface IEnvironmentVariables + { + /// + /// List all variables. + /// + /// + /// Returns all environment variables for the current organization. Secret values are masked. + /// + /// Filter variables by key (case-insensitive partial match). + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public Task ListAsync( + string? search = null, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ); + + /// + /// Create a variable. + /// + /// + /// Creates a new environment variable. Keys must be uppercase with underscores only (e.g. BASE_URL). Secret variables are encrypted at rest and masked in API responses. + /// + /// A parameter. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// The required parameter is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public Task CreateAsync( + CreateEnvironmentVariableRequestDto createEnvironmentVariableRequestDto, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ); + + /// + /// Get environment variable. + /// + /// + /// Returns a single environment variable by key. Secret values are masked. + /// + /// The unique key of the environment variable (e.g. BASE_URL). + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// The required parameter is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public Task RetrieveAsync( + string variableKey, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ); + + /// + /// Update a variable. + /// + /// + /// Updates an existing environment variable. Providing values replaces all existing per-environment values. + /// + /// The unique key of the environment variable (e.g. BASE_URL). + /// A parameter. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public Task UpdateAsync( + string variableKey, + UpdateEnvironmentVariableRequestDto updateEnvironmentVariableRequestDto, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ); + + /// + /// Delete environment variable. + /// + /// + /// Deletes an environment variable by key. + /// + /// The unique key of the environment variable (e.g. BASE_URL). + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// The required parameter is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public Task DeleteAsync( + string variableKey, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ); + + /// + /// Retrieve a variable usage. + /// + /// + /// Returns the workflows that reference this environment variable via `{{env.KEY}}` in their step controls. **variableId** is required. + /// + /// The unique key of the environment variable (e.g. BASE_URL). + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// The required parameter is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public Task UsageAsync( + string variableKey, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ); + } + + public class EnvironmentVariables: IEnvironmentVariables + { + /// + /// SDK Configuration. + /// + /// + public SDKConfig SDKConfiguration { get; private set; } + + public EnvironmentVariables(SDKConfig config) + { + SDKConfiguration = config; + } + + /// + /// List all variables. + /// + /// + /// Returns all environment variables for the current organization. Secret values are masked. + /// + /// Filter variables by key (case-insensitive partial match). + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public async Task ListAsync( + string? search = null, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ) + { + var request = new EnvironmentVariablesControllerListEnvironmentVariablesRequest() + { + Search = search, + IdempotencyKey = idempotencyKey, + }; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/v1/environment-variables", request, null); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "EnvironmentVariablesController_listEnvironmentVariables", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + if (retryConfig == null) + { + if (this.SDKConfiguration.RetryConfig != null) + { + retryConfig = this.SDKConfiguration.RetryConfig; + } + else + { + var backoff = new BackoffStrategy( + initialIntervalMs: 1000L, + maxIntervalMs: 30000L, + maxElapsedTimeMs: 3600000L, + exponent: 1.5 + ); + retryConfig = new RetryConfig( + strategy: RetryConfig.RetryStrategy.BACKOFF, + backoff: backoff, + retryConnectionErrors: true + ); + } + } + + List statusCodes = new List + { + "408", + "409", + "429", + "5XX", + }; + + Func> retrySend = async () => + { + var _httpRequest = await SDKConfiguration.Client.CloneAsync(httpRequest); + return await SDKConfiguration.Client.SendAsync(_httpRequest); + }; + var retries = new Novu.Utils.Retries.Retries(retrySend, retryConfig, statusCodes); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await retries.Run(); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception _hookError) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, _hookError); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + List obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull>(httpResponseBody, NullValueHandling.Include); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into List.", httpRequest, httpResponse, httpResponseBody, ex); + } + + var response = new EnvironmentVariablesControllerListEnvironmentVariablesResponse() + { + HttpMeta = new Models.Components.HTTPMetadata() + { + Response = httpResponse, + Request = httpRequest + }, + Headers = Utilities.CollectHeaders(httpResponse.Headers) + }; + response.EnvironmentVariableResponseDtos = obj; + return response; + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 414) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{400, 401, 403, 404, 405, 409, 413, 415}.Contains(responseStatusCode)) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 422) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ValidationErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ValidationErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ValidationErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 429) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 503) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.APIException("Unknown status code received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + + /// + /// Create a variable. + /// + /// + /// Creates a new environment variable. Keys must be uppercase with underscores only (e.g. BASE_URL). Secret variables are encrypted at rest and masked in API responses. + /// + /// A parameter. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// The required parameter is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public async Task CreateAsync( + CreateEnvironmentVariableRequestDto createEnvironmentVariableRequestDto, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ) + { + if (createEnvironmentVariableRequestDto == null) throw new ArgumentNullException(nameof(createEnvironmentVariableRequestDto)); + + var request = new EnvironmentVariablesControllerCreateEnvironmentVariableRequest() + { + CreateEnvironmentVariableRequestDto = createEnvironmentVariableRequestDto, + IdempotencyKey = idempotencyKey, + }; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = baseUrl + "/v1/environment-variables"; + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + + var serializedBody = RequestBodySerializer.Serialize(request, "CreateEnvironmentVariableRequestDto", "json", false, false); + if (serializedBody != null) + { + httpRequest.Content = serializedBody; + } + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "EnvironmentVariablesController_createEnvironmentVariable", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + if (retryConfig == null) + { + if (this.SDKConfiguration.RetryConfig != null) + { + retryConfig = this.SDKConfiguration.RetryConfig; + } + else + { + var backoff = new BackoffStrategy( + initialIntervalMs: 1000L, + maxIntervalMs: 30000L, + maxElapsedTimeMs: 3600000L, + exponent: 1.5 + ); + retryConfig = new RetryConfig( + strategy: RetryConfig.RetryStrategy.BACKOFF, + backoff: backoff, + retryConnectionErrors: true + ); + } + } + + List statusCodes = new List + { + "408", + "409", + "429", + "5XX", + }; + + Func> retrySend = async () => + { + var _httpRequest = await SDKConfiguration.Client.CloneAsync(httpRequest); + return await SDKConfiguration.Client.SendAsync(_httpRequest); + }; + var retries = new Novu.Utils.Retries.Retries(retrySend, retryConfig, statusCodes); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await retries.Run(); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception _hookError) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, _hookError); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + EnvironmentVariableResponseDto obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into EnvironmentVariableResponseDto.", httpRequest, httpResponse, httpResponseBody, ex); + } + + var response = new EnvironmentVariablesControllerCreateEnvironmentVariableResponse() + { + HttpMeta = new Models.Components.HTTPMetadata() + { + Response = httpResponse, + Request = httpRequest + }, + Headers = Utilities.CollectHeaders(httpResponse.Headers) + }; + response.EnvironmentVariableResponseDto = obj; + return response; + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 414) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{400, 401, 403, 404, 405, 413, 415}.Contains(responseStatusCode)) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 422) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ValidationErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ValidationErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ValidationErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{409, 429}.Contains(responseStatusCode)) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 503) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.APIException("Unknown status code received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + + /// + /// Get environment variable. + /// + /// + /// Returns a single environment variable by key. Secret values are masked. + /// + /// The unique key of the environment variable (e.g. BASE_URL). + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// The required parameter is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public async Task RetrieveAsync( + string variableKey, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ) + { + if (variableKey == null) throw new ArgumentNullException(nameof(variableKey)); + + var request = new EnvironmentVariablesControllerGetEnvironmentVariableRequest() + { + VariableKey = variableKey, + IdempotencyKey = idempotencyKey, + }; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/v1/environment-variables/{variableKey}", request, null); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "EnvironmentVariablesController_getEnvironmentVariable", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + if (retryConfig == null) + { + if (this.SDKConfiguration.RetryConfig != null) + { + retryConfig = this.SDKConfiguration.RetryConfig; + } + else + { + var backoff = new BackoffStrategy( + initialIntervalMs: 1000L, + maxIntervalMs: 30000L, + maxElapsedTimeMs: 3600000L, + exponent: 1.5 + ); + retryConfig = new RetryConfig( + strategy: RetryConfig.RetryStrategy.BACKOFF, + backoff: backoff, + retryConnectionErrors: true + ); + } + } + + List statusCodes = new List + { + "408", + "409", + "429", + "5XX", + }; + + Func> retrySend = async () => + { + var _httpRequest = await SDKConfiguration.Client.CloneAsync(httpRequest); + return await SDKConfiguration.Client.SendAsync(_httpRequest); + }; + var retries = new Novu.Utils.Retries.Retries(retrySend, retryConfig, statusCodes); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await retries.Run(); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception _hookError) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, _hookError); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + EnvironmentVariableResponseDto obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into EnvironmentVariableResponseDto.", httpRequest, httpResponse, httpResponseBody, ex); + } + + var response = new EnvironmentVariablesControllerGetEnvironmentVariableResponse() + { + HttpMeta = new Models.Components.HTTPMetadata() + { + Response = httpResponse, + Request = httpRequest + }, + Headers = Utilities.CollectHeaders(httpResponse.Headers) + }; + response.EnvironmentVariableResponseDto = obj; + return response; + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 414) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{400, 401, 403, 405, 409, 413, 415}.Contains(responseStatusCode)) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 422) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ValidationErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ValidationErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ValidationErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{404, 429}.Contains(responseStatusCode)) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 503) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.APIException("Unknown status code received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + + /// + /// Update a variable. + /// + /// + /// Updates an existing environment variable. Providing values replaces all existing per-environment values. + /// + /// The unique key of the environment variable (e.g. BASE_URL). + /// A parameter. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public async Task UpdateAsync( + string variableKey, + UpdateEnvironmentVariableRequestDto updateEnvironmentVariableRequestDto, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ) + { + if (variableKey == null) throw new ArgumentNullException(nameof(variableKey)); + if (updateEnvironmentVariableRequestDto == null) throw new ArgumentNullException(nameof(updateEnvironmentVariableRequestDto)); + + var request = new EnvironmentVariablesControllerUpdateEnvironmentVariableRequest() + { + VariableKey = variableKey, + UpdateEnvironmentVariableRequestDto = updateEnvironmentVariableRequestDto, + IdempotencyKey = idempotencyKey, + }; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/v1/environment-variables/{variableKey}", request, null); + + var httpRequest = new HttpRequestMessage(HttpMethod.Patch, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + + var serializedBody = RequestBodySerializer.Serialize(request, "UpdateEnvironmentVariableRequestDto", "json", false, false); + if (serializedBody != null) + { + httpRequest.Content = serializedBody; + } + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "EnvironmentVariablesController_updateEnvironmentVariable", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + if (retryConfig == null) + { + if (this.SDKConfiguration.RetryConfig != null) + { + retryConfig = this.SDKConfiguration.RetryConfig; + } + else + { + var backoff = new BackoffStrategy( + initialIntervalMs: 1000L, + maxIntervalMs: 30000L, + maxElapsedTimeMs: 3600000L, + exponent: 1.5 + ); + retryConfig = new RetryConfig( + strategy: RetryConfig.RetryStrategy.BACKOFF, + backoff: backoff, + retryConnectionErrors: true + ); + } + } + + List statusCodes = new List + { + "408", + "409", + "429", + "5XX", + }; + + Func> retrySend = async () => + { + var _httpRequest = await SDKConfiguration.Client.CloneAsync(httpRequest); + return await SDKConfiguration.Client.SendAsync(_httpRequest); + }; + var retries = new Novu.Utils.Retries.Retries(retrySend, retryConfig, statusCodes); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await retries.Run(); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception _hookError) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, _hookError); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + EnvironmentVariableResponseDto obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into EnvironmentVariableResponseDto.", httpRequest, httpResponse, httpResponseBody, ex); + } + + var response = new EnvironmentVariablesControllerUpdateEnvironmentVariableResponse() + { + HttpMeta = new Models.Components.HTTPMetadata() + { + Response = httpResponse, + Request = httpRequest + }, + Headers = Utilities.CollectHeaders(httpResponse.Headers) + }; + response.EnvironmentVariableResponseDto = obj; + return response; + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 414) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{400, 401, 403, 405, 409, 413, 415}.Contains(responseStatusCode)) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 422) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ValidationErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ValidationErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ValidationErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{404, 429}.Contains(responseStatusCode)) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 503) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.APIException("Unknown status code received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + + /// + /// Delete environment variable. + /// + /// + /// Deletes an environment variable by key. + /// + /// The unique key of the environment variable (e.g. BASE_URL). + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// The required parameter is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public async Task DeleteAsync( + string variableKey, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ) + { + if (variableKey == null) throw new ArgumentNullException(nameof(variableKey)); + + var request = new EnvironmentVariablesControllerDeleteEnvironmentVariableRequest() + { + VariableKey = variableKey, + IdempotencyKey = idempotencyKey, + }; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/v1/environment-variables/{variableKey}", request, null); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "EnvironmentVariablesController_deleteEnvironmentVariable", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + if (retryConfig == null) + { + if (this.SDKConfiguration.RetryConfig != null) + { + retryConfig = this.SDKConfiguration.RetryConfig; + } + else + { + var backoff = new BackoffStrategy( + initialIntervalMs: 1000L, + maxIntervalMs: 30000L, + maxElapsedTimeMs: 3600000L, + exponent: 1.5 + ); + retryConfig = new RetryConfig( + strategy: RetryConfig.RetryStrategy.BACKOFF, + backoff: backoff, + retryConnectionErrors: true + ); + } + } + + List statusCodes = new List + { + "408", + "409", + "429", + "5XX", + }; + + Func> retrySend = async () => + { + var _httpRequest = await SDKConfiguration.Client.CloneAsync(httpRequest); + return await SDKConfiguration.Client.SendAsync(_httpRequest); + }; + var retries = new Novu.Utils.Retries.Retries(retrySend, retryConfig, statusCodes); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await retries.Run(); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception _hookError) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, _hookError); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 204) + { + return new EnvironmentVariablesControllerDeleteEnvironmentVariableResponse() + { + HttpMeta = new Models.Components.HTTPMetadata() + { + Response = httpResponse, + Request = httpRequest + }, + Headers = Utilities.CollectHeaders(httpResponse.Headers) + }; + } + else if(responseStatusCode == 414) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{400, 401, 403, 405, 409, 413, 415}.Contains(responseStatusCode)) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 422) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ValidationErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ValidationErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ValidationErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{404, 429}.Contains(responseStatusCode)) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 503) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.APIException("Unknown status code received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + + /// + /// Retrieve a variable usage. + /// + /// + /// Returns the workflows that reference this environment variable via `{{env.KEY}}` in their step controls. **variableId** is required. + /// + /// The unique key of the environment variable (e.g. BASE_URL). + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// The required parameter is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public async Task UsageAsync( + string variableKey, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ) + { + if (variableKey == null) throw new ArgumentNullException(nameof(variableKey)); + + var request = new EnvironmentVariablesControllerGetEnvironmentVariableUsageRequest() + { + VariableKey = variableKey, + IdempotencyKey = idempotencyKey, + }; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/v1/environment-variables/{variableKey}/usage", request, null); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "EnvironmentVariablesController_getEnvironmentVariableUsage", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + if (retryConfig == null) + { + if (this.SDKConfiguration.RetryConfig != null) + { + retryConfig = this.SDKConfiguration.RetryConfig; + } + else + { + var backoff = new BackoffStrategy( + initialIntervalMs: 1000L, + maxIntervalMs: 30000L, + maxElapsedTimeMs: 3600000L, + exponent: 1.5 + ); + retryConfig = new RetryConfig( + strategy: RetryConfig.RetryStrategy.BACKOFF, + backoff: backoff, + retryConnectionErrors: true + ); + } + } + + List statusCodes = new List + { + "408", + "409", + "429", + "5XX", + }; + + Func> retrySend = async () => + { + var _httpRequest = await SDKConfiguration.Client.CloneAsync(httpRequest); + return await SDKConfiguration.Client.SendAsync(_httpRequest); + }; + var retries = new Novu.Utils.Retries.Retries(retrySend, retryConfig, statusCodes); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await retries.Run(); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception _hookError) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, _hookError); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetEnvironmentVariableUsageResponseDto obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetEnvironmentVariableUsageResponseDto.", httpRequest, httpResponse, httpResponseBody, ex); + } + + var response = new EnvironmentVariablesControllerGetEnvironmentVariableUsageResponse() + { + HttpMeta = new Models.Components.HTTPMetadata() + { + Response = httpResponse, + Request = httpRequest + }, + Headers = Utilities.CollectHeaders(httpResponse.Headers) + }; + response.GetEnvironmentVariableUsageResponseDto = obj; + return response; + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 414) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{400, 401, 403, 405, 409, 413, 415}.Contains(responseStatusCode)) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 422) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ValidationErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ValidationErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ValidationErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{404, 429}.Contains(responseStatusCode)) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 503) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.APIException("Unknown status code received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + } +} \ No newline at end of file diff --git a/src/Novu/Environments.cs b/src/Novu/Environments.cs index fff8b56a..c6da3f50 100644 --- a/src/Novu/Environments.cs +++ b/src/Novu/Environments.cs @@ -50,6 +50,54 @@ public Task GetTagsAsync( RetryConfig? retryConfig = null ); + /// + /// Compare resources between environments. + /// + /// + /// Compares workflows and other resources between the source and target environments, returning detailed diff information including additions, modifications, and deletions. + /// + /// Target environment ID (MongoDB ObjectId) to compare against. + /// Diff request configuration. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public Task DiffAsync( + string targetEnvironmentId, + DiffEnvironmentRequestDto diffEnvironmentRequestDto, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ); + + /// + /// Publish resources to target environment. + /// + /// + /// Publishes all workflows and resources from the source environment to the target environment. Optionally specify specific resources to publish or use dryRun mode to preview changes. + /// + /// Target environment ID (MongoDB ObjectId) to publish resources to. + /// Publish request configuration. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public Task PublishAsync( + string targetEnvironmentId, + PublishEnvironmentRequestDto publishEnvironmentRequestDto, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ); + /// /// Create an environment. /// @@ -197,6 +245,11 @@ public async Task GetTagsAsyn httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); @@ -406,45 +459,52 @@ public async Task GetTagsAsyn /// - /// Create an environment. + /// Compare resources between environments. /// /// - /// Creates a new environment within the current organization.
- /// Environments allow you to manage different stages of your application development lifecycle.
- /// Each environment has its own set of API keys and configurations. + /// Compares workflows and other resources between the source and target environments, returning detailed diff information including additions, modifications, and deletions. ///
- /// A parameter. + /// Target environment ID (MongoDB ObjectId) to compare against. + /// Diff request configuration. /// A header for idempotency purposes. /// The retry configuration to use for this operation. - /// An awaitable task that returns a response envelope when completed. - /// The required parameter is null. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. /// The HTTP request failed due to network issues. /// The response body could not be deserialized. - /// Bad Request. Thrown when the API returns a 400, 401, 402, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. /// Unprocessable Entity. Thrown when the API returns a 422 response. /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. - public async Task CreateAsync( - CreateEnvironmentRequestDto createEnvironmentRequestDto, + public async Task DiffAsync( + string targetEnvironmentId, + DiffEnvironmentRequestDto diffEnvironmentRequestDto, string? idempotencyKey = null, RetryConfig? retryConfig = null ) { - if (createEnvironmentRequestDto == null) throw new ArgumentNullException(nameof(createEnvironmentRequestDto)); + if (targetEnvironmentId == null) throw new ArgumentNullException(nameof(targetEnvironmentId)); + if (diffEnvironmentRequestDto == null) throw new ArgumentNullException(nameof(diffEnvironmentRequestDto)); - var request = new EnvironmentsControllerV1CreateEnvironmentRequest() + var request = new EnvironmentsControllerDiffEnvironmentRequest() { - CreateEnvironmentRequestDto = createEnvironmentRequestDto, + TargetEnvironmentId = targetEnvironmentId, + DiffEnvironmentRequestDto = diffEnvironmentRequestDto, IdempotencyKey = idempotencyKey, }; string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = baseUrl + "/v1/environments"; + var urlString = URLBuilder.Build(baseUrl, "/v2/environments/{targetEnvironmentId}/diff", request, null); var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); - var serializedBody = RequestBodySerializer.Serialize(request, "CreateEnvironmentRequestDto", "json", false, false); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + + var serializedBody = RequestBodySerializer.Serialize(request, "DiffEnvironmentRequestDto", "json", false, false); if (serializedBody != null) { httpRequest.Content = serializedBody; @@ -455,7 +515,7 @@ public async Task CreateAsyn httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); } - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "EnvironmentsControllerV1_createEnvironment", null, SDKConfiguration.SecuritySource); + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "EnvironmentsController_diffEnvironment", null, SDKConfiguration.SecuritySource); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); if (retryConfig == null) @@ -527,22 +587,22 @@ public async Task CreateAsyn var contentType = httpResponse.Content.Headers.ContentType?.MediaType; int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 201) + if(responseStatusCode == 200) { if(Utilities.IsContentTypeMatch("application/json", contentType)) { var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - EnvironmentResponseDto obj; + DiffEnvironmentResponseDto obj; try { - obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); } catch (Exception ex) { - throw new ResponseValidationException("Failed to deserialize response body into EnvironmentResponseDto.", httpRequest, httpResponse, httpResponseBody, ex); + throw new ResponseValidationException("Failed to deserialize response body into DiffEnvironmentResponseDto.", httpRequest, httpResponse, httpResponseBody, ex); } - var response = new EnvironmentsControllerV1CreateEnvironmentResponse() + var response = new EnvironmentsControllerDiffEnvironmentResponse() { HttpMeta = new Models.Components.HTTPMetadata() { @@ -551,13 +611,13 @@ public async Task CreateAsyn }, Headers = Utilities.CollectHeaders(httpResponse.Headers) }; - response.EnvironmentResponseDto = obj; + response.DiffEnvironmentResponseDto = obj; return response; } throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - else if(new List{402, 414}.Contains(responseStatusCode)) + else if(responseStatusCode == 414) { if(Utilities.IsContentTypeMatch("application/json", contentType)) { @@ -659,43 +719,63 @@ public async Task CreateAsyn /// - /// List all environments. + /// Publish resources to target environment. /// /// - /// This API returns a list of environments for the current organization.
- /// Each environment contains its configuration, API keys (if user has access), and metadata. + /// Publishes all workflows and resources from the source environment to the target environment. Optionally specify specific resources to publish or use dryRun mode to preview changes. ///
+ /// Target environment ID (MongoDB ObjectId) to publish resources to. + /// Publish request configuration. /// A header for idempotency purposes. /// The retry configuration to use for this operation. - /// An awaitable task that returns a response envelope when completed. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. /// The HTTP request failed due to network issues. /// The response body could not be deserialized. /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. /// Unprocessable Entity. Thrown when the API returns a 422 response. /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. - public async Task ListAsync( + public async Task PublishAsync( + string targetEnvironmentId, + PublishEnvironmentRequestDto publishEnvironmentRequestDto, string? idempotencyKey = null, RetryConfig? retryConfig = null ) { - var request = new EnvironmentsControllerV1ListMyEnvironmentsRequest() + if (targetEnvironmentId == null) throw new ArgumentNullException(nameof(targetEnvironmentId)); + if (publishEnvironmentRequestDto == null) throw new ArgumentNullException(nameof(publishEnvironmentRequestDto)); + + var request = new EnvironmentsControllerPublishEnvironmentRequest() { + TargetEnvironmentId = targetEnvironmentId, + PublishEnvironmentRequestDto = publishEnvironmentRequestDto, IdempotencyKey = idempotencyKey, }; string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = baseUrl + "/v1/environments"; + var urlString = URLBuilder.Build(baseUrl, "/v2/environments/{targetEnvironmentId}/publish", request, null); - var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + + var serializedBody = RequestBodySerializer.Serialize(request, "PublishEnvironmentRequestDto", "json", false, false); + if (serializedBody != null) + { + httpRequest.Content = serializedBody; + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); } - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "EnvironmentsControllerV1_listMyEnvironments", null, SDKConfiguration.SecuritySource); + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "EnvironmentsController_publishEnvironment", null, SDKConfiguration.SecuritySource); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); if (retryConfig == null) @@ -772,17 +852,17 @@ public async Task ListAsync if(Utilities.IsContentTypeMatch("application/json", contentType)) { var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); - List obj; + PublishEnvironmentResponseDto obj; try { - obj = ResponseBodyDeserializer.DeserializeNotNull>(httpResponseBody, NullValueHandling.Include); + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); } catch (Exception ex) { - throw new ResponseValidationException("Failed to deserialize response body into List.", httpRequest, httpResponse, httpResponseBody, ex); + throw new ResponseValidationException("Failed to deserialize response body into PublishEnvironmentResponseDto.", httpRequest, httpResponse, httpResponseBody, ex); } - var response = new EnvironmentsControllerV1ListMyEnvironmentsResponse() + var response = new EnvironmentsControllerPublishEnvironmentResponse() { HttpMeta = new Models.Components.HTTPMetadata() { @@ -791,7 +871,7 @@ public async Task ListAsync }, Headers = Utilities.CollectHeaders(httpResponse.Headers) }; - response.EnvironmentResponseDtos = obj; + response.PublishEnvironmentResponseDto = obj; return response; } @@ -805,7 +885,7 @@ public async Task ListAsync ErrorDtoPayload payload; try { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); } catch (Exception ex) { @@ -825,7 +905,7 @@ public async Task ListAsync ErrorDtoPayload payload; try { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); } catch (Exception ex) { @@ -845,7 +925,7 @@ public async Task ListAsync ValidationErrorDtoPayload payload; try { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); } catch (Exception ex) { @@ -869,7 +949,7 @@ public async Task ListAsync ErrorDtoPayload payload; try { - payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); } catch (Exception ex) { @@ -899,48 +979,50 @@ public async Task ListAsync /// - /// Update an environment. + /// Create an environment. /// /// - /// Update an environment by its unique identifier **environmentId**.
- /// You can modify the environment name, identifier, color, and other configuration settings. + /// Creates a new environment within the current organization.
+ /// Environments allow you to manage different stages of your application development lifecycle.
+ /// Each environment has its own set of API keys and configurations. ///
- /// The unique identifier of the environment. - /// A parameter. + /// A parameter. /// A header for idempotency purposes. /// The retry configuration to use for this operation. - /// An awaitable task that returns a response envelope when completed. - /// One of or is null. + /// An awaitable task that returns a response envelope when completed. + /// The required parameter is null. /// The HTTP request failed due to network issues. /// The response body could not be deserialized. - /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Bad Request. Thrown when the API returns a 400, 401, 402, 403, 404, 405, 409, 413, 414, 415 or 500 response. /// Unprocessable Entity. Thrown when the API returns a 422 response. /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. - public async Task UpdateAsync( - string environmentId, - UpdateEnvironmentRequestDto updateEnvironmentRequestDto, + public async Task CreateAsync( + CreateEnvironmentRequestDto createEnvironmentRequestDto, string? idempotencyKey = null, RetryConfig? retryConfig = null ) { - if (environmentId == null) throw new ArgumentNullException(nameof(environmentId)); - if (updateEnvironmentRequestDto == null) throw new ArgumentNullException(nameof(updateEnvironmentRequestDto)); + if (createEnvironmentRequestDto == null) throw new ArgumentNullException(nameof(createEnvironmentRequestDto)); - var request = new EnvironmentsControllerV1UpdateMyEnvironmentRequest() + var request = new EnvironmentsControllerV1CreateEnvironmentRequest() { - EnvironmentId = environmentId, - UpdateEnvironmentRequestDto = updateEnvironmentRequestDto, + CreateEnvironmentRequestDto = createEnvironmentRequestDto, IdempotencyKey = idempotencyKey, }; string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/v1/environments/{environmentId}", request, null); + var urlString = baseUrl + "/v1/environments"; - var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); - var serializedBody = RequestBodySerializer.Serialize(request, "UpdateEnvironmentRequestDto", "json", false, false); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + + var serializedBody = RequestBodySerializer.Serialize(request, "CreateEnvironmentRequestDto", "json", false, false); if (serializedBody != null) { httpRequest.Content = serializedBody; @@ -951,7 +1033,7 @@ public async Task UpdateAs httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); } - var hookCtx = new HookContext(SDKConfiguration, baseUrl, "EnvironmentsControllerV1_updateMyEnvironment", null, SDKConfiguration.SecuritySource); + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "EnvironmentsControllerV1_createEnvironment", null, SDKConfiguration.SecuritySource); httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); if (retryConfig == null) @@ -1023,7 +1105,7 @@ public async Task UpdateAs var contentType = httpResponse.Content.Headers.ContentType?.MediaType; int responseStatusCode = (int)httpResponse.StatusCode; - if(responseStatusCode == 200) + if(responseStatusCode == 201) { if(Utilities.IsContentTypeMatch("application/json", contentType)) { @@ -1038,7 +1120,7 @@ public async Task UpdateAs throw new ResponseValidationException("Failed to deserialize response body into EnvironmentResponseDto.", httpRequest, httpResponse, httpResponseBody, ex); } - var response = new EnvironmentsControllerV1UpdateMyEnvironmentResponse() + var response = new EnvironmentsControllerV1CreateEnvironmentResponse() { HttpMeta = new Models.Components.HTTPMetadata() { @@ -1053,7 +1135,7 @@ public async Task UpdateAs throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); } - else if(responseStatusCode == 414) + else if(new List{402, 414}.Contains(responseStatusCode)) { if(Utilities.IsContentTypeMatch("application/json", contentType)) { @@ -1155,43 +1237,554 @@ public async Task UpdateAs /// - /// Delete an environment. + /// List all environments. /// /// - /// Delete an environment by its unique identifier **environmentId**.
- /// This action is irreversible and will remove the environment and all its associated data. + /// This API returns a list of environments for the current organization.
+ /// Each environment contains its configuration, API keys (if user has access), and metadata. ///
- /// The unique identifier of the environment. /// A header for idempotency purposes. /// The retry configuration to use for this operation. - /// An awaitable task that returns a response envelope when completed. - /// The required parameter is null. + /// An awaitable task that returns a response envelope when completed. /// The HTTP request failed due to network issues. /// The response body could not be deserialized. /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. /// Unprocessable Entity. Thrown when the API returns a 422 response. /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. - public async Task DeleteAsync( - string environmentId, + public async Task ListAsync( string? idempotencyKey = null, RetryConfig? retryConfig = null ) { - if (environmentId == null) throw new ArgumentNullException(nameof(environmentId)); - - var request = new EnvironmentsControllerV1DeleteEnvironmentRequest() + var request = new EnvironmentsControllerV1ListMyEnvironmentsRequest() { - EnvironmentId = environmentId, IdempotencyKey = idempotencyKey, }; string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); - var urlString = URLBuilder.Build(baseUrl, "/v1/environments/{environmentId}", request, null); + var urlString = baseUrl + "/v1/environments"; - var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "EnvironmentsControllerV1_listMyEnvironments", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + if (retryConfig == null) + { + if (this.SDKConfiguration.RetryConfig != null) + { + retryConfig = this.SDKConfiguration.RetryConfig; + } + else + { + var backoff = new BackoffStrategy( + initialIntervalMs: 1000L, + maxIntervalMs: 30000L, + maxElapsedTimeMs: 3600000L, + exponent: 1.5 + ); + retryConfig = new RetryConfig( + strategy: RetryConfig.RetryStrategy.BACKOFF, + backoff: backoff, + retryConnectionErrors: true + ); + } + } + + List statusCodes = new List + { + "408", + "409", + "429", + "5XX", + }; + + Func> retrySend = async () => + { + var _httpRequest = await SDKConfiguration.Client.CloneAsync(httpRequest); + return await SDKConfiguration.Client.SendAsync(_httpRequest); + }; + var retries = new Novu.Utils.Retries.Retries(retrySend, retryConfig, statusCodes); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await retries.Run(); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception _hookError) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, _hookError); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + List obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull>(httpResponseBody, NullValueHandling.Include); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into List.", httpRequest, httpResponse, httpResponseBody, ex); + } + + var response = new EnvironmentsControllerV1ListMyEnvironmentsResponse() + { + HttpMeta = new Models.Components.HTTPMetadata() + { + Response = httpResponse, + Request = httpRequest + }, + Headers = Utilities.CollectHeaders(httpResponse.Headers) + }; + response.EnvironmentResponseDtos = obj; + return response; + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 414) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{400, 401, 403, 404, 405, 409, 413, 415}.Contains(responseStatusCode)) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 422) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ValidationErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ValidationErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ValidationErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 429) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Include); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 503) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.APIException("Unknown status code received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + + /// + /// Update an environment. + /// + /// + /// Update an environment by its unique identifier **environmentId**.
+ /// You can modify the environment name, identifier, color, and other configuration settings. + ///
+ /// The unique identifier of the environment. + /// A parameter. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public async Task UpdateAsync( + string environmentId, + UpdateEnvironmentRequestDto updateEnvironmentRequestDto, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ) + { + if (environmentId == null) throw new ArgumentNullException(nameof(environmentId)); + if (updateEnvironmentRequestDto == null) throw new ArgumentNullException(nameof(updateEnvironmentRequestDto)); + + var request = new EnvironmentsControllerV1UpdateMyEnvironmentRequest() + { + EnvironmentId = environmentId, + UpdateEnvironmentRequestDto = updateEnvironmentRequestDto, + IdempotencyKey = idempotencyKey, + }; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/v1/environments/{environmentId}", request, null); + + var httpRequest = new HttpRequestMessage(HttpMethod.Put, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + + var serializedBody = RequestBodySerializer.Serialize(request, "UpdateEnvironmentRequestDto", "json", false, false); + if (serializedBody != null) + { + httpRequest.Content = serializedBody; + } + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "EnvironmentsControllerV1_updateMyEnvironment", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + if (retryConfig == null) + { + if (this.SDKConfiguration.RetryConfig != null) + { + retryConfig = this.SDKConfiguration.RetryConfig; + } + else + { + var backoff = new BackoffStrategy( + initialIntervalMs: 1000L, + maxIntervalMs: 30000L, + maxElapsedTimeMs: 3600000L, + exponent: 1.5 + ); + retryConfig = new RetryConfig( + strategy: RetryConfig.RetryStrategy.BACKOFF, + backoff: backoff, + retryConnectionErrors: true + ); + } + } + + List statusCodes = new List + { + "408", + "409", + "429", + "5XX", + }; + + Func> retrySend = async () => + { + var _httpRequest = await SDKConfiguration.Client.CloneAsync(httpRequest); + return await SDKConfiguration.Client.SendAsync(_httpRequest); + }; + var retries = new Novu.Utils.Retries.Retries(retrySend, retryConfig, statusCodes); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await retries.Run(); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception _hookError) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, _hookError); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + EnvironmentResponseDto obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into EnvironmentResponseDto.", httpRequest, httpResponse, httpResponseBody, ex); + } + + var response = new EnvironmentsControllerV1UpdateMyEnvironmentResponse() + { + HttpMeta = new Models.Components.HTTPMetadata() + { + Response = httpResponse, + Request = httpRequest + }, + Headers = Utilities.CollectHeaders(httpResponse.Headers) + }; + response.EnvironmentResponseDto = obj; + return response; + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 414) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{400, 401, 403, 404, 405, 409, 413, 415}.Contains(responseStatusCode)) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 422) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ValidationErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ValidationErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ValidationErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 429) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 503) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.APIException("Unknown status code received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + + /// + /// Delete an environment. + /// + /// + /// Delete an environment by its unique identifier **environmentId**.
+ /// This action is irreversible and will remove the environment and all its associated data. + ///
+ /// The unique identifier of the environment. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// The required parameter is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public async Task DeleteAsync( + string environmentId, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ) + { + if (environmentId == null) throw new ArgumentNullException(nameof(environmentId)); + + var request = new EnvironmentsControllerV1DeleteEnvironmentRequest() + { + EnvironmentId = environmentId, + IdempotencyKey = idempotencyKey, + }; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/v1/environments/{environmentId}", request, null); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); diff --git a/src/Novu/Groups.cs b/src/Novu/Groups.cs index 4862599d..507af567 100644 --- a/src/Novu/Groups.cs +++ b/src/Novu/Groups.cs @@ -28,7 +28,8 @@ public interface IGroups /// Delete a translation group. /// /// - /// Delete an entire translation group and all its translations. + /// Delete an entire translation group and all its translations
+ /// This operation requires either or to be set in the security parameter when initializing the SDK. ///
/// Resource type. /// Resource ID. @@ -49,7 +50,8 @@ public Task Delete /// Retrieve a translation group. /// /// - /// Retrieves a single translation group by resource type (workflow, layout) and resource ID (workflowId, layoutId). + /// Retrieves a single translation group by resource type (workflow, layout) and resource ID (workflowId, layoutId)
+ /// This operation requires either or to be set in the security parameter when initializing the SDK. ///
/// Resource type. /// Resource ID. @@ -85,7 +87,8 @@ public Groups(SDKConfig config) /// Delete a translation group. /// /// - /// Delete an entire translation group and all its translations. + /// Delete an entire translation group and all its translations
+ /// This operation requires either or to be set in the security parameter when initializing the SDK. ///
/// Resource type. /// Resource ID. @@ -118,9 +121,14 @@ public async Task httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "*/*"); + } + if (SDKConfiguration.SecuritySource != null) { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource, new string[] { "SecretKey", "SecretKey" }).Apply(httpRequest); } var hookCtx = new HookContext(SDKConfiguration, baseUrl, "TranslationController_deleteTranslationGroupEndpoint", null, SDKConfiguration.SecuritySource); @@ -223,7 +231,8 @@ public async Task /// Retrieve a translation group. /// /// - /// Retrieves a single translation group by resource type (workflow, layout) and resource ID (workflowId, layoutId). + /// Retrieves a single translation group by resource type (workflow, layout) and resource ID (workflowId, layoutId)
+ /// This operation requires either or to be set in the security parameter when initializing the SDK. ///
/// Resource type. /// Resource ID. @@ -257,9 +266,14 @@ public async Task Ret httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource, new string[] { "SecretKey", "SecretKey" }).Apply(httpRequest); } var hookCtx = new HookContext(SDKConfiguration, baseUrl, "TranslationController_getTranslationGroupEndpoint", null, SDKConfiguration.SecuritySource); diff --git a/src/Novu/Integrations.cs b/src/Novu/Integrations.cs index 90e98184..a6ab2efe 100644 --- a/src/Novu/Integrations.cs +++ b/src/Novu/Integrations.cs @@ -257,6 +257,11 @@ public async Task GetAllAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); @@ -503,6 +508,11 @@ public async Task CreateAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "CreateIntegrationRequestDto", "json", false, false); if (serializedBody != null) { @@ -759,6 +769,11 @@ public async Task UpdateAs httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "UpdateIntegrationRequestDto", "json", false, false); if (serializedBody != null) { @@ -1011,6 +1026,11 @@ public async Task DeleteAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); @@ -1257,6 +1277,11 @@ public async Task Integ httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); @@ -1504,6 +1529,11 @@ public async Task SetPri httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); @@ -1743,6 +1773,11 @@ public async Task ListActi httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); @@ -1990,6 +2025,11 @@ public async Task GenerateChatOA httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "GenerateChatOauthUrlRequestDto", "json", false, false); if (serializedBody != null) { diff --git a/src/Novu/Layouts.cs b/src/Novu/Layouts.cs index 832be34d..79012185 100644 --- a/src/Novu/Layouts.cs +++ b/src/Novu/Layouts.cs @@ -262,6 +262,11 @@ public async Task CreateAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "CreateLayoutDto", "json", false, false); if (serializedBody != null) { @@ -502,6 +507,11 @@ public async Task ListAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); @@ -751,6 +761,11 @@ public async Task UpdateAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "UpdateLayoutDto", "json", false, false); if (serializedBody != null) { @@ -1002,6 +1017,11 @@ public async Task RetrieveAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); @@ -1247,6 +1267,11 @@ public async Task DeleteAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); @@ -1478,6 +1503,11 @@ public async Task DuplicateAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "DuplicateLayoutDto", "json", false, false); if (serializedBody != null) { @@ -1733,6 +1763,11 @@ public async Task GeneratePreviewAsyn httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "LayoutPreviewRequestDto", "json", false, false); if (serializedBody != null) { @@ -1984,6 +2019,11 @@ public async Task UsageAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); diff --git a/src/Novu/Master.cs b/src/Novu/Master.cs index 5faa3733..ca6edfbe 100644 --- a/src/Novu/Master.cs +++ b/src/Novu/Master.cs @@ -28,7 +28,8 @@ public interface IMaster /// Retrieve master translations JSON. /// /// - /// Retrieve all translations for a locale in master JSON format organized by resourceId (workflowId). + /// Retrieve all translations for a locale in master JSON format organized by resourceId (workflowId)
+ /// This operation requires either or to be set in the security parameter when initializing the SDK. ///
/// Locale to export. If not provided, exports organization default locale. /// A header for idempotency purposes. @@ -47,7 +48,8 @@ public Task RetrieveAsync( /// Import master translations JSON. /// /// - /// Import translations for multiple workflows from master JSON format for a specific locale. + /// Import translations for multiple workflows from master JSON format for a specific locale
+ /// This operation requires either or to be set in the security parameter when initializing the SDK. ///
/// A parameter. /// A header for idempotency purposes. @@ -67,7 +69,8 @@ public Task ImportAsync( /// Upload master translations JSON file. /// /// - /// Upload a master JSON file containing translations for multiple workflows. Locale is automatically detected from filename (e.g., en_US.json). + /// Upload a master JSON file containing translations for multiple workflows. Locale is automatically detected from filename (e.g., en_US.json)
+ /// This operation requires either or to be set in the security parameter when initializing the SDK. ///
/// A parameter. /// A header for idempotency purposes. @@ -101,7 +104,8 @@ public Master(SDKConfig config) /// Retrieve master translations JSON. /// /// - /// Retrieve all translations for a locale in master JSON format organized by resourceId (workflowId). + /// Retrieve all translations for a locale in master JSON format organized by resourceId (workflowId)
+ /// This operation requires either or to be set in the security parameter when initializing the SDK. ///
/// Locale to export. If not provided, exports organization default locale. /// A header for idempotency purposes. @@ -129,9 +133,14 @@ public async Task RetrieveA httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource, new string[] { "SecretKey", "SecretKey" }).Apply(httpRequest); } var hookCtx = new HookContext(SDKConfiguration, baseUrl, "TranslationController_getMasterJsonEndpoint", null, SDKConfiguration.SecuritySource); @@ -252,7 +261,8 @@ public async Task RetrieveA /// Import master translations JSON. /// /// - /// Import translations for multiple workflows from master JSON format for a specific locale. + /// Import translations for multiple workflows from master JSON format for a specific locale
+ /// This operation requires either or to be set in the security parameter when initializing the SDK. ///
/// A parameter. /// A header for idempotency purposes. @@ -283,6 +293,11 @@ public async Task Import httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "ImportMasterJsonRequestDto", "json", false, false); if (serializedBody != null) { @@ -291,7 +306,7 @@ public async Task Import if (SDKConfiguration.SecuritySource != null) { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource, new string[] { "SecretKey", "SecretKey" }).Apply(httpRequest); } var hookCtx = new HookContext(SDKConfiguration, baseUrl, "TranslationController_importMasterJsonEndpoint", null, SDKConfiguration.SecuritySource); @@ -412,7 +427,8 @@ public async Task Import /// Upload master translations JSON file. /// /// - /// Upload a master JSON file containing translations for multiple workflows. Locale is automatically detected from filename (e.g., en_US.json). + /// Upload a master JSON file containing translations for multiple workflows. Locale is automatically detected from filename (e.g., en_US.json)
+ /// This operation requires either or to be set in the security parameter when initializing the SDK. ///
/// A parameter. /// A header for idempotency purposes. @@ -443,6 +459,11 @@ public async Task Upload httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "RequestBody", "multipart", false, false); if (serializedBody != null) { @@ -451,7 +472,7 @@ public async Task Upload if (SDKConfiguration.SecuritySource != null) { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource, new string[] { "SecretKey", "SecretKey" }).Apply(httpRequest); } var hookCtx = new HookContext(SDKConfiguration, baseUrl, "TranslationController_uploadMasterJsonEndpoint", null, SDKConfiguration.SecuritySource); diff --git a/src/Novu/Messages.cs b/src/Novu/Messages.cs index fca9176e..92c2fd5f 100644 --- a/src/Novu/Messages.cs +++ b/src/Novu/Messages.cs @@ -143,6 +143,11 @@ public async Task GetAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); @@ -389,6 +394,11 @@ public async Task DeleteAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); @@ -638,6 +648,11 @@ public async Task Dele httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); diff --git a/src/Novu/Models/Components/ActivityNotificationJobResponseDtoType.cs b/src/Novu/Models/Components/ActivityNotificationJobResponseDtoType.cs index 1c65c279..e3b7b1d6 100644 --- a/src/Novu/Models/Components/ActivityNotificationJobResponseDtoType.cs +++ b/src/Novu/Models/Components/ActivityNotificationJobResponseDtoType.cs @@ -38,6 +38,8 @@ public enum ActivityNotificationJobResponseDtoType Throttle, [JsonProperty("custom")] Custom, + [JsonProperty("http_request")] + HttpRequest, } public static class ActivityNotificationJobResponseDtoTypeExtension diff --git a/src/Novu/Models/Components/ChatRenderOutput.cs b/src/Novu/Models/Components/ChatRenderOutput.cs new file mode 100644 index 00000000..7328082b --- /dev/null +++ b/src/Novu/Models/Components/ChatRenderOutput.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + + public class ChatRenderOutput + { + /// + /// Body of the chat message. + /// + [JsonProperty("body")] + public string Body { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/ChatStepResponseDto.cs b/src/Novu/Models/Components/ChatStepResponseDto.cs index bcdf00cb..1f8792e6 100644 --- a/src/Novu/Models/Components/ChatStepResponseDto.cs +++ b/src/Novu/Models/Components/ChatStepResponseDto.cs @@ -87,5 +87,11 @@ public class ChatStepResponseDto /// [JsonProperty("issues")] public StepIssuesDto? Issues { get; set; } + + /// + /// Hash identifying the deployed Cloudflare Worker for this step. + /// + [JsonProperty("stepResolverHash")] + public string? StepResolverHash { get; set; } } } \ No newline at end of file diff --git a/src/Novu/Models/Components/ContentIssueEnum.cs b/src/Novu/Models/Components/ContentIssueEnum.cs index bef3f8cb..905304e4 100644 --- a/src/Novu/Models/Components/ContentIssueEnum.cs +++ b/src/Novu/Models/Components/ContentIssueEnum.cs @@ -22,6 +22,8 @@ public enum ContentIssueEnum IllegalVariableInControlValue, [JsonProperty("INVALID_FILTER_ARG_IN_VARIABLE")] InvalidFilterArgInVariable, + [JsonProperty("INVALID_URL")] + InvalidUrl, [JsonProperty("MISSING_VALUE")] MissingValue, [JsonProperty("TIER_LIMIT_EXCEEDED")] diff --git a/src/Novu/Models/Components/ControlValues.cs b/src/Novu/Models/Components/ControlValues.cs index 539c6d4a..d112da26 100644 --- a/src/Novu/Models/Components/ControlValues.cs +++ b/src/Novu/Models/Components/ControlValues.cs @@ -14,7 +14,7 @@ namespace Novu.Models.Components using Novu.Utils; /// - /// Control values for the layout. + /// Control values for the layout. Omit to leave unchanged, or set to null to clear stored control values. /// public class ControlValues { diff --git a/src/Novu/Models/Components/CreateEnvironmentVariableRequestDto.cs b/src/Novu/Models/Components/CreateEnvironmentVariableRequestDto.cs new file mode 100644 index 00000000..14a89328 --- /dev/null +++ b/src/Novu/Models/Components/CreateEnvironmentVariableRequestDto.cs @@ -0,0 +1,40 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class CreateEnvironmentVariableRequestDto + { + /// + /// Unique key for the variable. Must start with a letter and contain only letters, digits, and underscores. + /// + [JsonProperty("key")] + public string Key { get; set; } = default!; + + /// + /// The type of the variable. + /// + [JsonProperty("type")] + public CreateEnvironmentVariableRequestDtoType? Type { get; set; } + + /// + /// Whether this variable is a secret (encrypted at rest, masked in responses). + /// + [JsonProperty("isSecret")] + public bool? IsSecret { get; set; } + + [JsonProperty("values")] + public List? Values { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/CreateEnvironmentVariableRequestDtoType.cs b/src/Novu/Models/Components/CreateEnvironmentVariableRequestDtoType.cs new file mode 100644 index 00000000..4f1b65ca --- /dev/null +++ b/src/Novu/Models/Components/CreateEnvironmentVariableRequestDtoType.cs @@ -0,0 +1,57 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + using System; + + /// + /// The type of the variable. + /// + public enum CreateEnvironmentVariableRequestDtoType + { + [JsonProperty("string")] + String, + } + + public static class CreateEnvironmentVariableRequestDtoTypeExtension + { + public static string Value(this CreateEnvironmentVariableRequestDtoType value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static CreateEnvironmentVariableRequestDtoType ToEnum(this string value) + { + foreach(var field in typeof(CreateEnvironmentVariableRequestDtoType).GetFields()) + { + var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); + if (attributes.Length == 0) + { + continue; + } + + var attribute = attributes[0] as JsonPropertyAttribute; + if (attribute != null && attribute.PropertyName == value) + { + var enumVal = field.GetValue(null); + + if (enumVal is CreateEnvironmentVariableRequestDtoType) + { + return (CreateEnvironmentVariableRequestDtoType)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum CreateEnvironmentVariableRequestDtoType"); + } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/CustomStepResponseDto.cs b/src/Novu/Models/Components/CustomStepResponseDto.cs index 034fc5a7..76307f6c 100644 --- a/src/Novu/Models/Components/CustomStepResponseDto.cs +++ b/src/Novu/Models/Components/CustomStepResponseDto.cs @@ -87,5 +87,11 @@ public class CustomStepResponseDto /// [JsonProperty("issues")] public StepIssuesDto? Issues { get; set; } + + /// + /// Hash identifying the deployed Cloudflare Worker for this step. + /// + [JsonProperty("stepResolverHash")] + public string? StepResolverHash { get; set; } } } \ No newline at end of file diff --git a/src/Novu/Models/Components/DelayStepResponseDto.cs b/src/Novu/Models/Components/DelayStepResponseDto.cs index c0b01dab..80e38de5 100644 --- a/src/Novu/Models/Components/DelayStepResponseDto.cs +++ b/src/Novu/Models/Components/DelayStepResponseDto.cs @@ -87,5 +87,11 @@ public class DelayStepResponseDto /// [JsonProperty("issues")] public StepIssuesDto? Issues { get; set; } + + /// + /// Hash identifying the deployed Cloudflare Worker for this step. + /// + [JsonProperty("stepResolverHash")] + public string? StepResolverHash { get; set; } } } \ No newline at end of file diff --git a/src/Novu/Models/Components/IssueType.cs b/src/Novu/Models/Components/DependencyReasonEnum.cs similarity index 65% rename from src/Novu/Models/Components/IssueType.cs rename to src/Novu/Models/Components/DependencyReasonEnum.cs index d321bf4a..d6087184 100644 --- a/src/Novu/Models/Components/IssueType.cs +++ b/src/Novu/Models/Components/DependencyReasonEnum.cs @@ -13,30 +13,27 @@ namespace Novu.Models.Components using Novu.Utils; using System; - public enum IssueType + /// + /// Reason for the dependency. + /// + public enum DependencyReasonEnum { - [JsonProperty("MISSING_VALUE")] - MissingValue, - [JsonProperty("MAX_LENGTH_ACCESSED")] - MaxLengthAccessed, - [JsonProperty("WORKFLOW_ID_ALREADY_EXISTS")] - WorkflowIdAlreadyExists, - [JsonProperty("DUPLICATED_VALUE")] - DuplicatedValue, - [JsonProperty("LIMIT_REACHED")] - LimitReached, + [JsonProperty("LAYOUT_REQUIRED_FOR_WORKFLOW")] + LayoutRequiredForWorkflow, + [JsonProperty("LAYOUT_EXISTS_IN_TARGET")] + LayoutExistsInTarget, } - public static class IssueTypeExtension + public static class DependencyReasonEnumExtension { - public static string Value(this IssueType value) + public static string Value(this DependencyReasonEnum value) { return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); } - public static IssueType ToEnum(this string value) + public static DependencyReasonEnum ToEnum(this string value) { - foreach(var field in typeof(IssueType).GetFields()) + foreach(var field in typeof(DependencyReasonEnum).GetFields()) { var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); if (attributes.Length == 0) @@ -49,14 +46,14 @@ public static IssueType ToEnum(this string value) { var enumVal = field.GetValue(null); - if (enumVal is IssueType) + if (enumVal is DependencyReasonEnum) { - return (IssueType)enumVal; + return (DependencyReasonEnum)enumVal; } } } - throw new Exception($"Unknown value {value} for enum IssueType"); + throw new Exception($"Unknown value {value} for enum DependencyReasonEnum"); } } } \ No newline at end of file diff --git a/src/Novu/Models/Components/DiffActionEnum.cs b/src/Novu/Models/Components/DiffActionEnum.cs new file mode 100644 index 00000000..aa5bd11d --- /dev/null +++ b/src/Novu/Models/Components/DiffActionEnum.cs @@ -0,0 +1,65 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + using System; + + /// + /// Type of change. + /// + public enum DiffActionEnum + { + [JsonProperty("added")] + Added, + [JsonProperty("modified")] + Modified, + [JsonProperty("deleted")] + Deleted, + [JsonProperty("unchanged")] + Unchanged, + [JsonProperty("moved")] + Moved, + } + + public static class DiffActionEnumExtension + { + public static string Value(this DiffActionEnum value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static DiffActionEnum ToEnum(this string value) + { + foreach(var field in typeof(DiffActionEnum).GetFields()) + { + var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); + if (attributes.Length == 0) + { + continue; + } + + var attribute = attributes[0] as JsonPropertyAttribute; + if (attribute != null && attribute.PropertyName == value) + { + var enumVal = field.GetValue(null); + + if (enumVal is DiffActionEnum) + { + return (DiffActionEnum)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum DiffActionEnum"); + } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/DiffEnvironmentRequestDto.cs b/src/Novu/Models/Components/DiffEnvironmentRequestDto.cs new file mode 100644 index 00000000..934e4204 --- /dev/null +++ b/src/Novu/Models/Components/DiffEnvironmentRequestDto.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + + public class DiffEnvironmentRequestDto + { + /// + /// Source environment ID to compare from. Defaults to the Development environment if not provided. + /// + [JsonProperty("sourceEnvironmentId")] + public string? SourceEnvironmentId { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/DiffEnvironmentResponseDto.cs b/src/Novu/Models/Components/DiffEnvironmentResponseDto.cs new file mode 100644 index 00000000..6313e52d --- /dev/null +++ b/src/Novu/Models/Components/DiffEnvironmentResponseDto.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class DiffEnvironmentResponseDto + { + /// + /// Source environment ID. + /// + [JsonProperty("sourceEnvironmentId")] + public string SourceEnvironmentId { get; set; } = default!; + + /// + /// Target environment ID. + /// + [JsonProperty("targetEnvironmentId")] + public string TargetEnvironmentId { get; set; } = default!; + + /// + /// Diff resources by resource type. + /// + [JsonProperty("resources")] + public List Resources { get; set; } = default!; + + /// + /// Overall summary. + /// + [JsonProperty("summary")] + public EnvironmentDiffSummaryDto Summary { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/DiffSummaryDto.cs b/src/Novu/Models/Components/DiffSummaryDto.cs new file mode 100644 index 00000000..96d6eec4 --- /dev/null +++ b/src/Novu/Models/Components/DiffSummaryDto.cs @@ -0,0 +1,41 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + + public class DiffSummaryDto + { + /// + /// Number of added resources (workflows and steps). + /// + [JsonProperty("added")] + public double Added { get; set; } = default!; + + /// + /// Number of modified resources (workflows and steps). + /// + [JsonProperty("modified")] + public double Modified { get; set; } = default!; + + /// + /// Number of deleted resources (workflows and steps). + /// + [JsonProperty("deleted")] + public double Deleted { get; set; } = default!; + + /// + /// Number of unchanged resources (workflows and steps). + /// + [JsonProperty("unchanged")] + public double Unchanged { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/Diffs.cs b/src/Novu/Models/Components/Diffs.cs new file mode 100644 index 00000000..329bdab0 --- /dev/null +++ b/src/Novu/Models/Components/Diffs.cs @@ -0,0 +1,33 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + using System.Collections.Generic; + + /// + /// Detailed changes (only for modified resources). + /// + public class Diffs + { + /// + /// Previous state of the resource (null for added resources). + /// + [JsonProperty("previous")] + public Dictionary? Previous { get; set; } = null; + + /// + /// New state of the resource (null for deleted resources). + /// + [JsonProperty("new")] + public Dictionary? New { get; set; } = null; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/DigestRegularOutput.cs b/src/Novu/Models/Components/DigestRegularOutput.cs new file mode 100644 index 00000000..696e1af1 --- /dev/null +++ b/src/Novu/Models/Components/DigestRegularOutput.cs @@ -0,0 +1,42 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + + public class DigestRegularOutput + { + /// + /// Amount of time units. + /// + [JsonProperty("amount")] + public double Amount { get; set; } = default!; + + /// + /// Time unit. + /// + [JsonProperty("unit")] + public TimeUnitEnum Unit { get; set; } = default!; + + /// + /// Optional digest key. + /// + [JsonProperty("digestKey")] + public string? DigestKey { get; set; } + + /// + /// Look back window configuration. + /// + [JsonProperty("lookBackWindow")] + public LookBackWindow? LookBackWindow { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/DigestStepResponseDto.cs b/src/Novu/Models/Components/DigestStepResponseDto.cs index a3b1eb26..1fb15a95 100644 --- a/src/Novu/Models/Components/DigestStepResponseDto.cs +++ b/src/Novu/Models/Components/DigestStepResponseDto.cs @@ -87,5 +87,11 @@ public class DigestStepResponseDto /// [JsonProperty("issues")] public StepIssuesDto? Issues { get; set; } + + /// + /// Hash identifying the deployed Cloudflare Worker for this step. + /// + [JsonProperty("stepResolverHash")] + public string? StepResolverHash { get; set; } } } \ No newline at end of file diff --git a/src/Novu/Models/Components/Eight.cs b/src/Novu/Models/Components/Eight.cs new file mode 100644 index 00000000..fa574272 --- /dev/null +++ b/src/Novu/Models/Components/Eight.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + + public class Eight + { + [JsonProperty("type")] + public GeneratePreviewResponseDtoResult8Type? Type { get; set; } + + [JsonProperty("preview")] + public DigestRegularOutput? Preview { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/EmailRenderOutput.cs b/src/Novu/Models/Components/EmailRenderOutput.cs new file mode 100644 index 00000000..c6db5099 --- /dev/null +++ b/src/Novu/Models/Components/EmailRenderOutput.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + + public class EmailRenderOutput + { + /// + /// Subject of the email. + /// + [JsonProperty("subject")] + public string Subject { get; set; } = default!; + + /// + /// Body of the email. + /// + [JsonProperty("body")] + public string Body { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/EmailStepResponseDto.cs b/src/Novu/Models/Components/EmailStepResponseDto.cs index db5a45a3..d3d28be4 100644 --- a/src/Novu/Models/Components/EmailStepResponseDto.cs +++ b/src/Novu/Models/Components/EmailStepResponseDto.cs @@ -87,5 +87,11 @@ public class EmailStepResponseDto /// [JsonProperty("issues")] public StepIssuesDto? Issues { get; set; } + + /// + /// Hash identifying the deployed Cloudflare Worker for this step. + /// + [JsonProperty("stepResolverHash")] + public string? StepResolverHash { get; set; } } } \ No newline at end of file diff --git a/src/Novu/Models/Components/EnvironmentDiffSummaryDto.cs b/src/Novu/Models/Components/EnvironmentDiffSummaryDto.cs new file mode 100644 index 00000000..d7123453 --- /dev/null +++ b/src/Novu/Models/Components/EnvironmentDiffSummaryDto.cs @@ -0,0 +1,35 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + + public class EnvironmentDiffSummaryDto + { + /// + /// Total number of entities compared. + /// + [JsonProperty("totalEntities")] + public double TotalEntities { get; set; } = default!; + + /// + /// Total number of changes detected. + /// + [JsonProperty("totalChanges")] + public double TotalChanges { get; set; } = default!; + + /// + /// Whether any changes were detected. + /// + [JsonProperty("hasChanges")] + public bool HasChanges { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/EnvironmentVariableResponseDto.cs b/src/Novu/Models/Components/EnvironmentVariableResponseDto.cs new file mode 100644 index 00000000..d8d08e69 --- /dev/null +++ b/src/Novu/Models/Components/EnvironmentVariableResponseDto.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class EnvironmentVariableResponseDto + { + [JsonProperty("_id")] + public string Id { get; set; } = default!; + + [JsonProperty("_organizationId")] + public string OrganizationId { get; set; } = default!; + + [JsonProperty("key")] + public string Key { get; set; } = default!; + + [JsonProperty("type")] + public EnvironmentVariableResponseDtoType Type { get; set; } = default!; + + [JsonProperty("isSecret")] + public bool IsSecret { get; set; } = default!; + + [JsonProperty("values")] + public List Values { get; set; } = default!; + + [JsonProperty("createdAt")] + public string CreatedAt { get; set; } = default!; + + [JsonProperty("updatedAt")] + public string UpdatedAt { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/EnvironmentVariableResponseDtoType.cs b/src/Novu/Models/Components/EnvironmentVariableResponseDtoType.cs new file mode 100644 index 00000000..d5d182cd --- /dev/null +++ b/src/Novu/Models/Components/EnvironmentVariableResponseDtoType.cs @@ -0,0 +1,54 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + using System; + + public enum EnvironmentVariableResponseDtoType + { + [JsonProperty("string")] + String, + } + + public static class EnvironmentVariableResponseDtoTypeExtension + { + public static string Value(this EnvironmentVariableResponseDtoType value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static EnvironmentVariableResponseDtoType ToEnum(this string value) + { + foreach(var field in typeof(EnvironmentVariableResponseDtoType).GetFields()) + { + var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); + if (attributes.Length == 0) + { + continue; + } + + var attribute = attributes[0] as JsonPropertyAttribute; + if (attribute != null && attribute.PropertyName == value) + { + var enumVal = field.GetValue(null); + + if (enumVal is EnvironmentVariableResponseDtoType) + { + return (EnvironmentVariableResponseDtoType)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum EnvironmentVariableResponseDtoType"); + } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/EnvironmentVariableValueDto.cs b/src/Novu/Models/Components/EnvironmentVariableValueDto.cs new file mode 100644 index 00000000..e11b4b5f --- /dev/null +++ b/src/Novu/Models/Components/EnvironmentVariableValueDto.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + + public class EnvironmentVariableValueDto + { + [JsonProperty("_environmentId")] + public string EnvironmentId { get; set; } = default!; + + [JsonProperty("value")] + public string Value { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/EnvironmentVariableValueResponseDto.cs b/src/Novu/Models/Components/EnvironmentVariableValueResponseDto.cs new file mode 100644 index 00000000..12cc72ba --- /dev/null +++ b/src/Novu/Models/Components/EnvironmentVariableValueResponseDto.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + + public class EnvironmentVariableValueResponseDto + { + [JsonProperty("_environmentId")] + public string EnvironmentId { get; set; } = default!; + + /// + /// Value is masked (••••••••) for secret variables. + /// + [JsonProperty("value")] + public string Value { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/EnvironmentVariableWorkflowInfoDto.cs b/src/Novu/Models/Components/EnvironmentVariableWorkflowInfoDto.cs new file mode 100644 index 00000000..d550b80f --- /dev/null +++ b/src/Novu/Models/Components/EnvironmentVariableWorkflowInfoDto.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + + public class EnvironmentVariableWorkflowInfoDto + { + /// + /// The name of the workflow. + /// + [JsonProperty("name")] + public string Name { get; set; } = default!; + + /// + /// The unique identifier of the workflow. + /// + [JsonProperty("workflowId")] + public string WorkflowId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/FailedWorkflowDto.cs b/src/Novu/Models/Components/FailedWorkflowDto.cs new file mode 100644 index 00000000..6434d79b --- /dev/null +++ b/src/Novu/Models/Components/FailedWorkflowDto.cs @@ -0,0 +1,48 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + + public class FailedWorkflowDto + { + /// + /// Type of the layout. + /// + [JsonProperty("resourceType")] + public ResourceTypeEnum ResourceType { get; set; } = default!; + + /// + /// Resource ID. + /// + [JsonProperty("resourceId")] + public string ResourceId { get; set; } = default!; + + /// + /// Resource name. + /// + [JsonProperty("resourceName")] + public string ResourceName { get; set; } = default!; + + /// + /// Error message. + /// + [JsonProperty("error")] + public string Error { get; set; } = default!; + + /// + /// Error stack trace. + /// + [JsonProperty("stack")] + public string? Stack { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/Filter.cs b/src/Novu/Models/Components/Filter.cs new file mode 100644 index 00000000..10ecdadb --- /dev/null +++ b/src/Novu/Models/Components/Filter.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Novu.Utils; + + /// + /// The filter applied to the notifications. + /// + public class Filter + { + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/GeneratePreviewRequestDto.cs b/src/Novu/Models/Components/GeneratePreviewRequestDto.cs new file mode 100644 index 00000000..ab5a3d15 --- /dev/null +++ b/src/Novu/Models/Components/GeneratePreviewRequestDto.cs @@ -0,0 +1,31 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class GeneratePreviewRequestDto + { + /// + /// Optional control values. + /// + [JsonProperty("controlValues")] + public Dictionary? ControlValues { get; set; } + + /// + /// Optional payload for preview generation. + /// + [JsonProperty("previewPayload")] + public PreviewPayloadDto? PreviewPayload { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/GeneratePreviewResponseDto.cs b/src/Novu/Models/Components/GeneratePreviewResponseDto.cs new file mode 100644 index 00000000..8445b00e --- /dev/null +++ b/src/Novu/Models/Components/GeneratePreviewResponseDto.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class GeneratePreviewResponseDto + { + /// + /// Preview payload example. + /// + [JsonProperty("previewPayloadExample")] + public PreviewPayloadDto PreviewPayloadExample { get; set; } = default!; + + /// + /// The payload schema that was used to generate the preview payload example. + /// + [JsonProperty("schema")] + public Dictionary? Schema { get; set; } = null; + + /// + /// Sample novu-signature header value for HTTP request steps. + /// + [JsonProperty("novuSignature")] + public string? NovuSignature { get; set; } + + /// + /// Preview result. + /// + [JsonProperty("result", NullValueHandling = NullValueHandling.Include)] + public GeneratePreviewResponseDtoResult Result { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/GeneratePreviewResponseDtoResult.cs b/src/Novu/Models/Components/GeneratePreviewResponseDtoResult.cs new file mode 100644 index 00000000..5de9b2f1 --- /dev/null +++ b/src/Novu/Models/Components/GeneratePreviewResponseDtoResult.cs @@ -0,0 +1,474 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Newtonsoft.Json.Linq; + using Novu.Models.Components; + using Novu.Utils; + using System; + using System.Collections.Generic; + using System.Numerics; + using System.Reflection; + + public class GeneratePreviewResponseDtoResultUnionType + { + private GeneratePreviewResponseDtoResultUnionType(string value) { Value = value; } + + public string Value { get; private set; } + + public static GeneratePreviewResponseDtoResultUnionType MapOfAny { get { return new GeneratePreviewResponseDtoResultUnionType("mapOfAny"); } } + + public static GeneratePreviewResponseDtoResultUnionType Result2 { get { return new GeneratePreviewResponseDtoResultUnionType("result_2"); } } + + public static GeneratePreviewResponseDtoResultUnionType Three { get { return new GeneratePreviewResponseDtoResultUnionType("3"); } } + + public static GeneratePreviewResponseDtoResultUnionType Result4 { get { return new GeneratePreviewResponseDtoResultUnionType("result_4"); } } + + public static GeneratePreviewResponseDtoResultUnionType Result5 { get { return new GeneratePreviewResponseDtoResultUnionType("result_5"); } } + + public static GeneratePreviewResponseDtoResultUnionType Six { get { return new GeneratePreviewResponseDtoResultUnionType("6"); } } + + public static GeneratePreviewResponseDtoResultUnionType Seven { get { return new GeneratePreviewResponseDtoResultUnionType("7"); } } + + public static GeneratePreviewResponseDtoResultUnionType Eight { get { return new GeneratePreviewResponseDtoResultUnionType("8"); } } + + public static GeneratePreviewResponseDtoResultUnionType Nine { get { return new GeneratePreviewResponseDtoResultUnionType("9"); } } + + public override string ToString() { return Value; } + public static implicit operator String(GeneratePreviewResponseDtoResultUnionType v) { return v.Value; } + public static GeneratePreviewResponseDtoResultUnionType FromString(string v) { + switch(v) { + case "mapOfAny": return MapOfAny; + case "result_2": return Result2; + case "3": return Three; + case "result_4": return Result4; + case "result_5": return Result5; + case "6": return Six; + case "7": return Seven; + case "8": return Eight; + case "9": return Nine; + default: throw new ArgumentException("Invalid value for GeneratePreviewResponseDtoResultUnionType"); + } + } + public override bool Equals(object? obj) + { + if (obj == null || GetType() != obj.GetType()) + { + return false; + } + return Value.Equals(((GeneratePreviewResponseDtoResultUnionType)obj).Value); + } + + public override int GetHashCode() + { + return Value.GetHashCode(); + } + } + + /// + /// Preview result. + /// + [JsonConverter(typeof(GeneratePreviewResponseDtoResult.GeneratePreviewResponseDtoResultConverter))] + public class GeneratePreviewResponseDtoResult + { + public GeneratePreviewResponseDtoResult(GeneratePreviewResponseDtoResultUnionType type) + { + Type = type; + } + + [SpeakeasyMetadata("form:explode=true")] + public Dictionary? MapOfAny { get; set; } + + [SpeakeasyMetadata("form:explode=true")] + public Result2? Result2 { get; set; } + + [SpeakeasyMetadata("form:explode=true")] + public Three? Three { get; set; } + + [SpeakeasyMetadata("form:explode=true")] + public Result4? Result4 { get; set; } + + [SpeakeasyMetadata("form:explode=true")] + public Result5? Result5 { get; set; } + + [SpeakeasyMetadata("form:explode=true")] + public Six? Six { get; set; } + + [SpeakeasyMetadata("form:explode=true")] + public Seven? Seven { get; set; } + + [SpeakeasyMetadata("form:explode=true")] + public Eight? Eight { get; set; } + + [SpeakeasyMetadata("form:explode=true")] + public Nine? Nine { get; set; } + + public GeneratePreviewResponseDtoResultUnionType Type { get; set; } + public static GeneratePreviewResponseDtoResult CreateMapOfAny(Dictionary mapOfAny) + { + GeneratePreviewResponseDtoResultUnionType typ = GeneratePreviewResponseDtoResultUnionType.MapOfAny; + + GeneratePreviewResponseDtoResult res = new GeneratePreviewResponseDtoResult(typ); + res.MapOfAny = mapOfAny; + return res; + } + public static GeneratePreviewResponseDtoResult CreateResult2(Result2 result2) + { + GeneratePreviewResponseDtoResultUnionType typ = GeneratePreviewResponseDtoResultUnionType.Result2; + + GeneratePreviewResponseDtoResult res = new GeneratePreviewResponseDtoResult(typ); + res.Result2 = result2; + return res; + } + public static GeneratePreviewResponseDtoResult CreateThree(Three three) + { + GeneratePreviewResponseDtoResultUnionType typ = GeneratePreviewResponseDtoResultUnionType.Three; + + GeneratePreviewResponseDtoResult res = new GeneratePreviewResponseDtoResult(typ); + res.Three = three; + return res; + } + public static GeneratePreviewResponseDtoResult CreateResult4(Result4 result4) + { + GeneratePreviewResponseDtoResultUnionType typ = GeneratePreviewResponseDtoResultUnionType.Result4; + + GeneratePreviewResponseDtoResult res = new GeneratePreviewResponseDtoResult(typ); + res.Result4 = result4; + return res; + } + public static GeneratePreviewResponseDtoResult CreateResult5(Result5 result5) + { + GeneratePreviewResponseDtoResultUnionType typ = GeneratePreviewResponseDtoResultUnionType.Result5; + + GeneratePreviewResponseDtoResult res = new GeneratePreviewResponseDtoResult(typ); + res.Result5 = result5; + return res; + } + public static GeneratePreviewResponseDtoResult CreateSix(Six six) + { + GeneratePreviewResponseDtoResultUnionType typ = GeneratePreviewResponseDtoResultUnionType.Six; + + GeneratePreviewResponseDtoResult res = new GeneratePreviewResponseDtoResult(typ); + res.Six = six; + return res; + } + public static GeneratePreviewResponseDtoResult CreateSeven(Seven seven) + { + GeneratePreviewResponseDtoResultUnionType typ = GeneratePreviewResponseDtoResultUnionType.Seven; + + GeneratePreviewResponseDtoResult res = new GeneratePreviewResponseDtoResult(typ); + res.Seven = seven; + return res; + } + public static GeneratePreviewResponseDtoResult CreateEight(Eight eight) + { + GeneratePreviewResponseDtoResultUnionType typ = GeneratePreviewResponseDtoResultUnionType.Eight; + + GeneratePreviewResponseDtoResult res = new GeneratePreviewResponseDtoResult(typ); + res.Eight = eight; + return res; + } + public static GeneratePreviewResponseDtoResult CreateNine(Nine nine) + { + GeneratePreviewResponseDtoResultUnionType typ = GeneratePreviewResponseDtoResultUnionType.Nine; + + GeneratePreviewResponseDtoResult res = new GeneratePreviewResponseDtoResult(typ); + res.Nine = nine; + return res; + } + + public class GeneratePreviewResponseDtoResultConverter : JsonConverter + { + public override bool CanConvert(System.Type objectType) => objectType == typeof(GeneratePreviewResponseDtoResult); + + public override bool CanRead => true; + + public override object? ReadJson(JsonReader reader, System.Type objectType, object? existingValue, JsonSerializer serializer) + { + if (reader.TokenType == JsonToken.Null) + { + throw new InvalidOperationException("Received unexpected null JSON value"); + } + + var json = JRaw.Create(reader).ToString(); + var fallbackCandidates = new List<(System.Type, object, string)>(); + + try + { + return new GeneratePreviewResponseDtoResult(GeneratePreviewResponseDtoResultUnionType.Eight) + { + Eight = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember(json) + }; + } + catch (ResponseBodyDeserializer.MissingMemberException) + { + fallbackCandidates.Add((typeof(Eight), new GeneratePreviewResponseDtoResult(GeneratePreviewResponseDtoResultUnionType.Eight), "Eight")); + } + catch (ResponseBodyDeserializer.DeserializationException) + { + // try next option + } + catch (Exception) + { + throw; + } + + try + { + return new GeneratePreviewResponseDtoResult(GeneratePreviewResponseDtoResultUnionType.Nine) + { + Nine = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember(json) + }; + } + catch (ResponseBodyDeserializer.MissingMemberException) + { + fallbackCandidates.Add((typeof(Nine), new GeneratePreviewResponseDtoResult(GeneratePreviewResponseDtoResultUnionType.Nine), "Nine")); + } + catch (ResponseBodyDeserializer.DeserializationException) + { + // try next option + } + catch (Exception) + { + throw; + } + + try + { + return new GeneratePreviewResponseDtoResult(GeneratePreviewResponseDtoResultUnionType.Result2) + { + Result2 = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember(json) + }; + } + catch (ResponseBodyDeserializer.MissingMemberException) + { + fallbackCandidates.Add((typeof(Result2), new GeneratePreviewResponseDtoResult(GeneratePreviewResponseDtoResultUnionType.Result2), "Result2")); + } + catch (ResponseBodyDeserializer.DeserializationException) + { + // try next option + } + catch (Exception) + { + throw; + } + + try + { + return new GeneratePreviewResponseDtoResult(GeneratePreviewResponseDtoResultUnionType.Three) + { + Three = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember(json) + }; + } + catch (ResponseBodyDeserializer.MissingMemberException) + { + fallbackCandidates.Add((typeof(Three), new GeneratePreviewResponseDtoResult(GeneratePreviewResponseDtoResultUnionType.Three), "Three")); + } + catch (ResponseBodyDeserializer.DeserializationException) + { + // try next option + } + catch (Exception) + { + throw; + } + + try + { + return new GeneratePreviewResponseDtoResult(GeneratePreviewResponseDtoResultUnionType.Result4) + { + Result4 = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember(json) + }; + } + catch (ResponseBodyDeserializer.MissingMemberException) + { + fallbackCandidates.Add((typeof(Result4), new GeneratePreviewResponseDtoResult(GeneratePreviewResponseDtoResultUnionType.Result4), "Result4")); + } + catch (ResponseBodyDeserializer.DeserializationException) + { + // try next option + } + catch (Exception) + { + throw; + } + + try + { + return new GeneratePreviewResponseDtoResult(GeneratePreviewResponseDtoResultUnionType.Result5) + { + Result5 = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember(json) + }; + } + catch (ResponseBodyDeserializer.MissingMemberException) + { + fallbackCandidates.Add((typeof(Result5), new GeneratePreviewResponseDtoResult(GeneratePreviewResponseDtoResultUnionType.Result5), "Result5")); + } + catch (ResponseBodyDeserializer.DeserializationException) + { + // try next option + } + catch (Exception) + { + throw; + } + + try + { + return new GeneratePreviewResponseDtoResult(GeneratePreviewResponseDtoResultUnionType.Six) + { + Six = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember(json) + }; + } + catch (ResponseBodyDeserializer.MissingMemberException) + { + fallbackCandidates.Add((typeof(Six), new GeneratePreviewResponseDtoResult(GeneratePreviewResponseDtoResultUnionType.Six), "Six")); + } + catch (ResponseBodyDeserializer.DeserializationException) + { + // try next option + } + catch (Exception) + { + throw; + } + + try + { + return new GeneratePreviewResponseDtoResult(GeneratePreviewResponseDtoResultUnionType.Seven) + { + Seven = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember(json) + }; + } + catch (ResponseBodyDeserializer.MissingMemberException) + { + fallbackCandidates.Add((typeof(Seven), new GeneratePreviewResponseDtoResult(GeneratePreviewResponseDtoResultUnionType.Seven), "Seven")); + } + catch (ResponseBodyDeserializer.DeserializationException) + { + // try next option + } + catch (Exception) + { + throw; + } + + try + { + return new GeneratePreviewResponseDtoResult(GeneratePreviewResponseDtoResultUnionType.MapOfAny) + { + MapOfAny = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember>(json) + }; + } + catch (ResponseBodyDeserializer.MissingMemberException) + { + fallbackCandidates.Add((typeof(Dictionary), new GeneratePreviewResponseDtoResult(GeneratePreviewResponseDtoResultUnionType.MapOfAny), "MapOfAny")); + } + catch (ResponseBodyDeserializer.DeserializationException) + { + // try next option + } + catch (Exception) + { + throw; + } + + if (fallbackCandidates.Count > 0) + { + fallbackCandidates.Sort((a, b) => ResponseBodyDeserializer.CompareFallbackCandidates(a.Item1, b.Item1, json)); + foreach(var (deserializationType, returnObject, propertyName) in fallbackCandidates) + { + try + { + return ResponseBodyDeserializer.DeserializeUndiscriminatedUnionFallback(deserializationType, returnObject, propertyName, json); + } + catch (ResponseBodyDeserializer.DeserializationException) + { + // try next fallback option + } + catch (Exception) + { + throw; + } + } + } + + throw new InvalidOperationException("Could not deserialize into any supported types."); + } + + public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) + { + if (value == null) + { + throw new InvalidOperationException("Unexpected null JSON value."); + } + + GeneratePreviewResponseDtoResult res = (GeneratePreviewResponseDtoResult)value; + + if (res.MapOfAny != null) + { + writer.WriteRawValue(Utilities.SerializeJSON(res.MapOfAny)); + return; + } + + if (res.Result2 != null) + { + writer.WriteRawValue(Utilities.SerializeJSON(res.Result2)); + return; + } + + if (res.Three != null) + { + writer.WriteRawValue(Utilities.SerializeJSON(res.Three)); + return; + } + + if (res.Result4 != null) + { + writer.WriteRawValue(Utilities.SerializeJSON(res.Result4)); + return; + } + + if (res.Result5 != null) + { + writer.WriteRawValue(Utilities.SerializeJSON(res.Result5)); + return; + } + + if (res.Six != null) + { + writer.WriteRawValue(Utilities.SerializeJSON(res.Six)); + return; + } + + if (res.Seven != null) + { + writer.WriteRawValue(Utilities.SerializeJSON(res.Seven)); + return; + } + + if (res.Eight != null) + { + writer.WriteRawValue(Utilities.SerializeJSON(res.Eight)); + return; + } + + if (res.Nine != null) + { + writer.WriteRawValue(Utilities.SerializeJSON(res.Nine)); + return; + } + } + + } + + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/GeneratePreviewResponseDtoResult3Type.cs b/src/Novu/Models/Components/GeneratePreviewResponseDtoResult3Type.cs new file mode 100644 index 00000000..3231bc2c --- /dev/null +++ b/src/Novu/Models/Components/GeneratePreviewResponseDtoResult3Type.cs @@ -0,0 +1,54 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + using System; + + public enum GeneratePreviewResponseDtoResult3Type + { + [JsonProperty("email")] + Email, + } + + public static class GeneratePreviewResponseDtoResult3TypeExtension + { + public static string Value(this GeneratePreviewResponseDtoResult3Type value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static GeneratePreviewResponseDtoResult3Type ToEnum(this string value) + { + foreach(var field in typeof(GeneratePreviewResponseDtoResult3Type).GetFields()) + { + var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); + if (attributes.Length == 0) + { + continue; + } + + var attribute = attributes[0] as JsonPropertyAttribute; + if (attribute != null && attribute.PropertyName == value) + { + var enumVal = field.GetValue(null); + + if (enumVal is GeneratePreviewResponseDtoResult3Type) + { + return (GeneratePreviewResponseDtoResult3Type)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum GeneratePreviewResponseDtoResult3Type"); + } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/GeneratePreviewResponseDtoResult4Type.cs b/src/Novu/Models/Components/GeneratePreviewResponseDtoResult4Type.cs new file mode 100644 index 00000000..95ee6e39 --- /dev/null +++ b/src/Novu/Models/Components/GeneratePreviewResponseDtoResult4Type.cs @@ -0,0 +1,54 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + using System; + + public enum GeneratePreviewResponseDtoResult4Type + { + [JsonProperty("in_app")] + InApp, + } + + public static class GeneratePreviewResponseDtoResult4TypeExtension + { + public static string Value(this GeneratePreviewResponseDtoResult4Type value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static GeneratePreviewResponseDtoResult4Type ToEnum(this string value) + { + foreach(var field in typeof(GeneratePreviewResponseDtoResult4Type).GetFields()) + { + var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); + if (attributes.Length == 0) + { + continue; + } + + var attribute = attributes[0] as JsonPropertyAttribute; + if (attribute != null && attribute.PropertyName == value) + { + var enumVal = field.GetValue(null); + + if (enumVal is GeneratePreviewResponseDtoResult4Type) + { + return (GeneratePreviewResponseDtoResult4Type)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum GeneratePreviewResponseDtoResult4Type"); + } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/GeneratePreviewResponseDtoResult5Type.cs b/src/Novu/Models/Components/GeneratePreviewResponseDtoResult5Type.cs new file mode 100644 index 00000000..20d6d48b --- /dev/null +++ b/src/Novu/Models/Components/GeneratePreviewResponseDtoResult5Type.cs @@ -0,0 +1,54 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + using System; + + public enum GeneratePreviewResponseDtoResult5Type + { + [JsonProperty("sms")] + Sms, + } + + public static class GeneratePreviewResponseDtoResult5TypeExtension + { + public static string Value(this GeneratePreviewResponseDtoResult5Type value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static GeneratePreviewResponseDtoResult5Type ToEnum(this string value) + { + foreach(var field in typeof(GeneratePreviewResponseDtoResult5Type).GetFields()) + { + var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); + if (attributes.Length == 0) + { + continue; + } + + var attribute = attributes[0] as JsonPropertyAttribute; + if (attribute != null && attribute.PropertyName == value) + { + var enumVal = field.GetValue(null); + + if (enumVal is GeneratePreviewResponseDtoResult5Type) + { + return (GeneratePreviewResponseDtoResult5Type)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum GeneratePreviewResponseDtoResult5Type"); + } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/GeneratePreviewResponseDtoResult6Type.cs b/src/Novu/Models/Components/GeneratePreviewResponseDtoResult6Type.cs new file mode 100644 index 00000000..c3683d75 --- /dev/null +++ b/src/Novu/Models/Components/GeneratePreviewResponseDtoResult6Type.cs @@ -0,0 +1,54 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + using System; + + public enum GeneratePreviewResponseDtoResult6Type + { + [JsonProperty("push")] + Push, + } + + public static class GeneratePreviewResponseDtoResult6TypeExtension + { + public static string Value(this GeneratePreviewResponseDtoResult6Type value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static GeneratePreviewResponseDtoResult6Type ToEnum(this string value) + { + foreach(var field in typeof(GeneratePreviewResponseDtoResult6Type).GetFields()) + { + var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); + if (attributes.Length == 0) + { + continue; + } + + var attribute = attributes[0] as JsonPropertyAttribute; + if (attribute != null && attribute.PropertyName == value) + { + var enumVal = field.GetValue(null); + + if (enumVal is GeneratePreviewResponseDtoResult6Type) + { + return (GeneratePreviewResponseDtoResult6Type)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum GeneratePreviewResponseDtoResult6Type"); + } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/GeneratePreviewResponseDtoResult7Type.cs b/src/Novu/Models/Components/GeneratePreviewResponseDtoResult7Type.cs new file mode 100644 index 00000000..c2def3e9 --- /dev/null +++ b/src/Novu/Models/Components/GeneratePreviewResponseDtoResult7Type.cs @@ -0,0 +1,54 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + using System; + + public enum GeneratePreviewResponseDtoResult7Type + { + [JsonProperty("chat")] + Chat, + } + + public static class GeneratePreviewResponseDtoResult7TypeExtension + { + public static string Value(this GeneratePreviewResponseDtoResult7Type value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static GeneratePreviewResponseDtoResult7Type ToEnum(this string value) + { + foreach(var field in typeof(GeneratePreviewResponseDtoResult7Type).GetFields()) + { + var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); + if (attributes.Length == 0) + { + continue; + } + + var attribute = attributes[0] as JsonPropertyAttribute; + if (attribute != null && attribute.PropertyName == value) + { + var enumVal = field.GetValue(null); + + if (enumVal is GeneratePreviewResponseDtoResult7Type) + { + return (GeneratePreviewResponseDtoResult7Type)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum GeneratePreviewResponseDtoResult7Type"); + } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/GeneratePreviewResponseDtoResult8Type.cs b/src/Novu/Models/Components/GeneratePreviewResponseDtoResult8Type.cs new file mode 100644 index 00000000..bfd43461 --- /dev/null +++ b/src/Novu/Models/Components/GeneratePreviewResponseDtoResult8Type.cs @@ -0,0 +1,54 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + using System; + + public enum GeneratePreviewResponseDtoResult8Type + { + [JsonProperty("delay")] + Delay, + } + + public static class GeneratePreviewResponseDtoResult8TypeExtension + { + public static string Value(this GeneratePreviewResponseDtoResult8Type value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static GeneratePreviewResponseDtoResult8Type ToEnum(this string value) + { + foreach(var field in typeof(GeneratePreviewResponseDtoResult8Type).GetFields()) + { + var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); + if (attributes.Length == 0) + { + continue; + } + + var attribute = attributes[0] as JsonPropertyAttribute; + if (attribute != null && attribute.PropertyName == value) + { + var enumVal = field.GetValue(null); + + if (enumVal is GeneratePreviewResponseDtoResult8Type) + { + return (GeneratePreviewResponseDtoResult8Type)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum GeneratePreviewResponseDtoResult8Type"); + } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/GeneratePreviewResponseDtoResult9Type.cs b/src/Novu/Models/Components/GeneratePreviewResponseDtoResult9Type.cs new file mode 100644 index 00000000..7f5b39b0 --- /dev/null +++ b/src/Novu/Models/Components/GeneratePreviewResponseDtoResult9Type.cs @@ -0,0 +1,54 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + using System; + + public enum GeneratePreviewResponseDtoResult9Type + { + [JsonProperty("digest")] + Digest, + } + + public static class GeneratePreviewResponseDtoResult9TypeExtension + { + public static string Value(this GeneratePreviewResponseDtoResult9Type value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static GeneratePreviewResponseDtoResult9Type ToEnum(this string value) + { + foreach(var field in typeof(GeneratePreviewResponseDtoResult9Type).GetFields()) + { + var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); + if (attributes.Length == 0) + { + continue; + } + + var attribute = attributes[0] as JsonPropertyAttribute; + if (attribute != null && attribute.PropertyName == value) + { + var enumVal = field.GetValue(null); + + if (enumVal is GeneratePreviewResponseDtoResult9Type) + { + return (GeneratePreviewResponseDtoResult9Type)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum GeneratePreviewResponseDtoResult9Type"); + } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/GeneratePreviewResponseDtoResultType.cs b/src/Novu/Models/Components/GeneratePreviewResponseDtoResultType.cs new file mode 100644 index 00000000..58429803 --- /dev/null +++ b/src/Novu/Models/Components/GeneratePreviewResponseDtoResultType.cs @@ -0,0 +1,54 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + using System; + + public enum GeneratePreviewResponseDtoResultType + { + [JsonProperty("email")] + Email, + } + + public static class GeneratePreviewResponseDtoResultTypeExtension + { + public static string Value(this GeneratePreviewResponseDtoResultType value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static GeneratePreviewResponseDtoResultType ToEnum(this string value) + { + foreach(var field in typeof(GeneratePreviewResponseDtoResultType).GetFields()) + { + var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); + if (attributes.Length == 0) + { + continue; + } + + var attribute = attributes[0] as JsonPropertyAttribute; + if (attribute != null && attribute.PropertyName == value) + { + var enumVal = field.GetValue(null); + + if (enumVal is GeneratePreviewResponseDtoResultType) + { + return (GeneratePreviewResponseDtoResultType)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum GeneratePreviewResponseDtoResultType"); + } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/GetChannelEndpointResponseDtoProviderId.cs b/src/Novu/Models/Components/GetChannelEndpointResponseDtoProviderId.cs index 315cd684..49d3deca 100644 --- a/src/Novu/Models/Components/GetChannelEndpointResponseDtoProviderId.cs +++ b/src/Novu/Models/Components/GetChannelEndpointResponseDtoProviderId.cs @@ -132,6 +132,8 @@ public enum GetChannelEndpointResponseDtoProviderId Sinch, [JsonProperty("isendpro-sms")] IsendproSms, + [JsonProperty("cm-telecom")] + CmTelecom, [JsonProperty("fcm")] Fcm, [JsonProperty("apns")] diff --git a/src/Novu/Models/Components/GetEnvironmentVariableUsageResponseDto.cs b/src/Novu/Models/Components/GetEnvironmentVariableUsageResponseDto.cs new file mode 100644 index 00000000..24140983 --- /dev/null +++ b/src/Novu/Models/Components/GetEnvironmentVariableUsageResponseDto.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class GetEnvironmentVariableUsageResponseDto + { + /// + /// Array of workflows that reference this environment variable. + /// + [JsonProperty("workflows")] + public List Workflows { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/GetSubscriberNotificationsCountResponseDto.cs b/src/Novu/Models/Components/GetSubscriberNotificationsCountResponseDto.cs new file mode 100644 index 00000000..20040adb --- /dev/null +++ b/src/Novu/Models/Components/GetSubscriberNotificationsCountResponseDto.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + using System.Collections.Generic; + + public class GetSubscriberNotificationsCountResponseDto + { + /// + /// The count of notifications matching the filter. + /// + [JsonProperty("count")] + public double Count { get; set; } = default!; + + /// + /// The filter applied. + /// + [JsonProperty("filter")] + public Dictionary Filter { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/GetSubscriberNotificationsResponseDto.cs b/src/Novu/Models/Components/GetSubscriberNotificationsResponseDto.cs new file mode 100644 index 00000000..059464f6 --- /dev/null +++ b/src/Novu/Models/Components/GetSubscriberNotificationsResponseDto.cs @@ -0,0 +1,37 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class GetSubscriberNotificationsResponseDto + { + /// + /// Array of notifications. + /// + [JsonProperty("data")] + public List Data { get; set; } = default!; + + /// + /// Indicates if there are more notifications available. + /// + [JsonProperty("hasMore")] + public bool HasMore { get; set; } = default!; + + /// + /// The filter applied to the notifications. + /// + [JsonProperty("filter")] + public Filter Filter { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/HttpMethodEnum.cs b/src/Novu/Models/Components/HttpMethodEnum.cs new file mode 100644 index 00000000..2468a1cd --- /dev/null +++ b/src/Novu/Models/Components/HttpMethodEnum.cs @@ -0,0 +1,65 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + using System; + + /// + /// HTTP method. + /// + public enum HttpMethodEnum + { + [JsonProperty("GET")] + Get, + [JsonProperty("POST")] + Post, + [JsonProperty("PUT")] + Put, + [JsonProperty("DELETE")] + Delete, + [JsonProperty("PATCH")] + Patch, + } + + public static class HttpMethodEnumExtension + { + public static string Value(this HttpMethodEnum value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static HttpMethodEnum ToEnum(this string value) + { + foreach(var field in typeof(HttpMethodEnum).GetFields()) + { + var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); + if (attributes.Length == 0) + { + continue; + } + + var attribute = attributes[0] as JsonPropertyAttribute; + if (attribute != null && attribute.PropertyName == value) + { + var enumVal = field.GetValue(null); + + if (enumVal is HttpMethodEnum) + { + return (HttpMethodEnum)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum HttpMethodEnum"); + } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/HttpRequestControlDto.cs b/src/Novu/Models/Components/HttpRequestControlDto.cs new file mode 100644 index 00000000..9c24ad61 --- /dev/null +++ b/src/Novu/Models/Components/HttpRequestControlDto.cs @@ -0,0 +1,61 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class HttpRequestControlDto + { + /// + /// HTTP method. + /// + [JsonProperty("method")] + public HttpMethodEnum Method { get; set; } = default!; + + /// + /// Target URL for the HTTP request. + /// + [JsonProperty("url")] + public string Url { get; set; } = default!; + + /// + /// Request headers as key-value pairs. + /// + [JsonProperty("headers")] + public List? Headers { get; set; } + + /// + /// Request body as key-value pairs. + /// + [JsonProperty("body")] + public List? Body { get; set; } + + /// + /// JSON schema to validate response body against. + /// + [JsonProperty("responseBodySchema")] + public Dictionary? ResponseBodySchema { get; set; } + + /// + /// Whether to enforce response body schema validation. + /// + [JsonProperty("enforceSchemaValidation")] + public bool? EnforceSchemaValidation { get; set; } + + /// + /// Whether to continue workflow execution on failure. + /// + [JsonProperty("continueOnFailure")] + public bool? ContinueOnFailure { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/HttpRequestControlsMetadataResponseDto.cs b/src/Novu/Models/Components/HttpRequestControlsMetadataResponseDto.cs new file mode 100644 index 00000000..33c30f0e --- /dev/null +++ b/src/Novu/Models/Components/HttpRequestControlsMetadataResponseDto.cs @@ -0,0 +1,37 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class HttpRequestControlsMetadataResponseDto + { + /// + /// JSON Schema for data. + /// + [JsonProperty("dataSchema")] + public Dictionary? DataSchema { get; set; } + + /// + /// UI Schema for rendering. + /// + [JsonProperty("uiSchema")] + public UiSchema? UiSchema { get; set; } + + /// + /// Control values specific to HTTP Request step. + /// + [JsonProperty("values")] + public HttpRequestControlDto Values { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/HttpRequestKeyValuePairDto.cs b/src/Novu/Models/Components/HttpRequestKeyValuePairDto.cs new file mode 100644 index 00000000..6616da33 --- /dev/null +++ b/src/Novu/Models/Components/HttpRequestKeyValuePairDto.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + + public class HttpRequestKeyValuePairDto + { + /// + /// Key of the key-value pair. + /// + [JsonProperty("key")] + public string Key { get; set; } = default!; + + /// + /// Value of the key-value pair. + /// + [JsonProperty("value")] + public string Value { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/HttpRequestStepResponseDto.cs b/src/Novu/Models/Components/HttpRequestStepResponseDto.cs new file mode 100644 index 00000000..3e37f114 --- /dev/null +++ b/src/Novu/Models/Components/HttpRequestStepResponseDto.cs @@ -0,0 +1,97 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class HttpRequestStepResponseDto + { + /// + /// Controls metadata for the HTTP request step. + /// + [JsonProperty("controls")] + public HttpRequestControlsMetadataResponseDto Controls { get; set; } = default!; + + /// + /// Control values for the HTTP request step. + /// + [JsonProperty("controlValues")] + public HttpRequestStepResponseDtoControlValues? ControlValues { get; set; } + + /// + /// JSON Schema for variables, follows the JSON Schema standard. + /// + [JsonProperty("variables")] + public Dictionary Variables { get; set; } = default!; + + /// + /// Unique identifier of the step. + /// + [JsonProperty("stepId")] + public string StepId { get; set; } = default!; + + /// + /// Database identifier of the step. + /// + [JsonProperty("_id")] + public string Id { get; set; } = default!; + + /// + /// Name of the step. + /// + [JsonProperty("name")] + public string Name { get; set; } = default!; + + /// + /// Slug of the step. + /// + [JsonProperty("slug")] + public string Slug { get; set; } = default!; + + /// + /// Type of the step. + /// + [JsonProperty("type")] + public StepTypeEnum Type { get; set; } = default!; + + /// + /// Origin of the layout. + /// + [JsonProperty("origin")] + public ResourceOriginEnum Origin { get; set; } = default!; + + /// + /// Workflow identifier. + /// + [JsonProperty("workflowId")] + public string WorkflowId { get; set; } = default!; + + /// + /// Workflow database identifier. + /// + [JsonProperty("workflowDatabaseId")] + public string WorkflowDatabaseId { get; set; } = default!; + + /// + /// Issues associated with the step. + /// + [JsonProperty("issues")] + public StepIssuesDto? Issues { get; set; } + + /// + /// Hash identifying the deployed Cloudflare Worker for this step. + /// + [JsonProperty("stepResolverHash")] + public string? StepResolverHash { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/HttpRequestStepResponseDtoControlValues.cs b/src/Novu/Models/Components/HttpRequestStepResponseDtoControlValues.cs new file mode 100644 index 00000000..8f5adc43 --- /dev/null +++ b/src/Novu/Models/Components/HttpRequestStepResponseDtoControlValues.cs @@ -0,0 +1,67 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + /// + /// Control values for the HTTP request step. + /// + public class HttpRequestStepResponseDtoControlValues + { + /// + /// HTTP method. + /// + [JsonProperty("method")] + public HttpMethodEnum Method { get; set; } = default!; + + /// + /// Target URL for the HTTP request. + /// + [JsonProperty("url")] + public string Url { get; set; } = default!; + + /// + /// Request headers as key-value pairs. + /// + [JsonProperty("headers")] + public List? Headers { get; set; } + + /// + /// Request body as key-value pairs. + /// + [JsonProperty("body")] + public List? Body { get; set; } + + /// + /// JSON schema to validate response body against. + /// + [JsonProperty("responseBodySchema")] + public Dictionary? ResponseBodySchema { get; set; } + + /// + /// Whether to enforce response body schema validation. + /// + [JsonProperty("enforceSchemaValidation")] + public bool? EnforceSchemaValidation { get; set; } + + /// + /// Whether to continue workflow execution on failure. + /// + [JsonProperty("continueOnFailure")] + public bool? ContinueOnFailure { get; set; } + + [JsonProperty("additionalProperties")] + public Dictionary? AdditionalProperties { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/HttpRequestStepUpsertDto.cs b/src/Novu/Models/Components/HttpRequestStepUpsertDto.cs new file mode 100644 index 00000000..a1eb7f34 --- /dev/null +++ b/src/Novu/Models/Components/HttpRequestStepUpsertDto.cs @@ -0,0 +1,48 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + + public class HttpRequestStepUpsertDto + { + /// + /// Database identifier of the step. Used for updating the step. + /// + [JsonProperty("_id")] + public string? Id { get; set; } + + /// + /// Unique identifier for the step. + /// + [JsonProperty("stepId")] + public string? StepId { get; set; } + + /// + /// Name of the step. + /// + [JsonProperty("name")] + public string Name { get; set; } = default!; + + /// + /// Type of the step. + /// + [JsonProperty("type")] + public StepTypeEnum Type { get; set; } = default!; + + /// + /// Control values for the HTTP Request step. + /// + [JsonProperty("controlValues", NullValueHandling = NullValueHandling.Include)] + public HttpRequestStepUpsertDtoControlValues? ControlValues { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/HttpRequestStepUpsertDtoControlValues.cs b/src/Novu/Models/Components/HttpRequestStepUpsertDtoControlValues.cs new file mode 100644 index 00000000..3df95686 --- /dev/null +++ b/src/Novu/Models/Components/HttpRequestStepUpsertDtoControlValues.cs @@ -0,0 +1,194 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Newtonsoft.Json.Linq; + using Novu.Models.Components; + using Novu.Utils; + using System; + using System.Collections.Generic; + using System.Numerics; + using System.Reflection; + + public class HttpRequestStepUpsertDtoControlValuesType + { + private HttpRequestStepUpsertDtoControlValuesType(string value) { Value = value; } + + public string Value { get; private set; } + + public static HttpRequestStepUpsertDtoControlValuesType HttpRequestControlDto { get { return new HttpRequestStepUpsertDtoControlValuesType("HttpRequestControlDto"); } } + + public static HttpRequestStepUpsertDtoControlValuesType MapOfAny { get { return new HttpRequestStepUpsertDtoControlValuesType("mapOfAny"); } } + + public override string ToString() { return Value; } + public static implicit operator String(HttpRequestStepUpsertDtoControlValuesType v) { return v.Value; } + public static HttpRequestStepUpsertDtoControlValuesType FromString(string v) { + switch(v) { + case "HttpRequestControlDto": return HttpRequestControlDto; + case "mapOfAny": return MapOfAny; + default: throw new ArgumentException("Invalid value for HttpRequestStepUpsertDtoControlValuesType"); + } + } + public override bool Equals(object? obj) + { + if (obj == null || GetType() != obj.GetType()) + { + return false; + } + return Value.Equals(((HttpRequestStepUpsertDtoControlValuesType)obj).Value); + } + + public override int GetHashCode() + { + return Value.GetHashCode(); + } + } + + /// + /// Control values for the HTTP Request step. + /// + [JsonConverter(typeof(HttpRequestStepUpsertDtoControlValues.HttpRequestStepUpsertDtoControlValuesConverter))] + public class HttpRequestStepUpsertDtoControlValues + { + public HttpRequestStepUpsertDtoControlValues(HttpRequestStepUpsertDtoControlValuesType type) + { + Type = type; + } + + [SpeakeasyMetadata("form:explode=true")] + public HttpRequestControlDto? HttpRequestControlDto { get; set; } + + [SpeakeasyMetadata("form:explode=true")] + public Dictionary? MapOfAny { get; set; } + + public HttpRequestStepUpsertDtoControlValuesType Type { get; set; } + public static HttpRequestStepUpsertDtoControlValues CreateHttpRequestControlDto(HttpRequestControlDto httpRequestControlDto) + { + HttpRequestStepUpsertDtoControlValuesType typ = HttpRequestStepUpsertDtoControlValuesType.HttpRequestControlDto; + + HttpRequestStepUpsertDtoControlValues res = new HttpRequestStepUpsertDtoControlValues(typ); + res.HttpRequestControlDto = httpRequestControlDto; + return res; + } + public static HttpRequestStepUpsertDtoControlValues CreateMapOfAny(Dictionary mapOfAny) + { + HttpRequestStepUpsertDtoControlValuesType typ = HttpRequestStepUpsertDtoControlValuesType.MapOfAny; + + HttpRequestStepUpsertDtoControlValues res = new HttpRequestStepUpsertDtoControlValues(typ); + res.MapOfAny = mapOfAny; + return res; + } + + public class HttpRequestStepUpsertDtoControlValuesConverter : JsonConverter + { + public override bool CanConvert(System.Type objectType) => objectType == typeof(HttpRequestStepUpsertDtoControlValues); + + public override bool CanRead => true; + + public override object? ReadJson(JsonReader reader, System.Type objectType, object? existingValue, JsonSerializer serializer) + { + if (reader.TokenType == JsonToken.Null) + { + throw new InvalidOperationException("Received unexpected null JSON value"); + } + + var json = JRaw.Create(reader).ToString(); + var fallbackCandidates = new List<(System.Type, object, string)>(); + + try + { + return new HttpRequestStepUpsertDtoControlValues(HttpRequestStepUpsertDtoControlValuesType.HttpRequestControlDto) + { + HttpRequestControlDto = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember(json) + }; + } + catch (ResponseBodyDeserializer.MissingMemberException) + { + fallbackCandidates.Add((typeof(HttpRequestControlDto), new HttpRequestStepUpsertDtoControlValues(HttpRequestStepUpsertDtoControlValuesType.HttpRequestControlDto), "HttpRequestControlDto")); + } + catch (ResponseBodyDeserializer.DeserializationException) + { + // try next option + } + catch (Exception) + { + throw; + } + + try + { + return new HttpRequestStepUpsertDtoControlValues(HttpRequestStepUpsertDtoControlValuesType.MapOfAny) + { + MapOfAny = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember>(json) + }; + } + catch (ResponseBodyDeserializer.MissingMemberException) + { + fallbackCandidates.Add((typeof(Dictionary), new HttpRequestStepUpsertDtoControlValues(HttpRequestStepUpsertDtoControlValuesType.MapOfAny), "MapOfAny")); + } + catch (ResponseBodyDeserializer.DeserializationException) + { + // try next option + } + catch (Exception) + { + throw; + } + + if (fallbackCandidates.Count > 0) + { + fallbackCandidates.Sort((a, b) => ResponseBodyDeserializer.CompareFallbackCandidates(a.Item1, b.Item1, json)); + foreach(var (deserializationType, returnObject, propertyName) in fallbackCandidates) + { + try + { + return ResponseBodyDeserializer.DeserializeUndiscriminatedUnionFallback(deserializationType, returnObject, propertyName, json); + } + catch (ResponseBodyDeserializer.DeserializationException) + { + // try next fallback option + } + catch (Exception) + { + throw; + } + } + } + + throw new InvalidOperationException("Could not deserialize into any supported types."); + } + + public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) + { + if (value == null) + { + throw new InvalidOperationException("Unexpected null JSON value."); + } + + HttpRequestStepUpsertDtoControlValues res = (HttpRequestStepUpsertDtoControlValues)value; + + if (res.HttpRequestControlDto != null) + { + writer.WriteRawValue(Utilities.SerializeJSON(res.HttpRequestControlDto)); + return; + } + + if (res.MapOfAny != null) + { + writer.WriteRawValue(Utilities.SerializeJSON(res.MapOfAny)); + return; + } + } + + } + + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/InAppRenderOutput.cs b/src/Novu/Models/Components/InAppRenderOutput.cs new file mode 100644 index 00000000..28aee36c --- /dev/null +++ b/src/Novu/Models/Components/InAppRenderOutput.cs @@ -0,0 +1,61 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class InAppRenderOutput + { + /// + /// Subject of the in-app notification. + /// + [JsonProperty("subject")] + public string? Subject { get; set; } + + /// + /// Body of the in-app notification. + /// + [JsonProperty("body")] + public string Body { get; set; } = default!; + + /// + /// Avatar for the in-app notification. + /// + [JsonProperty("avatar")] + public string? Avatar { get; set; } + + /// + /// Primary action details. + /// + [JsonProperty("primaryAction")] + public ActionDto? PrimaryAction { get; set; } + + /// + /// Secondary action details. + /// + [JsonProperty("secondaryAction")] + public ActionDto? SecondaryAction { get; set; } + + /// + /// Additional data. + /// + [JsonProperty("data")] + public Dictionary? Data { get; set; } + + /// + /// Redirect details. + /// + [JsonProperty("redirect")] + public RedirectDto? Redirect { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/InAppStepResponseDto.cs b/src/Novu/Models/Components/InAppStepResponseDto.cs index 185d2b8c..f59593ac 100644 --- a/src/Novu/Models/Components/InAppStepResponseDto.cs +++ b/src/Novu/Models/Components/InAppStepResponseDto.cs @@ -87,5 +87,11 @@ public class InAppStepResponseDto /// [JsonProperty("issues")] public StepIssuesDto? Issues { get; set; } + + /// + /// Hash identifying the deployed Cloudflare Worker for this step. + /// + [JsonProperty("stepResolverHash")] + public string? StepResolverHash { get; set; } } } \ No newline at end of file diff --git a/src/Novu/Models/Components/InboxActionDto.cs b/src/Novu/Models/Components/InboxActionDto.cs new file mode 100644 index 00000000..0c46c25d --- /dev/null +++ b/src/Novu/Models/Components/InboxActionDto.cs @@ -0,0 +1,36 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + + public class InboxActionDto + { + /// + /// Label of the action button. + /// + [JsonProperty("label")] + public string Label { get; set; } = default!; + + /// + /// Whether the action has been completed. + /// + [JsonProperty("isCompleted")] + public bool IsCompleted { get; set; } = default!; + + /// + /// Redirect configuration for the action. + /// + [JsonProperty("redirect")] + public RedirectDto? Redirect { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/InboxNotificationDto.cs b/src/Novu/Models/Components/InboxNotificationDto.cs new file mode 100644 index 00000000..cef30ff4 --- /dev/null +++ b/src/Novu/Models/Components/InboxNotificationDto.cs @@ -0,0 +1,163 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class InboxNotificationDto + { + /// + /// Unique identifier of the notification. + /// + [JsonProperty("id")] + public string Id { get; set; } = default!; + + /// + /// Transaction identifier of the notification. + /// + [JsonProperty("transactionId")] + public string TransactionId { get; set; } = default!; + + /// + /// Subject of the notification. + /// + [JsonProperty("subject")] + public string? Subject { get; set; } + + /// + /// Body content of the notification. + /// + [JsonProperty("body")] + public string Body { get; set; } = default!; + + /// + /// Subscriber this notification was sent to. + /// + [JsonProperty("to")] + public InboxSubscriberResponseDto To { get; set; } = default!; + + /// + /// Whether the notification has been read. + /// + [JsonProperty("isRead")] + public bool IsRead { get; set; } = default!; + + /// + /// Whether the notification has been seen. + /// + [JsonProperty("isSeen")] + public bool IsSeen { get; set; } = default!; + + /// + /// Whether the notification has been archived. + /// + [JsonProperty("isArchived")] + public bool IsArchived { get; set; } = default!; + + /// + /// Whether the notification is snoozed. + /// + [JsonProperty("isSnoozed")] + public bool IsSnoozed { get; set; } = default!; + + /// + /// ISO timestamp when the notification will be unsnoozed. + /// + [JsonProperty("snoozedUntil")] + public string? SnoozedUntil { get; set; } = null; + + /// + /// Timestamps when the notification was delivered. + /// + [JsonProperty("deliveredAt")] + public List? DeliveredAt { get; set; } + + /// + /// ISO timestamp when the notification was created. + /// + [JsonProperty("createdAt")] + public string CreatedAt { get; set; } = default!; + + /// + /// ISO timestamp when the notification was read. + /// + [JsonProperty("readAt")] + public string? ReadAt { get; set; } = null; + + /// + /// ISO timestamp when the notification was first seen. + /// + [JsonProperty("firstSeenAt")] + public string? FirstSeenAt { get; set; } = null; + + /// + /// ISO timestamp when the notification was archived. + /// + [JsonProperty("archivedAt")] + public string? ArchivedAt { get; set; } = null; + + /// + /// Avatar URL for the notification. + /// + [JsonProperty("avatar")] + public string? Avatar { get; set; } + + /// + /// Primary action button for the notification. + /// + [JsonProperty("primaryAction")] + public InboxActionDto? PrimaryAction { get; set; } + + /// + /// Secondary action button for the notification. + /// + [JsonProperty("secondaryAction")] + public InboxActionDto? SecondaryAction { get; set; } + + /// + /// Channel type through which the message is sent. + /// + [JsonProperty("channelType")] + public ChannelTypeEnum ChannelType { get; set; } = default!; + + /// + /// Tags associated with the notification. + /// + [JsonProperty("tags")] + public List? Tags { get; set; } + + /// + /// Custom data payload of the notification. + /// + [JsonProperty("data")] + public Dictionary? Data { get; set; } + + /// + /// Redirect configuration for the notification. + /// + [JsonProperty("redirect")] + public RedirectDto? Redirect { get; set; } + + /// + /// Workflow associated with the notification. + /// + [JsonProperty("workflow")] + public NotificationWorkflowDto? Workflow { get; set; } + + /// + /// Severity of the workflow. + /// + [JsonProperty("severity")] + public SeverityLevelEnum Severity { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/InboxSubscriberResponseDto.cs b/src/Novu/Models/Components/InboxSubscriberResponseDto.cs new file mode 100644 index 00000000..92f193ee --- /dev/null +++ b/src/Novu/Models/Components/InboxSubscriberResponseDto.cs @@ -0,0 +1,47 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + + public class InboxSubscriberResponseDto + { + /// + /// Unique identifier of the subscriber. + /// + [JsonProperty("id")] + public string Id { get; set; } = default!; + + /// + /// First name of the subscriber. + /// + [JsonProperty("firstName")] + public string? FirstName { get; set; } + + /// + /// Last name of the subscriber. + /// + [JsonProperty("lastName")] + public string? LastName { get; set; } + + /// + /// Avatar URL of the subscriber. + /// + [JsonProperty("avatar")] + public string? Avatar { get; set; } + + /// + /// External subscriber identifier. + /// + [JsonProperty("subscriberId")] + public string SubscriberId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/IntegrationResponseDto.cs b/src/Novu/Models/Components/IntegrationResponseDto.cs index 17048893..f59def69 100644 --- a/src/Novu/Models/Components/IntegrationResponseDto.cs +++ b/src/Novu/Models/Components/IntegrationResponseDto.cs @@ -53,7 +53,7 @@ public class IntegrationResponseDto public string ProviderId { get; set; } = default!; /// - /// The channel type for the integration, which defines how the integration communicates (e.g., email, SMS). + /// The channel type for the integration, which defines how it communicates (e.g., email, SMS). /// [JsonProperty("channel")] public IntegrationResponseDtoChannel Channel { get; set; } = default!; diff --git a/src/Novu/Models/Components/IntegrationResponseDtoChannel.cs b/src/Novu/Models/Components/IntegrationResponseDtoChannel.cs index c1ed4ef2..6fca81ac 100644 --- a/src/Novu/Models/Components/IntegrationResponseDtoChannel.cs +++ b/src/Novu/Models/Components/IntegrationResponseDtoChannel.cs @@ -14,7 +14,7 @@ namespace Novu.Models.Components using System; /// - /// The channel type for the integration, which defines how the integration communicates (e.g., email, SMS). + /// The channel type for the integration, which defines how it communicates (e.g., email, SMS). /// public enum IntegrationResponseDtoChannel { diff --git a/src/Novu/Models/Components/LookBackWindow.cs b/src/Novu/Models/Components/LookBackWindow.cs new file mode 100644 index 00000000..d88b83a5 --- /dev/null +++ b/src/Novu/Models/Components/LookBackWindow.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Novu.Utils; + + /// + /// Look back window configuration. + /// + public class LookBackWindow + { + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/MarkSubscriberNotificationsAsSeenDto.cs b/src/Novu/Models/Components/MarkSubscriberNotificationsAsSeenDto.cs new file mode 100644 index 00000000..f01876fd --- /dev/null +++ b/src/Novu/Models/Components/MarkSubscriberNotificationsAsSeenDto.cs @@ -0,0 +1,43 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class MarkSubscriberNotificationsAsSeenDto + { + /// + /// Specific notification IDs to mark as seen. + /// + [JsonProperty("notificationIds")] + public List? NotificationIds { get; set; } + + /// + /// Filter notifications by workflow tags (OR for string[], or { and: [{ or: string[] }, ...] } for AND of OR-groups). + /// + [JsonProperty("tags")] + public MarkSubscriberNotificationsAsSeenDtoTags? Tags { get; set; } + + /// + /// Filter notifications by data attributes (JSON string). + /// + [JsonProperty("data")] + public string? Data { get; set; } + + /// + /// Context keys for filtering notifications. + /// + [JsonProperty("contextKeys")] + public List? ContextKeys { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/MarkSubscriberNotificationsAsSeenDtoTags.cs b/src/Novu/Models/Components/MarkSubscriberNotificationsAsSeenDtoTags.cs new file mode 100644 index 00000000..a1795490 --- /dev/null +++ b/src/Novu/Models/Components/MarkSubscriberNotificationsAsSeenDtoTags.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Novu.Utils; + + /// + /// Filter notifications by workflow tags (OR for string[], or { and: [{ or: string[] }, ...] } for AND of OR-groups). + /// + public class MarkSubscriberNotificationsAsSeenDtoTags + { + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/Nine.cs b/src/Novu/Models/Components/Nine.cs new file mode 100644 index 00000000..73b65487 --- /dev/null +++ b/src/Novu/Models/Components/Nine.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + + public class Nine + { + [JsonProperty("type")] + public GeneratePreviewResponseDtoResult9Type? Type { get; set; } + + [JsonProperty("preview")] + public DigestRegularOutput? Preview { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/NotificationWorkflowDto.cs b/src/Novu/Models/Components/NotificationWorkflowDto.cs new file mode 100644 index 00000000..1b5c84ab --- /dev/null +++ b/src/Novu/Models/Components/NotificationWorkflowDto.cs @@ -0,0 +1,61 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class NotificationWorkflowDto + { + /// + /// Unique identifier of the workflow. + /// + [JsonProperty("id")] + public string Id { get; set; } = default!; + + /// + /// Workflow identifier used for triggering. + /// + [JsonProperty("identifier")] + public string Identifier { get; set; } = default!; + + /// + /// Human-readable name of the workflow. + /// + [JsonProperty("name")] + public string Name { get; set; } = default!; + + /// + /// Whether this workflow is marked as critical. + /// + [JsonProperty("critical")] + public bool Critical { get; set; } = default!; + + /// + /// Tags associated with the workflow. + /// + [JsonProperty("tags")] + public List? Tags { get; set; } + + /// + /// Custom data associated with the workflow. + /// + [JsonProperty("data")] + public Dictionary? Data { get; set; } + + /// + /// Severity of the workflow. + /// + [JsonProperty("severity")] + public SeverityLevelEnum Severity { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/PreviewErrorDto.cs b/src/Novu/Models/Components/PreviewErrorDto.cs new file mode 100644 index 00000000..f6bd44c6 --- /dev/null +++ b/src/Novu/Models/Components/PreviewErrorDto.cs @@ -0,0 +1,35 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + + public class PreviewErrorDto + { + /// + /// Short error title. + /// + [JsonProperty("title")] + public string Title { get; set; } = default!; + + /// + /// Detailed error message. + /// + [JsonProperty("message")] + public string Message { get; set; } = default!; + + /// + /// Actionable hint for the user. + /// + [JsonProperty("hint")] + public string Hint { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/PreviewPayloadDto.cs b/src/Novu/Models/Components/PreviewPayloadDto.cs new file mode 100644 index 00000000..4659f5b3 --- /dev/null +++ b/src/Novu/Models/Components/PreviewPayloadDto.cs @@ -0,0 +1,46 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class PreviewPayloadDto + { + /// + /// Partial subscriber information. + /// + [JsonProperty("subscriber")] + public SubscriberResponseDtoOptional? Subscriber { get; set; } + + /// + /// Payload data. + /// + [JsonProperty("payload")] + public Dictionary? Payload { get; set; } + + /// + /// Steps data. + /// + [JsonProperty("steps")] + public Dictionary? Steps { get; set; } + + [JsonProperty("context")] + public Dictionary? Context { get; set; } + + /// + /// Environment variables data. + /// + [JsonProperty("env")] + public Dictionary? Env { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/PreviewPayloadDtoContext.cs b/src/Novu/Models/Components/PreviewPayloadDtoContext.cs new file mode 100644 index 00000000..9553ef83 --- /dev/null +++ b/src/Novu/Models/Components/PreviewPayloadDtoContext.cs @@ -0,0 +1,178 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Newtonsoft.Json.Linq; + using Novu.Models.Components; + using Novu.Utils; + using System; + using System.Collections.Generic; + using System.Numerics; + using System.Reflection; + + public class PreviewPayloadDtoContextType + { + private PreviewPayloadDtoContextType(string value) { Value = value; } + + public string Value { get; private set; } + + public static PreviewPayloadDtoContextType Str { get { return new PreviewPayloadDtoContextType("str"); } } + + public static PreviewPayloadDtoContextType PreviewPayloadDtoContext2 { get { return new PreviewPayloadDtoContextType("PreviewPayloadDto_context_2"); } } + + public override string ToString() { return Value; } + public static implicit operator String(PreviewPayloadDtoContextType v) { return v.Value; } + public static PreviewPayloadDtoContextType FromString(string v) { + switch(v) { + case "str": return Str; + case "PreviewPayloadDto_context_2": return PreviewPayloadDtoContext2; + default: throw new ArgumentException("Invalid value for PreviewPayloadDtoContextType"); + } + } + public override bool Equals(object? obj) + { + if (obj == null || GetType() != obj.GetType()) + { + return false; + } + return Value.Equals(((PreviewPayloadDtoContextType)obj).Value); + } + + public override int GetHashCode() + { + return Value.GetHashCode(); + } + } + + [JsonConverter(typeof(PreviewPayloadDtoContext.PreviewPayloadDtoContextConverter))] + public class PreviewPayloadDtoContext + { + public PreviewPayloadDtoContext(PreviewPayloadDtoContextType type) + { + Type = type; + } + + [SpeakeasyMetadata("form:explode=true")] + public string? Str { get; set; } + + [SpeakeasyMetadata("form:explode=true")] + public PreviewPayloadDtoContext2? PreviewPayloadDtoContext2 { get; set; } + + public PreviewPayloadDtoContextType Type { get; set; } + public static PreviewPayloadDtoContext CreateStr(string str) + { + PreviewPayloadDtoContextType typ = PreviewPayloadDtoContextType.Str; + + PreviewPayloadDtoContext res = new PreviewPayloadDtoContext(typ); + res.Str = str; + return res; + } + public static PreviewPayloadDtoContext CreatePreviewPayloadDtoContext2(PreviewPayloadDtoContext2 previewPayloadDtoContext2) + { + PreviewPayloadDtoContextType typ = PreviewPayloadDtoContextType.PreviewPayloadDtoContext2; + + PreviewPayloadDtoContext res = new PreviewPayloadDtoContext(typ); + res.PreviewPayloadDtoContext2 = previewPayloadDtoContext2; + return res; + } + + public class PreviewPayloadDtoContextConverter : JsonConverter + { + public override bool CanConvert(System.Type objectType) => objectType == typeof(PreviewPayloadDtoContext); + + public override bool CanRead => true; + + public override object? ReadJson(JsonReader reader, System.Type objectType, object? existingValue, JsonSerializer serializer) + { + if (reader.TokenType == JsonToken.Null) + { + throw new InvalidOperationException("Received unexpected null JSON value"); + } + + var json = JRaw.Create(reader).ToString(); + var fallbackCandidates = new List<(System.Type, object, string)>(); + + try + { + return new PreviewPayloadDtoContext(PreviewPayloadDtoContextType.PreviewPayloadDtoContext2) + { + PreviewPayloadDtoContext2 = ResponseBodyDeserializer.DeserializeUndiscriminatedUnionMember(json) + }; + } + catch (ResponseBodyDeserializer.MissingMemberException) + { + fallbackCandidates.Add((typeof(PreviewPayloadDtoContext2), new PreviewPayloadDtoContext(PreviewPayloadDtoContextType.PreviewPayloadDtoContext2), "PreviewPayloadDtoContext2")); + } + catch (ResponseBodyDeserializer.DeserializationException) + { + // try next option + } + catch (Exception) + { + throw; + } + + if (json[0] == '"' && json[^1] == '"'){ + return new PreviewPayloadDtoContext(PreviewPayloadDtoContextType.Str) + { + Str = json[1..^1] + }; + } + + if (fallbackCandidates.Count > 0) + { + fallbackCandidates.Sort((a, b) => ResponseBodyDeserializer.CompareFallbackCandidates(a.Item1, b.Item1, json)); + foreach(var (deserializationType, returnObject, propertyName) in fallbackCandidates) + { + try + { + return ResponseBodyDeserializer.DeserializeUndiscriminatedUnionFallback(deserializationType, returnObject, propertyName, json); + } + catch (ResponseBodyDeserializer.DeserializationException) + { + // try next fallback option + } + catch (Exception) + { + throw; + } + } + } + + throw new InvalidOperationException("Could not deserialize into any supported types."); + } + + public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) + { + if (value == null) + { + throw new InvalidOperationException("Unexpected null JSON value."); + } + + PreviewPayloadDtoContext res = (PreviewPayloadDtoContext)value; + + if (res.Str != null) + { + writer.WriteRawValue(Utilities.SerializeJSON(res.Str)); + return; + } + + if (res.PreviewPayloadDtoContext2 != null) + { + writer.WriteRawValue(Utilities.SerializeJSON(res.PreviewPayloadDtoContext2)); + return; + } + } + + } + + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/PreviewPayloadDtoContext2.cs b/src/Novu/Models/Components/PreviewPayloadDtoContext2.cs new file mode 100644 index 00000000..24252fdd --- /dev/null +++ b/src/Novu/Models/Components/PreviewPayloadDtoContext2.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + using System.Collections.Generic; + + /// + /// Rich context object with id and optional data. + /// + public class PreviewPayloadDtoContext2 + { + [JsonProperty("id")] + public string Id { get; set; } = default!; + + /// + /// Optional additional context data. + /// + [JsonProperty("data")] + public Dictionary? Data { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/ProviderId.cs b/src/Novu/Models/Components/ProviderId.cs index 732845c4..c3cf30a9 100644 --- a/src/Novu/Models/Components/ProviderId.cs +++ b/src/Novu/Models/Components/ProviderId.cs @@ -132,6 +132,8 @@ public enum ProviderId Sinch, [JsonProperty("isendpro-sms")] IsendproSms, + [JsonProperty("cm-telecom")] + CmTelecom, [JsonProperty("fcm")] Fcm, [JsonProperty("apns")] diff --git a/src/Novu/Models/Components/ProvidersIdEnum.cs b/src/Novu/Models/Components/ProvidersIdEnum.cs index 100ce1ce..028dc18b 100644 --- a/src/Novu/Models/Components/ProvidersIdEnum.cs +++ b/src/Novu/Models/Components/ProvidersIdEnum.cs @@ -132,6 +132,8 @@ public enum ProvidersIdEnum Sinch, [JsonProperty("isendpro-sms")] IsendproSms, + [JsonProperty("cm-telecom")] + CmTelecom, [JsonProperty("fcm")] Fcm, [JsonProperty("apns")] diff --git a/src/Novu/Models/Components/PublishEnvironmentRequestDto.cs b/src/Novu/Models/Components/PublishEnvironmentRequestDto.cs new file mode 100644 index 00000000..86097548 --- /dev/null +++ b/src/Novu/Models/Components/PublishEnvironmentRequestDto.cs @@ -0,0 +1,37 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class PublishEnvironmentRequestDto + { + /// + /// Source environment ID to sync from. Defaults to the Development environment if not provided. + /// + [JsonProperty("sourceEnvironmentId")] + public string? SourceEnvironmentId { get; set; } + + /// + /// Perform a dry run without making actual changes. + /// + [JsonProperty("dryRun")] + public bool? DryRun { get; set; } = false; + + /// + /// Array of specific resources to publish. If not provided, all resources will be published. + /// + [JsonProperty("resources")] + public List? Resources { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/PublishEnvironmentResponseDto.cs b/src/Novu/Models/Components/PublishEnvironmentResponseDto.cs new file mode 100644 index 00000000..2751b4a5 --- /dev/null +++ b/src/Novu/Models/Components/PublishEnvironmentResponseDto.cs @@ -0,0 +1,31 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class PublishEnvironmentResponseDto + { + /// + /// Sync results by resource type. + /// + [JsonProperty("results")] + public List Results { get; set; } = default!; + + /// + /// Summary of the sync operation. + /// + [JsonProperty("summary")] + public PublishSummaryDto Summary { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/PublishSummaryDto.cs b/src/Novu/Models/Components/PublishSummaryDto.cs new file mode 100644 index 00000000..89f67c5b --- /dev/null +++ b/src/Novu/Models/Components/PublishSummaryDto.cs @@ -0,0 +1,41 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + + public class PublishSummaryDto + { + /// + /// Number of resources processed. + /// + [JsonProperty("resources")] + public double Resources { get; set; } = default!; + + /// + /// Number of successful syncs. + /// + [JsonProperty("successful")] + public double Successful { get; set; } = default!; + + /// + /// Number of failed syncs. + /// + [JsonProperty("failed")] + public double Failed { get; set; } = default!; + + /// + /// Number of skipped resources. + /// + [JsonProperty("skipped")] + public double Skipped { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/PushRenderOutput.cs b/src/Novu/Models/Components/PushRenderOutput.cs new file mode 100644 index 00000000..941acfd3 --- /dev/null +++ b/src/Novu/Models/Components/PushRenderOutput.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + + public class PushRenderOutput + { + /// + /// Subject of the push notification. + /// + [JsonProperty("subject")] + public string Subject { get; set; } = default!; + + /// + /// Body of the push notification. + /// + [JsonProperty("body")] + public string Body { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/PushStepResponseDto.cs b/src/Novu/Models/Components/PushStepResponseDto.cs index 4e17b5c9..de1cd805 100644 --- a/src/Novu/Models/Components/PushStepResponseDto.cs +++ b/src/Novu/Models/Components/PushStepResponseDto.cs @@ -87,5 +87,11 @@ public class PushStepResponseDto /// [JsonProperty("issues")] public StepIssuesDto? Issues { get; set; } + + /// + /// Hash identifying the deployed Cloudflare Worker for this step. + /// + [JsonProperty("stepResolverHash")] + public string? StepResolverHash { get; set; } } } \ No newline at end of file diff --git a/src/Novu/Models/Components/RedirectDto.cs b/src/Novu/Models/Components/RedirectDto.cs index e6dc49cc..87228f2e 100644 --- a/src/Novu/Models/Components/RedirectDto.cs +++ b/src/Novu/Models/Components/RedirectDto.cs @@ -16,15 +16,15 @@ namespace Novu.Models.Components public class RedirectDto { /// - /// URL for redirection. Must be a valid URL or start with / or {{ variable }}. + /// URL to redirect to. /// [JsonProperty("url")] - public string? Url { get; set; } + public string Url { get; set; } = default!; /// - /// Target window for the redirection. + /// Target attribute for the redirect link. /// [JsonProperty("target")] - public Target? Target { get; set; } = Novu.Models.Components.Target.Self; + public Target? Target { get; set; } } } \ No newline at end of file diff --git a/src/Novu/Models/Components/ResourceDependencyDto.cs b/src/Novu/Models/Components/ResourceDependencyDto.cs new file mode 100644 index 00000000..b04bf016 --- /dev/null +++ b/src/Novu/Models/Components/ResourceDependencyDto.cs @@ -0,0 +1,48 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + + public class ResourceDependencyDto + { + /// + /// Type of the layout. + /// + [JsonProperty("resourceType")] + public ResourceTypeEnum ResourceType { get; set; } = default!; + + /// + /// ID of the dependent resource. + /// + [JsonProperty("resourceId")] + public string ResourceId { get; set; } = default!; + + /// + /// Name of the dependent resource. + /// + [JsonProperty("resourceName")] + public string ResourceName { get; set; } = default!; + + /// + /// Whether this dependency blocks the operation. + /// + [JsonProperty("isBlocking")] + public bool IsBlocking { get; set; } = default!; + + /// + /// Reason for the dependency. + /// + [JsonProperty("reason")] + public DependencyReasonEnum Reason { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/ResourceDiffDto.cs b/src/Novu/Models/Components/ResourceDiffDto.cs new file mode 100644 index 00000000..bf79ac08 --- /dev/null +++ b/src/Novu/Models/Components/ResourceDiffDto.cs @@ -0,0 +1,66 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + + public class ResourceDiffDto + { + /// + /// Source resource information. + /// + [JsonProperty("sourceResource")] + public ResourceDiffDtoSourceResource? SourceResource { get; set; } = null; + + /// + /// Target resource information. + /// + [JsonProperty("targetResource")] + public ResourceDiffDtoTargetResource? TargetResource { get; set; } = null; + + /// + /// Type of the layout. + /// + [JsonProperty("resourceType")] + public ResourceTypeEnum ResourceType { get; set; } = default!; + + /// + /// Type of change. + /// + [JsonProperty("action")] + public DiffActionEnum Action { get; set; } = default!; + + /// + /// Detailed changes (only for modified resources). + /// + [JsonProperty("diffs")] + public Diffs? Diffs { get; set; } + + /// + /// Step type (only for step resources). + /// + [JsonProperty("stepType")] + public string? StepType { get; set; } + + /// + /// Previous index in steps array (for moved/deleted steps). + /// + [JsonProperty("previousIndex")] + public double? PreviousIndex { get; set; } + + /// + /// New index in steps array (for moved/added steps). + /// + [JsonProperty("newIndex")] + public double? NewIndex { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/ResourceDiffDtoSourceResource.cs b/src/Novu/Models/Components/ResourceDiffDtoSourceResource.cs new file mode 100644 index 00000000..2502127b --- /dev/null +++ b/src/Novu/Models/Components/ResourceDiffDtoSourceResource.cs @@ -0,0 +1,46 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System; + + /// + /// Source resource information. + /// + public class ResourceDiffDtoSourceResource + { + /// + /// Resource ID (workflow ID or step ID). + /// + [JsonProperty("id")] + public string? Id { get; set; } = null; + + /// + /// Resource name (workflow name or step name). + /// + [JsonProperty("name")] + public string? Name { get; set; } = null; + + /// + /// User who last updated the resource. + /// + [JsonProperty("updatedBy")] + public ResourceDiffDtoUpdatedBy? UpdatedBy { get; set; } = null; + + /// + /// When the resource was last updated. + /// + [JsonProperty("updatedAt")] + public DateTime? UpdatedAt { get; set; } = null; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/ResourceDiffDtoTargetResource.cs b/src/Novu/Models/Components/ResourceDiffDtoTargetResource.cs new file mode 100644 index 00000000..2502dc1f --- /dev/null +++ b/src/Novu/Models/Components/ResourceDiffDtoTargetResource.cs @@ -0,0 +1,46 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System; + + /// + /// Target resource information. + /// + public class ResourceDiffDtoTargetResource + { + /// + /// Resource ID (workflow ID or step ID). + /// + [JsonProperty("id")] + public string? Id { get; set; } = null; + + /// + /// Resource name (workflow name or step name). + /// + [JsonProperty("name")] + public string? Name { get; set; } = null; + + /// + /// User who last updated the resource. + /// + [JsonProperty("updatedBy")] + public ResourceDiffDtoTargetResourceUpdatedBy? UpdatedBy { get; set; } = null; + + /// + /// When the resource was last updated. + /// + [JsonProperty("updatedAt")] + public DateTime? UpdatedAt { get; set; } = null; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/ResourceDiffDtoTargetResourceUpdatedBy.cs b/src/Novu/Models/Components/ResourceDiffDtoTargetResourceUpdatedBy.cs new file mode 100644 index 00000000..241600ec --- /dev/null +++ b/src/Novu/Models/Components/ResourceDiffDtoTargetResourceUpdatedBy.cs @@ -0,0 +1,44 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + + /// + /// User who last updated the resource. + /// + public class ResourceDiffDtoTargetResourceUpdatedBy + { + /// + /// User ID. + /// + [JsonProperty("_id")] + public string Id { get; set; } = default!; + + /// + /// User first name. + /// + [JsonProperty("firstName")] + public string FirstName { get; set; } = default!; + + /// + /// User last name. + /// + [JsonProperty("lastName")] + public string? LastName { get; set; } = null; + + /// + /// User external ID. + /// + [JsonProperty("externalId")] + public string? ExternalId { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/ResourceDiffDtoUpdatedBy.cs b/src/Novu/Models/Components/ResourceDiffDtoUpdatedBy.cs new file mode 100644 index 00000000..31497da1 --- /dev/null +++ b/src/Novu/Models/Components/ResourceDiffDtoUpdatedBy.cs @@ -0,0 +1,44 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + + /// + /// User who last updated the resource. + /// + public class ResourceDiffDtoUpdatedBy + { + /// + /// User ID. + /// + [JsonProperty("_id")] + public string Id { get; set; } = default!; + + /// + /// User first name. + /// + [JsonProperty("firstName")] + public string FirstName { get; set; } = default!; + + /// + /// User last name. + /// + [JsonProperty("lastName")] + public string? LastName { get; set; } = null; + + /// + /// User external ID. + /// + [JsonProperty("externalId")] + public string? ExternalId { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/ResourceDiffResultDto.cs b/src/Novu/Models/Components/ResourceDiffResultDto.cs new file mode 100644 index 00000000..b26e4dda --- /dev/null +++ b/src/Novu/Models/Components/ResourceDiffResultDto.cs @@ -0,0 +1,55 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class ResourceDiffResultDto + { + /// + /// Type of the layout. + /// + [JsonProperty("resourceType")] + public ResourceTypeEnum ResourceType { get; set; } = default!; + + /// + /// Source resource information. + /// + [JsonProperty("sourceResource")] + public SourceResource? SourceResource { get; set; } = null; + + /// + /// Target resource information. + /// + [JsonProperty("targetResource")] + public TargetResource? TargetResource { get; set; } = null; + + /// + /// List of specific changes for this resource. + /// + [JsonProperty("changes")] + public List Changes { get; set; } = default!; + + /// + /// Summary of changes for this resource. + /// + [JsonProperty("summary")] + public DiffSummaryDto Summary { get; set; } = default!; + + /// + /// Dependencies that affect this resource. + /// + [JsonProperty("dependencies")] + public List? Dependencies { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/ResourceDiffResultDtoSourceResourceUpdatedBy.cs b/src/Novu/Models/Components/ResourceDiffResultDtoSourceResourceUpdatedBy.cs new file mode 100644 index 00000000..feeb469d --- /dev/null +++ b/src/Novu/Models/Components/ResourceDiffResultDtoSourceResourceUpdatedBy.cs @@ -0,0 +1,44 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + + /// + /// User who last updated the resource. + /// + public class ResourceDiffResultDtoSourceResourceUpdatedBy + { + /// + /// User ID. + /// + [JsonProperty("_id")] + public string Id { get; set; } = default!; + + /// + /// User first name. + /// + [JsonProperty("firstName")] + public string FirstName { get; set; } = default!; + + /// + /// User last name. + /// + [JsonProperty("lastName")] + public string? LastName { get; set; } = null; + + /// + /// User external ID. + /// + [JsonProperty("externalId")] + public string? ExternalId { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/ResourceDiffResultDtoUpdatedBy.cs b/src/Novu/Models/Components/ResourceDiffResultDtoUpdatedBy.cs new file mode 100644 index 00000000..400e88b5 --- /dev/null +++ b/src/Novu/Models/Components/ResourceDiffResultDtoUpdatedBy.cs @@ -0,0 +1,44 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + + /// + /// User who last updated the resource. + /// + public class ResourceDiffResultDtoUpdatedBy + { + /// + /// User ID. + /// + [JsonProperty("_id")] + public string Id { get; set; } = default!; + + /// + /// User first name. + /// + [JsonProperty("firstName")] + public string FirstName { get; set; } = default!; + + /// + /// User last name. + /// + [JsonProperty("lastName")] + public string? LastName { get; set; } = null; + + /// + /// User external ID. + /// + [JsonProperty("externalId")] + public string? ExternalId { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/ResourceToPublishDto.cs b/src/Novu/Models/Components/ResourceToPublishDto.cs new file mode 100644 index 00000000..aa8ba8d2 --- /dev/null +++ b/src/Novu/Models/Components/ResourceToPublishDto.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + + public class ResourceToPublishDto + { + /// + /// Type of the layout. + /// + [JsonProperty("resourceType")] + public ResourceTypeEnum ResourceType { get; set; } = default!; + + /// + /// Unique identifier of the resource to publish. + /// + [JsonProperty("resourceId")] + public string ResourceId { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/Result2.cs b/src/Novu/Models/Components/Result2.cs new file mode 100644 index 00000000..ed7e35a1 --- /dev/null +++ b/src/Novu/Models/Components/Result2.cs @@ -0,0 +1,27 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + + public class Result2 + { + [JsonProperty("type")] + public GeneratePreviewResponseDtoResultType? Type { get; set; } + + [JsonProperty("preview")] + public EmailRenderOutput? Preview { get; set; } + + [JsonProperty("error")] + public PreviewErrorDto? Error { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/Result4.cs b/src/Novu/Models/Components/Result4.cs new file mode 100644 index 00000000..f945fb9c --- /dev/null +++ b/src/Novu/Models/Components/Result4.cs @@ -0,0 +1,27 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + + public class Result4 + { + [JsonProperty("type")] + public GeneratePreviewResponseDtoResult4Type? Type { get; set; } + + [JsonProperty("preview")] + public InAppRenderOutput? Preview { get; set; } + + [JsonProperty("error")] + public PreviewErrorDto? Error { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/Result5.cs b/src/Novu/Models/Components/Result5.cs new file mode 100644 index 00000000..707e37de --- /dev/null +++ b/src/Novu/Models/Components/Result5.cs @@ -0,0 +1,27 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + + public class Result5 + { + [JsonProperty("type")] + public GeneratePreviewResponseDtoResult5Type? Type { get; set; } + + [JsonProperty("preview")] + public SmsRenderOutput? Preview { get; set; } + + [JsonProperty("error")] + public PreviewErrorDto? Error { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/RuntimeIssueDto.cs b/src/Novu/Models/Components/RuntimeIssueDto.cs index 0e0af2c2..f1ba4c67 100644 --- a/src/Novu/Models/Components/RuntimeIssueDto.cs +++ b/src/Novu/Models/Components/RuntimeIssueDto.cs @@ -9,19 +9,9 @@ #nullable enable namespace Novu.Models.Components { - using Newtonsoft.Json; - using Novu.Models.Components; using Novu.Utils; public class RuntimeIssueDto { - [JsonProperty("issueType")] - public IssueType IssueType { get; set; } = default!; - - [JsonProperty("variableName")] - public string? VariableName { get; set; } - - [JsonProperty("message")] - public string Message { get; set; } = default!; } } \ No newline at end of file diff --git a/src/Novu/Models/Components/Seven.cs b/src/Novu/Models/Components/Seven.cs new file mode 100644 index 00000000..d98ece2d --- /dev/null +++ b/src/Novu/Models/Components/Seven.cs @@ -0,0 +1,27 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + + public class Seven + { + [JsonProperty("type")] + public GeneratePreviewResponseDtoResult7Type? Type { get; set; } + + [JsonProperty("preview")] + public ChatRenderOutput? Preview { get; set; } + + [JsonProperty("error")] + public PreviewErrorDto? Error { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/Six.cs b/src/Novu/Models/Components/Six.cs new file mode 100644 index 00000000..248fca54 --- /dev/null +++ b/src/Novu/Models/Components/Six.cs @@ -0,0 +1,27 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + + public class Six + { + [JsonProperty("type")] + public GeneratePreviewResponseDtoResult6Type? Type { get; set; } + + [JsonProperty("preview")] + public PushRenderOutput? Preview { get; set; } + + [JsonProperty("error")] + public PreviewErrorDto? Error { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/SkippedWorkflowDto.cs b/src/Novu/Models/Components/SkippedWorkflowDto.cs new file mode 100644 index 00000000..30cc4151 --- /dev/null +++ b/src/Novu/Models/Components/SkippedWorkflowDto.cs @@ -0,0 +1,42 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + + public class SkippedWorkflowDto + { + /// + /// Type of the layout. + /// + [JsonProperty("resourceType")] + public ResourceTypeEnum ResourceType { get; set; } = default!; + + /// + /// Resource ID. + /// + [JsonProperty("resourceId")] + public string ResourceId { get; set; } = default!; + + /// + /// Resource name. + /// + [JsonProperty("resourceName")] + public string ResourceName { get; set; } = default!; + + /// + /// Reason for skipping. + /// + [JsonProperty("reason")] + public string Reason { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/SmsRenderOutput.cs b/src/Novu/Models/Components/SmsRenderOutput.cs new file mode 100644 index 00000000..d3c4512c --- /dev/null +++ b/src/Novu/Models/Components/SmsRenderOutput.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + + public class SmsRenderOutput + { + /// + /// Body of the SMS message. + /// + [JsonProperty("body")] + public string Body { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/SmsStepResponseDto.cs b/src/Novu/Models/Components/SmsStepResponseDto.cs index 2444b177..d2f8fe19 100644 --- a/src/Novu/Models/Components/SmsStepResponseDto.cs +++ b/src/Novu/Models/Components/SmsStepResponseDto.cs @@ -87,5 +87,11 @@ public class SmsStepResponseDto /// [JsonProperty("issues")] public StepIssuesDto? Issues { get; set; } + + /// + /// Hash identifying the deployed Cloudflare Worker for this step. + /// + [JsonProperty("stepResolverHash")] + public string? StepResolverHash { get; set; } } } \ No newline at end of file diff --git a/src/Novu/Models/Components/SnoozeSubscriberNotificationDto.cs b/src/Novu/Models/Components/SnoozeSubscriberNotificationDto.cs new file mode 100644 index 00000000..da59ce69 --- /dev/null +++ b/src/Novu/Models/Components/SnoozeSubscriberNotificationDto.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + using System; + + public class SnoozeSubscriberNotificationDto + { + /// + /// The date and time until which the notification should be snoozed. + /// + [JsonProperty("snoozeUntil")] + public DateTime SnoozeUntil { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/SourceResource.cs b/src/Novu/Models/Components/SourceResource.cs new file mode 100644 index 00000000..4da73052 --- /dev/null +++ b/src/Novu/Models/Components/SourceResource.cs @@ -0,0 +1,46 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System; + + /// + /// Source resource information. + /// + public class SourceResource + { + /// + /// Resource ID (workflow ID or step ID). + /// + [JsonProperty("id")] + public string? Id { get; set; } = null; + + /// + /// Resource name (workflow name or step name). + /// + [JsonProperty("name")] + public string? Name { get; set; } = null; + + /// + /// User who last updated the resource. + /// + [JsonProperty("updatedBy")] + public ResourceDiffResultDtoSourceResourceUpdatedBy? UpdatedBy { get; set; } = null; + + /// + /// When the resource was last updated. + /// + [JsonProperty("updatedAt")] + public DateTime? UpdatedAt { get; set; } = null; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/StepResponseDto.cs b/src/Novu/Models/Components/StepResponseDto.cs index 0d190268..b87202e2 100644 --- a/src/Novu/Models/Components/StepResponseDto.cs +++ b/src/Novu/Models/Components/StepResponseDto.cs @@ -87,5 +87,11 @@ public class StepResponseDto /// [JsonProperty("issues")] public StepIssuesDto? Issues { get; set; } + + /// + /// Hash identifying the deployed Cloudflare Worker for this step. + /// + [JsonProperty("stepResolverHash")] + public string? StepResolverHash { get; set; } } } \ No newline at end of file diff --git a/src/Novu/Models/Components/StepTypeEnum.cs b/src/Novu/Models/Components/StepTypeEnum.cs index 6e74acc2..9b9d8e45 100644 --- a/src/Novu/Models/Components/StepTypeEnum.cs +++ b/src/Novu/Models/Components/StepTypeEnum.cs @@ -38,6 +38,8 @@ public enum StepTypeEnum Throttle, [JsonProperty("custom")] Custom, + [JsonProperty("http_request")] + HttpRequest, } public static class StepTypeEnumExtension diff --git a/src/Novu/Models/Components/Steps.cs b/src/Novu/Models/Components/Steps.cs index 42cb4372..ef48fc8c 100644 --- a/src/Novu/Models/Components/Steps.cs +++ b/src/Novu/Models/Components/Steps.cs @@ -42,6 +42,8 @@ public class StepsType public static StepsType Custom { get { return new StepsType("custom"); } } + public static StepsType HttpRequest { get { return new StepsType("http_request"); } } + public override string ToString() { return Value; } public static implicit operator String(StepsType v) { return v.Value; } public static StepsType FromString(string v) { @@ -55,6 +57,7 @@ public static StepsType FromString(string v) { case "digest": return Digest; case "throttle": return Throttle; case "custom": return Custom; + case "http_request": return HttpRequest; default: throw new ArgumentException("Invalid value for StepsType"); } } @@ -108,6 +111,9 @@ public Steps(StepsType type) [SpeakeasyMetadata("form:explode=true")] public CustomStepUpsertDto? CustomStepUpsertDto { get; set; } + [SpeakeasyMetadata("form:explode=true")] + public HttpRequestStepUpsertDto? HttpRequestStepUpsertDto { get; set; } + public StepsType Type { get; set; } public static Steps CreateInApp(InAppStepUpsertDto inApp) @@ -200,6 +206,16 @@ public static Steps CreateCustom(CustomStepUpsertDto custom) return res; } + public static Steps CreateHttpRequest(HttpRequestStepUpsertDto httpRequest) + { + StepsType typ = StepsType.HttpRequest; + string typStr = StepsType.HttpRequest.ToString(); + httpRequest.Type = StepTypeEnumExtension.ToEnum(StepsType.HttpRequest.ToString()); + Steps res = new Steps(typ); + res.HttpRequestStepUpsertDto = httpRequest; + return res; + } + public class StepsConverter : JsonConverter { public override bool CanConvert(System.Type objectType) => objectType == typeof(Steps); @@ -260,6 +276,11 @@ public class StepsConverter : JsonConverter CustomStepUpsertDto customStepUpsertDto = ResponseBodyDeserializer.DeserializeNotNull(jo.ToString()); return CreateCustom(customStepUpsertDto); } + if (discriminator == StepsType.HttpRequest.ToString()) + { + HttpRequestStepUpsertDto httpRequestStepUpsertDto = ResponseBodyDeserializer.DeserializeNotNull(jo.ToString()); + return CreateHttpRequest(httpRequestStepUpsertDto); + } throw new InvalidOperationException("Could not deserialize into any supported types."); } @@ -326,6 +347,12 @@ public override void WriteJson(JsonWriter writer, object? value, JsonSerializer writer.WriteRawValue(Utilities.SerializeJSON(res.CustomStepUpsertDto)); return; } + + if (res.HttpRequestStepUpsertDto != null) + { + writer.WriteRawValue(Utilities.SerializeJSON(res.HttpRequestStepUpsertDto)); + return; + } } } diff --git a/src/Novu/Models/Components/SyncActionEnum.cs b/src/Novu/Models/Components/SyncActionEnum.cs new file mode 100644 index 00000000..101aed83 --- /dev/null +++ b/src/Novu/Models/Components/SyncActionEnum.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + using System; + + /// + /// Sync action performed. + /// + public enum SyncActionEnum + { + [JsonProperty("created")] + Created, + [JsonProperty("updated")] + Updated, + [JsonProperty("skipped")] + Skipped, + [JsonProperty("deleted")] + Deleted, + } + + public static class SyncActionEnumExtension + { + public static string Value(this SyncActionEnum value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static SyncActionEnum ToEnum(this string value) + { + foreach(var field in typeof(SyncActionEnum).GetFields()) + { + var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); + if (attributes.Length == 0) + { + continue; + } + + var attribute = attributes[0] as JsonPropertyAttribute; + if (attribute != null && attribute.PropertyName == value) + { + var enumVal = field.GetValue(null); + + if (enumVal is SyncActionEnum) + { + return (SyncActionEnum)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum SyncActionEnum"); + } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/SyncResultDto.cs b/src/Novu/Models/Components/SyncResultDto.cs new file mode 100644 index 00000000..38684cac --- /dev/null +++ b/src/Novu/Models/Components/SyncResultDto.cs @@ -0,0 +1,49 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class SyncResultDto + { + /// + /// Type of the layout. + /// + [JsonProperty("resourceType")] + public ResourceTypeEnum ResourceType { get; set; } = default!; + + /// + /// Successfully synced resources. + /// + [JsonProperty("successful")] + public List Successful { get; set; } = default!; + + /// + /// Failed resource syncs. + /// + [JsonProperty("failed")] + public List Failed { get; set; } = default!; + + /// + /// Skipped resources. + /// + [JsonProperty("skipped")] + public List Skipped { get; set; } = default!; + + /// + /// Total number of resources processed. + /// + [JsonProperty("totalProcessed")] + public double TotalProcessed { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/SyncedWorkflowDto.cs b/src/Novu/Models/Components/SyncedWorkflowDto.cs new file mode 100644 index 00000000..9d21c0d4 --- /dev/null +++ b/src/Novu/Models/Components/SyncedWorkflowDto.cs @@ -0,0 +1,42 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + + public class SyncedWorkflowDto + { + /// + /// Type of the layout. + /// + [JsonProperty("resourceType")] + public ResourceTypeEnum ResourceType { get; set; } = default!; + + /// + /// Resource ID. + /// + [JsonProperty("resourceId")] + public string ResourceId { get; set; } = default!; + + /// + /// Resource name. + /// + [JsonProperty("resourceName")] + public string ResourceName { get; set; } = default!; + + /// + /// Sync action performed. + /// + [JsonProperty("action")] + public SyncActionEnum Action { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/Tags.cs b/src/Novu/Models/Components/Tags.cs new file mode 100644 index 00000000..e5e1f24a --- /dev/null +++ b/src/Novu/Models/Components/Tags.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Novu.Utils; + + /// + /// Filter notifications by workflow tags (OR for string[], or { and: [{ or: string[] }, ...] } for AND of OR-groups). + /// + public class Tags + { + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/Target.cs b/src/Novu/Models/Components/Target.cs index 4b219fc7..631b6471 100644 --- a/src/Novu/Models/Components/Target.cs +++ b/src/Novu/Models/Components/Target.cs @@ -14,7 +14,7 @@ namespace Novu.Models.Components using System; /// - /// Target window for the redirection. + /// Target attribute for the redirect link. /// public enum Target { diff --git a/src/Novu/Models/Components/TargetResource.cs b/src/Novu/Models/Components/TargetResource.cs new file mode 100644 index 00000000..bffeeda8 --- /dev/null +++ b/src/Novu/Models/Components/TargetResource.cs @@ -0,0 +1,46 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System; + + /// + /// Target resource information. + /// + public class TargetResource + { + /// + /// Resource ID (workflow ID or step ID). + /// + [JsonProperty("id")] + public string? Id { get; set; } = null; + + /// + /// Resource name (workflow name or step name). + /// + [JsonProperty("name")] + public string? Name { get; set; } = null; + + /// + /// User who last updated the resource. + /// + [JsonProperty("updatedBy")] + public ResourceDiffResultDtoUpdatedBy? UpdatedBy { get; set; } = null; + + /// + /// When the resource was last updated. + /// + [JsonProperty("updatedAt")] + public DateTime? UpdatedAt { get; set; } = null; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/Three.cs b/src/Novu/Models/Components/Three.cs new file mode 100644 index 00000000..49043efb --- /dev/null +++ b/src/Novu/Models/Components/Three.cs @@ -0,0 +1,27 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + + public class Three + { + [JsonProperty("type")] + public GeneratePreviewResponseDtoResult3Type? Type { get; set; } + + [JsonProperty("preview")] + public EmailRenderOutput? Preview { get; set; } + + [JsonProperty("error")] + public PreviewErrorDto? Error { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/ThrottleStepResponseDto.cs b/src/Novu/Models/Components/ThrottleStepResponseDto.cs index c4c00836..d4c6918b 100644 --- a/src/Novu/Models/Components/ThrottleStepResponseDto.cs +++ b/src/Novu/Models/Components/ThrottleStepResponseDto.cs @@ -87,5 +87,11 @@ public class ThrottleStepResponseDto /// [JsonProperty("issues")] public StepIssuesDto? Issues { get; set; } + + /// + /// Hash identifying the deployed Cloudflare Worker for this step. + /// + [JsonProperty("stepResolverHash")] + public string? StepResolverHash { get; set; } } } \ No newline at end of file diff --git a/src/Novu/Models/Components/TimeUnitEnum.cs b/src/Novu/Models/Components/TimeUnitEnum.cs new file mode 100644 index 00000000..d5f0864a --- /dev/null +++ b/src/Novu/Models/Components/TimeUnitEnum.cs @@ -0,0 +1,67 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + using System; + + /// + /// Time unit. + /// + public enum TimeUnitEnum + { + [JsonProperty("seconds")] + Seconds, + [JsonProperty("minutes")] + Minutes, + [JsonProperty("hours")] + Hours, + [JsonProperty("days")] + Days, + [JsonProperty("weeks")] + Weeks, + [JsonProperty("months")] + Months, + } + + public static class TimeUnitEnumExtension + { + public static string Value(this TimeUnitEnum value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static TimeUnitEnum ToEnum(this string value) + { + foreach(var field in typeof(TimeUnitEnum).GetFields()) + { + var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); + if (attributes.Length == 0) + { + continue; + } + + var attribute = attributes[0] as JsonPropertyAttribute; + if (attribute != null && attribute.PropertyName == value) + { + var enumVal = field.GetValue(null); + + if (enumVal is TimeUnitEnum) + { + return (TimeUnitEnum)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum TimeUnitEnum"); + } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/TriggerEventResponseDto.cs b/src/Novu/Models/Components/TriggerEventResponseDto.cs index 537cc5f2..ec0d85a0 100644 --- a/src/Novu/Models/Components/TriggerEventResponseDto.cs +++ b/src/Novu/Models/Components/TriggerEventResponseDto.cs @@ -40,6 +40,12 @@ public class TriggerEventResponseDto [JsonProperty("transactionId")] public string? TransactionId { get; set; } + /// + /// Link to the activity feed for this trigger event. + /// + [JsonProperty("activityFeedLink")] + public string? ActivityFeedLink { get; set; } + [JsonProperty("jobData")] public JobData? JobData { get; set; } } diff --git a/src/Novu/Models/Components/UiComponentEnum.cs b/src/Novu/Models/Components/UiComponentEnum.cs index 5cebfd74..c67b8ccc 100644 --- a/src/Novu/Models/Components/UiComponentEnum.cs +++ b/src/Novu/Models/Components/UiComponentEnum.cs @@ -12,118 +12,152 @@ namespace Novu.Models.Components using Newtonsoft.Json; using Novu.Utils; using System; + using System.Collections.Concurrent; + using System.Collections.Generic; + using System.Linq; /// /// Component type for the UI Schema Property. /// - public enum UiComponentEnum + [JsonConverter(typeof(OpenEnumConverter))] + public class UiComponentEnum : IEquatable { - [JsonProperty("EMAIL_EDITOR_SELECT")] - EmailEditorSelect, - [JsonProperty("LAYOUT_SELECT")] - LayoutSelect, - [JsonProperty("BLOCK_EDITOR")] - BlockEditor, - [JsonProperty("EMAIL_BODY")] - EmailBody, - [JsonProperty("TEXT_FULL_LINE")] - TextFullLine, - [JsonProperty("TEXT_INLINE_LABEL")] - TextInlineLabel, - [JsonProperty("IN_APP_BODY")] - InAppBody, - [JsonProperty("IN_APP_AVATAR")] - InAppAvatar, - [JsonProperty("IN_APP_PRIMARY_SUBJECT")] - InAppPrimarySubject, - [JsonProperty("IN_APP_BUTTON_DROPDOWN")] - InAppButtonDropdown, - [JsonProperty("IN_APP_DISABLE_SANITIZATION_SWITCH")] - InAppDisableSanitizationSwitch, - [JsonProperty("DISABLE_SANITIZATION_SWITCH")] - DisableSanitizationSwitch, - [JsonProperty("URL_TEXT_BOX")] - UrlTextBox, - [JsonProperty("DIGEST_AMOUNT")] - DigestAmount, - [JsonProperty("DIGEST_UNIT")] - DigestUnit, - [JsonProperty("DIGEST_TYPE")] - DigestType, - [JsonProperty("DIGEST_KEY")] - DigestKey, - [JsonProperty("DIGEST_CRON")] - DigestCron, - [JsonProperty("DELAY_AMOUNT")] - DelayAmount, - [JsonProperty("DELAY_UNIT")] - DelayUnit, - [JsonProperty("DELAY_TYPE")] - DelayType, - [JsonProperty("DELAY_CRON")] - DelayCron, - [JsonProperty("DELAY_DYNAMIC_KEY")] - DelayDynamicKey, - [JsonProperty("THROTTLE_TYPE")] - ThrottleType, - [JsonProperty("THROTTLE_WINDOW")] - ThrottleWindow, - [JsonProperty("THROTTLE_UNIT")] - ThrottleUnit, - [JsonProperty("THROTTLE_DYNAMIC_KEY")] - ThrottleDynamicKey, - [JsonProperty("THROTTLE_THRESHOLD")] - ThrottleThreshold, - [JsonProperty("THROTTLE_KEY")] - ThrottleKey, - [JsonProperty("EXTEND_TO_SCHEDULE")] - ExtendToSchedule, - [JsonProperty("SMS_BODY")] - SmsBody, - [JsonProperty("CHAT_BODY")] - ChatBody, - [JsonProperty("PUSH_BODY")] - PushBody, - [JsonProperty("PUSH_SUBJECT")] - PushSubject, - [JsonProperty("QUERY_EDITOR")] - QueryEditor, - [JsonProperty("DATA")] - Data, - [JsonProperty("LAYOUT_EMAIL")] - LayoutEmail, - } + public static readonly UiComponentEnum EmailEditorSelect = new UiComponentEnum("EMAIL_EDITOR_SELECT"); + public static readonly UiComponentEnum LayoutSelect = new UiComponentEnum("LAYOUT_SELECT"); + public static readonly UiComponentEnum BlockEditor = new UiComponentEnum("BLOCK_EDITOR"); + public static readonly UiComponentEnum EmailBody = new UiComponentEnum("EMAIL_BODY"); + public static readonly UiComponentEnum TextFullLine = new UiComponentEnum("TEXT_FULL_LINE"); + public static readonly UiComponentEnum TextInlineLabel = new UiComponentEnum("TEXT_INLINE_LABEL"); + public static readonly UiComponentEnum InAppBody = new UiComponentEnum("IN_APP_BODY"); + public static readonly UiComponentEnum InAppAvatar = new UiComponentEnum("IN_APP_AVATAR"); + public static readonly UiComponentEnum InAppPrimarySubject = new UiComponentEnum("IN_APP_PRIMARY_SUBJECT"); + public static readonly UiComponentEnum InAppButtonDropdown = new UiComponentEnum("IN_APP_BUTTON_DROPDOWN"); + public static readonly UiComponentEnum InAppDisableSanitizationSwitch = new UiComponentEnum("IN_APP_DISABLE_SANITIZATION_SWITCH"); + public static readonly UiComponentEnum DisableSanitizationSwitch = new UiComponentEnum("DISABLE_SANITIZATION_SWITCH"); + public static readonly UiComponentEnum UrlTextBox = new UiComponentEnum("URL_TEXT_BOX"); + public static readonly UiComponentEnum DigestAmount = new UiComponentEnum("DIGEST_AMOUNT"); + public static readonly UiComponentEnum DigestUnit = new UiComponentEnum("DIGEST_UNIT"); + public static readonly UiComponentEnum DigestType = new UiComponentEnum("DIGEST_TYPE"); + public static readonly UiComponentEnum DigestKey = new UiComponentEnum("DIGEST_KEY"); + public static readonly UiComponentEnum DigestCron = new UiComponentEnum("DIGEST_CRON"); + public static readonly UiComponentEnum DelayAmount = new UiComponentEnum("DELAY_AMOUNT"); + public static readonly UiComponentEnum DelayUnit = new UiComponentEnum("DELAY_UNIT"); + public static readonly UiComponentEnum DelayType = new UiComponentEnum("DELAY_TYPE"); + public static readonly UiComponentEnum DelayCron = new UiComponentEnum("DELAY_CRON"); + public static readonly UiComponentEnum DelayDynamicKey = new UiComponentEnum("DELAY_DYNAMIC_KEY"); + public static readonly UiComponentEnum ThrottleType = new UiComponentEnum("THROTTLE_TYPE"); + public static readonly UiComponentEnum ThrottleWindow = new UiComponentEnum("THROTTLE_WINDOW"); + public static readonly UiComponentEnum ThrottleUnit = new UiComponentEnum("THROTTLE_UNIT"); + public static readonly UiComponentEnum ThrottleDynamicKey = new UiComponentEnum("THROTTLE_DYNAMIC_KEY"); + public static readonly UiComponentEnum ThrottleThreshold = new UiComponentEnum("THROTTLE_THRESHOLD"); + public static readonly UiComponentEnum ThrottleKey = new UiComponentEnum("THROTTLE_KEY"); + public static readonly UiComponentEnum ExtendToSchedule = new UiComponentEnum("EXTEND_TO_SCHEDULE"); + public static readonly UiComponentEnum SmsBody = new UiComponentEnum("SMS_BODY"); + public static readonly UiComponentEnum ChatBody = new UiComponentEnum("CHAT_BODY"); + public static readonly UiComponentEnum PushBody = new UiComponentEnum("PUSH_BODY"); + public static readonly UiComponentEnum PushSubject = new UiComponentEnum("PUSH_SUBJECT"); + public static readonly UiComponentEnum QueryEditor = new UiComponentEnum("QUERY_EDITOR"); + public static readonly UiComponentEnum Data = new UiComponentEnum("DATA"); + public static readonly UiComponentEnum LayoutEmail = new UiComponentEnum("LAYOUT_EMAIL"); + public static readonly UiComponentEnum DestinationMethod = new UiComponentEnum("DESTINATION_METHOD"); + public static readonly UiComponentEnum DestinationUrl = new UiComponentEnum("DESTINATION_URL"); + public static readonly UiComponentEnum DestinationHeaders = new UiComponentEnum("DESTINATION_HEADERS"); + public static readonly UiComponentEnum DestinationBody = new UiComponentEnum("DESTINATION_BODY"); + public static readonly UiComponentEnum DestinationResponseBodySchema = new UiComponentEnum("DESTINATION_RESPONSE_BODY_SCHEMA"); + public static readonly UiComponentEnum DestinationEnforceSchemaValidation = new UiComponentEnum("DESTINATION_ENFORCE_SCHEMA_VALIDATION"); + public static readonly UiComponentEnum DestinationContinueOnFailure = new UiComponentEnum("DESTINATION_CONTINUE_ON_FAILURE"); + public static readonly UiComponentEnum DestinationTimeout = new UiComponentEnum("DESTINATION_TIMEOUT"); - public static class UiComponentEnumExtension - { - public static string Value(this UiComponentEnum value) + private static readonly Dictionary _knownValues = + new Dictionary () + { + ["EMAIL_EDITOR_SELECT"] = EmailEditorSelect, + ["LAYOUT_SELECT"] = LayoutSelect, + ["BLOCK_EDITOR"] = BlockEditor, + ["EMAIL_BODY"] = EmailBody, + ["TEXT_FULL_LINE"] = TextFullLine, + ["TEXT_INLINE_LABEL"] = TextInlineLabel, + ["IN_APP_BODY"] = InAppBody, + ["IN_APP_AVATAR"] = InAppAvatar, + ["IN_APP_PRIMARY_SUBJECT"] = InAppPrimarySubject, + ["IN_APP_BUTTON_DROPDOWN"] = InAppButtonDropdown, + ["IN_APP_DISABLE_SANITIZATION_SWITCH"] = InAppDisableSanitizationSwitch, + ["DISABLE_SANITIZATION_SWITCH"] = DisableSanitizationSwitch, + ["URL_TEXT_BOX"] = UrlTextBox, + ["DIGEST_AMOUNT"] = DigestAmount, + ["DIGEST_UNIT"] = DigestUnit, + ["DIGEST_TYPE"] = DigestType, + ["DIGEST_KEY"] = DigestKey, + ["DIGEST_CRON"] = DigestCron, + ["DELAY_AMOUNT"] = DelayAmount, + ["DELAY_UNIT"] = DelayUnit, + ["DELAY_TYPE"] = DelayType, + ["DELAY_CRON"] = DelayCron, + ["DELAY_DYNAMIC_KEY"] = DelayDynamicKey, + ["THROTTLE_TYPE"] = ThrottleType, + ["THROTTLE_WINDOW"] = ThrottleWindow, + ["THROTTLE_UNIT"] = ThrottleUnit, + ["THROTTLE_DYNAMIC_KEY"] = ThrottleDynamicKey, + ["THROTTLE_THRESHOLD"] = ThrottleThreshold, + ["THROTTLE_KEY"] = ThrottleKey, + ["EXTEND_TO_SCHEDULE"] = ExtendToSchedule, + ["SMS_BODY"] = SmsBody, + ["CHAT_BODY"] = ChatBody, + ["PUSH_BODY"] = PushBody, + ["PUSH_SUBJECT"] = PushSubject, + ["QUERY_EDITOR"] = QueryEditor, + ["DATA"] = Data, + ["LAYOUT_EMAIL"] = LayoutEmail, + ["DESTINATION_METHOD"] = DestinationMethod, + ["DESTINATION_URL"] = DestinationUrl, + ["DESTINATION_HEADERS"] = DestinationHeaders, + ["DESTINATION_BODY"] = DestinationBody, + ["DESTINATION_RESPONSE_BODY_SCHEMA"] = DestinationResponseBodySchema, + ["DESTINATION_ENFORCE_SCHEMA_VALIDATION"] = DestinationEnforceSchemaValidation, + ["DESTINATION_CONTINUE_ON_FAILURE"] = DestinationContinueOnFailure, + ["DESTINATION_TIMEOUT"] = DestinationTimeout + }; + + private static readonly ConcurrentDictionary _values = + new ConcurrentDictionary(_knownValues); + + private UiComponentEnum(string value) { - return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + if (value == null) throw new ArgumentNullException(nameof(value)); + Value = value; } - public static UiComponentEnum ToEnum(this string value) + public string Value { get; } + + public static UiComponentEnum Of(string value) { - foreach(var field in typeof(UiComponentEnum).GetFields()) - { - var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); - if (attributes.Length == 0) - { - continue; - } + return _values.GetOrAdd(value, _ => new UiComponentEnum(value)); + } - var attribute = attributes[0] as JsonPropertyAttribute; - if (attribute != null && attribute.PropertyName == value) - { - var enumVal = field.GetValue(null); + public static implicit operator UiComponentEnum(string value) => Of(value); + public static implicit operator string(UiComponentEnum uicomponentenum) => uicomponentenum.Value; - if (enumVal is UiComponentEnum) - { - return (UiComponentEnum)enumVal; - } - } - } + public static UiComponentEnum[] Values() + { + return _values.Values.ToArray(); + } + + public override string ToString() => Value.ToString(); + + public bool IsKnown() + { + return _knownValues.ContainsKey(Value); + } + + public override bool Equals(object? obj) => Equals(obj as UiComponentEnum); - throw new Exception($"Unknown value {value} for enum UiComponentEnum"); + public bool Equals(UiComponentEnum? other) + { + if (ReferenceEquals(this, other)) return true; + if (other is null) return false; + return string.Equals(Value, other.Value); } + + public override int GetHashCode() => Value.GetHashCode(); } } \ No newline at end of file diff --git a/src/Novu/Models/Components/UiSchemaGroupEnum.cs b/src/Novu/Models/Components/UiSchemaGroupEnum.cs index f77c4de1..34ed2973 100644 --- a/src/Novu/Models/Components/UiSchemaGroupEnum.cs +++ b/src/Novu/Models/Components/UiSchemaGroupEnum.cs @@ -38,6 +38,8 @@ public enum UiSchemaGroupEnum Skip, [JsonProperty("LAYOUT")] Layout, + [JsonProperty("HTTP_REQUEST")] + HttpRequest, } public static class UiSchemaGroupEnumExtension diff --git a/src/Novu/Models/Components/UiSchemaProperty.cs b/src/Novu/Models/Components/UiSchemaProperty.cs index a0f515c1..abcfa5f6 100644 --- a/src/Novu/Models/Components/UiSchemaProperty.cs +++ b/src/Novu/Models/Components/UiSchemaProperty.cs @@ -12,7 +12,10 @@ namespace Novu.Models.Components using Newtonsoft.Json; using Novu.Models.Components; using Novu.Utils; + using System; + using System.Collections.Concurrent; using System.Collections.Generic; + using System.Linq; public class UiSchemaProperty { diff --git a/src/Novu/Models/Components/UpdateAllSubscriberNotificationsDto.cs b/src/Novu/Models/Components/UpdateAllSubscriberNotificationsDto.cs new file mode 100644 index 00000000..739eb864 --- /dev/null +++ b/src/Novu/Models/Components/UpdateAllSubscriberNotificationsDto.cs @@ -0,0 +1,37 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class UpdateAllSubscriberNotificationsDto + { + /// + /// Filter notifications by workflow tags (OR for string[], or { and: [{ or: string[] }, ...] } for AND of OR-groups). + /// + [JsonProperty("tags")] + public Tags? Tags { get; set; } + + /// + /// Filter notifications by data attributes (JSON string). + /// + [JsonProperty("data")] + public string? Data { get; set; } + + /// + /// Context keys for filtering notifications. + /// + [JsonProperty("contextKeys")] + public List? ContextKeys { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/UpdateEnvironmentVariableRequestDto.cs b/src/Novu/Models/Components/UpdateEnvironmentVariableRequestDto.cs new file mode 100644 index 00000000..028e3b66 --- /dev/null +++ b/src/Novu/Models/Components/UpdateEnvironmentVariableRequestDto.cs @@ -0,0 +1,37 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class UpdateEnvironmentVariableRequestDto + { + /// + /// Unique key for the variable. Must start with a letter and contain only letters, digits, and underscores. + /// + [JsonProperty("key")] + public string? Key { get; set; } + + /// + /// The type of the variable. + /// + [JsonProperty("type")] + public UpdateEnvironmentVariableRequestDtoType? Type { get; set; } + + [JsonProperty("isSecret")] + public bool? IsSecret { get; set; } + + [JsonProperty("values")] + public List? Values { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/UpdateEnvironmentVariableRequestDtoType.cs b/src/Novu/Models/Components/UpdateEnvironmentVariableRequestDtoType.cs new file mode 100644 index 00000000..455ab9f9 --- /dev/null +++ b/src/Novu/Models/Components/UpdateEnvironmentVariableRequestDtoType.cs @@ -0,0 +1,57 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Components +{ + using Newtonsoft.Json; + using Novu.Utils; + using System; + + /// + /// The type of the variable. + /// + public enum UpdateEnvironmentVariableRequestDtoType + { + [JsonProperty("string")] + String, + } + + public static class UpdateEnvironmentVariableRequestDtoTypeExtension + { + public static string Value(this UpdateEnvironmentVariableRequestDtoType value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static UpdateEnvironmentVariableRequestDtoType ToEnum(this string value) + { + foreach(var field in typeof(UpdateEnvironmentVariableRequestDtoType).GetFields()) + { + var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); + if (attributes.Length == 0) + { + continue; + } + + var attribute = attributes[0] as JsonPropertyAttribute; + if (attribute != null && attribute.PropertyName == value) + { + var enumVal = field.GetValue(null); + + if (enumVal is UpdateEnvironmentVariableRequestDtoType) + { + return (UpdateEnvironmentVariableRequestDtoType)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum UpdateEnvironmentVariableRequestDtoType"); + } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Components/UpdateLayoutDto.cs b/src/Novu/Models/Components/UpdateLayoutDto.cs index 8913ed18..476d05ba 100644 --- a/src/Novu/Models/Components/UpdateLayoutDto.cs +++ b/src/Novu/Models/Components/UpdateLayoutDto.cs @@ -28,7 +28,7 @@ public class UpdateLayoutDto public bool? IsTranslationEnabled { get; set; } = false; /// - /// Control values for the layout. + /// Control values for the layout. Omit to leave unchanged, or set to null to clear stored control values. /// [JsonProperty("controlValues")] public ControlValues? ControlValues { get; set; } = null; diff --git a/src/Novu/Models/Components/UpdateWorkflowDtoSteps.cs b/src/Novu/Models/Components/UpdateWorkflowDtoSteps.cs index 5316ad33..6af2bf45 100644 --- a/src/Novu/Models/Components/UpdateWorkflowDtoSteps.cs +++ b/src/Novu/Models/Components/UpdateWorkflowDtoSteps.cs @@ -40,6 +40,8 @@ public class UpdateWorkflowDtoStepsType public static UpdateWorkflowDtoStepsType Custom { get { return new UpdateWorkflowDtoStepsType("custom"); } } + public static UpdateWorkflowDtoStepsType HttpRequest { get { return new UpdateWorkflowDtoStepsType("http_request"); } } + public override string ToString() { return Value; } public static implicit operator String(UpdateWorkflowDtoStepsType v) { return v.Value; } public static UpdateWorkflowDtoStepsType FromString(string v) { @@ -52,6 +54,7 @@ public static UpdateWorkflowDtoStepsType FromString(string v) { case "delay": return Delay; case "digest": return Digest; case "custom": return Custom; + case "http_request": return HttpRequest; default: throw new ArgumentException("Invalid value for UpdateWorkflowDtoStepsType"); } } @@ -102,6 +105,9 @@ public UpdateWorkflowDtoSteps(UpdateWorkflowDtoStepsType type) [SpeakeasyMetadata("form:explode=true")] public CustomStepUpsertDto? CustomStepUpsertDto { get; set; } + [SpeakeasyMetadata("form:explode=true")] + public HttpRequestStepUpsertDto? HttpRequestStepUpsertDto { get; set; } + public UpdateWorkflowDtoStepsType Type { get; set; } public static UpdateWorkflowDtoSteps CreateInApp(InAppStepUpsertDto inApp) @@ -184,6 +190,16 @@ public static UpdateWorkflowDtoSteps CreateCustom(CustomStepUpsertDto custom) return res; } + public static UpdateWorkflowDtoSteps CreateHttpRequest(HttpRequestStepUpsertDto httpRequest) + { + UpdateWorkflowDtoStepsType typ = UpdateWorkflowDtoStepsType.HttpRequest; + string typStr = UpdateWorkflowDtoStepsType.HttpRequest.ToString(); + httpRequest.Type = StepTypeEnumExtension.ToEnum(UpdateWorkflowDtoStepsType.HttpRequest.ToString()); + UpdateWorkflowDtoSteps res = new UpdateWorkflowDtoSteps(typ); + res.HttpRequestStepUpsertDto = httpRequest; + return res; + } + public class UpdateWorkflowDtoStepsConverter : JsonConverter { public override bool CanConvert(System.Type objectType) => objectType == typeof(UpdateWorkflowDtoSteps); @@ -239,6 +255,11 @@ public class UpdateWorkflowDtoStepsConverter : JsonConverter CustomStepUpsertDto customStepUpsertDto = ResponseBodyDeserializer.DeserializeNotNull(jo.ToString()); return CreateCustom(customStepUpsertDto); } + if (discriminator == UpdateWorkflowDtoStepsType.HttpRequest.ToString()) + { + HttpRequestStepUpsertDto httpRequestStepUpsertDto = ResponseBodyDeserializer.DeserializeNotNull(jo.ToString()); + return CreateHttpRequest(httpRequestStepUpsertDto); + } throw new InvalidOperationException("Could not deserialize into any supported types."); } @@ -299,6 +320,12 @@ public override void WriteJson(JsonWriter writer, object? value, JsonSerializer writer.WriteRawValue(Utilities.SerializeJSON(res.CustomStepUpsertDto)); return; } + + if (res.HttpRequestStepUpsertDto != null) + { + writer.WriteRawValue(Utilities.SerializeJSON(res.HttpRequestStepUpsertDto)); + return; + } } } diff --git a/src/Novu/Models/Components/WorkflowCreationSourceEnum.cs b/src/Novu/Models/Components/WorkflowCreationSourceEnum.cs index f7488eb2..a9b42bc0 100644 --- a/src/Novu/Models/Components/WorkflowCreationSourceEnum.cs +++ b/src/Novu/Models/Components/WorkflowCreationSourceEnum.cs @@ -38,6 +38,8 @@ public enum WorkflowCreationSourceEnum Bridge, [JsonProperty("dashboard")] Dashboard, + [JsonProperty("ai")] + Ai, } public static class WorkflowCreationSourceEnumExtension diff --git a/src/Novu/Models/Components/WorkflowResponseDtoSteps.cs b/src/Novu/Models/Components/WorkflowResponseDtoSteps.cs index 0c14169c..2190c77a 100644 --- a/src/Novu/Models/Components/WorkflowResponseDtoSteps.cs +++ b/src/Novu/Models/Components/WorkflowResponseDtoSteps.cs @@ -42,6 +42,8 @@ public class WorkflowResponseDtoStepsType public static WorkflowResponseDtoStepsType Throttle { get { return new WorkflowResponseDtoStepsType("throttle"); } } + public static WorkflowResponseDtoStepsType HttpRequest { get { return new WorkflowResponseDtoStepsType("http_request"); } } + public override string ToString() { return Value; } public static implicit operator String(WorkflowResponseDtoStepsType v) { return v.Value; } public static WorkflowResponseDtoStepsType FromString(string v) { @@ -55,6 +57,7 @@ public static WorkflowResponseDtoStepsType FromString(string v) { case "digest": return Digest; case "custom": return Custom; case "throttle": return Throttle; + case "http_request": return HttpRequest; default: throw new ArgumentException("Invalid value for WorkflowResponseDtoStepsType"); } } @@ -108,6 +111,9 @@ public WorkflowResponseDtoSteps(WorkflowResponseDtoStepsType type) [SpeakeasyMetadata("form:explode=true")] public ThrottleStepResponseDto? ThrottleStepResponseDto { get; set; } + [SpeakeasyMetadata("form:explode=true")] + public HttpRequestStepResponseDto? HttpRequestStepResponseDto { get; set; } + public WorkflowResponseDtoStepsType Type { get; set; } public static WorkflowResponseDtoSteps CreateInApp(InAppStepResponseDto inApp) @@ -200,6 +206,16 @@ public static WorkflowResponseDtoSteps CreateThrottle(ThrottleStepResponseDto th return res; } + public static WorkflowResponseDtoSteps CreateHttpRequest(HttpRequestStepResponseDto httpRequest) + { + WorkflowResponseDtoStepsType typ = WorkflowResponseDtoStepsType.HttpRequest; + string typStr = WorkflowResponseDtoStepsType.HttpRequest.ToString(); + httpRequest.Type = StepTypeEnumExtension.ToEnum(WorkflowResponseDtoStepsType.HttpRequest.ToString()); + WorkflowResponseDtoSteps res = new WorkflowResponseDtoSteps(typ); + res.HttpRequestStepResponseDto = httpRequest; + return res; + } + public class WorkflowResponseDtoStepsConverter : JsonConverter { public override bool CanConvert(System.Type objectType) => objectType == typeof(WorkflowResponseDtoSteps); @@ -260,6 +276,11 @@ public class WorkflowResponseDtoStepsConverter : JsonConverter ThrottleStepResponseDto throttleStepResponseDto = ResponseBodyDeserializer.DeserializeNotNull(jo.ToString()); return CreateThrottle(throttleStepResponseDto); } + if (discriminator == WorkflowResponseDtoStepsType.HttpRequest.ToString()) + { + HttpRequestStepResponseDto httpRequestStepResponseDto = ResponseBodyDeserializer.DeserializeNotNull(jo.ToString()); + return CreateHttpRequest(httpRequestStepResponseDto); + } throw new InvalidOperationException("Could not deserialize into any supported types."); } @@ -326,6 +347,12 @@ public override void WriteJson(JsonWriter writer, object? value, JsonSerializer writer.WriteRawValue(Utilities.SerializeJSON(res.ThrottleStepResponseDto)); return; } + + if (res.HttpRequestStepResponseDto != null) + { + writer.WriteRawValue(Utilities.SerializeJSON(res.HttpRequestStepResponseDto)); + return; + } } } diff --git a/src/Novu/Models/Requests/ActionType.cs b/src/Novu/Models/Requests/ActionType.cs new file mode 100644 index 00000000..d1d10ca4 --- /dev/null +++ b/src/Novu/Models/Requests/ActionType.cs @@ -0,0 +1,59 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Newtonsoft.Json; + using Novu.Utils; + using System; + + /// + /// The type of action (primary or secondary). + /// + public enum ActionType + { + [JsonProperty("primary")] + Primary, + [JsonProperty("secondary")] + Secondary, + } + + public static class ActionTypeExtension + { + public static string Value(this ActionType value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static ActionType ToEnum(this string value) + { + foreach(var field in typeof(ActionType).GetFields()) + { + var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); + if (attributes.Length == 0) + { + continue; + } + + var attribute = attributes[0] as JsonPropertyAttribute; + if (attribute != null && attribute.PropertyName == value) + { + var enumVal = field.GetValue(null); + + if (enumVal is ActionType) + { + return (ActionType)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum ActionType"); + } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/EnvironmentVariablesControllerCreateEnvironmentVariableRequest.cs b/src/Novu/Models/Requests/EnvironmentVariablesControllerCreateEnvironmentVariableRequest.cs new file mode 100644 index 00000000..dbb28844 --- /dev/null +++ b/src/Novu/Models/Requests/EnvironmentVariablesControllerCreateEnvironmentVariableRequest.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Novu.Models.Components; + using Novu.Utils; + + public class EnvironmentVariablesControllerCreateEnvironmentVariableRequest + { + /// + /// A header for idempotency purposes. + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=idempotency-key")] + public string? IdempotencyKey { get; set; } + + [SpeakeasyMetadata("request:mediaType=application/json")] + public CreateEnvironmentVariableRequestDto CreateEnvironmentVariableRequestDto { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/EnvironmentVariablesControllerCreateEnvironmentVariableResponse.cs b/src/Novu/Models/Requests/EnvironmentVariablesControllerCreateEnvironmentVariableResponse.cs new file mode 100644 index 00000000..fc79a4dd --- /dev/null +++ b/src/Novu/Models/Requests/EnvironmentVariablesControllerCreateEnvironmentVariableResponse.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class EnvironmentVariablesControllerCreateEnvironmentVariableResponse + { + [JsonProperty("-")] + public HTTPMetadata HttpMeta { get; set; } = default!; + + /// + /// OK. + /// + public EnvironmentVariableResponseDto? EnvironmentVariableResponseDto { get; set; } + + public Dictionary> Headers { get; set; } = new Dictionary>(); + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/EnvironmentVariablesControllerDeleteEnvironmentVariableRequest.cs b/src/Novu/Models/Requests/EnvironmentVariablesControllerDeleteEnvironmentVariableRequest.cs new file mode 100644 index 00000000..23440c9b --- /dev/null +++ b/src/Novu/Models/Requests/EnvironmentVariablesControllerDeleteEnvironmentVariableRequest.cs @@ -0,0 +1,28 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Novu.Utils; + + public class EnvironmentVariablesControllerDeleteEnvironmentVariableRequest + { + /// + /// The unique key of the environment variable (e.g. BASE_URL). + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=variableKey")] + public string VariableKey { get; set; } = default!; + + /// + /// A header for idempotency purposes. + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=idempotency-key")] + public string? IdempotencyKey { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/EnvironmentVariablesControllerDeleteEnvironmentVariableResponse.cs b/src/Novu/Models/Requests/EnvironmentVariablesControllerDeleteEnvironmentVariableResponse.cs new file mode 100644 index 00000000..70f5c6f8 --- /dev/null +++ b/src/Novu/Models/Requests/EnvironmentVariablesControllerDeleteEnvironmentVariableResponse.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class EnvironmentVariablesControllerDeleteEnvironmentVariableResponse + { + [JsonProperty("-")] + public HTTPMetadata HttpMeta { get; set; } = default!; + + public Dictionary> Headers { get; set; } = new Dictionary>(); + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableRequest.cs b/src/Novu/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableRequest.cs new file mode 100644 index 00000000..868dd629 --- /dev/null +++ b/src/Novu/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableRequest.cs @@ -0,0 +1,28 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Novu.Utils; + + public class EnvironmentVariablesControllerGetEnvironmentVariableRequest + { + /// + /// The unique key of the environment variable (e.g. BASE_URL). + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=variableKey")] + public string VariableKey { get; set; } = default!; + + /// + /// A header for idempotency purposes. + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=idempotency-key")] + public string? IdempotencyKey { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableResponse.cs b/src/Novu/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableResponse.cs new file mode 100644 index 00000000..98fb6d50 --- /dev/null +++ b/src/Novu/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableResponse.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class EnvironmentVariablesControllerGetEnvironmentVariableResponse + { + [JsonProperty("-")] + public HTTPMetadata HttpMeta { get; set; } = default!; + + /// + /// OK. + /// + public EnvironmentVariableResponseDto? EnvironmentVariableResponseDto { get; set; } + + public Dictionary> Headers { get; set; } = new Dictionary>(); + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableUsageRequest.cs b/src/Novu/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableUsageRequest.cs new file mode 100644 index 00000000..bb61ceb2 --- /dev/null +++ b/src/Novu/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableUsageRequest.cs @@ -0,0 +1,28 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Novu.Utils; + + public class EnvironmentVariablesControllerGetEnvironmentVariableUsageRequest + { + /// + /// The unique key of the environment variable (e.g. BASE_URL). + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=variableKey")] + public string VariableKey { get; set; } = default!; + + /// + /// A header for idempotency purposes. + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=idempotency-key")] + public string? IdempotencyKey { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableUsageResponse.cs b/src/Novu/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableUsageResponse.cs new file mode 100644 index 00000000..32aad292 --- /dev/null +++ b/src/Novu/Models/Requests/EnvironmentVariablesControllerGetEnvironmentVariableUsageResponse.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class EnvironmentVariablesControllerGetEnvironmentVariableUsageResponse + { + [JsonProperty("-")] + public HTTPMetadata HttpMeta { get; set; } = default!; + + /// + /// OK. + /// + public GetEnvironmentVariableUsageResponseDto? GetEnvironmentVariableUsageResponseDto { get; set; } + + public Dictionary> Headers { get; set; } = new Dictionary>(); + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/EnvironmentVariablesControllerListEnvironmentVariablesRequest.cs b/src/Novu/Models/Requests/EnvironmentVariablesControllerListEnvironmentVariablesRequest.cs new file mode 100644 index 00000000..4023ddc6 --- /dev/null +++ b/src/Novu/Models/Requests/EnvironmentVariablesControllerListEnvironmentVariablesRequest.cs @@ -0,0 +1,28 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Novu.Utils; + + public class EnvironmentVariablesControllerListEnvironmentVariablesRequest + { + /// + /// Filter variables by key (case-insensitive partial match). + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=search")] + public string? Search { get; set; } + + /// + /// A header for idempotency purposes. + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=idempotency-key")] + public string? IdempotencyKey { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/EnvironmentVariablesControllerListEnvironmentVariablesResponse.cs b/src/Novu/Models/Requests/EnvironmentVariablesControllerListEnvironmentVariablesResponse.cs new file mode 100644 index 00000000..db675f7a --- /dev/null +++ b/src/Novu/Models/Requests/EnvironmentVariablesControllerListEnvironmentVariablesResponse.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class EnvironmentVariablesControllerListEnvironmentVariablesResponse + { + [JsonProperty("-")] + public HTTPMetadata HttpMeta { get; set; } = default!; + + /// + /// OK. + /// + public List? EnvironmentVariableResponseDtos { get; set; } + + public Dictionary> Headers { get; set; } = new Dictionary>(); + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/EnvironmentVariablesControllerUpdateEnvironmentVariableRequest.cs b/src/Novu/Models/Requests/EnvironmentVariablesControllerUpdateEnvironmentVariableRequest.cs new file mode 100644 index 00000000..af24432b --- /dev/null +++ b/src/Novu/Models/Requests/EnvironmentVariablesControllerUpdateEnvironmentVariableRequest.cs @@ -0,0 +1,32 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Novu.Models.Components; + using Novu.Utils; + + public class EnvironmentVariablesControllerUpdateEnvironmentVariableRequest + { + /// + /// The unique key of the environment variable (e.g. BASE_URL). + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=variableKey")] + public string VariableKey { get; set; } = default!; + + /// + /// A header for idempotency purposes. + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=idempotency-key")] + public string? IdempotencyKey { get; set; } + + [SpeakeasyMetadata("request:mediaType=application/json")] + public UpdateEnvironmentVariableRequestDto UpdateEnvironmentVariableRequestDto { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/EnvironmentVariablesControllerUpdateEnvironmentVariableResponse.cs b/src/Novu/Models/Requests/EnvironmentVariablesControllerUpdateEnvironmentVariableResponse.cs new file mode 100644 index 00000000..053153a0 --- /dev/null +++ b/src/Novu/Models/Requests/EnvironmentVariablesControllerUpdateEnvironmentVariableResponse.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class EnvironmentVariablesControllerUpdateEnvironmentVariableResponse + { + [JsonProperty("-")] + public HTTPMetadata HttpMeta { get; set; } = default!; + + /// + /// OK. + /// + public EnvironmentVariableResponseDto? EnvironmentVariableResponseDto { get; set; } + + public Dictionary> Headers { get; set; } = new Dictionary>(); + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/EnvironmentsControllerDiffEnvironmentRequest.cs b/src/Novu/Models/Requests/EnvironmentsControllerDiffEnvironmentRequest.cs new file mode 100644 index 00000000..f7267116 --- /dev/null +++ b/src/Novu/Models/Requests/EnvironmentsControllerDiffEnvironmentRequest.cs @@ -0,0 +1,35 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Novu.Models.Components; + using Novu.Utils; + + public class EnvironmentsControllerDiffEnvironmentRequest + { + /// + /// Target environment ID (MongoDB ObjectId) to compare against. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=targetEnvironmentId")] + public string TargetEnvironmentId { get; set; } = default!; + + /// + /// A header for idempotency purposes. + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=idempotency-key")] + public string? IdempotencyKey { get; set; } + + /// + /// Diff request configuration. + /// + [SpeakeasyMetadata("request:mediaType=application/json")] + public DiffEnvironmentRequestDto DiffEnvironmentRequestDto { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/EnvironmentsControllerDiffEnvironmentResponse.cs b/src/Novu/Models/Requests/EnvironmentsControllerDiffEnvironmentResponse.cs new file mode 100644 index 00000000..c1aae73a --- /dev/null +++ b/src/Novu/Models/Requests/EnvironmentsControllerDiffEnvironmentResponse.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class EnvironmentsControllerDiffEnvironmentResponse + { + [JsonProperty("-")] + public HTTPMetadata HttpMeta { get; set; } = default!; + + /// + /// OK. + /// + public DiffEnvironmentResponseDto? DiffEnvironmentResponseDto { get; set; } + + public Dictionary> Headers { get; set; } = new Dictionary>(); + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/EnvironmentsControllerPublishEnvironmentRequest.cs b/src/Novu/Models/Requests/EnvironmentsControllerPublishEnvironmentRequest.cs new file mode 100644 index 00000000..c261e831 --- /dev/null +++ b/src/Novu/Models/Requests/EnvironmentsControllerPublishEnvironmentRequest.cs @@ -0,0 +1,35 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Novu.Models.Components; + using Novu.Utils; + + public class EnvironmentsControllerPublishEnvironmentRequest + { + /// + /// Target environment ID (MongoDB ObjectId) to publish resources to. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=targetEnvironmentId")] + public string TargetEnvironmentId { get; set; } = default!; + + /// + /// A header for idempotency purposes. + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=idempotency-key")] + public string? IdempotencyKey { get; set; } + + /// + /// Publish request configuration. + /// + [SpeakeasyMetadata("request:mediaType=application/json")] + public PublishEnvironmentRequestDto PublishEnvironmentRequestDto { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/EnvironmentsControllerPublishEnvironmentResponse.cs b/src/Novu/Models/Requests/EnvironmentsControllerPublishEnvironmentResponse.cs new file mode 100644 index 00000000..44398124 --- /dev/null +++ b/src/Novu/Models/Requests/EnvironmentsControllerPublishEnvironmentResponse.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class EnvironmentsControllerPublishEnvironmentResponse + { + [JsonProperty("-")] + public HTTPMetadata HttpMeta { get; set; } = default!; + + /// + /// OK. + /// + public PublishEnvironmentResponseDto? PublishEnvironmentResponseDto { get; set; } + + public Dictionary> Headers { get; set; } = new Dictionary>(); + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/PathParamActionType.cs b/src/Novu/Models/Requests/PathParamActionType.cs new file mode 100644 index 00000000..92541a5d --- /dev/null +++ b/src/Novu/Models/Requests/PathParamActionType.cs @@ -0,0 +1,59 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Newtonsoft.Json; + using Novu.Utils; + using System; + + /// + /// The type of action (primary or secondary). + /// + public enum PathParamActionType + { + [JsonProperty("primary")] + Primary, + [JsonProperty("secondary")] + Secondary, + } + + public static class PathParamActionTypeExtension + { + public static string Value(this PathParamActionType value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static PathParamActionType ToEnum(this string value) + { + foreach(var field in typeof(PathParamActionType).GetFields()) + { + var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); + if (attributes.Length == 0) + { + continue; + } + + var attribute = attributes[0] as JsonPropertyAttribute; + if (attribute != null && attribute.PropertyName == value) + { + var enumVal = field.GetValue(null); + + if (enumVal is PathParamActionType) + { + return (PathParamActionType)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum PathParamActionType"); + } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/Severity.cs b/src/Novu/Models/Requests/Severity.cs new file mode 100644 index 00000000..9aa2d0ca --- /dev/null +++ b/src/Novu/Models/Requests/Severity.cs @@ -0,0 +1,60 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Newtonsoft.Json; + using Novu.Utils; + using System; + + public enum Severity + { + [JsonProperty("high")] + High, + [JsonProperty("medium")] + Medium, + [JsonProperty("low")] + Low, + [JsonProperty("none")] + None, + } + + public static class SeverityExtension + { + public static string Value(this Severity value) + { + return ((JsonPropertyAttribute)value.GetType().GetMember(value.ToString())[0].GetCustomAttributes(typeof(JsonPropertyAttribute), false)[0]).PropertyName ?? value.ToString(); + } + + public static Severity ToEnum(this string value) + { + foreach(var field in typeof(Severity).GetFields()) + { + var attributes = field.GetCustomAttributes(typeof(JsonPropertyAttribute), false); + if (attributes.Length == 0) + { + continue; + } + + var attribute = attributes[0] as JsonPropertyAttribute; + if (attribute != null && attribute.PropertyName == value) + { + var enumVal = field.GetValue(null); + + if (enumVal is Severity) + { + return (Severity)enumVal; + } + } + } + + throw new Exception($"Unknown value {value} for enum Severity"); + } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerArchiveAllNotificationsRequest.cs b/src/Novu/Models/Requests/SubscribersControllerArchiveAllNotificationsRequest.cs new file mode 100644 index 00000000..8c515668 --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerArchiveAllNotificationsRequest.cs @@ -0,0 +1,32 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Novu.Models.Components; + using Novu.Utils; + + public class SubscribersControllerArchiveAllNotificationsRequest + { + /// + /// The identifier of the subscriber. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=subscriberId")] + public string SubscriberId { get; set; } = default!; + + /// + /// A header for idempotency purposes. + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=idempotency-key")] + public string? IdempotencyKey { get; set; } + + [SpeakeasyMetadata("request:mediaType=application/json")] + public UpdateAllSubscriberNotificationsDto UpdateAllSubscriberNotificationsDto { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerArchiveAllNotificationsResponse.cs b/src/Novu/Models/Requests/SubscribersControllerArchiveAllNotificationsResponse.cs new file mode 100644 index 00000000..c1821975 --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerArchiveAllNotificationsResponse.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class SubscribersControllerArchiveAllNotificationsResponse + { + [JsonProperty("-")] + public HTTPMetadata HttpMeta { get; set; } = default!; + + public Dictionary> Headers { get; set; } = new Dictionary>(); + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerArchiveAllReadNotificationsRequest.cs b/src/Novu/Models/Requests/SubscribersControllerArchiveAllReadNotificationsRequest.cs new file mode 100644 index 00000000..17f50c94 --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerArchiveAllReadNotificationsRequest.cs @@ -0,0 +1,32 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Novu.Models.Components; + using Novu.Utils; + + public class SubscribersControllerArchiveAllReadNotificationsRequest + { + /// + /// The identifier of the subscriber. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=subscriberId")] + public string SubscriberId { get; set; } = default!; + + /// + /// A header for idempotency purposes. + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=idempotency-key")] + public string? IdempotencyKey { get; set; } + + [SpeakeasyMetadata("request:mediaType=application/json")] + public UpdateAllSubscriberNotificationsDto UpdateAllSubscriberNotificationsDto { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerArchiveAllReadNotificationsResponse.cs b/src/Novu/Models/Requests/SubscribersControllerArchiveAllReadNotificationsResponse.cs new file mode 100644 index 00000000..5dd5ee78 --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerArchiveAllReadNotificationsResponse.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class SubscribersControllerArchiveAllReadNotificationsResponse + { + [JsonProperty("-")] + public HTTPMetadata HttpMeta { get; set; } = default!; + + public Dictionary> Headers { get; set; } = new Dictionary>(); + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerArchiveNotificationRequest.cs b/src/Novu/Models/Requests/SubscribersControllerArchiveNotificationRequest.cs new file mode 100644 index 00000000..34af39ac --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerArchiveNotificationRequest.cs @@ -0,0 +1,41 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Novu.Utils; + using System.Collections.Generic; + + public class SubscribersControllerArchiveNotificationRequest + { + /// + /// The identifier of the subscriber. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=subscriberId")] + public string SubscriberId { get; set; } = default!; + + /// + /// The identifier of the notification. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=notificationId")] + public string NotificationId { get; set; } = default!; + + /// + /// Context keys for filtering. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=contextKeys")] + public List? ContextKeys { get; set; } + + /// + /// A header for idempotency purposes. + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=idempotency-key")] + public string? IdempotencyKey { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerArchiveNotificationResponse.cs b/src/Novu/Models/Requests/SubscribersControllerArchiveNotificationResponse.cs new file mode 100644 index 00000000..2ad13b3e --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerArchiveNotificationResponse.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class SubscribersControllerArchiveNotificationResponse + { + [JsonProperty("-")] + public HTTPMetadata HttpMeta { get; set; } = default!; + + /// + /// OK. + /// + public InboxNotificationDto? InboxNotificationDto { get; set; } + + public Dictionary> Headers { get; set; } = new Dictionary>(); + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerBulkUpdateSubscriberPreferencesRequest.cs b/src/Novu/Models/Requests/SubscribersControllerBulkUpdateSubscriberPreferencesRequest.cs index 7382fb8b..946512fc 100644 --- a/src/Novu/Models/Requests/SubscribersControllerBulkUpdateSubscriberPreferencesRequest.cs +++ b/src/Novu/Models/Requests/SubscribersControllerBulkUpdateSubscriberPreferencesRequest.cs @@ -14,6 +14,9 @@ namespace Novu.Models.Requests public class SubscribersControllerBulkUpdateSubscriberPreferencesRequest { + /// + /// The identifier of the subscriber. + /// [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=subscriberId")] public string SubscriberId { get; set; } = default!; diff --git a/src/Novu/Models/Requests/SubscribersControllerCompleteNotificationActionRequest.cs b/src/Novu/Models/Requests/SubscribersControllerCompleteNotificationActionRequest.cs new file mode 100644 index 00000000..d25821c2 --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerCompleteNotificationActionRequest.cs @@ -0,0 +1,48 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Novu.Models.Requests; + using Novu.Utils; + using System.Collections.Generic; + + public class SubscribersControllerCompleteNotificationActionRequest + { + /// + /// The identifier of the subscriber. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=subscriberId")] + public string SubscriberId { get; set; } = default!; + + /// + /// The identifier of the notification. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=notificationId")] + public string NotificationId { get; set; } = default!; + + /// + /// The type of action (primary or secondary). + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=actionType")] + public ActionType ActionType { get; set; } = default!; + + /// + /// Context keys for filtering. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=contextKeys")] + public List? ContextKeys { get; set; } + + /// + /// A header for idempotency purposes. + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=idempotency-key")] + public string? IdempotencyKey { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerCompleteNotificationActionResponse.cs b/src/Novu/Models/Requests/SubscribersControllerCompleteNotificationActionResponse.cs new file mode 100644 index 00000000..b6682d1c --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerCompleteNotificationActionResponse.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class SubscribersControllerCompleteNotificationActionResponse + { + [JsonProperty("-")] + public HTTPMetadata HttpMeta { get; set; } = default!; + + /// + /// OK. + /// + public InboxNotificationDto? InboxNotificationDto { get; set; } + + public Dictionary> Headers { get; set; } = new Dictionary>(); + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerDeleteAllNotificationsRequest.cs b/src/Novu/Models/Requests/SubscribersControllerDeleteAllNotificationsRequest.cs new file mode 100644 index 00000000..dd2bcbee --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerDeleteAllNotificationsRequest.cs @@ -0,0 +1,32 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Novu.Models.Components; + using Novu.Utils; + + public class SubscribersControllerDeleteAllNotificationsRequest + { + /// + /// The identifier of the subscriber. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=subscriberId")] + public string SubscriberId { get; set; } = default!; + + /// + /// A header for idempotency purposes. + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=idempotency-key")] + public string? IdempotencyKey { get; set; } + + [SpeakeasyMetadata("request:mediaType=application/json")] + public UpdateAllSubscriberNotificationsDto UpdateAllSubscriberNotificationsDto { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerDeleteAllNotificationsResponse.cs b/src/Novu/Models/Requests/SubscribersControllerDeleteAllNotificationsResponse.cs new file mode 100644 index 00000000..df81bc89 --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerDeleteAllNotificationsResponse.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class SubscribersControllerDeleteAllNotificationsResponse + { + [JsonProperty("-")] + public HTTPMetadata HttpMeta { get; set; } = default!; + + public Dictionary> Headers { get; set; } = new Dictionary>(); + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerDeleteNotificationRequest.cs b/src/Novu/Models/Requests/SubscribersControllerDeleteNotificationRequest.cs new file mode 100644 index 00000000..495e0a92 --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerDeleteNotificationRequest.cs @@ -0,0 +1,41 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Novu.Utils; + using System.Collections.Generic; + + public class SubscribersControllerDeleteNotificationRequest + { + /// + /// The identifier of the subscriber. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=subscriberId")] + public string SubscriberId { get; set; } = default!; + + /// + /// The identifier of the notification. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=notificationId")] + public string NotificationId { get; set; } = default!; + + /// + /// Context keys for filtering. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=contextKeys")] + public List? ContextKeys { get; set; } + + /// + /// A header for idempotency purposes. + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=idempotency-key")] + public string? IdempotencyKey { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerDeleteNotificationResponse.cs b/src/Novu/Models/Requests/SubscribersControllerDeleteNotificationResponse.cs new file mode 100644 index 00000000..6c9705f4 --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerDeleteNotificationResponse.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class SubscribersControllerDeleteNotificationResponse + { + [JsonProperty("-")] + public HTTPMetadata HttpMeta { get; set; } = default!; + + public Dictionary> Headers { get; set; } = new Dictionary>(); + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerGetSubscriberNotificationsCountRequest.cs b/src/Novu/Models/Requests/SubscribersControllerGetSubscriberNotificationsCountRequest.cs new file mode 100644 index 00000000..78436775 --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerGetSubscriberNotificationsCountRequest.cs @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Novu.Utils; + + public class SubscribersControllerGetSubscriberNotificationsCountRequest + { + /// + /// The identifier of the subscriber. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=subscriberId")] + public string SubscriberId { get; set; } = default!; + + /// + /// Array of filter objects (max 30) to count notifications by different criteria. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=filters")] + public string Filters { get; set; } = default!; + + /// + /// A header for idempotency purposes. + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=idempotency-key")] + public string? IdempotencyKey { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerGetSubscriberNotificationsCountResponse.cs b/src/Novu/Models/Requests/SubscribersControllerGetSubscriberNotificationsCountResponse.cs new file mode 100644 index 00000000..793aab0a --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerGetSubscriberNotificationsCountResponse.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class SubscribersControllerGetSubscriberNotificationsCountResponse + { + [JsonProperty("-")] + public HTTPMetadata HttpMeta { get; set; } = default!; + + /// + /// OK. + /// + public List? GetSubscriberNotificationsCountResponseDtos { get; set; } + + public Dictionary> Headers { get; set; } = new Dictionary>(); + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerGetSubscriberNotificationsRequest.cs b/src/Novu/Models/Requests/SubscribersControllerGetSubscriberNotificationsRequest.cs new file mode 100644 index 00000000..71f6f8af --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerGetSubscriberNotificationsRequest.cs @@ -0,0 +1,93 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Novu.Models.Requests; + using Novu.Utils; + using System.Collections.Generic; + + public class SubscribersControllerGetSubscriberNotificationsRequest + { + /// + /// The identifier of the subscriber. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=subscriberId")] + public string SubscriberId { get; set; } = default!; + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=limit")] + public double? Limit { get; set; } = 10D; + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=after")] + public string? After { get; set; } + + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=offset")] + public double? Offset { get; set; } + + /// + /// Filter by read/unread state. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=read")] + public bool? Read { get; set; } + + /// + /// Filter by archived state. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=archived")] + public bool? Archived { get; set; } + + /// + /// Filter by snoozed state. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=snoozed")] + public bool? Snoozed { get; set; } + + /// + /// Filter by seen state. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=seen")] + public bool? Seen { get; set; } + + /// + /// Filter by data attributes (JSON string). + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=data")] + public string? Data { get; set; } + + /// + /// Filter by severity levels. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=severity")] + public List? Severity { get; set; } + + /// + /// Filter notifications created on or after this timestamp (Unix timestamp in milliseconds). + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=createdGte")] + public double? CreatedGte { get; set; } + + /// + /// Filter notifications created on or before this timestamp (Unix timestamp in milliseconds). + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=createdLte")] + public double? CreatedLte { get; set; } + + /// + /// Context keys for filtering notifications in multi-context scenarios. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=contextKeys")] + public List? ContextKeys { get; set; } + + /// + /// A header for idempotency purposes. + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=idempotency-key")] + public string? IdempotencyKey { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerGetSubscriberNotificationsResponse.cs b/src/Novu/Models/Requests/SubscribersControllerGetSubscriberNotificationsResponse.cs new file mode 100644 index 00000000..39781f14 --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerGetSubscriberNotificationsResponse.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class SubscribersControllerGetSubscriberNotificationsResponse + { + [JsonProperty("-")] + public HTTPMetadata HttpMeta { get; set; } = default!; + + /// + /// OK. + /// + public GetSubscriberNotificationsResponseDto? GetSubscriberNotificationsResponseDto { get; set; } + + public Dictionary> Headers { get; set; } = new Dictionary>(); + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerGetSubscriberPreferencesRequest.cs b/src/Novu/Models/Requests/SubscribersControllerGetSubscriberPreferencesRequest.cs index 8a2351b0..bf6188e5 100644 --- a/src/Novu/Models/Requests/SubscribersControllerGetSubscriberPreferencesRequest.cs +++ b/src/Novu/Models/Requests/SubscribersControllerGetSubscriberPreferencesRequest.cs @@ -15,6 +15,9 @@ namespace Novu.Models.Requests public class SubscribersControllerGetSubscriberPreferencesRequest { + /// + /// The identifier of the subscriber. + /// [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=subscriberId")] public string SubscriberId { get; set; } = default!; diff --git a/src/Novu/Models/Requests/SubscribersControllerGetSubscriberRequest.cs b/src/Novu/Models/Requests/SubscribersControllerGetSubscriberRequest.cs index 503a955a..08581fc8 100644 --- a/src/Novu/Models/Requests/SubscribersControllerGetSubscriberRequest.cs +++ b/src/Novu/Models/Requests/SubscribersControllerGetSubscriberRequest.cs @@ -13,6 +13,9 @@ namespace Novu.Models.Requests public class SubscribersControllerGetSubscriberRequest { + /// + /// The identifier of the subscriber. + /// [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=subscriberId")] public string SubscriberId { get; set; } = default!; diff --git a/src/Novu/Models/Requests/SubscribersControllerMarkAllNotificationsAsReadRequest.cs b/src/Novu/Models/Requests/SubscribersControllerMarkAllNotificationsAsReadRequest.cs new file mode 100644 index 00000000..479d90ea --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerMarkAllNotificationsAsReadRequest.cs @@ -0,0 +1,32 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Novu.Models.Components; + using Novu.Utils; + + public class SubscribersControllerMarkAllNotificationsAsReadRequest + { + /// + /// The identifier of the subscriber. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=subscriberId")] + public string SubscriberId { get; set; } = default!; + + /// + /// A header for idempotency purposes. + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=idempotency-key")] + public string? IdempotencyKey { get; set; } + + [SpeakeasyMetadata("request:mediaType=application/json")] + public UpdateAllSubscriberNotificationsDto UpdateAllSubscriberNotificationsDto { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerMarkAllNotificationsAsReadResponse.cs b/src/Novu/Models/Requests/SubscribersControllerMarkAllNotificationsAsReadResponse.cs new file mode 100644 index 00000000..dbc01136 --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerMarkAllNotificationsAsReadResponse.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class SubscribersControllerMarkAllNotificationsAsReadResponse + { + [JsonProperty("-")] + public HTTPMetadata HttpMeta { get; set; } = default!; + + public Dictionary> Headers { get; set; } = new Dictionary>(); + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerMarkNotificationAsReadRequest.cs b/src/Novu/Models/Requests/SubscribersControllerMarkNotificationAsReadRequest.cs new file mode 100644 index 00000000..d31b6d32 --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerMarkNotificationAsReadRequest.cs @@ -0,0 +1,41 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Novu.Utils; + using System.Collections.Generic; + + public class SubscribersControllerMarkNotificationAsReadRequest + { + /// + /// The identifier of the subscriber. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=subscriberId")] + public string SubscriberId { get; set; } = default!; + + /// + /// The identifier of the notification. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=notificationId")] + public string NotificationId { get; set; } = default!; + + /// + /// Context keys for filtering. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=contextKeys")] + public List? ContextKeys { get; set; } + + /// + /// A header for idempotency purposes. + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=idempotency-key")] + public string? IdempotencyKey { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerMarkNotificationAsReadResponse.cs b/src/Novu/Models/Requests/SubscribersControllerMarkNotificationAsReadResponse.cs new file mode 100644 index 00000000..44c1abbe --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerMarkNotificationAsReadResponse.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class SubscribersControllerMarkNotificationAsReadResponse + { + [JsonProperty("-")] + public HTTPMetadata HttpMeta { get; set; } = default!; + + /// + /// OK. + /// + public InboxNotificationDto? InboxNotificationDto { get; set; } + + public Dictionary> Headers { get; set; } = new Dictionary>(); + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerMarkNotificationAsUnreadRequest.cs b/src/Novu/Models/Requests/SubscribersControllerMarkNotificationAsUnreadRequest.cs new file mode 100644 index 00000000..6daf19b6 --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerMarkNotificationAsUnreadRequest.cs @@ -0,0 +1,41 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Novu.Utils; + using System.Collections.Generic; + + public class SubscribersControllerMarkNotificationAsUnreadRequest + { + /// + /// The identifier of the subscriber. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=subscriberId")] + public string SubscriberId { get; set; } = default!; + + /// + /// The identifier of the notification. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=notificationId")] + public string NotificationId { get; set; } = default!; + + /// + /// Context keys for filtering. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=contextKeys")] + public List? ContextKeys { get; set; } + + /// + /// A header for idempotency purposes. + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=idempotency-key")] + public string? IdempotencyKey { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerMarkNotificationAsUnreadResponse.cs b/src/Novu/Models/Requests/SubscribersControllerMarkNotificationAsUnreadResponse.cs new file mode 100644 index 00000000..d02f3a27 --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerMarkNotificationAsUnreadResponse.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class SubscribersControllerMarkNotificationAsUnreadResponse + { + [JsonProperty("-")] + public HTTPMetadata HttpMeta { get; set; } = default!; + + /// + /// OK. + /// + public InboxNotificationDto? InboxNotificationDto { get; set; } + + public Dictionary> Headers { get; set; } = new Dictionary>(); + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerMarkNotificationsAsSeenRequest.cs b/src/Novu/Models/Requests/SubscribersControllerMarkNotificationsAsSeenRequest.cs new file mode 100644 index 00000000..987278ba --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerMarkNotificationsAsSeenRequest.cs @@ -0,0 +1,32 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Novu.Models.Components; + using Novu.Utils; + + public class SubscribersControllerMarkNotificationsAsSeenRequest + { + /// + /// The identifier of the subscriber. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=subscriberId")] + public string SubscriberId { get; set; } = default!; + + /// + /// A header for idempotency purposes. + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=idempotency-key")] + public string? IdempotencyKey { get; set; } + + [SpeakeasyMetadata("request:mediaType=application/json")] + public MarkSubscriberNotificationsAsSeenDto MarkSubscriberNotificationsAsSeenDto { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerMarkNotificationsAsSeenResponse.cs b/src/Novu/Models/Requests/SubscribersControllerMarkNotificationsAsSeenResponse.cs new file mode 100644 index 00000000..5aa9206d --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerMarkNotificationsAsSeenResponse.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class SubscribersControllerMarkNotificationsAsSeenResponse + { + [JsonProperty("-")] + public HTTPMetadata HttpMeta { get; set; } = default!; + + public Dictionary> Headers { get; set; } = new Dictionary>(); + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerPatchSubscriberRequest.cs b/src/Novu/Models/Requests/SubscribersControllerPatchSubscriberRequest.cs index d54ec435..199bb615 100644 --- a/src/Novu/Models/Requests/SubscribersControllerPatchSubscriberRequest.cs +++ b/src/Novu/Models/Requests/SubscribersControllerPatchSubscriberRequest.cs @@ -14,6 +14,9 @@ namespace Novu.Models.Requests public class SubscribersControllerPatchSubscriberRequest { + /// + /// The identifier of the subscriber. + /// [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=subscriberId")] public string SubscriberId { get; set; } = default!; diff --git a/src/Novu/Models/Requests/SubscribersControllerRemoveSubscriberRequest.cs b/src/Novu/Models/Requests/SubscribersControllerRemoveSubscriberRequest.cs index 8b39d5b7..615a0190 100644 --- a/src/Novu/Models/Requests/SubscribersControllerRemoveSubscriberRequest.cs +++ b/src/Novu/Models/Requests/SubscribersControllerRemoveSubscriberRequest.cs @@ -13,6 +13,9 @@ namespace Novu.Models.Requests public class SubscribersControllerRemoveSubscriberRequest { + /// + /// The identifier of the subscriber. + /// [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=subscriberId")] public string SubscriberId { get; set; } = default!; diff --git a/src/Novu/Models/Requests/SubscribersControllerRevertNotificationActionRequest.cs b/src/Novu/Models/Requests/SubscribersControllerRevertNotificationActionRequest.cs new file mode 100644 index 00000000..0ab37580 --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerRevertNotificationActionRequest.cs @@ -0,0 +1,48 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Novu.Models.Requests; + using Novu.Utils; + using System.Collections.Generic; + + public class SubscribersControllerRevertNotificationActionRequest + { + /// + /// The identifier of the subscriber. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=subscriberId")] + public string SubscriberId { get; set; } = default!; + + /// + /// The identifier of the notification. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=notificationId")] + public string NotificationId { get; set; } = default!; + + /// + /// The type of action (primary or secondary). + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=actionType")] + public PathParamActionType ActionType { get; set; } = default!; + + /// + /// Context keys for filtering. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=contextKeys")] + public List? ContextKeys { get; set; } + + /// + /// A header for idempotency purposes. + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=idempotency-key")] + public string? IdempotencyKey { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerRevertNotificationActionResponse.cs b/src/Novu/Models/Requests/SubscribersControllerRevertNotificationActionResponse.cs new file mode 100644 index 00000000..007c5eda --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerRevertNotificationActionResponse.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class SubscribersControllerRevertNotificationActionResponse + { + [JsonProperty("-")] + public HTTPMetadata HttpMeta { get; set; } = default!; + + /// + /// OK. + /// + public InboxNotificationDto? InboxNotificationDto { get; set; } + + public Dictionary> Headers { get; set; } = new Dictionary>(); + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerSnoozeNotificationRequest.cs b/src/Novu/Models/Requests/SubscribersControllerSnoozeNotificationRequest.cs new file mode 100644 index 00000000..5deea977 --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerSnoozeNotificationRequest.cs @@ -0,0 +1,45 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class SubscribersControllerSnoozeNotificationRequest + { + /// + /// The identifier of the subscriber. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=subscriberId")] + public string SubscriberId { get; set; } = default!; + + /// + /// The identifier of the notification. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=notificationId")] + public string NotificationId { get; set; } = default!; + + /// + /// Context keys for filtering. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=contextKeys")] + public List? ContextKeys { get; set; } + + /// + /// A header for idempotency purposes. + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=idempotency-key")] + public string? IdempotencyKey { get; set; } + + [SpeakeasyMetadata("request:mediaType=application/json")] + public SnoozeSubscriberNotificationDto SnoozeSubscriberNotificationDto { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerSnoozeNotificationResponse.cs b/src/Novu/Models/Requests/SubscribersControllerSnoozeNotificationResponse.cs new file mode 100644 index 00000000..c8a8b61d --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerSnoozeNotificationResponse.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class SubscribersControllerSnoozeNotificationResponse + { + [JsonProperty("-")] + public HTTPMetadata HttpMeta { get; set; } = default!; + + /// + /// OK. + /// + public InboxNotificationDto? InboxNotificationDto { get; set; } + + public Dictionary> Headers { get; set; } = new Dictionary>(); + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerUnarchiveNotificationRequest.cs b/src/Novu/Models/Requests/SubscribersControllerUnarchiveNotificationRequest.cs new file mode 100644 index 00000000..9f450391 --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerUnarchiveNotificationRequest.cs @@ -0,0 +1,41 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Novu.Utils; + using System.Collections.Generic; + + public class SubscribersControllerUnarchiveNotificationRequest + { + /// + /// The identifier of the subscriber. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=subscriberId")] + public string SubscriberId { get; set; } = default!; + + /// + /// The identifier of the notification. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=notificationId")] + public string NotificationId { get; set; } = default!; + + /// + /// Context keys for filtering. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=contextKeys")] + public List? ContextKeys { get; set; } + + /// + /// A header for idempotency purposes. + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=idempotency-key")] + public string? IdempotencyKey { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerUnarchiveNotificationResponse.cs b/src/Novu/Models/Requests/SubscribersControllerUnarchiveNotificationResponse.cs new file mode 100644 index 00000000..b1f19f4c --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerUnarchiveNotificationResponse.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class SubscribersControllerUnarchiveNotificationResponse + { + [JsonProperty("-")] + public HTTPMetadata HttpMeta { get; set; } = default!; + + /// + /// OK. + /// + public InboxNotificationDto? InboxNotificationDto { get; set; } + + public Dictionary> Headers { get; set; } = new Dictionary>(); + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerUnsnoozeNotificationRequest.cs b/src/Novu/Models/Requests/SubscribersControllerUnsnoozeNotificationRequest.cs new file mode 100644 index 00000000..782e3d72 --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerUnsnoozeNotificationRequest.cs @@ -0,0 +1,41 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Novu.Utils; + using System.Collections.Generic; + + public class SubscribersControllerUnsnoozeNotificationRequest + { + /// + /// The identifier of the subscriber. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=subscriberId")] + public string SubscriberId { get; set; } = default!; + + /// + /// The identifier of the notification. + /// + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=notificationId")] + public string NotificationId { get; set; } = default!; + + /// + /// Context keys for filtering. + /// + [SpeakeasyMetadata("queryParam:style=form,explode=true,name=contextKeys")] + public List? ContextKeys { get; set; } + + /// + /// A header for idempotency purposes. + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=idempotency-key")] + public string? IdempotencyKey { get; set; } + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerUnsnoozeNotificationResponse.cs b/src/Novu/Models/Requests/SubscribersControllerUnsnoozeNotificationResponse.cs new file mode 100644 index 00000000..e2b77654 --- /dev/null +++ b/src/Novu/Models/Requests/SubscribersControllerUnsnoozeNotificationResponse.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class SubscribersControllerUnsnoozeNotificationResponse + { + [JsonProperty("-")] + public HTTPMetadata HttpMeta { get; set; } = default!; + + /// + /// OK. + /// + public InboxNotificationDto? InboxNotificationDto { get; set; } + + public Dictionary> Headers { get; set; } = new Dictionary>(); + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/SubscribersControllerUpdateSubscriberPreferencesRequest.cs b/src/Novu/Models/Requests/SubscribersControllerUpdateSubscriberPreferencesRequest.cs index 4934359b..5326c791 100644 --- a/src/Novu/Models/Requests/SubscribersControllerUpdateSubscriberPreferencesRequest.cs +++ b/src/Novu/Models/Requests/SubscribersControllerUpdateSubscriberPreferencesRequest.cs @@ -14,6 +14,9 @@ namespace Novu.Models.Requests public class SubscribersControllerUpdateSubscriberPreferencesRequest { + /// + /// The identifier of the subscriber. + /// [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=subscriberId")] public string SubscriberId { get; set; } = default!; diff --git a/src/Novu/Models/Requests/WorkflowControllerGeneratePreviewRequest.cs b/src/Novu/Models/Requests/WorkflowControllerGeneratePreviewRequest.cs new file mode 100644 index 00000000..fdaf2071 --- /dev/null +++ b/src/Novu/Models/Requests/WorkflowControllerGeneratePreviewRequest.cs @@ -0,0 +1,35 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Novu.Models.Components; + using Novu.Utils; + + public class WorkflowControllerGeneratePreviewRequest + { + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=workflowId")] + public string WorkflowId { get; set; } = default!; + + [SpeakeasyMetadata("pathParam:style=simple,explode=false,name=stepId")] + public string StepId { get; set; } = default!; + + /// + /// A header for idempotency purposes. + /// + [SpeakeasyMetadata("header:style=simple,explode=false,name=idempotency-key")] + public string? IdempotencyKey { get; set; } + + /// + /// Preview generation details. + /// + [SpeakeasyMetadata("request:mediaType=application/json")] + public GeneratePreviewRequestDto GeneratePreviewRequestDto { get; set; } = default!; + } +} \ No newline at end of file diff --git a/src/Novu/Models/Requests/WorkflowControllerGeneratePreviewResponse.cs b/src/Novu/Models/Requests/WorkflowControllerGeneratePreviewResponse.cs new file mode 100644 index 00000000..ee3b8051 --- /dev/null +++ b/src/Novu/Models/Requests/WorkflowControllerGeneratePreviewResponse.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu.Models.Requests +{ + using Newtonsoft.Json; + using Novu.Models.Components; + using Novu.Utils; + using System.Collections.Generic; + + public class WorkflowControllerGeneratePreviewResponse + { + [JsonProperty("-")] + public HTTPMetadata HttpMeta { get; set; } = default!; + + /// + /// Created. + /// + public GeneratePreviewResponseDto? GeneratePreviewResponseDto { get; set; } + + public Dictionary> Headers { get; set; } = new Dictionary>(); + } +} \ No newline at end of file diff --git a/src/Novu/Notifications.cs b/src/Novu/Notifications.cs index 7be1c267..1dc893af 100644 --- a/src/Novu/Notifications.cs +++ b/src/Novu/Notifications.cs @@ -113,6 +113,11 @@ public async Task GetAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); @@ -360,6 +365,11 @@ public async Task RetrieveAsync httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); diff --git a/src/Novu/Novu.csproj b/src/Novu/Novu.csproj index 26d51c80..2f1126c3 100644 --- a/src/Novu/Novu.csproj +++ b/src/Novu/Novu.csproj @@ -3,7 +3,7 @@ true Novu - 3.14.0 + 3.15.0 net8.0 Speakeasy Copyright (c) Speakeasy 2026 diff --git a/src/Novu/NovuNotifications.cs b/src/Novu/NovuNotifications.cs new file mode 100644 index 00000000..408f93fa --- /dev/null +++ b/src/Novu/NovuNotifications.cs @@ -0,0 +1,4387 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. +// +// Changes to this file may cause incorrect behavior and will be lost when +// the code is regenerated. +// +//------------------------------------------------------------------------------ +#nullable enable +namespace Novu +{ + using Newtonsoft.Json; + using Novu.Hooks; + using Novu.Models.Components; + using Novu.Models.Errors; + using Novu.Models.Requests; + using Novu.Utils; + using Novu.Utils.Retries; + using System; + using System.Collections.Generic; + using System.Net.Http; + using System.Net.Http.Headers; + using System.Threading.Tasks; + + public interface INovuNotifications + { + /// + /// Retrieve subscriber notifications. + /// + /// + /// Retrieve in-app (inbox) notifications for a subscriber by its unique key identifier **subscriberId**.
+ /// Supports filtering by tags, read/archived/snoozed/seen state, data attributes, severity, date range, and context keys. + ///
+ /// A parameter. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// The required parameter is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public Task ListAsync( + SubscribersControllerGetSubscriberNotificationsRequest request, + RetryConfig? retryConfig = null + ); + + /// + /// Delete a notification. + /// + /// + /// Delete a specific in-app (inbox) notification permanently by its unique identifier **notificationId**. + /// + /// The identifier of the subscriber. + /// The identifier of the notification. + /// Context keys for filtering. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public Task DeleteAsync( + string subscriberId, + string notificationId, + List? contextKeys = null, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ); + + /// + /// Complete a notification action. + /// + /// + /// Mark a single in-app (inbox) notification's action (primary or secondary) as completed by its unique identifier **notificationId** and action type **actionType**. + /// + /// A parameter. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// The required parameter is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public Task CompleteActionAsync( + SubscribersControllerCompleteNotificationActionRequest request, + RetryConfig? retryConfig = null + ); + + /// + /// Revert a notification action. + /// + /// + /// Revert a single in-app (inbox) notification's action (primary or secondary) to pending state by its unique identifier **notificationId** and action type **actionType**. + /// + /// A parameter. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// The required parameter is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public Task RevertActionAsync( + SubscribersControllerRevertNotificationActionRequest request, + RetryConfig? retryConfig = null + ); + + /// + /// Archive a notification. + /// + /// + /// Archive a specific in-app (inbox) notification by its unique identifier **notificationId**. + /// + /// The identifier of the subscriber. + /// The identifier of the notification. + /// Context keys for filtering. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public Task ArchiveAsync( + string subscriberId, + string notificationId, + List? contextKeys = null, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ); + + /// + /// Mark a notification as read. + /// + /// + /// Mark a specific in-app (inbox) notification as read by its unique identifier **notificationId**. + /// + /// The identifier of the subscriber. + /// The identifier of the notification. + /// Context keys for filtering. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public Task MarkAsReadAsync( + string subscriberId, + string notificationId, + List? contextKeys = null, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ); + + /// + /// Snooze a notification. + /// + /// + /// Snooze a specific in-app (inbox) notification by its unique identifier **notificationId** until a specified time. + /// + /// A parameter. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// The required parameter is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public Task SnoozeAsync( + SubscribersControllerSnoozeNotificationRequest request, + RetryConfig? retryConfig = null + ); + + /// + /// Unarchive a notification. + /// + /// + /// Unarchive a specific in-app (inbox) notification by its unique identifier **notificationId**. + /// + /// The identifier of the subscriber. + /// The identifier of the notification. + /// Context keys for filtering. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public Task UnarchiveAsync( + string subscriberId, + string notificationId, + List? contextKeys = null, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ); + + /// + /// Mark a notification as unread. + /// + /// + /// Mark a specific in-app (inbox) notification as unread by its unique identifier **notificationId**. + /// + /// The identifier of the subscriber. + /// The identifier of the notification. + /// Context keys for filtering. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public Task MarkAsUnreadAsync( + string subscriberId, + string notificationId, + List? contextKeys = null, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ); + + /// + /// Unsnooze a notification. + /// + /// + /// Unsnooze a specific in-app (inbox) notification by its unique identifier **notificationId**. + /// + /// The identifier of the subscriber. + /// The identifier of the notification. + /// Context keys for filtering. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public Task UnsnoozeAsync( + string subscriberId, + string notificationId, + List? contextKeys = null, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ); + + /// + /// Archive all notifications. + /// + /// + /// Archive all in-app (inbox) notifications matching the specified filters. Supports context-based filtering. + /// + /// The identifier of the subscriber. + /// A parameter. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public Task ArchiveAllAsync( + string subscriberId, + UpdateAllSubscriberNotificationsDto updateAllSubscriberNotificationsDto, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ); + + /// + /// Retrieve subscriber notifications count. + /// + /// + /// Retrieve count of in-app (inbox) notifications for a subscriber by its unique key identifier **subscriberId**.
+ /// Supports multiple filters to count in-app (inbox) notifications by different criteria, including context keys. + ///
+ /// The identifier of the subscriber. + /// Array of filter objects (max 30) to count notifications by different criteria. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public Task CountAsync( + string subscriberId, + string filters, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ); + + /// + /// Delete all notifications. + /// + /// + /// Permanently delete all in-app (inbox) notifications matching the specified filters. Supports context-based filtering. + /// + /// The identifier of the subscriber. + /// A parameter. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public Task DeleteAllAsync( + string subscriberId, + UpdateAllSubscriberNotificationsDto updateAllSubscriberNotificationsDto, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ); + + /// + /// Mark all notifications as read. + /// + /// + /// Mark all in-app (inbox) notifications matching the specified filters as read. Supports context-based filtering. + /// + /// The identifier of the subscriber. + /// A parameter. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public Task MarkAllAsReadAsync( + string subscriberId, + UpdateAllSubscriberNotificationsDto updateAllSubscriberNotificationsDto, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ); + + /// + /// Archive all read notifications. + /// + /// + /// Archive all read in-app (inbox) notifications matching the specified filters. Supports context-based filtering. + /// + /// The identifier of the subscriber. + /// A parameter. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public Task ArchiveAllReadAsync( + string subscriberId, + UpdateAllSubscriberNotificationsDto updateAllSubscriberNotificationsDto, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ); + + /// + /// Mark notifications as seen. + /// + /// + /// Mark specific and multiple in-app (inbox) notifications as seen. Supports context-based filtering. + /// + /// The identifier of the subscriber. + /// A parameter. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public Task MarkAsSeenAsync( + string subscriberId, + MarkSubscriberNotificationsAsSeenDto markSubscriberNotificationsAsSeenDto, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ); + } + + public class NovuNotifications: INovuNotifications + { + /// + /// SDK Configuration. + /// + /// + public SDKConfig SDKConfiguration { get; private set; } + + public NovuNotifications(SDKConfig config) + { + SDKConfiguration = config; + } + + /// + /// Retrieve subscriber notifications. + /// + /// + /// Retrieve in-app (inbox) notifications for a subscriber by its unique key identifier **subscriberId**.
+ /// Supports filtering by tags, read/archived/snoozed/seen state, data attributes, severity, date range, and context keys. + ///
+ /// A parameter. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// The required parameter is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public async Task ListAsync( + SubscribersControllerGetSubscriberNotificationsRequest request, + RetryConfig? retryConfig = null + ) + { + if (request == null) throw new ArgumentNullException(nameof(request)); + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/v2/subscribers/{subscriberId}/notifications", request, null); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "SubscribersController_getSubscriberNotifications", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + if (retryConfig == null) + { + if (this.SDKConfiguration.RetryConfig != null) + { + retryConfig = this.SDKConfiguration.RetryConfig; + } + else + { + var backoff = new BackoffStrategy( + initialIntervalMs: 1000L, + maxIntervalMs: 30000L, + maxElapsedTimeMs: 3600000L, + exponent: 1.5 + ); + retryConfig = new RetryConfig( + strategy: RetryConfig.RetryStrategy.BACKOFF, + backoff: backoff, + retryConnectionErrors: true + ); + } + } + + List statusCodes = new List + { + "408", + "409", + "429", + "5XX", + }; + + Func> retrySend = async () => + { + var _httpRequest = await SDKConfiguration.Client.CloneAsync(httpRequest); + return await SDKConfiguration.Client.SendAsync(_httpRequest); + }; + var retries = new Novu.Utils.Retries.Retries(retrySend, retryConfig, statusCodes); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await retries.Run(); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception _hookError) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, _hookError); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GetSubscriberNotificationsResponseDto obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GetSubscriberNotificationsResponseDto.", httpRequest, httpResponse, httpResponseBody, ex); + } + + var response = new SubscribersControllerGetSubscriberNotificationsResponse() + { + HttpMeta = new Models.Components.HTTPMetadata() + { + Response = httpResponse, + Request = httpRequest + }, + Headers = Utilities.CollectHeaders(httpResponse.Headers) + }; + response.GetSubscriberNotificationsResponseDto = obj; + return response; + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 414) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{400, 401, 403, 404, 405, 409, 413, 415}.Contains(responseStatusCode)) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 422) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ValidationErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ValidationErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ValidationErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 429) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 503) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.APIException("Unknown status code received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + + /// + /// Delete a notification. + /// + /// + /// Delete a specific in-app (inbox) notification permanently by its unique identifier **notificationId**. + /// + /// The identifier of the subscriber. + /// The identifier of the notification. + /// Context keys for filtering. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public async Task DeleteAsync( + string subscriberId, + string notificationId, + List? contextKeys = null, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ) + { + if (subscriberId == null) throw new ArgumentNullException(nameof(subscriberId)); + if (notificationId == null) throw new ArgumentNullException(nameof(notificationId)); + + var request = new SubscribersControllerDeleteNotificationRequest() + { + SubscriberId = subscriberId, + NotificationId = notificationId, + ContextKeys = contextKeys, + IdempotencyKey = idempotencyKey, + }; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/v2/subscribers/{subscriberId}/notifications/{notificationId}", request, null); + + var httpRequest = new HttpRequestMessage(HttpMethod.Delete, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "SubscribersController_deleteNotification", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + if (retryConfig == null) + { + if (this.SDKConfiguration.RetryConfig != null) + { + retryConfig = this.SDKConfiguration.RetryConfig; + } + else + { + var backoff = new BackoffStrategy( + initialIntervalMs: 1000L, + maxIntervalMs: 30000L, + maxElapsedTimeMs: 3600000L, + exponent: 1.5 + ); + retryConfig = new RetryConfig( + strategy: RetryConfig.RetryStrategy.BACKOFF, + backoff: backoff, + retryConnectionErrors: true + ); + } + } + + List statusCodes = new List + { + "408", + "409", + "429", + "5XX", + }; + + Func> retrySend = async () => + { + var _httpRequest = await SDKConfiguration.Client.CloneAsync(httpRequest); + return await SDKConfiguration.Client.SendAsync(_httpRequest); + }; + var retries = new Novu.Utils.Retries.Retries(retrySend, retryConfig, statusCodes); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await retries.Run(); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception _hookError) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, _hookError); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 204) + { + return new SubscribersControllerDeleteNotificationResponse() + { + HttpMeta = new Models.Components.HTTPMetadata() + { + Response = httpResponse, + Request = httpRequest + }, + Headers = Utilities.CollectHeaders(httpResponse.Headers) + }; + } + else if(responseStatusCode == 414) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{400, 401, 403, 404, 405, 409, 413, 415}.Contains(responseStatusCode)) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 422) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ValidationErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ValidationErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ValidationErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 429) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 503) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.APIException("Unknown status code received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + + /// + /// Complete a notification action. + /// + /// + /// Mark a single in-app (inbox) notification's action (primary or secondary) as completed by its unique identifier **notificationId** and action type **actionType**. + /// + /// A parameter. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// The required parameter is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public async Task CompleteActionAsync( + SubscribersControllerCompleteNotificationActionRequest request, + RetryConfig? retryConfig = null + ) + { + if (request == null) throw new ArgumentNullException(nameof(request)); + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/v2/subscribers/{subscriberId}/notifications/{notificationId}/actions/{actionType}/complete", request, null); + + var httpRequest = new HttpRequestMessage(HttpMethod.Patch, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "SubscribersController_completeNotificationAction", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + if (retryConfig == null) + { + if (this.SDKConfiguration.RetryConfig != null) + { + retryConfig = this.SDKConfiguration.RetryConfig; + } + else + { + var backoff = new BackoffStrategy( + initialIntervalMs: 1000L, + maxIntervalMs: 30000L, + maxElapsedTimeMs: 3600000L, + exponent: 1.5 + ); + retryConfig = new RetryConfig( + strategy: RetryConfig.RetryStrategy.BACKOFF, + backoff: backoff, + retryConnectionErrors: true + ); + } + } + + List statusCodes = new List + { + "408", + "409", + "429", + "5XX", + }; + + Func> retrySend = async () => + { + var _httpRequest = await SDKConfiguration.Client.CloneAsync(httpRequest); + return await SDKConfiguration.Client.SendAsync(_httpRequest); + }; + var retries = new Novu.Utils.Retries.Retries(retrySend, retryConfig, statusCodes); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await retries.Run(); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception _hookError) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, _hookError); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + InboxNotificationDto obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into InboxNotificationDto.", httpRequest, httpResponse, httpResponseBody, ex); + } + + var response = new SubscribersControllerCompleteNotificationActionResponse() + { + HttpMeta = new Models.Components.HTTPMetadata() + { + Response = httpResponse, + Request = httpRequest + }, + Headers = Utilities.CollectHeaders(httpResponse.Headers) + }; + response.InboxNotificationDto = obj; + return response; + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 414) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{400, 401, 403, 404, 405, 409, 413, 415}.Contains(responseStatusCode)) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 422) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ValidationErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ValidationErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ValidationErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 429) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 503) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.APIException("Unknown status code received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + + /// + /// Revert a notification action. + /// + /// + /// Revert a single in-app (inbox) notification's action (primary or secondary) to pending state by its unique identifier **notificationId** and action type **actionType**. + /// + /// A parameter. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// The required parameter is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public async Task RevertActionAsync( + SubscribersControllerRevertNotificationActionRequest request, + RetryConfig? retryConfig = null + ) + { + if (request == null) throw new ArgumentNullException(nameof(request)); + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/v2/subscribers/{subscriberId}/notifications/{notificationId}/actions/{actionType}/revert", request, null); + + var httpRequest = new HttpRequestMessage(HttpMethod.Patch, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "SubscribersController_revertNotificationAction", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + if (retryConfig == null) + { + if (this.SDKConfiguration.RetryConfig != null) + { + retryConfig = this.SDKConfiguration.RetryConfig; + } + else + { + var backoff = new BackoffStrategy( + initialIntervalMs: 1000L, + maxIntervalMs: 30000L, + maxElapsedTimeMs: 3600000L, + exponent: 1.5 + ); + retryConfig = new RetryConfig( + strategy: RetryConfig.RetryStrategy.BACKOFF, + backoff: backoff, + retryConnectionErrors: true + ); + } + } + + List statusCodes = new List + { + "408", + "409", + "429", + "5XX", + }; + + Func> retrySend = async () => + { + var _httpRequest = await SDKConfiguration.Client.CloneAsync(httpRequest); + return await SDKConfiguration.Client.SendAsync(_httpRequest); + }; + var retries = new Novu.Utils.Retries.Retries(retrySend, retryConfig, statusCodes); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await retries.Run(); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception _hookError) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, _hookError); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + InboxNotificationDto obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into InboxNotificationDto.", httpRequest, httpResponse, httpResponseBody, ex); + } + + var response = new SubscribersControllerRevertNotificationActionResponse() + { + HttpMeta = new Models.Components.HTTPMetadata() + { + Response = httpResponse, + Request = httpRequest + }, + Headers = Utilities.CollectHeaders(httpResponse.Headers) + }; + response.InboxNotificationDto = obj; + return response; + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 414) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{400, 401, 403, 404, 405, 409, 413, 415}.Contains(responseStatusCode)) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 422) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ValidationErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ValidationErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ValidationErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 429) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 503) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.APIException("Unknown status code received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + + /// + /// Archive a notification. + /// + /// + /// Archive a specific in-app (inbox) notification by its unique identifier **notificationId**. + /// + /// The identifier of the subscriber. + /// The identifier of the notification. + /// Context keys for filtering. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public async Task ArchiveAsync( + string subscriberId, + string notificationId, + List? contextKeys = null, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ) + { + if (subscriberId == null) throw new ArgumentNullException(nameof(subscriberId)); + if (notificationId == null) throw new ArgumentNullException(nameof(notificationId)); + + var request = new SubscribersControllerArchiveNotificationRequest() + { + SubscriberId = subscriberId, + NotificationId = notificationId, + ContextKeys = contextKeys, + IdempotencyKey = idempotencyKey, + }; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/v2/subscribers/{subscriberId}/notifications/{notificationId}/archive", request, null); + + var httpRequest = new HttpRequestMessage(HttpMethod.Patch, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "SubscribersController_archiveNotification", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + if (retryConfig == null) + { + if (this.SDKConfiguration.RetryConfig != null) + { + retryConfig = this.SDKConfiguration.RetryConfig; + } + else + { + var backoff = new BackoffStrategy( + initialIntervalMs: 1000L, + maxIntervalMs: 30000L, + maxElapsedTimeMs: 3600000L, + exponent: 1.5 + ); + retryConfig = new RetryConfig( + strategy: RetryConfig.RetryStrategy.BACKOFF, + backoff: backoff, + retryConnectionErrors: true + ); + } + } + + List statusCodes = new List + { + "408", + "409", + "429", + "5XX", + }; + + Func> retrySend = async () => + { + var _httpRequest = await SDKConfiguration.Client.CloneAsync(httpRequest); + return await SDKConfiguration.Client.SendAsync(_httpRequest); + }; + var retries = new Novu.Utils.Retries.Retries(retrySend, retryConfig, statusCodes); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await retries.Run(); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception _hookError) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, _hookError); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + InboxNotificationDto obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into InboxNotificationDto.", httpRequest, httpResponse, httpResponseBody, ex); + } + + var response = new SubscribersControllerArchiveNotificationResponse() + { + HttpMeta = new Models.Components.HTTPMetadata() + { + Response = httpResponse, + Request = httpRequest + }, + Headers = Utilities.CollectHeaders(httpResponse.Headers) + }; + response.InboxNotificationDto = obj; + return response; + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 414) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{400, 401, 403, 404, 405, 409, 413, 415}.Contains(responseStatusCode)) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 422) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ValidationErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ValidationErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ValidationErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 429) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 503) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.APIException("Unknown status code received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + + /// + /// Mark a notification as read. + /// + /// + /// Mark a specific in-app (inbox) notification as read by its unique identifier **notificationId**. + /// + /// The identifier of the subscriber. + /// The identifier of the notification. + /// Context keys for filtering. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public async Task MarkAsReadAsync( + string subscriberId, + string notificationId, + List? contextKeys = null, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ) + { + if (subscriberId == null) throw new ArgumentNullException(nameof(subscriberId)); + if (notificationId == null) throw new ArgumentNullException(nameof(notificationId)); + + var request = new SubscribersControllerMarkNotificationAsReadRequest() + { + SubscriberId = subscriberId, + NotificationId = notificationId, + ContextKeys = contextKeys, + IdempotencyKey = idempotencyKey, + }; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/v2/subscribers/{subscriberId}/notifications/{notificationId}/read", request, null); + + var httpRequest = new HttpRequestMessage(HttpMethod.Patch, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "SubscribersController_markNotificationAsRead", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + if (retryConfig == null) + { + if (this.SDKConfiguration.RetryConfig != null) + { + retryConfig = this.SDKConfiguration.RetryConfig; + } + else + { + var backoff = new BackoffStrategy( + initialIntervalMs: 1000L, + maxIntervalMs: 30000L, + maxElapsedTimeMs: 3600000L, + exponent: 1.5 + ); + retryConfig = new RetryConfig( + strategy: RetryConfig.RetryStrategy.BACKOFF, + backoff: backoff, + retryConnectionErrors: true + ); + } + } + + List statusCodes = new List + { + "408", + "409", + "429", + "5XX", + }; + + Func> retrySend = async () => + { + var _httpRequest = await SDKConfiguration.Client.CloneAsync(httpRequest); + return await SDKConfiguration.Client.SendAsync(_httpRequest); + }; + var retries = new Novu.Utils.Retries.Retries(retrySend, retryConfig, statusCodes); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await retries.Run(); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception _hookError) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, _hookError); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + InboxNotificationDto obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into InboxNotificationDto.", httpRequest, httpResponse, httpResponseBody, ex); + } + + var response = new SubscribersControllerMarkNotificationAsReadResponse() + { + HttpMeta = new Models.Components.HTTPMetadata() + { + Response = httpResponse, + Request = httpRequest + }, + Headers = Utilities.CollectHeaders(httpResponse.Headers) + }; + response.InboxNotificationDto = obj; + return response; + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 414) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{400, 401, 403, 404, 405, 409, 413, 415}.Contains(responseStatusCode)) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 422) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ValidationErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ValidationErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ValidationErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 429) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 503) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.APIException("Unknown status code received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + + /// + /// Snooze a notification. + /// + /// + /// Snooze a specific in-app (inbox) notification by its unique identifier **notificationId** until a specified time. + /// + /// A parameter. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// The required parameter is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public async Task SnoozeAsync( + SubscribersControllerSnoozeNotificationRequest request, + RetryConfig? retryConfig = null + ) + { + if (request == null) throw new ArgumentNullException(nameof(request)); + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/v2/subscribers/{subscriberId}/notifications/{notificationId}/snooze", request, null); + + var httpRequest = new HttpRequestMessage(HttpMethod.Patch, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + + var serializedBody = RequestBodySerializer.Serialize(request, "SnoozeSubscriberNotificationDto", "json", false, false); + if (serializedBody != null) + { + httpRequest.Content = serializedBody; + } + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "SubscribersController_snoozeNotification", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + if (retryConfig == null) + { + if (this.SDKConfiguration.RetryConfig != null) + { + retryConfig = this.SDKConfiguration.RetryConfig; + } + else + { + var backoff = new BackoffStrategy( + initialIntervalMs: 1000L, + maxIntervalMs: 30000L, + maxElapsedTimeMs: 3600000L, + exponent: 1.5 + ); + retryConfig = new RetryConfig( + strategy: RetryConfig.RetryStrategy.BACKOFF, + backoff: backoff, + retryConnectionErrors: true + ); + } + } + + List statusCodes = new List + { + "408", + "409", + "429", + "5XX", + }; + + Func> retrySend = async () => + { + var _httpRequest = await SDKConfiguration.Client.CloneAsync(httpRequest); + return await SDKConfiguration.Client.SendAsync(_httpRequest); + }; + var retries = new Novu.Utils.Retries.Retries(retrySend, retryConfig, statusCodes); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await retries.Run(); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception _hookError) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, _hookError); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + InboxNotificationDto obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into InboxNotificationDto.", httpRequest, httpResponse, httpResponseBody, ex); + } + + var response = new SubscribersControllerSnoozeNotificationResponse() + { + HttpMeta = new Models.Components.HTTPMetadata() + { + Response = httpResponse, + Request = httpRequest + }, + Headers = Utilities.CollectHeaders(httpResponse.Headers) + }; + response.InboxNotificationDto = obj; + return response; + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 414) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{400, 401, 403, 404, 405, 409, 413, 415}.Contains(responseStatusCode)) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 422) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ValidationErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ValidationErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ValidationErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 429) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 503) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.APIException("Unknown status code received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + + /// + /// Unarchive a notification. + /// + /// + /// Unarchive a specific in-app (inbox) notification by its unique identifier **notificationId**. + /// + /// The identifier of the subscriber. + /// The identifier of the notification. + /// Context keys for filtering. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public async Task UnarchiveAsync( + string subscriberId, + string notificationId, + List? contextKeys = null, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ) + { + if (subscriberId == null) throw new ArgumentNullException(nameof(subscriberId)); + if (notificationId == null) throw new ArgumentNullException(nameof(notificationId)); + + var request = new SubscribersControllerUnarchiveNotificationRequest() + { + SubscriberId = subscriberId, + NotificationId = notificationId, + ContextKeys = contextKeys, + IdempotencyKey = idempotencyKey, + }; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/v2/subscribers/{subscriberId}/notifications/{notificationId}/unarchive", request, null); + + var httpRequest = new HttpRequestMessage(HttpMethod.Patch, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "SubscribersController_unarchiveNotification", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + if (retryConfig == null) + { + if (this.SDKConfiguration.RetryConfig != null) + { + retryConfig = this.SDKConfiguration.RetryConfig; + } + else + { + var backoff = new BackoffStrategy( + initialIntervalMs: 1000L, + maxIntervalMs: 30000L, + maxElapsedTimeMs: 3600000L, + exponent: 1.5 + ); + retryConfig = new RetryConfig( + strategy: RetryConfig.RetryStrategy.BACKOFF, + backoff: backoff, + retryConnectionErrors: true + ); + } + } + + List statusCodes = new List + { + "408", + "409", + "429", + "5XX", + }; + + Func> retrySend = async () => + { + var _httpRequest = await SDKConfiguration.Client.CloneAsync(httpRequest); + return await SDKConfiguration.Client.SendAsync(_httpRequest); + }; + var retries = new Novu.Utils.Retries.Retries(retrySend, retryConfig, statusCodes); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await retries.Run(); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception _hookError) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, _hookError); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + InboxNotificationDto obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into InboxNotificationDto.", httpRequest, httpResponse, httpResponseBody, ex); + } + + var response = new SubscribersControllerUnarchiveNotificationResponse() + { + HttpMeta = new Models.Components.HTTPMetadata() + { + Response = httpResponse, + Request = httpRequest + }, + Headers = Utilities.CollectHeaders(httpResponse.Headers) + }; + response.InboxNotificationDto = obj; + return response; + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 414) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{400, 401, 403, 404, 405, 409, 413, 415}.Contains(responseStatusCode)) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 422) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ValidationErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ValidationErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ValidationErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 429) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 503) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.APIException("Unknown status code received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + + /// + /// Mark a notification as unread. + /// + /// + /// Mark a specific in-app (inbox) notification as unread by its unique identifier **notificationId**. + /// + /// The identifier of the subscriber. + /// The identifier of the notification. + /// Context keys for filtering. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public async Task MarkAsUnreadAsync( + string subscriberId, + string notificationId, + List? contextKeys = null, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ) + { + if (subscriberId == null) throw new ArgumentNullException(nameof(subscriberId)); + if (notificationId == null) throw new ArgumentNullException(nameof(notificationId)); + + var request = new SubscribersControllerMarkNotificationAsUnreadRequest() + { + SubscriberId = subscriberId, + NotificationId = notificationId, + ContextKeys = contextKeys, + IdempotencyKey = idempotencyKey, + }; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/v2/subscribers/{subscriberId}/notifications/{notificationId}/unread", request, null); + + var httpRequest = new HttpRequestMessage(HttpMethod.Patch, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "SubscribersController_markNotificationAsUnread", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + if (retryConfig == null) + { + if (this.SDKConfiguration.RetryConfig != null) + { + retryConfig = this.SDKConfiguration.RetryConfig; + } + else + { + var backoff = new BackoffStrategy( + initialIntervalMs: 1000L, + maxIntervalMs: 30000L, + maxElapsedTimeMs: 3600000L, + exponent: 1.5 + ); + retryConfig = new RetryConfig( + strategy: RetryConfig.RetryStrategy.BACKOFF, + backoff: backoff, + retryConnectionErrors: true + ); + } + } + + List statusCodes = new List + { + "408", + "409", + "429", + "5XX", + }; + + Func> retrySend = async () => + { + var _httpRequest = await SDKConfiguration.Client.CloneAsync(httpRequest); + return await SDKConfiguration.Client.SendAsync(_httpRequest); + }; + var retries = new Novu.Utils.Retries.Retries(retrySend, retryConfig, statusCodes); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await retries.Run(); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception _hookError) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, _hookError); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + InboxNotificationDto obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into InboxNotificationDto.", httpRequest, httpResponse, httpResponseBody, ex); + } + + var response = new SubscribersControllerMarkNotificationAsUnreadResponse() + { + HttpMeta = new Models.Components.HTTPMetadata() + { + Response = httpResponse, + Request = httpRequest + }, + Headers = Utilities.CollectHeaders(httpResponse.Headers) + }; + response.InboxNotificationDto = obj; + return response; + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 414) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{400, 401, 403, 404, 405, 409, 413, 415}.Contains(responseStatusCode)) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 422) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ValidationErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ValidationErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ValidationErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 429) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 503) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.APIException("Unknown status code received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + + /// + /// Unsnooze a notification. + /// + /// + /// Unsnooze a specific in-app (inbox) notification by its unique identifier **notificationId**. + /// + /// The identifier of the subscriber. + /// The identifier of the notification. + /// Context keys for filtering. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public async Task UnsnoozeAsync( + string subscriberId, + string notificationId, + List? contextKeys = null, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ) + { + if (subscriberId == null) throw new ArgumentNullException(nameof(subscriberId)); + if (notificationId == null) throw new ArgumentNullException(nameof(notificationId)); + + var request = new SubscribersControllerUnsnoozeNotificationRequest() + { + SubscriberId = subscriberId, + NotificationId = notificationId, + ContextKeys = contextKeys, + IdempotencyKey = idempotencyKey, + }; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/v2/subscribers/{subscriberId}/notifications/{notificationId}/unsnooze", request, null); + + var httpRequest = new HttpRequestMessage(HttpMethod.Patch, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "SubscribersController_unsnoozeNotification", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + if (retryConfig == null) + { + if (this.SDKConfiguration.RetryConfig != null) + { + retryConfig = this.SDKConfiguration.RetryConfig; + } + else + { + var backoff = new BackoffStrategy( + initialIntervalMs: 1000L, + maxIntervalMs: 30000L, + maxElapsedTimeMs: 3600000L, + exponent: 1.5 + ); + retryConfig = new RetryConfig( + strategy: RetryConfig.RetryStrategy.BACKOFF, + backoff: backoff, + retryConnectionErrors: true + ); + } + } + + List statusCodes = new List + { + "408", + "409", + "429", + "5XX", + }; + + Func> retrySend = async () => + { + var _httpRequest = await SDKConfiguration.Client.CloneAsync(httpRequest); + return await SDKConfiguration.Client.SendAsync(_httpRequest); + }; + var retries = new Novu.Utils.Retries.Retries(retrySend, retryConfig, statusCodes); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await retries.Run(); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception _hookError) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, _hookError); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + InboxNotificationDto obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into InboxNotificationDto.", httpRequest, httpResponse, httpResponseBody, ex); + } + + var response = new SubscribersControllerUnsnoozeNotificationResponse() + { + HttpMeta = new Models.Components.HTTPMetadata() + { + Response = httpResponse, + Request = httpRequest + }, + Headers = Utilities.CollectHeaders(httpResponse.Headers) + }; + response.InboxNotificationDto = obj; + return response; + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 414) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{400, 401, 403, 404, 405, 409, 413, 415}.Contains(responseStatusCode)) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 422) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ValidationErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ValidationErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ValidationErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 429) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 503) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.APIException("Unknown status code received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + + /// + /// Archive all notifications. + /// + /// + /// Archive all in-app (inbox) notifications matching the specified filters. Supports context-based filtering. + /// + /// The identifier of the subscriber. + /// A parameter. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public async Task ArchiveAllAsync( + string subscriberId, + UpdateAllSubscriberNotificationsDto updateAllSubscriberNotificationsDto, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ) + { + if (subscriberId == null) throw new ArgumentNullException(nameof(subscriberId)); + if (updateAllSubscriberNotificationsDto == null) throw new ArgumentNullException(nameof(updateAllSubscriberNotificationsDto)); + + var request = new SubscribersControllerArchiveAllNotificationsRequest() + { + SubscriberId = subscriberId, + UpdateAllSubscriberNotificationsDto = updateAllSubscriberNotificationsDto, + IdempotencyKey = idempotencyKey, + }; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/v2/subscribers/{subscriberId}/notifications/archive", request, null); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + + var serializedBody = RequestBodySerializer.Serialize(request, "UpdateAllSubscriberNotificationsDto", "json", false, false); + if (serializedBody != null) + { + httpRequest.Content = serializedBody; + } + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "SubscribersController_archiveAllNotifications", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + if (retryConfig == null) + { + if (this.SDKConfiguration.RetryConfig != null) + { + retryConfig = this.SDKConfiguration.RetryConfig; + } + else + { + var backoff = new BackoffStrategy( + initialIntervalMs: 1000L, + maxIntervalMs: 30000L, + maxElapsedTimeMs: 3600000L, + exponent: 1.5 + ); + retryConfig = new RetryConfig( + strategy: RetryConfig.RetryStrategy.BACKOFF, + backoff: backoff, + retryConnectionErrors: true + ); + } + } + + List statusCodes = new List + { + "408", + "409", + "429", + "5XX", + }; + + Func> retrySend = async () => + { + var _httpRequest = await SDKConfiguration.Client.CloneAsync(httpRequest); + return await SDKConfiguration.Client.SendAsync(_httpRequest); + }; + var retries = new Novu.Utils.Retries.Retries(retrySend, retryConfig, statusCodes); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await retries.Run(); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception _hookError) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, _hookError); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 204) + { + return new SubscribersControllerArchiveAllNotificationsResponse() + { + HttpMeta = new Models.Components.HTTPMetadata() + { + Response = httpResponse, + Request = httpRequest + }, + Headers = Utilities.CollectHeaders(httpResponse.Headers) + }; + } + else if(responseStatusCode == 414) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{400, 401, 403, 404, 405, 409, 413, 415}.Contains(responseStatusCode)) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 422) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ValidationErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ValidationErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ValidationErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 429) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 503) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.APIException("Unknown status code received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + + /// + /// Retrieve subscriber notifications count. + /// + /// + /// Retrieve count of in-app (inbox) notifications for a subscriber by its unique key identifier **subscriberId**.
+ /// Supports multiple filters to count in-app (inbox) notifications by different criteria, including context keys. + ///
+ /// The identifier of the subscriber. + /// Array of filter objects (max 30) to count notifications by different criteria. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public async Task CountAsync( + string subscriberId, + string filters, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ) + { + if (subscriberId == null) throw new ArgumentNullException(nameof(subscriberId)); + if (filters == null) throw new ArgumentNullException(nameof(filters)); + + var request = new SubscribersControllerGetSubscriberNotificationsCountRequest() + { + SubscriberId = subscriberId, + Filters = filters, + IdempotencyKey = idempotencyKey, + }; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/v2/subscribers/{subscriberId}/notifications/count", request, null); + + var httpRequest = new HttpRequestMessage(HttpMethod.Get, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "SubscribersController_getSubscriberNotificationsCount", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + if (retryConfig == null) + { + if (this.SDKConfiguration.RetryConfig != null) + { + retryConfig = this.SDKConfiguration.RetryConfig; + } + else + { + var backoff = new BackoffStrategy( + initialIntervalMs: 1000L, + maxIntervalMs: 30000L, + maxElapsedTimeMs: 3600000L, + exponent: 1.5 + ); + retryConfig = new RetryConfig( + strategy: RetryConfig.RetryStrategy.BACKOFF, + backoff: backoff, + retryConnectionErrors: true + ); + } + } + + List statusCodes = new List + { + "408", + "409", + "429", + "5XX", + }; + + Func> retrySend = async () => + { + var _httpRequest = await SDKConfiguration.Client.CloneAsync(httpRequest); + return await SDKConfiguration.Client.SendAsync(_httpRequest); + }; + var retries = new Novu.Utils.Retries.Retries(retrySend, retryConfig, statusCodes); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await retries.Run(); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception _hookError) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, _hookError); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 200) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + List obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull>(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into List.", httpRequest, httpResponse, httpResponseBody, ex); + } + + var response = new SubscribersControllerGetSubscriberNotificationsCountResponse() + { + HttpMeta = new Models.Components.HTTPMetadata() + { + Response = httpResponse, + Request = httpRequest + }, + Headers = Utilities.CollectHeaders(httpResponse.Headers) + }; + response.GetSubscriberNotificationsCountResponseDtos = obj; + return response; + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 414) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{400, 401, 403, 404, 405, 409, 413, 415}.Contains(responseStatusCode)) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 422) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ValidationErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ValidationErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ValidationErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 429) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 503) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.APIException("Unknown status code received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + + /// + /// Delete all notifications. + /// + /// + /// Permanently delete all in-app (inbox) notifications matching the specified filters. Supports context-based filtering. + /// + /// The identifier of the subscriber. + /// A parameter. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public async Task DeleteAllAsync( + string subscriberId, + UpdateAllSubscriberNotificationsDto updateAllSubscriberNotificationsDto, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ) + { + if (subscriberId == null) throw new ArgumentNullException(nameof(subscriberId)); + if (updateAllSubscriberNotificationsDto == null) throw new ArgumentNullException(nameof(updateAllSubscriberNotificationsDto)); + + var request = new SubscribersControllerDeleteAllNotificationsRequest() + { + SubscriberId = subscriberId, + UpdateAllSubscriberNotificationsDto = updateAllSubscriberNotificationsDto, + IdempotencyKey = idempotencyKey, + }; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/v2/subscribers/{subscriberId}/notifications/delete", request, null); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + + var serializedBody = RequestBodySerializer.Serialize(request, "UpdateAllSubscriberNotificationsDto", "json", false, false); + if (serializedBody != null) + { + httpRequest.Content = serializedBody; + } + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "SubscribersController_deleteAllNotifications", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + if (retryConfig == null) + { + if (this.SDKConfiguration.RetryConfig != null) + { + retryConfig = this.SDKConfiguration.RetryConfig; + } + else + { + var backoff = new BackoffStrategy( + initialIntervalMs: 1000L, + maxIntervalMs: 30000L, + maxElapsedTimeMs: 3600000L, + exponent: 1.5 + ); + retryConfig = new RetryConfig( + strategy: RetryConfig.RetryStrategy.BACKOFF, + backoff: backoff, + retryConnectionErrors: true + ); + } + } + + List statusCodes = new List + { + "408", + "409", + "429", + "5XX", + }; + + Func> retrySend = async () => + { + var _httpRequest = await SDKConfiguration.Client.CloneAsync(httpRequest); + return await SDKConfiguration.Client.SendAsync(_httpRequest); + }; + var retries = new Novu.Utils.Retries.Retries(retrySend, retryConfig, statusCodes); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await retries.Run(); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception _hookError) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, _hookError); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 204) + { + return new SubscribersControllerDeleteAllNotificationsResponse() + { + HttpMeta = new Models.Components.HTTPMetadata() + { + Response = httpResponse, + Request = httpRequest + }, + Headers = Utilities.CollectHeaders(httpResponse.Headers) + }; + } + else if(responseStatusCode == 414) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{400, 401, 403, 404, 405, 409, 413, 415}.Contains(responseStatusCode)) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 422) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ValidationErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ValidationErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ValidationErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 429) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 503) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.APIException("Unknown status code received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + + /// + /// Mark all notifications as read. + /// + /// + /// Mark all in-app (inbox) notifications matching the specified filters as read. Supports context-based filtering. + /// + /// The identifier of the subscriber. + /// A parameter. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public async Task MarkAllAsReadAsync( + string subscriberId, + UpdateAllSubscriberNotificationsDto updateAllSubscriberNotificationsDto, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ) + { + if (subscriberId == null) throw new ArgumentNullException(nameof(subscriberId)); + if (updateAllSubscriberNotificationsDto == null) throw new ArgumentNullException(nameof(updateAllSubscriberNotificationsDto)); + + var request = new SubscribersControllerMarkAllNotificationsAsReadRequest() + { + SubscriberId = subscriberId, + UpdateAllSubscriberNotificationsDto = updateAllSubscriberNotificationsDto, + IdempotencyKey = idempotencyKey, + }; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/v2/subscribers/{subscriberId}/notifications/read", request, null); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + + var serializedBody = RequestBodySerializer.Serialize(request, "UpdateAllSubscriberNotificationsDto", "json", false, false); + if (serializedBody != null) + { + httpRequest.Content = serializedBody; + } + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "SubscribersController_markAllNotificationsAsRead", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + if (retryConfig == null) + { + if (this.SDKConfiguration.RetryConfig != null) + { + retryConfig = this.SDKConfiguration.RetryConfig; + } + else + { + var backoff = new BackoffStrategy( + initialIntervalMs: 1000L, + maxIntervalMs: 30000L, + maxElapsedTimeMs: 3600000L, + exponent: 1.5 + ); + retryConfig = new RetryConfig( + strategy: RetryConfig.RetryStrategy.BACKOFF, + backoff: backoff, + retryConnectionErrors: true + ); + } + } + + List statusCodes = new List + { + "408", + "409", + "429", + "5XX", + }; + + Func> retrySend = async () => + { + var _httpRequest = await SDKConfiguration.Client.CloneAsync(httpRequest); + return await SDKConfiguration.Client.SendAsync(_httpRequest); + }; + var retries = new Novu.Utils.Retries.Retries(retrySend, retryConfig, statusCodes); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await retries.Run(); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception _hookError) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, _hookError); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 204) + { + return new SubscribersControllerMarkAllNotificationsAsReadResponse() + { + HttpMeta = new Models.Components.HTTPMetadata() + { + Response = httpResponse, + Request = httpRequest + }, + Headers = Utilities.CollectHeaders(httpResponse.Headers) + }; + } + else if(responseStatusCode == 414) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{400, 401, 403, 404, 405, 409, 413, 415}.Contains(responseStatusCode)) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 422) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ValidationErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ValidationErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ValidationErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 429) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 503) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.APIException("Unknown status code received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + + /// + /// Archive all read notifications. + /// + /// + /// Archive all read in-app (inbox) notifications matching the specified filters. Supports context-based filtering. + /// + /// The identifier of the subscriber. + /// A parameter. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public async Task ArchiveAllReadAsync( + string subscriberId, + UpdateAllSubscriberNotificationsDto updateAllSubscriberNotificationsDto, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ) + { + if (subscriberId == null) throw new ArgumentNullException(nameof(subscriberId)); + if (updateAllSubscriberNotificationsDto == null) throw new ArgumentNullException(nameof(updateAllSubscriberNotificationsDto)); + + var request = new SubscribersControllerArchiveAllReadNotificationsRequest() + { + SubscriberId = subscriberId, + UpdateAllSubscriberNotificationsDto = updateAllSubscriberNotificationsDto, + IdempotencyKey = idempotencyKey, + }; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/v2/subscribers/{subscriberId}/notifications/read-archive", request, null); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + + var serializedBody = RequestBodySerializer.Serialize(request, "UpdateAllSubscriberNotificationsDto", "json", false, false); + if (serializedBody != null) + { + httpRequest.Content = serializedBody; + } + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "SubscribersController_archiveAllReadNotifications", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + if (retryConfig == null) + { + if (this.SDKConfiguration.RetryConfig != null) + { + retryConfig = this.SDKConfiguration.RetryConfig; + } + else + { + var backoff = new BackoffStrategy( + initialIntervalMs: 1000L, + maxIntervalMs: 30000L, + maxElapsedTimeMs: 3600000L, + exponent: 1.5 + ); + retryConfig = new RetryConfig( + strategy: RetryConfig.RetryStrategy.BACKOFF, + backoff: backoff, + retryConnectionErrors: true + ); + } + } + + List statusCodes = new List + { + "408", + "409", + "429", + "5XX", + }; + + Func> retrySend = async () => + { + var _httpRequest = await SDKConfiguration.Client.CloneAsync(httpRequest); + return await SDKConfiguration.Client.SendAsync(_httpRequest); + }; + var retries = new Novu.Utils.Retries.Retries(retrySend, retryConfig, statusCodes); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await retries.Run(); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception _hookError) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, _hookError); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 204) + { + return new SubscribersControllerArchiveAllReadNotificationsResponse() + { + HttpMeta = new Models.Components.HTTPMetadata() + { + Response = httpResponse, + Request = httpRequest + }, + Headers = Utilities.CollectHeaders(httpResponse.Headers) + }; + } + else if(responseStatusCode == 414) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{400, 401, 403, 404, 405, 409, 413, 415}.Contains(responseStatusCode)) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 422) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ValidationErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ValidationErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ValidationErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 429) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 503) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.APIException("Unknown status code received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + + /// + /// Mark notifications as seen. + /// + /// + /// Mark specific and multiple in-app (inbox) notifications as seen. Supports context-based filtering. + /// + /// The identifier of the subscriber. + /// A parameter. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public async Task MarkAsSeenAsync( + string subscriberId, + MarkSubscriberNotificationsAsSeenDto markSubscriberNotificationsAsSeenDto, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ) + { + if (subscriberId == null) throw new ArgumentNullException(nameof(subscriberId)); + if (markSubscriberNotificationsAsSeenDto == null) throw new ArgumentNullException(nameof(markSubscriberNotificationsAsSeenDto)); + + var request = new SubscribersControllerMarkNotificationsAsSeenRequest() + { + SubscriberId = subscriberId, + MarkSubscriberNotificationsAsSeenDto = markSubscriberNotificationsAsSeenDto, + IdempotencyKey = idempotencyKey, + }; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/v2/subscribers/{subscriberId}/notifications/seen", request, null); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + + var serializedBody = RequestBodySerializer.Serialize(request, "MarkSubscriberNotificationsAsSeenDto", "json", false, false); + if (serializedBody != null) + { + httpRequest.Content = serializedBody; + } + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "SubscribersController_markNotificationsAsSeen", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + if (retryConfig == null) + { + if (this.SDKConfiguration.RetryConfig != null) + { + retryConfig = this.SDKConfiguration.RetryConfig; + } + else + { + var backoff = new BackoffStrategy( + initialIntervalMs: 1000L, + maxIntervalMs: 30000L, + maxElapsedTimeMs: 3600000L, + exponent: 1.5 + ); + retryConfig = new RetryConfig( + strategy: RetryConfig.RetryStrategy.BACKOFF, + backoff: backoff, + retryConnectionErrors: true + ); + } + } + + List statusCodes = new List + { + "408", + "409", + "429", + "5XX", + }; + + Func> retrySend = async () => + { + var _httpRequest = await SDKConfiguration.Client.CloneAsync(httpRequest); + return await SDKConfiguration.Client.SendAsync(_httpRequest); + }; + var retries = new Novu.Utils.Retries.Retries(retrySend, retryConfig, statusCodes); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await retries.Run(); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception _hookError) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, _hookError); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 204) + { + return new SubscribersControllerMarkNotificationsAsSeenResponse() + { + HttpMeta = new Models.Components.HTTPMetadata() + { + Response = httpResponse, + Request = httpRequest + }, + Headers = Utilities.CollectHeaders(httpResponse.Headers) + }; + } + else if(responseStatusCode == 414) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{400, 401, 403, 404, 405, 409, 413, 415}.Contains(responseStatusCode)) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 422) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ValidationErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ValidationErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ValidationErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 429) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 503) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.APIException("Unknown status code received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + } +} \ No newline at end of file diff --git a/src/Novu/NovuSDK.cs b/src/Novu/NovuSDK.cs index a5de2731..58e047cc 100644 --- a/src/Novu/NovuSDK.cs +++ b/src/Novu/NovuSDK.cs @@ -59,7 +59,7 @@ public interface INovuSDK /// /// Used to localize your notifications to different languages.
- /// https://docs.novu.co/platform/workflow/translations + /// https://docs.novu.co/platform/workflow/advanced-features/translations ///
public ITranslations Translations { get; } @@ -73,6 +73,8 @@ public interface INovuSDK public IChannelEndpoints ChannelEndpoints { get; } + public IEnvironmentVariables EnvironmentVariables { get; } + /// /// With the help of the Integration Store, you can easily integrate your favorite delivery provider. During the runtime of the API, the Integrations Store is responsible for storing the configurations of all the providers.
/// https://docs.novu.co/platform/integrations/overview @@ -246,6 +248,10 @@ public class NovuSDK: INovuSDK ///
public IChannelEndpoints ChannelEndpoints { get; private set; } /// + /// The EnvironmentVariables sub-SDK. + /// + public IEnvironmentVariables EnvironmentVariables { get; private set; } + /// /// The Integrations sub-SDK. /// public IIntegrations Integrations { get; private set; } @@ -301,6 +307,8 @@ public NovuSDK(SDKConfig config) ChannelEndpoints = new ChannelEndpoints(SDKConfiguration); + EnvironmentVariables = new EnvironmentVariables(SDKConfiguration); + Integrations = new Integrations(SDKConfiguration); Messages = new Messages(SDKConfiguration); @@ -398,6 +406,8 @@ public NovuSDK( ChannelEndpoints = new ChannelEndpoints(SDKConfiguration); + EnvironmentVariables = new EnvironmentVariables(SDKConfiguration); + Integrations = new Integrations(SDKConfiguration); Messages = new Messages(SDKConfiguration); @@ -463,6 +473,11 @@ public async Task TriggerAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "TriggerEventRequestDto", "json", false, false); if (serializedBody != null) { @@ -735,6 +750,11 @@ public async Task CancelAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); @@ -984,6 +1004,11 @@ public async Task BroadcastAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "TriggerEventToAllRequestDto", "json", false, false); if (serializedBody != null) { @@ -1257,6 +1282,11 @@ public async Task TriggerBulkAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "BulkTriggerEventDto", "json", false, false); if (serializedBody != null) { diff --git a/src/Novu/NovuTopics.cs b/src/Novu/NovuTopics.cs index 57d33476..4ef34c42 100644 --- a/src/Novu/NovuTopics.cs +++ b/src/Novu/NovuTopics.cs @@ -89,6 +89,11 @@ public async Task ListAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); diff --git a/src/Novu/Preferences.cs b/src/Novu/Preferences.cs index d1d4efd2..432e5231 100644 --- a/src/Novu/Preferences.cs +++ b/src/Novu/Preferences.cs @@ -31,7 +31,7 @@ public interface IPreferences /// Bulk update subscriber preferences by its unique key identifier **subscriberId**.
/// This API allows updating multiple workflow preferences in a single request. ///
- /// Description not available. + /// The identifier of the subscriber. /// A parameter. /// A header for idempotency purposes. /// The retry configuration to use for this operation. @@ -70,7 +70,7 @@ public Preferences(SDKConfig config) /// Bulk update subscriber preferences by its unique key identifier **subscriberId**.
/// This API allows updating multiple workflow preferences in a single request. ///
- /// Description not available. + /// The identifier of the subscriber. /// A parameter. /// A header for idempotency purposes. /// The retry configuration to use for this operation. @@ -105,6 +105,11 @@ public async Task httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "BulkUpdateSubscriberPreferencesDto", "json", false, false); if (serializedBody != null) { diff --git a/src/Novu/SDKConfig.cs b/src/Novu/SDKConfig.cs index 469a90c2..1ff31505 100644 --- a/src/Novu/SDKConfig.cs +++ b/src/Novu/SDKConfig.cs @@ -46,7 +46,7 @@ public SDKConfig(ISpeakeasyHttpClient? client = null) Client = client ?? new SpeakeasyHttpClient(); ServerUrl = ""; ServerIndex = 0; - UserAgent = "speakeasy-sdk/csharp 3.14.0 2.836.5 3.13.0 Novu"; + UserAgent = "speakeasy-sdk/csharp 3.15.0 2.879.11 3.15.0 Novu"; SecuritySource = null; Hooks = new SDKHooks(); RetryConfig = null; diff --git a/src/Novu/Steps.cs b/src/Novu/Steps.cs index 1d1f626b..4ec60c01 100644 --- a/src/Novu/Steps.cs +++ b/src/Novu/Steps.cs @@ -24,6 +24,32 @@ namespace Novu public interface ISteps { + /// + /// Generate a step preview. + /// + /// + /// Generates a preview for a specific workflow step by its unique identifier **stepId** + /// + /// Description not available. + /// Description not available. + /// Preview generation details. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of , or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public Task GeneratePreviewAsync( + string workflowId, + string stepId, + GeneratePreviewRequestDto generatePreviewRequestDto, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ); + /// /// Retrieve workflow step. /// @@ -62,6 +88,270 @@ public Steps(SDKConfig config) SDKConfiguration = config; } + /// + /// Generate a step preview. + /// + /// + /// Generates a preview for a specific workflow step by its unique identifier **stepId** + /// + /// Description not available. + /// Description not available. + /// Preview generation details. + /// A header for idempotency purposes. + /// The retry configuration to use for this operation. + /// An awaitable task that returns a response envelope when completed. + /// One of , or is null. + /// The HTTP request failed due to network issues. + /// The response body could not be deserialized. + /// Bad Request. Thrown when the API returns a 400, 401, 403, 404, 405, 409, 413, 414, 415 or 500 response. + /// Unprocessable Entity. Thrown when the API returns a 422 response. + /// Default API Exception. Thrown when the API returns a 4XX or 5XX response. + public async Task GeneratePreviewAsync( + string workflowId, + string stepId, + GeneratePreviewRequestDto generatePreviewRequestDto, + string? idempotencyKey = null, + RetryConfig? retryConfig = null + ) + { + if (workflowId == null) throw new ArgumentNullException(nameof(workflowId)); + if (stepId == null) throw new ArgumentNullException(nameof(stepId)); + if (generatePreviewRequestDto == null) throw new ArgumentNullException(nameof(generatePreviewRequestDto)); + + var request = new WorkflowControllerGeneratePreviewRequest() + { + WorkflowId = workflowId, + StepId = stepId, + GeneratePreviewRequestDto = generatePreviewRequestDto, + IdempotencyKey = idempotencyKey, + }; + + string baseUrl = this.SDKConfiguration.GetTemplatedServerUrl(); + var urlString = URLBuilder.Build(baseUrl, "/v2/workflows/{workflowId}/step/{stepId}/preview", request, null); + + var httpRequest = new HttpRequestMessage(HttpMethod.Post, urlString); + httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); + HeaderSerializer.PopulateHeaders(ref httpRequest, request); + + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + + var serializedBody = RequestBodySerializer.Serialize(request, "GeneratePreviewRequestDto", "json", false, false); + if (serializedBody != null) + { + httpRequest.Content = serializedBody; + } + + if (SDKConfiguration.SecuritySource != null) + { + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + } + + var hookCtx = new HookContext(SDKConfiguration, baseUrl, "WorkflowController_generatePreview", null, SDKConfiguration.SecuritySource); + + httpRequest = await this.SDKConfiguration.Hooks.BeforeRequestAsync(new BeforeRequestContext(hookCtx), httpRequest); + if (retryConfig == null) + { + if (this.SDKConfiguration.RetryConfig != null) + { + retryConfig = this.SDKConfiguration.RetryConfig; + } + else + { + var backoff = new BackoffStrategy( + initialIntervalMs: 1000L, + maxIntervalMs: 30000L, + maxElapsedTimeMs: 3600000L, + exponent: 1.5 + ); + retryConfig = new RetryConfig( + strategy: RetryConfig.RetryStrategy.BACKOFF, + backoff: backoff, + retryConnectionErrors: true + ); + } + } + + List statusCodes = new List + { + "408", + "409", + "429", + "5XX", + }; + + Func> retrySend = async () => + { + var _httpRequest = await SDKConfiguration.Client.CloneAsync(httpRequest); + return await SDKConfiguration.Client.SendAsync(_httpRequest); + }; + var retries = new Novu.Utils.Retries.Retries(retrySend, retryConfig, statusCodes); + + HttpResponseMessage httpResponse; + try + { + httpResponse = await retries.Run(); + int _statusCode = (int)httpResponse.StatusCode; + + if (_statusCode >= 400 && _statusCode < 500 || _statusCode >= 500 && _statusCode < 600) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), httpResponse, null); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + } + } + catch (Exception _hookError) + { + var _httpResponse = await this.SDKConfiguration.Hooks.AfterErrorAsync(new AfterErrorContext(hookCtx), null, _hookError); + if (_httpResponse != null) + { + httpResponse = _httpResponse; + } + else + { + throw; + } + } + + httpResponse = await this.SDKConfiguration.Hooks.AfterSuccessAsync(new AfterSuccessContext(hookCtx), httpResponse); + + var contentType = httpResponse.Content.Headers.ContentType?.MediaType; + int responseStatusCode = (int)httpResponse.StatusCode; + if(responseStatusCode == 201) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + GeneratePreviewResponseDto obj; + try + { + obj = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into GeneratePreviewResponseDto.", httpRequest, httpResponse, httpResponseBody, ex); + } + + var response = new WorkflowControllerGeneratePreviewResponse() + { + HttpMeta = new Models.Components.HTTPMetadata() + { + Response = httpResponse, + Request = httpRequest + }, + Headers = Utilities.CollectHeaders(httpResponse.Headers) + }; + response.GeneratePreviewResponseDto = obj; + return response; + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 414) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(new List{400, 401, 403, 404, 405, 409, 413, 415}.Contains(responseStatusCode)) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 422) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ValidationErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ValidationErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ValidationErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 429) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 500) + { + if(Utilities.IsContentTypeMatch("application/json", contentType)) + { + var httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); + ErrorDtoPayload payload; + try + { + payload = ResponseBodyDeserializer.DeserializeNotNull(httpResponseBody, NullValueHandling.Ignore); + } + catch (Exception ex) + { + throw new ResponseValidationException("Failed to deserialize response body into ErrorDtoPayload.", httpRequest, httpResponse, httpResponseBody, ex); + } + + throw new ErrorDto(payload, httpRequest, httpResponse, httpResponseBody); + } + + throw new Models.Errors.APIException("Unknown content type received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode == 503) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 400 && responseStatusCode < 500) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + else if(responseStatusCode >= 500 && responseStatusCode < 600) + { + throw new Models.Errors.APIException("API error occurred", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + throw new Models.Errors.APIException("Unknown status code received", httpRequest, httpResponse, await httpResponse.Content.ReadAsStringAsync()); + } + + /// /// Retrieve workflow step. /// @@ -103,6 +393,11 @@ public async Task RetrieveAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); diff --git a/src/Novu/Subscribers.cs b/src/Novu/Subscribers.cs index c6128dbe..b7a10127 100644 --- a/src/Novu/Subscribers.cs +++ b/src/Novu/Subscribers.cs @@ -28,6 +28,8 @@ namespace Novu /// public interface ISubscribers { + public INovuNotifications Notifications { get; } + public IPreferences Preferences { get; } public INovuTopics Topics { get; } @@ -84,7 +86,7 @@ public Task CreateAsync( /// Retrieve a subscriber by its unique key identifier **subscriberId**.
/// **subscriberId** field is required. /// - /// Description not available. + /// The identifier of the subscriber. /// A header for idempotency purposes. /// The retry configuration to use for this operation. /// An awaitable task that returns a response envelope when completed. @@ -107,7 +109,7 @@ public Task RetrieveAsync( /// Update a subscriber by its unique key identifier **subscriberId**.
/// **subscriberId** is a required field, rest other fields are optional. /// - /// Description not available. + /// The identifier of the subscriber. /// A parameter. /// A header for idempotency purposes. /// The retry configuration to use for this operation. @@ -132,7 +134,7 @@ public Task PatchAsync( /// Deletes a subscriber entity from the Novu platform along with associated messages, preferences, and topic subscriptions.
/// **subscriberId** is a required field. /// - /// Description not available. + /// The identifier of the subscriber. /// A header for idempotency purposes. /// The retry configuration to use for this operation. /// An awaitable task that returns a response envelope when completed. @@ -282,6 +284,12 @@ public class Subscribers: ISubscribers /// public SDKConfig SDKConfiguration { get; private set; } + /// + /// Notifications SubSDK. + /// + /// + public INovuNotifications Notifications { get; private set; } + /// /// Preferences SubSDK. /// @@ -297,6 +305,7 @@ public class Subscribers: ISubscribers public Subscribers(SDKConfig config) { SDKConfiguration = config; + Notifications = new NovuNotifications(SDKConfiguration); Preferences = new Preferences(SDKConfiguration); Topics = new NovuTopics(SDKConfiguration); } @@ -328,6 +337,11 @@ public async Task SearchAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); @@ -578,6 +592,11 @@ public async Task CreateAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "CreateSubscriberRequestDto", "json", false, false); if (serializedBody != null) { @@ -819,7 +838,7 @@ public async Task CreateAsync( /// Retrieve a subscriber by its unique key identifier **subscriberId**.
/// **subscriberId** field is required. /// - /// Description not available. + /// The identifier of the subscriber. /// A header for idempotency purposes. /// The retry configuration to use for this operation. /// An awaitable task that returns a response envelope when completed. @@ -850,6 +869,11 @@ public async Task RetrieveAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); @@ -1065,7 +1089,7 @@ public async Task RetrieveAsync( /// Update a subscriber by its unique key identifier **subscriberId**.
/// **subscriberId** is a required field, rest other fields are optional. /// - /// Description not available. + /// The identifier of the subscriber. /// A parameter. /// A header for idempotency purposes. /// The retry configuration to use for this operation. @@ -1100,6 +1124,11 @@ public async Task PatchAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "PatchSubscriberRequestDto", "json", false, false); if (serializedBody != null) { @@ -1321,7 +1350,7 @@ public async Task PatchAsync( /// Deletes a subscriber entity from the Novu platform along with associated messages, preferences, and topic subscriptions.
/// **subscriberId** is a required field. /// - /// Description not available. + /// The identifier of the subscriber. /// A header for idempotency purposes. /// The retry configuration to use for this operation. /// An awaitable task that returns a response envelope when completed. @@ -1352,6 +1381,11 @@ public async Task DeleteAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); @@ -1597,6 +1631,11 @@ public async Task CreateB httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "BulkSubscriberCreateDto", "json", false, false); if (serializedBody != null) { @@ -1853,6 +1892,11 @@ public async Task Updat httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "UpdateSubscriberChannelRequestDto", "json", false, false); if (serializedBody != null) { @@ -2109,6 +2153,11 @@ public async Task Appen httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "UpdateSubscriberChannelRequestDto", "json", false, false); if (serializedBody != null) { @@ -2365,6 +2414,11 @@ public async Task D httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); @@ -2596,6 +2650,11 @@ public async Task Up httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "UpdateSubscriberOnlineFlagRequestDto", "json", false, false); if (serializedBody != null) { diff --git a/src/Novu/SubscribersMessages.cs b/src/Novu/SubscribersMessages.cs index 25864271..72e8a9e5 100644 --- a/src/Novu/SubscribersMessages.cs +++ b/src/Novu/SubscribersMessages.cs @@ -138,6 +138,11 @@ public async Task UpdateAction httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "MarkMessageActionAsSeenDto", "json", false, false); if (serializedBody != null) { @@ -393,6 +398,11 @@ public async Task MarkAllAs httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "MarkAllMessageAsRequestDto", "json", false, false); if (serializedBody != null) { @@ -649,6 +659,11 @@ public async Task MarkAllAsAsync httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "MessageMarkAsRequestDto", "json", false, false); if (serializedBody != null) { diff --git a/src/Novu/SubscribersNotifications.cs b/src/Novu/SubscribersNotifications.cs index 94b98d66..113eb05f 100644 --- a/src/Novu/SubscribersNotifications.cs +++ b/src/Novu/SubscribersNotifications.cs @@ -113,6 +113,11 @@ public async Task FeedAsyn httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); @@ -364,6 +369,11 @@ public async Task UnseenCountAsy httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); diff --git a/src/Novu/SubscribersPreferences.cs b/src/Novu/SubscribersPreferences.cs index 7a39eb43..69fff82e 100644 --- a/src/Novu/SubscribersPreferences.cs +++ b/src/Novu/SubscribersPreferences.cs @@ -31,7 +31,7 @@ public interface ISubscribersPreferences /// Retrieve subscriber channel preferences by its unique key identifier **subscriberId**.
/// This API returns all five channels preferences for all workflows and global preferences. /// - /// Description not available. + /// The identifier of the subscriber. /// A parameter. /// Context keys for filtering preferences (e.g., ["tenant:acme"]). /// A header for idempotency purposes. @@ -59,7 +59,7 @@ public Task ListAsync( /// **workflowId** is optional field, if provided, this API will update that workflow preference,
/// otherwise it will update global preferences. /// - /// Description not available. + /// The identifier of the subscriber. /// A parameter. /// A header for idempotency purposes. /// The retry configuration to use for this operation. @@ -98,7 +98,7 @@ public SubscribersPreferences(SDKConfig config) /// Retrieve subscriber channel preferences by its unique key identifier **subscriberId**.
/// This API returns all five channels preferences for all workflows and global preferences. /// - /// Description not available. + /// The identifier of the subscriber. /// A parameter. /// Context keys for filtering preferences (e.g., ["tenant:acme"]). /// A header for idempotency purposes. @@ -135,6 +135,11 @@ public async Task ListAs httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); @@ -351,7 +356,7 @@ public async Task ListAs /// **workflowId** is optional field, if provided, this API will update that workflow preference,
/// otherwise it will update global preferences. /// - /// Description not available. + /// The identifier of the subscriber. /// A parameter. /// A header for idempotency purposes. /// The retry configuration to use for this operation. @@ -386,6 +391,11 @@ public async Task Upd httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "PatchSubscriberPreferencesDto", "json", false, false); if (serializedBody != null) { diff --git a/src/Novu/Subscriptions.cs b/src/Novu/Subscriptions.cs index 5f89b861..bbaa4269 100644 --- a/src/Novu/Subscriptions.cs +++ b/src/Novu/Subscriptions.cs @@ -188,6 +188,11 @@ public async Task ListAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); @@ -438,6 +443,11 @@ public async Task CreateAsync httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "CreateTopicSubscriptionsRequestDto", "json", false, false); if (serializedBody != null) { @@ -693,6 +703,11 @@ public async Task DeleteAsync httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "DeleteTopicSubscriptionsRequestDto", "json", false, false); if (serializedBody != null) { @@ -948,6 +963,11 @@ public async Task GetSubscription httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); @@ -1201,6 +1221,11 @@ public async Task UpdateAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "UpdateTopicSubscriptionRequestDto", "json", false, false); if (serializedBody != null) { diff --git a/src/Novu/Topics.cs b/src/Novu/Topics.cs index 064d25a0..be7a1299 100644 --- a/src/Novu/Topics.cs +++ b/src/Novu/Topics.cs @@ -197,6 +197,11 @@ public async Task ListAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); @@ -446,6 +451,11 @@ public async Task CreateAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "CreateUpdateTopicRequestDto", "json", false, false); if (serializedBody != null) { @@ -717,6 +727,11 @@ public async Task GetAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); @@ -966,6 +981,11 @@ public async Task UpdateAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "UpdateTopicRequestDto", "json", false, false); if (serializedBody != null) { @@ -1218,6 +1238,11 @@ public async Task DeleteAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); diff --git a/src/Novu/TopicsSubscribers.cs b/src/Novu/TopicsSubscribers.cs index 8ca9f5d9..50173ebd 100644 --- a/src/Novu/TopicsSubscribers.cs +++ b/src/Novu/TopicsSubscribers.cs @@ -103,6 +103,11 @@ public async Task GetAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); diff --git a/src/Novu/Translations.cs b/src/Novu/Translations.cs index dfa95d7c..13988fda 100644 --- a/src/Novu/Translations.cs +++ b/src/Novu/Translations.cs @@ -24,7 +24,7 @@ namespace Novu /// /// Used to localize your notifications to different languages.
- /// https://docs.novu.co/platform/workflow/translations + /// https://docs.novu.co/platform/workflow/advanced-features/translations ///
public interface ITranslations { @@ -35,7 +35,8 @@ public interface ITranslations /// Create a translation. ///
/// - /// Create a translation for a specific workflow and locale, if the translation already exists, it will be updated. + /// Create a translation for a specific workflow and locale, if the translation already exists, it will be updated
+ /// This operation requires either or to be set in the security parameter when initializing the SDK. ///
/// A parameter. /// A header for idempotency purposes. @@ -55,7 +56,8 @@ public Task CreateAsync /// Retrieve a translation. /// /// - /// Retrieve a specific translation by resource type, resource ID and locale. + /// Retrieve a specific translation by resource type, resource ID and locale
+ /// This operation requires either or to be set in the security parameter when initializing the SDK. ///
/// Resource type. /// Resource ID. @@ -79,7 +81,8 @@ public Task RetrieveAsync( /// Delete a translation. /// /// - /// Delete a specific translation by resource type, resource ID and locale. + /// Delete a specific translation by resource type, resource ID and locale
+ /// This operation requires either or to be set in the security parameter when initializing the SDK. ///
/// Resource type. /// Resource ID. @@ -102,7 +105,8 @@ public Task DeleteAsync /// Upload translation files. /// /// - /// Upload one or more JSON translation files for a specific workflow. Files name must match the locale, e.g. en_US.json. Supports both "files" and "files[]" field names for backwards compatibility. + /// Upload one or more JSON translation files for a specific workflow. Files name must match the locale, e.g. en_US.json. Supports both "files" and "files[]" field names for backwards compatibility.
+ /// This operation requires either or to be set in the security parameter when initializing the SDK. ///
/// A parameter. /// A header for idempotency purposes. @@ -121,7 +125,7 @@ public Task UploadAsync( /// /// Used to localize your notifications to different languages.
- /// https://docs.novu.co/platform/workflow/translations + /// https://docs.novu.co/platform/workflow/advanced-features/translations ///
public class Translations: ITranslations { @@ -154,7 +158,8 @@ public Translations(SDKConfig config) /// Create a translation. /// /// - /// Create a translation for a specific workflow and locale, if the translation already exists, it will be updated. + /// Create a translation for a specific workflow and locale, if the translation already exists, it will be updated
+ /// This operation requires either or to be set in the security parameter when initializing the SDK. ///
/// A parameter. /// A header for idempotency purposes. @@ -185,6 +190,11 @@ public async Task Creat httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "CreateTranslationRequestDto", "json", false, false); if (serializedBody != null) { @@ -193,7 +203,7 @@ public async Task Creat if (SDKConfiguration.SecuritySource != null) { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource, new string[] { "SecretKey", "SecretKey" }).Apply(httpRequest); } var hookCtx = new HookContext(SDKConfiguration, baseUrl, "TranslationController_createTranslationEndpoint", null, SDKConfiguration.SecuritySource); @@ -314,7 +324,8 @@ public async Task Creat /// Retrieve a translation. /// /// - /// Retrieve a specific translation by resource type, resource ID and locale. + /// Retrieve a specific translation by resource type, resource ID and locale
+ /// This operation requires either or to be set in the security parameter when initializing the SDK. ///
/// Resource type. /// Resource ID. @@ -352,9 +363,14 @@ public async Task RetrieveAs httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource, new string[] { "SecretKey", "SecretKey" }).Apply(httpRequest); } var hookCtx = new HookContext(SDKConfiguration, baseUrl, "TranslationController_getSingleTranslation", null, SDKConfiguration.SecuritySource); @@ -475,7 +491,8 @@ public async Task RetrieveAs /// Delete a translation. /// /// - /// Delete a specific translation by resource type, resource ID and locale. + /// Delete a specific translation by resource type, resource ID and locale
+ /// This operation requires either or to be set in the security parameter when initializing the SDK. ///
/// Resource type. /// Resource ID. @@ -512,9 +529,14 @@ public async Task Delet httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "*/*"); + } + if (SDKConfiguration.SecuritySource != null) { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource, new string[] { "SecretKey", "SecretKey" }).Apply(httpRequest); } var hookCtx = new HookContext(SDKConfiguration, baseUrl, "TranslationController_deleteTranslationEndpoint", null, SDKConfiguration.SecuritySource); @@ -617,7 +639,8 @@ public async Task Delet /// Upload translation files. /// /// - /// Upload one or more JSON translation files for a specific workflow. Files name must match the locale, e.g. en_US.json. Supports both "files" and "files[]" field names for backwards compatibility. + /// Upload one or more JSON translation files for a specific workflow. Files name must match the locale, e.g. en_US.json. Supports both "files" and "files[]" field names for backwards compatibility.
+ /// This operation requires either or to be set in the security parameter when initializing the SDK. ///
/// A parameter. /// A header for idempotency purposes. @@ -648,6 +671,11 @@ public async Task UploadAs httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "RequestBody", "multipart", false, false); if (serializedBody != null) { @@ -656,7 +684,7 @@ public async Task UploadAs if (SDKConfiguration.SecuritySource != null) { - httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); + httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource, new string[] { "SecretKey", "SecretKey" }).Apply(httpRequest); } var hookCtx = new HookContext(SDKConfiguration, baseUrl, "TranslationController_uploadTranslationFiles", null, SDKConfiguration.SecuritySource); diff --git a/src/Novu/Utils/Constants.cs b/src/Novu/Utils/Constants.cs index c0ab2d8d..379501c9 100644 --- a/src/Novu/Utils/Constants.cs +++ b/src/Novu/Utils/Constants.cs @@ -22,17 +22,17 @@ public static class Constants /// /// The version of the SDK. /// - public const string SdkVersion = "3.14.0"; + public const string SdkVersion = "3.15.0"; /// /// The version of the SDK generator used to create this SDK. /// - public const string SdkGenVersion = "2.836.5"; + public const string SdkGenVersion = "2.879.11"; /// /// The version of the OpenAPI document used to generate this SDK. /// - public const string OpenApiDocVersion = "3.13.0"; + public const string OpenApiDocVersion = "3.15.0"; } } diff --git a/src/Novu/Utils/RequestBodySerializer.cs b/src/Novu/Utils/RequestBodySerializer.cs index a6d9d20e..ea94ca52 100644 --- a/src/Novu/Utils/RequestBodySerializer.cs +++ b/src/Novu/Utils/RequestBodySerializer.cs @@ -282,7 +282,7 @@ private static HttpContent SerializeMultipart(object request, string mediaType) string fieldName = (metadata.Name ?? prop.Name) + "[]"; var fileContent = new ByteArrayContent(content); - fileContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream"); + fileContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue(GetMimeType(fileName)); formData.Add(fileContent, fieldName, fileName); } } @@ -294,7 +294,7 @@ private static HttpContent SerializeMultipart(object request, string mediaType) string fieldName = metadata.Name; var fileContent = new ByteArrayContent(content); - fileContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream"); + fileContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue(GetMimeType(fileName)); formData.Add(fileContent, fieldName, fileName); } else @@ -552,6 +552,27 @@ private static (string fileName, byte[] content) ExtractFileProperties(PropertyI return (fileName, content); } + private static string GetMimeType(string fileName) + { + var ext = System.IO.Path.GetExtension(fileName)?.ToLowerInvariant(); + return ext switch + { + ".json" => "application/json", + ".xml" => "application/xml", + ".txt" => "text/plain", + ".csv" => "text/csv", + ".html" or ".htm" => "text/html", + ".pdf" => "application/pdf", + ".zip" => "application/zip", + ".png" => "image/png", + ".jpg" or ".jpeg" => "image/jpeg", + ".gif" => "image/gif", + ".svg" => "image/svg+xml", + ".webp" => "image/webp", + _ => "application/octet-stream", + }; + } + private static PropertyInfo? GetPropertyInfo(object value, string propertyName) { try diff --git a/src/Novu/Utils/Retries/Retries.cs b/src/Novu/Utils/Retries/Retries.cs index 2e0cd6a8..34d5f01f 100644 --- a/src/Novu/Utils/Retries/Retries.cs +++ b/src/Novu/Utils/Retries/Retries.cs @@ -127,6 +127,27 @@ private async Task GetResponseAsync(bool retryConnectionErr } } + private static long RetryAfterMs(HttpResponseMessage response) + { + if (response.Headers.TryGetValues("Retry-After", out var values)) + { + var retryAfter = System.Linq.Enumerable.FirstOrDefault(values); + if (!string.IsNullOrEmpty(retryAfter)) + { + if (long.TryParse(retryAfter, out var seconds) && seconds >= 0) + { + return seconds * 1000; + } + if (DateTimeOffset.TryParse(retryAfter, out var retryDate)) + { + var deltaMs = (long)(retryDate - DateTimeOffset.UtcNow).TotalMilliseconds; + return deltaMs > 0 ? deltaMs : 0; + } + } + } + return 0; + } + private async Task retryWithBackoff(bool retryConnectionErrors) { var backoff = retryConfig.Backoff; @@ -159,10 +180,16 @@ private async Task retryWithBackoff(bool retryConnectionErr throw; } - var intervalMs = backoff.InitialIntervalMs * Math.Pow(backoff.BaseFactor, numAttempts); - var jitterMs = backoff.JitterFactor * intervalMs; - intervalMs = intervalMs - jitterMs + new Random().NextDouble() * (2 * jitterMs + 1); - intervalMs = Math.Min(intervalMs, backoff.MaxIntervalMs); + long intervalMs = ex.Response != null ? RetryAfterMs(ex.Response) : 0; + + if (intervalMs <= 0) + { + var computed = backoff.InitialIntervalMs * Math.Pow(backoff.BaseFactor, numAttempts); + var jitterMs = backoff.JitterFactor * computed; + computed = computed - jitterMs + new Random().NextDouble() * (2 * jitterMs + 1); + computed = Math.Min(computed, backoff.MaxIntervalMs); + intervalMs = (long)computed; + } await Task.Delay((int)intervalMs); numAttempts += 1; diff --git a/src/Novu/Utils/SecurityMetadata.cs b/src/Novu/Utils/SecurityMetadata.cs index 80d8a66c..a8ddecd8 100644 --- a/src/Novu/Utils/SecurityMetadata.cs +++ b/src/Novu/Utils/SecurityMetadata.cs @@ -11,6 +11,7 @@ namespace Novu.Utils { using System; using System.Collections.Generic; + using System.Linq; using System.Net.Http; using System.Reflection; using System.Text; @@ -22,9 +23,9 @@ internal class SecurityMetadata private Dictionary headerParams { get; } = new Dictionary(); private Dictionary queryParams { get; } = new Dictionary(); - public SecurityMetadata(Func securitySource) + public SecurityMetadata(Func securitySource, string[]? allowedFields = null) { - ParseSecuritySource(securitySource); + ParseSecuritySource(securitySource, allowedFields); } public HttpRequestMessage Apply(HttpRequestMessage request) @@ -49,7 +50,7 @@ public HttpRequestMessage Apply(HttpRequestMessage request) return request; } - private void ParseSecuritySource(Func securitySource) + private void ParseSecuritySource(Func securitySource, string[]? allowedFields) { if (securitySource == null) { @@ -62,7 +63,16 @@ private void ParseSecuritySource(Func securitySource) return; } - foreach (var prop in security.GetType().GetProperties()) + var allProps = security.GetType().GetProperties(); + PropertyInfo[] props = allowedFields != null + ? allowedFields + .Select(name => allProps.FirstOrDefault(p => p.Name == name)) + .Where(p => p != null) + .Cast() + .ToArray() + : allProps; + + foreach (var prop in props) { var value = prop.GetValue(security, null); if (value == null) @@ -79,6 +89,7 @@ private void ParseSecuritySource(Func securitySource) if (secMetadata.Option) { ParseOption(value); + return; } else if (secMetadata.Scheme) { @@ -91,6 +102,11 @@ private void ParseSecuritySource(Func securitySource) { ParseScheme(secMetadata, value); } + + if (!secMetadata.Composite) + { + return; + } } } @@ -99,6 +115,10 @@ private void ParseSecuritySource(Func securitySource) private void ParseOption(object option) { + // Check if the option itself IS a basic auth scheme (e.g. UserPassAuth where + // fields directly contain username/password with full basic auth metadata). + // This is distinct from an option that CONTAINS a basic auth scheme as a + // nested class (e.g. SchemeBasicAuth) - that case is handled by ParseScheme. foreach (var prop in option.GetType().GetProperties()) { var value = prop.GetValue(option, null); @@ -113,6 +133,12 @@ private void ParseOption(object option) continue; } + if (secMetadata.Type == "http" && secMetadata.SubType == "basic" && !Utilities.IsClass(value)) + { + ParseBasicAuthScheme(option); + return; + } + ParseScheme(secMetadata, value); } } diff --git a/src/Novu/Utils/SpeakeasyMetadata.cs b/src/Novu/Utils/SpeakeasyMetadata.cs index 06c87e35..5b06db86 100644 --- a/src/Novu/Utils/SpeakeasyMetadata.cs +++ b/src/Novu/Utils/SpeakeasyMetadata.cs @@ -65,6 +65,7 @@ internal class SecurityMetadata public string? SubType { get; set; } = null; public bool Option { get; set; } = false; public bool Scheme { get; set; } = false; + public bool Composite { get; set; } = false; public string Name { get; set; } = ""; } diff --git a/src/Novu/Utils/Utilities.cs b/src/Novu/Utils/Utilities.cs index eb511836..de55ffb0 100644 --- a/src/Novu/Utils/Utilities.cs +++ b/src/Novu/Utils/Utilities.cs @@ -130,11 +130,25 @@ public static bool IsList(object? o) && o.GetType().GetGenericTypeDefinition().IsAssignableFrom(typeof(List<>)); } + public static bool IsModelNamespace(string ns) + { + var modelNamespaces = new[] + { + "Novu.Models.Requests", + "Novu.Models.Components", + "Novu.Models.Errors", + }; + + return modelNamespaces.Contains(ns); + } + public static bool IsClass(object? o) { if (o == null) return false; - return o.GetType().IsClass && (o.GetType().FullName ?? "").StartsWith("Novu.Models"); + if (!o.GetType().IsClass) + return false; + return IsModelNamespace(o.GetType().Namespace ?? ""); } // TODO: code review polyfilled for IsAssignableTo diff --git a/src/Novu/Workflows.cs b/src/Novu/Workflows.cs index a0ce9e5b..d960408f 100644 --- a/src/Novu/Workflows.cs +++ b/src/Novu/Workflows.cs @@ -250,6 +250,11 @@ public async Task CreateAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "CreateWorkflowDto", "json", false, false); if (serializedBody != null) { @@ -490,6 +495,11 @@ public async Task ListAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); @@ -739,6 +749,11 @@ public async Task UpdateAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "UpdateWorkflowDto", "json", false, false); if (serializedBody != null) { @@ -993,6 +1008,11 @@ public async Task GetAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); @@ -1238,6 +1258,11 @@ public async Task DeleteAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + if (SDKConfiguration.SecuritySource != null) { httpRequest = new SecurityMetadata(SDKConfiguration.SecuritySource).Apply(httpRequest); @@ -1469,6 +1494,11 @@ public async Task PatchAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "PatchWorkflowDto", "json", false, false); if (serializedBody != null) { @@ -1724,6 +1754,11 @@ public async Task SyncAsync( httpRequest.Headers.Add("user-agent", SDKConfiguration.UserAgent); HeaderSerializer.PopulateHeaders(ref httpRequest, request); + if (!httpRequest.Headers.Contains("Accept")) + { + httpRequest.Headers.Add("Accept", "application/json"); + } + var serializedBody = RequestBodySerializer.Serialize(request, "SyncWorkflowDto", "json", false, false); if (serializedBody != null) {