diff --git a/README.md b/README.md index f29402d..bf369d0 100644 --- a/README.md +++ b/README.md @@ -321,6 +321,7 @@ The public endpoint surface is generated from gateway DTOs at compile time. The | `echo` | 1 | Smoke-test echo endpoint. | | `files` | 13 | List, info, signed URL, upload URL + commit, download, delete one / many, public links, and a file by its stored id (`GetFileByIdAsync`). | | `membership` | 18 | User CRUD, registration, preferences, roles, and permissions. | +| `payments` | 4 | Payment orders and checkout: `CreatePaymentOrderAsync`, `GetPaymentOrderAsync`, `GetPaymentOrdersAsync`, `StartPaymentCheckoutAsync`. See [Payment orders and checkout](#payment-orders-and-checkout). | | `public` | 2 | The project's public config and legal documents, read by the Admin Portal before sign-in (`GetPublicProjectConfigAsync`, `GetPublicProjectLegalAsync`). See [docs/hub/project.md](./docs/hub/project.md#public-config-and-legal-no-sign-in). | ### Hub — project & account configuration (526 endpoints) @@ -338,7 +339,7 @@ The public endpoint surface is generated from gateway DTOs at compile time. The | `membership` | 25 | Roles, policies, users, preferences, integrations, triggers. | | `notifications` | 123 | Email, push and SMS templates, integrations, campaigns, devices, settings. Push: [docs/hub/push.md](./docs/hub/push.md). SMS: [docs/hub/sms.md](./docs/hub/sms.md). | | `oauth` | 5 | The gateway's OAuth server routes (register, authorize, token, revoke). | -| `payments` | 16 | Payment integrations, triggers, tests, and module settings. | +| `payments` | 16 | Payment integrations (Stripe, Mollie, Montonio — `MontonioPaymentIntegrationRequest` with `AccessKey`, `SecretKey`, `IsSandbox`, `Locale`), triggers, tests, and module settings. | | `scheduler` | 8 | Scheduler module on / off (`EnableSchedulerAsync`, `DisableSchedulerAsync` — `PUT`) and cron tasks: list, read, save, enable, disable, delete. Only email campaign tasks today (`EmailCampaignSchedulerTaskRequest`). Every method and a typed save example: [docs/hub/scheduler.md](./docs/hub/scheduler.md). | | `triggers` | 1 | `GetTriggersNeedingAttentionAsync` — triggers of one type (`TriggerType`) whose last run needs attention, with the reason and the time. | | `webhooks` | 8 | Webhook integrations, destinations, tests, and module settings. | @@ -990,7 +991,8 @@ public class Function | `AsDatabaseRecordChange()` | `database` | `Collection`, `SchemaId`, `SchemaVersion`, `RecordId`, `Old` / `New` as `T`, `Truncated`, `OldRef` / `NewRef` (documents above 200 KB are left out; fetch them with the refs) | | `AsUserChange()` / `AsUserChange()` | `membership` | `UserId`, `Old` / `New` | | `AsFileChange()` / `AsFileChange()` | `files` | `Old` / `New`, `Path` | -| `AsPayment()` | `payments` | the webhook fact (`Provider`, `EventName`, `Status`, `AmountMinor`, `Currency`, `ExternalIds`, …) | +| `AsPayment()` | `payments` | the webhook fact (`Provider`, `EventName`, `Status`, `AmountMinor`, `Currency`, `ExternalIds`, …); on a `payments.order.*` event, the callback that changed the order | +| `AsPaymentOrder()` | `payments` (`payments.order.paid`, `.partially_refunded`, `.refunded`, `.reversed`, `.expired`) | `OrderEventId` (the de-duplication key), `Event`, `From` / `To`, `Reason`, the stored `Order` after the change, the `Payment` fact | | `AsAiUsage()` | `ai` | `Payload`, `TargetUserId` | | `AsScheduledTask()` | `scheduler` | `TaskId`, `Name`, `FiredAt` | | `Payload()` | `manual`, `scheduler` | the caller's JSON object as `T`, `null` when none | @@ -1203,6 +1205,44 @@ throws `NorbixException`. The Hub client keeps its own `TestFilesIntegrationAsync` (`POST /{version}/files/integrations/test`, id in the body) for the dashboard. +## Payment orders and checkout + +A payment order is the server's record of what a buyer pays for: lines priced +in minor units, a total, a status, and every checkout attempt. The Api client +creates it, starts a checkout at a payment integration (Montonio today) and +reads it back; the status moves when the provider calls back, never from the +browser. + +```csharp +var created = await api.Payments.CreatePaymentOrderAsync(new CreatePaymentOrderRequest +{ + BuyerUserId = userId, // usr_… + MerchantReference = "ad-1042-promo-1", // unique per project and environment + IdempotencyKey = "ad-1042-promo-1-v1", // 8–128 chars: same key + same body = the same order + Currency = "EUR", + PriceVersion = "v1", + Lines = [new PaymentOrderLineInput { Sku = "star-day", Title = "Star × day", Quantity = 21, UnitAmountMinor = 30 }], + Metadata = new Dictionary { ["adId"] = "ad_1042" }, +}); +string orderId = created!.Id!; // ord_… + +var started = await api.Payments.StartPaymentCheckoutAsync(new StartPaymentCheckoutRequest +{ + Id = orderId, // POST /{version}/payments/orders/{Id}/checkout + IntegrationId = montonioIntegrationId, + ReturnUrl = "https://shop.example/orders/ad-1042", +}); +// send the buyer to started!.Checkout!.PaymentUrl; Reused is true when an open attempt was handed back + +var order = (await api.Payments.GetPaymentOrderAsync(new GetPaymentOrderRequest { Id = orderId }))!.Item!; +var mine = await api.Payments.GetPaymentOrdersAsync(new GetPaymentOrdersRequest { BuyerUserId = userId, Status = "Paid" }); +``` + +Sending the same body with the same `IdempotencyKey` again answers the same +id; the same key with another body is refused (`409`). React to the outcome in +a cloud function on a `payments.order.*` trigger with +[`AsPaymentOrder()`](#cloud-functions), and de-duplicate on its `OrderEventId`. + ## Error Handling ```csharp diff --git a/src/Norbix.Hub/CodeFunctionEvent.cs b/src/Norbix.Hub/CodeFunctionEvent.cs index a2e1406..91e38f3 100644 --- a/src/Norbix.Hub/CodeFunctionEvent.cs +++ b/src/Norbix.Hub/CodeFunctionEvent.cs @@ -17,7 +17,7 @@ namespace Norbix.Sdk; /// /// The wire shape is the generated ; this /// class parses the JSON the function received and adds the typed views -/// (, , …) +/// (, , , …) /// and , which turns /// context.runAs.accessToken and the deployment urls into the options /// a NorbixApiClient / NorbixHubClient takes. @@ -234,6 +234,22 @@ public FileChange AsFileChange() public PaymentFactDto AsPayment() => Dto.Data.Payment ?? throw MissingSlot("payment", nameof(AsPayment)); + /// + /// The payment order slot of a payments.order.* event + /// (payments.order.paid, .partially_refunded, .refunded, + /// .reversed, .expired): the stored order after the change + /// (), the status move + /// ( → , + /// ) and the provider callback that + /// made it (). + /// is the de-duplication key: + /// the same order change delivered twice carries the same id. + /// still returns the callback. + /// + /// The envelope carries no order slot (not a payments.order.* event). + public PaymentOrderEventDto AsPaymentOrder() => + Dto.Data.Order ?? throw MissingSlot("order", nameof(AsPaymentOrder)); + /// The Scheduler slot: which task fired and when. /// The envelope carries no Scheduler slot. public ScheduledTaskInfoDto AsScheduledTask() => diff --git a/src/Norbix.Sdk.Types/Generated/Api.dtos.cs b/src/Norbix.Sdk.Types/Generated/Api.dtos.cs index 388fcf6..39a7abe 100644 --- a/src/Norbix.Sdk.Types/Generated/Api.dtos.cs +++ b/src/Norbix.Sdk.Types/Generated/Api.dtos.cs @@ -832,6 +832,9 @@ public partial class FindMergedTermTreeRequest [DataMember] public virtual bool AllLanguages { get; set; } + /// + ///The taxonomy: its name (slug or title; URL-encode spaces) or its id (txn_…). + /// [DataMember] public virtual string TaxonomyName { get; set; } @@ -886,6 +889,9 @@ public partial class FindTermsChildrenRequest [DataMember] public virtual bool AllLanguages { get; set; } + /// + ///The taxonomy: its name (slug or title; URL-encode spaces) or its id (txn_…). + /// [DataMember] public virtual string TaxonomyName { get; set; } @@ -922,6 +928,9 @@ public partial class FindTermsRequest [DataMember] public virtual bool AllLanguages { get; set; } + /// + ///The taxonomy: its name (slug or title; URL-encode spaces) or its id (txn_…). + /// [DataMember] public virtual string TaxonomyName { get; set; } @@ -958,6 +967,9 @@ public partial class FindTermTreeRequest [DataMember] public virtual bool AllLanguages { get; set; } + /// + ///The taxonomy: its name (slug or title; URL-encode spaces) or its id (txn_…). + /// [DataMember] public virtual string TaxonomyName { get; set; } @@ -1645,6 +1657,57 @@ public partial class DeleteUserRequest public virtual string? DatabaseIntegrationId { get; set; } } + /// + ///Membership + /// + [NorbixRoute("/{version}/membership/auth/invitation/finish", "POST")] + [DataContract] + public partial class FinishInvitationRequest + : CodeMashRequestBase, INorbixRequest + { + /// + ///One-time invitation token from the e-mail link (the #token= fragment). + /// + [DataMember] + public virtual string Token { get; set; } + + /// + ///The user's password. Validated against the project's complexity policy. + /// + [DataMember] + public virtual string Password { get; set; } + + /// + ///Optional. The user's full name; replaces the one the admin entered (full name, first name = first word, last name = the rest). Empty = keep the admin's. + /// + [DataMember] + public virtual string? FullName { get; set; } + + /// + ///Optional. How e-mails greet the user (stored as the display name). Empty = keep the admin's, or the full name when the admin gave none. + /// + [DataMember] + public virtual string? Salutation { get; set; } + + /// + ///Optional. Older form of Salutation (the display name); Salutation wins when both are sent. + /// + [DataMember] + public virtual string? DisplayName { get; set; } + + /// + ///Optional first name; wins over the one taken from FullName. + /// + [DataMember] + public virtual string? FirstName { get; set; } + + /// + ///Optional last name; wins over the one taken from FullName. + /// + [DataMember] + public virtual string? LastName { get; set; } + } + /// ///Membership /// @@ -1748,6 +1811,36 @@ public partial class GetUsersRequest /// [DataMember] public virtual HashSet? UserIds { get; set; } + + /// + ///Free text, case-insensitive: matches email, user name, display / first / last name or phone. + /// + [DataMember] + public virtual string? Search { get; set; } + + /// + ///Case-insensitive part of the email. + /// + [DataMember] + public virtual string? Email { get; set; } + + /// + ///Case-insensitive part of the user name. + /// + [DataMember] + public virtual string? UserName { get; set; } + + /// + ///Status names, any of: Registered, PendingValidation, Active, Unregistered, Suspended, InActive, Blocked. + /// + [DataMember] + public virtual HashSet? Statuses { get; set; } + + /// + ///Login type names, any of: Service, Email, UserName, Phone, Guest, Social. + /// + [DataMember] + public virtual HashSet? Types { get; set; } } public partial class GetUsersResponse @@ -1795,11 +1888,23 @@ public partial class InviteUserRequest : CodeMashRequestBase, INorbixRequest { /// - ///Email address the invitation is sent to. + ///Email address the invitation is sent to. It cannot be changed later. /// [DataMember] public virtual string Email { get; set; } + /// + ///The invited person's full name, e.g. "Rūta Petraitė". Stored as the full name, first name (first word) and last name (the rest). The user may change it when finishing. + /// + [DataMember] + public virtual string? FullName { get; set; } + + /// + ///Optional. How e-mails greet the person ("Hi {salutation},"), e.g. "Rūta". Stored as the display name. When empty the full name is used. The user may change it when finishing. + /// + [DataMember] + public virtual string? Salutation { get; set; } + /// ///Database integration id. Optional — defaults to the request environment's default integration. /// @@ -1807,6 +1912,11 @@ public partial class InviteUserRequest public virtual string? DatabaseIntegrationId { get; set; } } + public partial interface IPublicRegistrationRequest + { + List? Roles { get; set; } + } + /// ///Membership /// @@ -1849,13 +1959,19 @@ public partial class MapAuthToUserRequest [NorbixRoute("/{version}/membership/auth/register/email", "POST")] [DataContract] public partial class SaveEmailUser - : SaveUser, INorbixRequest + : SaveUser, INorbixRequest, IPublicRegistrationRequest { [DataMember] public virtual string Password { get; set; } [DataMember] public virtual string Email { get; set; } + + /// + ///Optional roles from the project's "Permitted user registration roles". Empty = the default registration role. + /// + [DataMember] + public virtual List? Roles { get; set; } } /// @@ -1955,13 +2071,19 @@ public partial class SaveUser [NorbixRoute("/{version}/membership/auth/register/user-name", "POST")] [DataContract] public partial class SaveUserNameUser - : SaveUser, INorbixRequest + : SaveUser, INorbixRequest, IPublicRegistrationRequest { [DataMember] public virtual string Password { get; set; } [DataMember] public virtual string UserName { get; set; } + + /// + ///Optional roles from the project's "Permitted user registration roles". Empty = the default registration role. + /// + [DataMember] + public virtual List? Roles { get; set; } } /// @@ -2223,7 +2345,7 @@ public partial class RegisterOwnPushDeviceRequest : CodeMashRequestBase, INorbixRequest { /// - ///Who issued the token: expo (getExpoPushTokenAsync), fcm (Android / Firebase) or apns (iOS). + ///Who issued the token: fcm (Android / Firebase) or apns (iOS). The NATIVE device token — in an Expo app use getDevicePushTokenAsync(). Expo push tokens (provider 'expo') are refused. /// public virtual string Provider { get; set; } @@ -2280,6 +2402,143 @@ public partial class RegisterOwnPushDeviceRequest public virtual string? TimeZone { get; set; } } + /// + ///Stores a payment order with a fixed price for one of the project's users. Server only (service user API key). + /// + [NorbixRoute("/{version}/payments/orders", "POST")] + public partial class CreatePaymentOrderRequest + : CodeMashRequestBase, INorbixRequest + { + /// + ///The user the order is for (usr_…). + /// + public virtual string BuyerUserId { get; set; } + + /// + ///The project's own order reference, unique per project and environment (1–64 of A–Z a–z 0–9 . _ : -). + /// + public virtual string MerchantReference { get; set; } + + /// + ///8–128 characters. Same key + same body = the stored order; same key + other body = 409. May be sent as the Idempotency-Key header instead. + /// + public virtual string? IdempotencyKey { get; set; } + + /// + ///EUR. + /// + public virtual string Currency { get; set; } + + /// + ///The version of the price list the server priced the lines with. + /// + public virtual string PriceVersion { get; set; } + + /// + ///1–50 lines: sku, title, quantity, unitAmountMinor (cents). Norbix computes the amounts and the total. + /// + public virtual List Lines { get; set; } = []; + + /// + ///Up to 20 project values (e.g. adId). No personal or billing data. + /// + public virtual Dictionary? Metadata { get; set; } + } + + /// + ///Reads one payment order. A buyer reads only their own orders. + /// + [NorbixRoute("/{version}/payments/orders/{Id}", "GET")] + public partial class GetPaymentOrderRequest + : CodeMashRequestBase, INorbixRequest + { + /// + ///The order id (ord_…). + /// + public virtual string Id { get; set; } + } + + public partial class GetPaymentOrderResponse + : ResponseBase + { + public virtual PaymentOrderDto? Item { get; set; } + } + + /// + ///Lists payment orders, newest first. A buyer gets only their own orders. + /// + [NorbixRoute("/{version}/payments/orders", "GET")] + public partial class GetPaymentOrdersRequest + : CodeMashListPaginationRequestBase, INorbixRequest + { + /// + ///Server only: one buyer's orders (usr_…). A buyer always gets their own. + /// + public virtual string? BuyerUserId { get; set; } + + /// + ///Only the order with this merchant reference. + /// + public virtual string? MerchantReference { get; set; } + + /// + ///Only orders in this status (Created, CheckoutStarted, Paid, …). + /// + public virtual string? Status { get; set; } + } + + public partial class GetPaymentOrdersResponse + : ResponseBase + { + public virtual PaginatedResponse? List { get; set; } + } + + /// + ///Opens a Montonio checkout for a stored order and answers where the buyer pays. The buyer (own order) or the server. + /// + [NorbixRoute("/{version}/payments/orders/{Id}/checkout", "POST")] + public partial class StartPaymentCheckoutRequest + : CodeMashRequestBase, INorbixRequest + { + /// + ///The order id (ord_…). + /// + public virtual string Id { get; set; } + + /// + ///The Montonio integration (int_…) of the project in the request's environment. + /// + public virtual string IntegrationId { get; set; } + + /// + ///bankLink (default), card, applePay or googlePay. + /// + public virtual string? Method { get; set; } + + /// + ///Where the buyer comes back after paying; its origin must be one of the project's allowed origins. + /// + public virtual string ReturnUrl { get; set; } + + /// + ///Bank links only: the country whose banks are shown first (default LT). + /// + public virtual string? PreferredCountry { get; set; } + + /// + ///Bank links only: one bank to open directly (the provider's bank code). + /// + public virtual string? PreferredProvider { get; set; } + } + + public partial class StartPaymentCheckoutResponse + : ResponseBase + { + public virtual PaymentOrderCheckoutDto? Checkout { get; set; } + public virtual bool Reused { get; set; } + public virtual PaymentOrderDto? Order { get; set; } + } + [DataContract] public partial class FileChecksumDto { @@ -2431,81 +2690,259 @@ public partial interface IHasProjectId string ProjectId { get; set; } } - public partial class DataSchemaDto + public partial class ArrayFieldDto + : JsonSchemaFieldDto { [DataMember] - public virtual string Json { get; set; } + public virtual JsonSchemaFieldDto Items { get; set; } [DataMember] - public virtual HashSet Fields { get; set; } = []; - } + public virtual int? MinItems { get; set; } - public partial class JsonSchemaFieldDto - { [DataMember] - public virtual string FieldName { get; set; } + public virtual int? MaxItems { get; set; } + + [DataMember] + public virtual bool? UniqueItems { get; set; } } - public partial class SchemaDto - : IHasViewId + public partial class BooleanFieldDto + : JsonSchemaFieldDto { [DataMember] - public virtual string ViewId { get; set; } + public virtual bool? Default { get; set; } + } + public partial class CollectionSelectionFieldDto + : JsonSchemaFieldDto + { [DataMember] - public virtual string SchemaName { get; set; } + public virtual string? CollectionId { get; set; } [DataMember] - public virtual string? SchemaSlug { get; set; } + public virtual string? DisplayField { get; set; } [DataMember] - public virtual int Version { get; set; } + public virtual bool Multiple { get; set; } + } + public partial class CurrencyDefaultDto + { [DataMember] - public virtual int MetaSchemaVersion { get; set; } + public virtual decimal Value { get; set; } [DataMember] - public virtual DataSchemaDto DataSchema { get; set; } + public virtual string Currency { get; set; } + } + public partial class CurrencyFieldDto + : JsonSchemaFieldDto + { [DataMember] - public virtual VisualSchemaDto VisualSchema { get; set; } + public virtual IReadOnlyList? AllowedCurrencies { get; set; } [DataMember] - public virtual DateTimeOffset PublishedAt { get; set; } + public virtual decimal? MultipleOf { get; set; } [DataMember] - public virtual SchemaSettingsDto? Settings { get; set; } + public virtual decimal? Minimum { get; set; } [DataMember] - public virtual SchemaEmbedSettingsDto? Embed { get; set; } + public virtual decimal? Maximum { get; set; } [DataMember] - public virtual HashSet? Triggers { get; set; } + public virtual CurrencyDefaultDto? Default { get; set; } } - public partial class SchemaEmbedSettingsDto + public partial class DataSchemaDto { [DataMember] - public virtual bool Enabled { get; set; } + public virtual string Json { get; set; } [DataMember] - public virtual List Fields { get; set; } = []; + public virtual HashSet Fields { get; set; } = []; + } + + public partial class DateFieldDto + : JsonSchemaFieldDto + { + [DataMember] + public virtual long? Minimum { get; set; } [DataMember] - public virtual string? EmbeddingIntegrationId { get; set; } + public virtual long? Maximum { get; set; } [DataMember] - public virtual bool PerUser { get; set; } + public virtual long? Default { get; set; } } - public partial class SchemaListProjection - : IHasViewId + public partial class DecimalFieldDto + : JsonSchemaFieldDto { [DataMember] - public virtual string ViewId { get; set; } + public virtual decimal? Minimum { get; set; } [DataMember] - public virtual string SchemaName { get; set; } + public virtual decimal? Maximum { get; set; } + + [DataMember] + public virtual decimal? MultipleOf { get; set; } + + [DataMember] + public virtual decimal? Default { get; set; } + + [DataMember] + public virtual bool? Unique { get; set; } + } + + public partial class EnumSelectionFieldDto + : JsonSchemaFieldDto + { + [DataMember] + public virtual IReadOnlyList? Values { get; set; } + + [DataMember] + public virtual bool Multiple { get; set; } + + [DataMember] + public virtual IReadOnlyList? Default { get; set; } + } + + public partial class FileFieldDto + : JsonSchemaFieldDto + { + [DataMember] + public virtual IReadOnlyList? Storages { get; set; } + + [DataMember] + public virtual int? MinItems { get; set; } + + [DataMember] + public virtual int? MaxItems { get; set; } + + [DataMember] + public virtual string? AllowedFileType { get; set; } + + [DataMember] + public virtual decimal? MaxSizeMb { get; set; } + } + + public partial class GeolocationFieldDto + : JsonSchemaFieldDto + { + [DataMember] + public virtual IReadOnlyList? AllowedTypes { get; set; } + } + + public partial class IntegerFieldDto + : JsonSchemaFieldDto + { + [DataMember] + public virtual long? Minimum { get; set; } + + [DataMember] + public virtual long? Maximum { get; set; } + + [DataMember] + public virtual long? Default { get; set; } + + [DataMember] + public virtual bool? Unique { get; set; } + } + + public partial class JsonFieldDto + : JsonSchemaFieldDto + { + [DataMember] + public virtual int? MaxBytes { get; set; } + } + + public partial class JsonSchemaFieldDto + { + [DataMember] + public virtual string FieldName { get; set; } + } + + public partial class ObjectFieldDto + : JsonSchemaFieldDto + { + [DataMember] + public virtual IReadOnlyList Properties { get; set; } + + [DataMember] + public virtual IReadOnlyList? Required { get; set; } + } + + public partial class RoleSelectionFieldDto + : JsonSchemaFieldDto + { + [DataMember] + public virtual bool Multiple { get; set; } + + [DataMember] + public virtual string? DisplayField { get; set; } + } + + public partial class SchemaDto + : IHasViewId + { + [DataMember] + public virtual string ViewId { get; set; } + + [DataMember] + public virtual string SchemaName { get; set; } + + [DataMember] + public virtual string? SchemaSlug { get; set; } + + [DataMember] + public virtual int Version { get; set; } + + [DataMember] + public virtual int MetaSchemaVersion { get; set; } + + [DataMember] + public virtual DataSchemaDto DataSchema { get; set; } + + [DataMember] + public virtual VisualSchemaDto VisualSchema { get; set; } + + [DataMember] + public virtual DateTimeOffset PublishedAt { get; set; } + + [DataMember] + public virtual SchemaSettingsDto? Settings { get; set; } + + [DataMember] + public virtual SchemaEmbedSettingsDto? Embed { get; set; } + + [DataMember] + public virtual HashSet? Triggers { get; set; } + } + + public partial class SchemaEmbedSettingsDto + { + [DataMember] + public virtual bool Enabled { get; set; } + + [DataMember] + public virtual List Fields { get; set; } = []; + + [DataMember] + public virtual string? EmbeddingIntegrationId { get; set; } + + [DataMember] + public virtual bool PerUser { get; set; } + } + + public partial class SchemaListProjection + : IHasViewId + { + [DataMember] + public virtual string ViewId { get; set; } + + [DataMember] + public virtual string SchemaName { get; set; } [DataMember] public virtual string SchemaTitle { get; set; } @@ -2536,6 +2973,76 @@ public partial class SchemaSettingsDto [DataMember] public virtual string? Description { get; set; } + + [DataMember] + public virtual List? UniqueIndexes { get; set; } + } + + public partial class SchemaUniqueIndexDto + { + [DataMember] + public virtual List Fields { get; set; } = []; + } + + public partial class StringFieldDto + : JsonSchemaFieldDto + { + [DataMember] + public virtual string? Format { get; set; } + + [DataMember] + public virtual string? Pattern { get; set; } + + [DataMember] + public virtual int? MinLength { get; set; } + + [DataMember] + public virtual int? MaxLength { get; set; } + + [DataMember] + public virtual IReadOnlyDictionary? TranslateOptions { get; set; } + + [DataMember] + public virtual string? Default { get; set; } + + [DataMember] + public virtual bool? Unique { get; set; } + } + + public partial class TagsFieldDto + : JsonSchemaFieldDto + { + [DataMember] + public virtual int? MinItems { get; set; } + + [DataMember] + public virtual int? MaxItems { get; set; } + + [DataMember] + public virtual IReadOnlyList? Default { get; set; } + } + + public partial class TaxonomySelectionFieldDto + : JsonSchemaFieldDto + { + [DataMember] + public virtual string? TaxonomyId { get; set; } + + [DataMember] + public virtual bool Multiple { get; set; } + + [DataMember] + public virtual string? DisplayField { get; set; } + } + + public partial class UserSelectionFieldDto + : JsonSchemaFieldDto + { + [DataMember] + public virtual bool Multiple { get; set; } + + [DataMember] + public virtual string? DisplayField { get; set; } } public partial class VisualSchemaDto @@ -2602,6 +3109,9 @@ public partial class TermDto [DataMember] public virtual Object? Meta { get; set; } + + [DataMember] + public virtual string? Origin { get; set; } } public partial class TermMultiParentDto @@ -2801,42 +3311,169 @@ public partial class OwnPushMessageDto public virtual DateTime? ReadAtUtc { get; set; } } - public partial class CodeMashResponseStatus - { - public virtual bool IsSuccess { get; set; } - public virtual IEnumerable? Errors { get; set; } - } - - public partial class EmptyResponse - : ResponseBase - { - } - [DataContract] - public partial class IdResponse - : ResponseBase + public partial class PaymentOrderCheckoutDto { [DataMember] - public virtual string? Id { get; set; } + public virtual int Attempt { get; set; } [DataMember] - public virtual string? Status { get; set; } - } + public virtual string IntegrationId { get; set; } - [DataContract] - public partial class IntegrationTestResultItemDto - { [DataMember] - public virtual string Operation { get; set; } + public virtual string Provider { get; set; } [DataMember] - public virtual string Result { get; set; } + public virtual string ProviderOrderId { get; set; } [DataMember] - public virtual IReadOnlyList? Errors { get; set; } - } + public virtual string ProviderReference { get; set; } - [DataContract] + [DataMember] + public virtual string PaymentUrl { get; set; } + + [DataMember] + public virtual string Method { get; set; } + + [DataMember] + public virtual DateTime StartedOnUtc { get; set; } + + [DataMember] + public virtual DateTime ExpiresAtUtc { get; set; } + } + + [DataContract] + public partial class PaymentOrderDto + { + [DataMember] + public virtual string Id { get; set; } + + [DataMember] + public virtual string Env { get; set; } + + [DataMember] + public virtual string BuyerUserId { get; set; } + + [DataMember] + public virtual string MerchantReference { get; set; } + + [DataMember] + public virtual string Currency { get; set; } + + [DataMember] + public virtual string PriceVersion { get; set; } + + [DataMember] + public virtual List Lines { get; set; } = []; + + [DataMember] + public virtual long TotalMinor { get; set; } + + [DataMember] + public virtual Dictionary Metadata { get; set; } = new(); + + [DataMember] + public virtual string Status { get; set; } + + [DataMember] + public virtual DateTime CreatedOnUtc { get; set; } + + [DataMember] + public virtual DateTime UpdatedOnUtc { get; set; } + + [DataMember] + public virtual List Checkouts { get; set; } = []; + + [DataMember] + public virtual long? SettledMinor { get; set; } + + [DataMember] + public virtual long RefundedMinor { get; set; } + + [DataMember] + public virtual DateTime? PaidOnUtc { get; set; } + + [DataMember] + public virtual string? ProviderPaymentId { get; set; } + + [DataMember] + public virtual List Mismatches { get; set; } = []; + } + + [DataContract] + public partial class PaymentOrderLineDto + { + [DataMember] + public virtual string Sku { get; set; } + + [DataMember] + public virtual string Title { get; set; } + + [DataMember] + public virtual int Quantity { get; set; } + + [DataMember] + public virtual long UnitAmountMinor { get; set; } + + [DataMember] + public virtual long AmountMinor { get; set; } + } + + [DataContract] + public partial class PaymentOrderLineInput + { + [DataMember] + public virtual string? Sku { get; set; } + + [DataMember] + public virtual string? Title { get; set; } + + [DataMember] + public virtual int Quantity { get; set; } + + [DataMember] + public virtual long UnitAmountMinor { get; set; } + } + + public partial class CodeMashResponseStatus + { + public virtual bool IsSuccess { get; set; } + public virtual IEnumerable? Errors { get; set; } + } + + public partial class EmptyResponse + : ResponseBase + { + } + + [DataContract] + public partial class IdResponse + : ResponseBase + { + [DataMember] + public virtual string? Id { get; set; } + + [DataMember] + public virtual string? Status { get; set; } + + [DataMember] + public virtual List? Warnings { get; set; } + } + + [DataContract] + public partial class IntegrationTestResultItemDto + { + [DataMember] + public virtual string Operation { get; set; } + + [DataMember] + public virtual string Result { get; set; } + + [DataMember] + public virtual IReadOnlyList? Errors { get; set; } + } + + [DataContract] public partial class ResponseBase { [DataMember] @@ -2904,6 +3541,76 @@ public partial class TriggerDto public virtual string? SavedByAuthId { get; set; } } + [NorbixRoute("/{version}/notifications/inbox", "GET")] + public partial class GetNotificationInboxRequest + : CodeMashListPaginationRequestBase, INorbixRequest + { + public virtual bool UnreadOnly { get; set; } + public virtual string? Channel { get; set; } + } + + public partial class GetNotificationInboxResponse + : ResponseBase + { + public virtual PaginatedResponse? List { get; set; } + } + + [NorbixRoute("/{version}/notifications/inbox/unread-count", "GET")] + public partial class GetUnreadCountRequest + : CodeMashRequestBase, INorbixRequest + { + } + + public partial class GetUnreadCountResponse + : ResponseBase + { + public virtual long Count { get; set; } + } + + [NorbixRoute("/{version}/notifications/inbox/read-all", "POST")] + public partial class MarkAllNotificationsReadRequest + : CodeMashRequestBase, INorbixRequest + { + } + + public partial class MarkAllNotificationsReadResponse + : ResponseBase + { + } + + [NorbixRoute("/{version}/notifications/inbox/{notificationId}/read", "POST")] + public partial class MarkNotificationReadRequest + : CodeMashRequestBase, INorbixRequest + { + public virtual string NotificationId { get; set; } + } + + public partial class MarkNotificationReadResponse + : ResponseBase + { + } + + public partial class SharedTypeGen + { + public virtual StringFieldDto? Typegen_StringFieldDto { get; set; } + public virtual DecimalFieldDto? Typegen_DecimalFieldDto { get; set; } + public virtual CurrencyFieldDto? Typegen_CurrencyFieldDto { get; set; } + public virtual BooleanFieldDto? Typegen_BooleanFieldDto { get; set; } + public virtual DateFieldDto? Typegen_DateFieldDto { get; set; } + public virtual IntegerFieldDto? Typegen_IntegerFieldDto { get; set; } + public virtual GeolocationFieldDto? Typegen_GeolocationFieldDto { get; set; } + public virtual TagsFieldDto? Typegen_TagsFieldDto { get; set; } + public virtual FileFieldDto? Typegen_FileFieldDto { get; set; } + public virtual TaxonomySelectionFieldDto? Typegen_TaxonomySelectionFieldDto { get; set; } + public virtual CollectionSelectionFieldDto? Typegen_CollectionSelectionFieldDto { get; set; } + public virtual UserSelectionFieldDto? Typegen_UserSelectionFieldDto { get; set; } + public virtual RoleSelectionFieldDto? Typegen_RoleSelectionFieldDto { get; set; } + public virtual EnumSelectionFieldDto? Typegen_EnumSelectionFieldDto { get; set; } + public virtual ObjectFieldDto? Typegen_ObjectFieldDto { get; set; } + public virtual ArrayFieldDto? Typegen_ArrayFieldDto { get; set; } + public virtual JsonFieldDto? Typegen_JsonFieldDto { get; set; } + } + [NorbixRoute("/{version}/echo", "GET")] public partial class Echo : RequestBase, INorbixRequest, INorbixOptionalAuth @@ -3078,6 +3785,20 @@ public partial interface IHasViewId string ViewId { get; set; } } + public partial class InAppNotificationDto + { + public virtual string Id { get; set; } + public virtual string ProjectId { get; set; } + public virtual string UserId { get; set; } + public virtual string Channel { get; set; } + public virtual string EventName { get; set; } + public virtual string? PayloadJson { get; set; } + public virtual bool IsRead { get; set; } + public virtual DateTime? SeenAtUtc { get; set; } + public virtual DateTime? ReadAtUtc { get; set; } + public virtual DateTime CreatedAtUtc { get; set; } + } + [DataContract] public enum CodeMashRelease { @@ -3099,6 +3820,7 @@ public enum AuthStatus { Registered = 0, PendingValidation = 2, + Invited = 4, Active = 8, Unregistered = 16, Suspended = 32, @@ -3150,244 +3872,3 @@ public partial class PagingArgs public virtual string? StartingAfter { get; set; } public virtual string? EndingBefore { get; set; } } - - // The Api contract does not export the JsonSchemaFieldDto subclasses yet (gateway - // ticket 11-code C22); kept from the previous Api file until the Api host anchors them. - public partial class ArrayFieldDto - : JsonSchemaFieldDto - { - [DataMember] - public virtual JsonSchemaFieldDto Items { get; set; } - - [DataMember] - public virtual int? MinItems { get; set; } - - [DataMember] - public virtual int? MaxItems { get; set; } - - [DataMember] - public virtual bool? UniqueItems { get; set; } - } - - public partial class BooleanFieldDto - : JsonSchemaFieldDto - { - [DataMember] - public virtual bool? Default { get; set; } - } - - public partial class CollectionSelectionFieldDto - : JsonSchemaFieldDto - { - [DataMember] - public virtual string? CollectionId { get; set; } - - [DataMember] - public virtual string? DisplayField { get; set; } - - [DataMember] - public virtual bool Multiple { get; set; } - } - - public partial class CurrencyDefaultDto - { - [DataMember] - public virtual decimal Value { get; set; } - - [DataMember] - public virtual string Currency { get; set; } - } - - public partial class CurrencyFieldDto - : JsonSchemaFieldDto - { - [DataMember] - public virtual IReadOnlyList? AllowedCurrencies { get; set; } - - [DataMember] - public virtual decimal? MultipleOf { get; set; } - - [DataMember] - public virtual decimal? Minimum { get; set; } - - [DataMember] - public virtual decimal? Maximum { get; set; } - - [DataMember] - public virtual CurrencyDefaultDto? Default { get; set; } - } - - public partial class DateFieldDto - : JsonSchemaFieldDto - { - [DataMember] - public virtual long? Minimum { get; set; } - - [DataMember] - public virtual long? Maximum { get; set; } - - [DataMember] - public virtual long? Default { get; set; } - } - - public partial class DecimalFieldDto - : JsonSchemaFieldDto - { - [DataMember] - public virtual decimal? Minimum { get; set; } - - [DataMember] - public virtual decimal? Maximum { get; set; } - - [DataMember] - public virtual decimal? MultipleOf { get; set; } - - [DataMember] - public virtual decimal? Default { get; set; } - - [DataMember] - public virtual bool? Unique { get; set; } - } - - public partial class EnumSelectionFieldDto - : JsonSchemaFieldDto - { - [DataMember] - public virtual IReadOnlyList? Values { get; set; } - - [DataMember] - public virtual bool Multiple { get; set; } - - [DataMember] - public virtual IReadOnlyList? Default { get; set; } - } - - public partial class FileFieldDto - : JsonSchemaFieldDto - { - [DataMember] - public virtual IReadOnlyList? Storages { get; set; } - - [DataMember] - public virtual int? MinItems { get; set; } - - [DataMember] - public virtual int? MaxItems { get; set; } - - [DataMember] - public virtual string? AllowedFileType { get; set; } - - [DataMember] - public virtual decimal? MaxSizeMb { get; set; } - } - - public partial class GeolocationFieldDto - : JsonSchemaFieldDto - { - [DataMember] - public virtual IReadOnlyList? AllowedTypes { get; set; } - } - - public partial class IntegerFieldDto - : JsonSchemaFieldDto - { - [DataMember] - public virtual long? Minimum { get; set; } - - [DataMember] - public virtual long? Maximum { get; set; } - - [DataMember] - public virtual long? Default { get; set; } - - [DataMember] - public virtual bool? Unique { get; set; } - } - - public partial class JsonFieldDto - : JsonSchemaFieldDto - { - [DataMember] - public virtual int? MaxBytes { get; set; } - } - - public partial class ObjectFieldDto - : JsonSchemaFieldDto - { - [DataMember] - public virtual IReadOnlyList Properties { get; set; } - - [DataMember] - public virtual IReadOnlyList? Required { get; set; } - } - - public partial class RoleSelectionFieldDto - : JsonSchemaFieldDto - { - [DataMember] - public virtual bool Multiple { get; set; } - - [DataMember] - public virtual string? DisplayField { get; set; } - } - - public partial class StringFieldDto - : JsonSchemaFieldDto - { - [DataMember] - public virtual string? Format { get; set; } - - [DataMember] - public virtual string? Pattern { get; set; } - - [DataMember] - public virtual int? MinLength { get; set; } - - [DataMember] - public virtual int? MaxLength { get; set; } - - [DataMember] - public virtual IReadOnlyDictionary? TranslateOptions { get; set; } - - [DataMember] - public virtual string? Default { get; set; } - - [DataMember] - public virtual bool? Unique { get; set; } - } - - public partial class TagsFieldDto - : JsonSchemaFieldDto - { - [DataMember] - public virtual int? MinItems { get; set; } - - [DataMember] - public virtual int? MaxItems { get; set; } - - [DataMember] - public virtual IReadOnlyList? Default { get; set; } - } - - public partial class TaxonomySelectionFieldDto - : JsonSchemaFieldDto - { - [DataMember] - public virtual string? TaxonomyId { get; set; } - - [DataMember] - public virtual bool Multiple { get; set; } - - [DataMember] - public virtual string? DisplayField { get; set; } - } - - public partial class UserSelectionFieldDto - : JsonSchemaFieldDto - { - [DataMember] - public virtual bool Multiple { get; set; } - - [DataMember] - public virtual string? DisplayField { get; set; } - } diff --git a/src/Norbix.Sdk.Types/Generated/Hub.dtos.cs b/src/Norbix.Sdk.Types/Generated/Hub.dtos.cs index 7aebf4e..24b0a03 100644 --- a/src/Norbix.Sdk.Types/Generated/Hub.dtos.cs +++ b/src/Norbix.Sdk.Types/Generated/Hub.dtos.cs @@ -60,6 +60,14 @@ public partial class ScaffoldStep public virtual string? TemplateRef { get; set; } } + public partial class TriggerActivationTestProblem + { + public virtual string Code { get; set; } + public virtual string Message { get; set; } + public virtual int Line { get; set; } + public virtual int Column { get; set; } + } + public partial class RenderPushResponse : ResponseBase { @@ -347,6 +355,7 @@ public enum PaymentGatewayPlatform CheckOutCom, Mollie, Worldpay, + Montonio, } public enum PaymentTriggerType @@ -354,6 +363,7 @@ public enum PaymentTriggerType OnOrderCreated, OnOrderPaid, OnWebhookCallReceived, + OnOrderPaymentChanged, } public enum PermissionEffect @@ -447,6 +457,9 @@ public enum SchemaTriggerType OnInserted, OnDeleted, OnUpdated, + OnInsertedMany, + OnUpdatedMany, + OnDeletedMany, } public enum SecretValueFormat @@ -713,6 +726,14 @@ public partial class InternalsTypeGen public virtual StripePaymentIntegrationRequest? Typegen_53_StripePaymentIntegrationRequest { get; set; } public virtual AppleInAppPaymentIntegrationRequest? Typegen_54_AppleInAppPaymentIntegrationRequest { get; set; } public virtual GoogleInAppPaymentIntegrationRequest? Typegen_55_GoogleInAppPaymentIntegrationRequest { get; set; } + public virtual MontonioPaymentIntegrationRequest? Typegen_285_MontonioPaymentIntegrationRequest { get; set; } + public virtual ShopifyPaymentIntegrationRequest? Typegen_287_ShopifyPaymentIntegrationRequest { get; set; } + public virtual WooCommercePaymentIntegrationRequest? Typegen_288_WooCommercePaymentIntegrationRequest { get; set; } + public virtual MagentoPaymentIntegrationRequest? Typegen_289_MagentoPaymentIntegrationRequest { get; set; } + public virtual BraintreePaymentIntegrationRequest? Typegen_290_BraintreePaymentIntegrationRequest { get; set; } + public virtual AuthorizeNetPaymentIntegrationRequest? Typegen_291_AuthorizeNetPaymentIntegrationRequest { get; set; } + public virtual CheckOutComPaymentIntegrationRequest? Typegen_292_CheckOutComPaymentIntegrationRequest { get; set; } + public virtual WorldpayPaymentIntegrationRequest? Typegen_293_WorldpayPaymentIntegrationRequest { get; set; } public virtual EdgeWebPushIntegrationRequest? Typegen_56_EdgeWebPushIntegrationRequest { get; set; } public virtual ChromePluginPushIntegrationRequest? Typegen_57_ChromePluginPushIntegrationRequest { get; set; } public virtual SafariPushIntegrationRequest? Typegen_58_SafariPushIntegrationRequest { get; set; } @@ -796,6 +817,8 @@ public partial class InternalsTypeGen public virtual AuthorizeNetPaymentIntegrationDto? Typegen_188_AuthorizeNetPaymentIntegrationDto { get; set; } public virtual CheckOutComPaymentIntegrationDto? Typegen_189_CheckOutComPaymentIntegrationDto { get; set; } public virtual WorldpayPaymentIntegrationDto? Typegen_190_WorldpayPaymentIntegrationDto { get; set; } + public virtual MontonioPaymentIntegrationDto? Typegen_286_MontonioPaymentIntegrationDto { get; set; } + public virtual PaymentOrderEventDto? Typegen_294_PaymentOrderEventDto { get; set; } public virtual AppleSignInMembershipIntegrationDto? Typegen_128_AppleSignInMembershipIntegrationDto { get; set; } public virtual GitHubMembershipIntegrationDto? Typegen_129_GitHubMembershipIntegrationDto { get; set; } public virtual GoogleMembershipIntegrationDto? Typegen_130_GoogleMembershipIntegrationDto { get; set; } @@ -905,23 +928,6 @@ public partial class InternalsTypeGen public virtual ActionPendingEntryWireDto? Typegen_243_ActionPendingEntryWireDto { get; set; } public virtual NoticeEntryWireDto? Typegen_244_NoticeEntryWireDto { get; set; } public virtual ConversationSnapshotEntryWireDto? Typegen_245_ConversationSnapshotEntryWireDto { get; set; } - public virtual StringFieldDto? Typegen_252_StringFieldDto { get; set; } - public virtual DecimalFieldDto? Typegen_253_DecimalFieldDto { get; set; } - public virtual CurrencyFieldDto? Typegen_254_CurrencyFieldDto { get; set; } - public virtual BooleanFieldDto? Typegen_255_BooleanFieldDto { get; set; } - public virtual DateFieldDto? Typegen_256_DateFieldDto { get; set; } - public virtual IntegerFieldDto? Typegen_257_IntegerFieldDto { get; set; } - public virtual GeolocationFieldDto? Typegen_258_GeolocationFieldDto { get; set; } - public virtual TagsFieldDto? Typegen_259_TagsFieldDto { get; set; } - public virtual FileFieldDto? Typegen_260_FileFieldDto { get; set; } - public virtual TaxonomySelectionFieldDto? Typegen_261_TaxonomySelectionFieldDto { get; set; } - public virtual CollectionSelectionFieldDto? Typegen_262_CollectionSelectionFieldDto { get; set; } - public virtual UserSelectionFieldDto? Typegen_263_UserSelectionFieldDto { get; set; } - public virtual RoleSelectionFieldDto? Typegen_264_RoleSelectionFieldDto { get; set; } - public virtual EnumSelectionFieldDto? Typegen_265_EnumSelectionFieldDto { get; set; } - public virtual ObjectFieldDto? Typegen_266_ObjectFieldDto { get; set; } - public virtual ArrayFieldDto? Typegen_267_ArrayFieldDto { get; set; } - public virtual JsonFieldDto? Typegen_268_JsonFieldDto { get; set; } public virtual FunctionRefDto? Typegen_269_FunctionRefDto { get; set; } public virtual CodeFunctionEventDto? Typegen_270_CodeFunctionEventDto { get; set; } public virtual CodeFunctionContextDto? Typegen_271_CodeFunctionContextDto { get; set; } @@ -1684,6 +1690,12 @@ public partial class ProjectListItemDto [DataMember] public virtual HashSet? AdditionalRegions { get; set; } + + [DataMember] + public virtual int ModulesCount { get; set; } + + [DataMember] + public virtual int UsersCount { get; set; } } public partial class ProjectRegionDto @@ -2180,6 +2192,12 @@ public partial class PromotionResultDto [DataMember] public virtual List Blockers { get; set; } = []; + [DataMember] + public virtual List TermChanges { get; set; } = []; + + [DataMember] + public virtual List Warnings { get; set; } = []; + [DataMember] public virtual long? FromVersion { get; set; } @@ -2187,6 +2205,22 @@ public partial class PromotionResultDto public virtual bool WasDryRun { get; set; } } + [DataContract] + public partial class PromotionTermChangeDto + { + [DataMember] + public virtual string TaxonomyId { get; set; } + + [DataMember] + public virtual string TermId { get; set; } + + [DataMember] + public virtual string? Slug { get; set; } + + [DataMember] + public virtual string Change { get; set; } + } + [DataContract] public partial class RotateAiServiceUserKeyResponse : ResponseBase @@ -2367,6 +2401,58 @@ public partial class AiChatStepLogLineWireDto public virtual string? Detail { get; set; } } + public partial class AiProjectContextCallerWireDto + { + public virtual string Kind { get; set; } + public virtual string? Name { get; set; } + public virtual string? AccountId { get; set; } + } + + public partial class AiProjectContextIntegrationWireDto + { + public virtual string Id { get; set; } + public virtual string? Name { get; set; } + public virtual string? Kind { get; set; } + public virtual bool? Enabled { get; set; } + public virtual List DefaultIn { get; set; } = []; + public virtual string? Env { get; set; } + } + + public partial class AiProjectContextModuleWireDto + { + public virtual string Name { get; set; } + public virtual bool? IntegrationsReadable { get; set; } + public virtual List? Integrations { get; set; } + } + + public partial class AiProjectContextProjectWireDto + { + public virtual string Id { get; set; } + public virtual string Name { get; set; } + public virtual string? UniqueName { get; set; } + public virtual string Access { get; set; } + public virtual string? Description { get; set; } + public virtual string? DefaultLanguage { get; set; } + public virtual List Languages { get; set; } = []; + public virtual List? Environments { get; set; } + public virtual string? PrimaryRegion { get; set; } + public virtual List? AdditionalRegions { get; set; } + public virtual List? CorsOrigins { get; set; } + public virtual string? ApiHost { get; set; } + public virtual string? AdminUrl { get; set; } + public virtual string? MarketingUrl { get; set; } + public virtual bool? AdminPortalEnabled { get; set; } + public virtual List? Modules { get; set; } + } + + public partial class AiProjectContextWireDto + { + public virtual string Version { get; set; } + public virtual AiProjectContextCallerWireDto Caller { get; set; } + public virtual List Projects { get; set; } = []; + public virtual List Hints { get; set; } = []; + } + public partial class AssistantQuestionEntryWireDto : AiChatEntryWireDto { @@ -2763,6 +2849,9 @@ public partial class EmailCampaignBatchNotificationDto [DataMember] public virtual EmailMessageContentDto? Content { get; set; } + + [DataMember] + public virtual string? TransactionalKind { get; set; } } public partial class EmailCampaignDeliverySettingsDto @@ -2890,6 +2979,9 @@ public partial class EmailToCollectionRecordsDeliverySettingsDto [DataMember] public virtual HashSet? Languages { get; set; } + + [DataMember] + public virtual HashSet? RecordIds { get; set; } } [DataContract] @@ -3121,6 +3213,9 @@ public partial class PushToCollectionRecordsDeliverySettingsDto [DataMember] public virtual HashSet? Languages { get; set; } + + [DataMember] + public virtual HashSet? RecordIds { get; set; } } [DataContract] @@ -3257,6 +3352,9 @@ public partial class SmsToCollectionRecordsDeliverySettingsDto [DataMember] public virtual HashSet? Languages { get; set; } + + [DataMember] + public virtual HashSet? RecordIds { get; set; } } [DataContract] @@ -3474,6 +3572,9 @@ public partial class CodeFunctionDataDto [DataMember] public virtual PaymentFactDto? Payment { get; set; } + [DataMember] + public virtual PaymentOrderEventDto? Order { get; set; } + [DataMember] public virtual AiUsageEventDto? Ai { get; set; } @@ -3571,6 +3672,25 @@ public partial class DatabaseRecordChangeDto [DataMember] public virtual DocumentRefDto? NewRef { get; set; } + + [DataMember] + public virtual DatabaseRecordsBatchDto? Records { get; set; } + } + + [DataContract] + public partial class DatabaseRecordsBatchDto + { + [DataMember] + public virtual List Ids { get; set; } = []; + + [DataMember] + public virtual long Count { get; set; } + + [DataMember] + public virtual bool Truncated { get; set; } + + [DataMember] + public virtual List>? Documents { get; set; } } [DataContract] @@ -3614,6 +3734,9 @@ public partial class PaymentFactDto [DataMember] public virtual string ProviderEventId { get; set; } + [DataMember] + public virtual string? OrderId { get; set; } + [DataMember] public virtual string EventName { get; set; } @@ -5120,6 +5243,12 @@ public partial class SchemaListColumnDto { [DataMember] public virtual string Field { get; set; } + + [DataMember] + public virtual bool Primary { get; set; } + + [DataMember] + public virtual bool LinkReference { get; set; } } public partial class SchemaListProjection @@ -5157,6 +5286,9 @@ public partial class SchemaListSettingsDto [DataMember] public virtual SchemaListSortDto? DefaultSort { get; set; } + + [DataMember] + public virtual List Filters { get; set; } = []; } public partial class SchemaListSortDto @@ -5191,6 +5323,15 @@ public partial class SchemaSettingsDto [DataMember] public virtual string? Description { get; set; } + + [DataMember] + public virtual List? UniqueIndexes { get; set; } + } + + public partial class SchemaUniqueIndexDto + { + [DataMember] + public virtual List Fields { get; set; } = []; } public partial class SchemaVersionSummaryDto @@ -5290,6 +5431,9 @@ public partial class TaxonomyDto [DataMember] public virtual string? Description { get; set; } + [DataMember] + public virtual string? Env { get; set; } + [DataMember] public virtual DataSchemaDto? TermsMetaDataSchema { get; set; } @@ -5326,6 +5470,9 @@ public partial class TaxonomyListProjection [DataMember] public virtual List? DependencyRefs { get; set; } + + [DataMember] + public virtual string? Env { get; set; } } public partial class TaxonomyRef @@ -5395,6 +5542,9 @@ public partial class TermDto [DataMember] public virtual Object? Meta { get; set; } + + [DataMember] + public virtual string? Origin { get; set; } } public partial class TermMultiParentDto @@ -6008,6 +6158,30 @@ public partial class MembershipAuthorizationViewDto [DataMember] public virtual PasswordComplexityDto? PasswordComplexity { get; set; } + + [DataMember] + public virtual List? DefaultRoles { get; set; } + + [DataMember] + public virtual List? AllowedRegistrationRoles { get; set; } + + [DataMember] + public virtual bool AllowGuestUsers { get; set; } + + [DataMember] + public virtual int? GuestCleanupPeriodDays { get; set; } + + [DataMember] + public virtual bool AllowEmailRegistration { get; set; } + + [DataMember] + public virtual bool AllowUsernameRegistration { get; set; } + + [DataMember] + public virtual bool InviteOnly { get; set; } + + [DataMember] + public virtual bool AllowAnyoneToSignUp { get; set; } } [DataContract] @@ -6048,6 +6222,9 @@ public partial class MembershipDto [DataMember] public virtual HashSet? CustomPolicies { get; set; } + [DataMember] + public virtual HashSet? SystemRoleAttachments { get; set; } + [DataMember] public virtual AuthorizationDto? Authorization { get; set; } @@ -6791,6 +6968,20 @@ public partial class PushDeviceListProjection public virtual DateTime? UpdatedAtUtc { get; set; } } + [DataContract] + public partial class TeamPushDeviceListProjection + : PushDeviceListProjection + { + [DataMember] + public virtual string OwnerKind { get; set; } + + [DataMember] + public virtual string? OwnerName { get; set; } + + [DataMember] + public virtual string? OwnerEmail { get; set; } + } + public partial class PushIntegrationDto : IntegrationDto { @@ -6948,6 +7139,21 @@ public partial class SmsSettings { } + public partial class PaymentEventDto + { + public virtual string IntegrationId { get; set; } + public virtual string Provider { get; set; } + public virtual string ProviderEventId { get; set; } + public virtual string? OrderId { get; set; } + public virtual string EventName { get; set; } + public virtual string Status { get; set; } + public virtual long? AmountMinor { get; set; } + public virtual string? Currency { get; set; } + public virtual Dictionary? ExternalIds { get; set; } + public virtual DateTime? OccurredOn { get; set; } + public virtual DateTime ReceivedOn { get; set; } + } + public partial class PaymentsIntegrationDto : IntegrationDto { @@ -7031,6 +7237,14 @@ public partial class MolliePaymentIntegrationDto public virtual bool IsTestMode { get; set; } } + public partial class MontonioPaymentIntegrationDto + : PaymentsIntegrationDto + { + public virtual string AccessKey { get; set; } + public virtual bool IsSandbox { get; set; } + public virtual string? Locale { get; set; } + } + public partial class PaddlePaymentIntegrationDto : PaymentsIntegrationDto { @@ -7076,111 +7290,244 @@ public partial class WorldpayPaymentIntegrationDto public virtual string? WebhookSecret { get; set; } } - public partial class PaymentsWebhookLogEntry + [DataContract] + public partial class PaymentOrderCheckoutDto { + [DataMember] + public virtual int Attempt { get; set; } + + [DataMember] public virtual string IntegrationId { get; set; } - public virtual string Source { get; set; } - public virtual string? Env { get; set; } - public virtual string? EventName { get; set; } - public virtual string? ProviderEventId { get; set; } - public virtual int StatusCode { get; set; } - public virtual string Description { get; set; } - public virtual DateTime ReceivedOn { get; set; } - } - public enum LanguageGapKind - { - Template, - Footer, - Signature, - } + [DataMember] + public virtual string Provider { get; set; } - [DataContract] - public partial class TemplateLanguageGapDto - { [DataMember] - public virtual ApplicationModule Module { get; set; } + public virtual string ProviderOrderId { get; set; } [DataMember] - public virtual LanguageGapKind Kind { get; set; } + public virtual string ProviderReference { get; set; } [DataMember] - public virtual string TemplateId { get; set; } + public virtual string PaymentUrl { get; set; } [DataMember] - public virtual string TemplateName { get; set; } + public virtual string Method { get; set; } [DataMember] - public virtual List MissingLanguages { get; set; } = []; - } + public virtual DateTime StartedOnUtc { get; set; } - public partial class DocumentRefDto - : ResourceRefDto - { - public virtual ResourceKindDto Kind { get; set; } - public virtual string DatabaseIntegrationId { get; set; } - public virtual string SchemaId { get; set; } - public virtual string ExternalId { get; set; } + [DataMember] + public virtual DateTime ExpiresAtUtc { get; set; } } - public enum ResolvedRefStatus + [DataContract] + public partial class PaymentOrderDto { - [EnumMember(Value="ok")] - Ok, - [EnumMember(Value="notFound")] - NotFound, - [EnumMember(Value="unauthorized")] - Unauthorized, - [EnumMember(Value="sourceError")] - SourceError, - [EnumMember(Value="erased")] - Erased, - } + [DataMember] + public virtual string Id { get; set; } - public partial class ResolvedResourceEntry - { - public virtual ResourceRefDto Ref { get; set; } - public virtual ResolvedRefStatus Status { get; set; } - public virtual Object? Resolved { get; set; } - public virtual string? Diagnostic { get; set; } - } + [DataMember] + public virtual string Env { get; set; } - public enum ResourceKindDto - { - [EnumMember(Value="contact")] - Contact, - [EnumMember(Value="document")] - Document, - [EnumMember(Value="file")] - File, - [EnumMember(Value="paymentCustomer")] - PaymentCustomer, - [EnumMember(Value="order")] - Order, - [EnumMember(Value="payment")] - Payment, - [EnumMember(Value="product")] - Product, - [EnumMember(Value="integration")] - Integration, - } + [DataMember] + public virtual string BuyerUserId { get; set; } - public partial class ResourceRefDto - { - public virtual string ProjectId { get; set; } - public virtual string? IntegrationId { get; set; } - public virtual ResourceKindDto Kind { get; set; } - } + [DataMember] + public virtual string MerchantReference { get; set; } - [DataContract] - public partial class CheckEmailIntegrationDomainHealthResponse - : ResponseBase - { [DataMember] - public virtual string? Domain { get; set; } + public virtual string Currency { get; set; } [DataMember] - public virtual IReadOnlyList? Items { get; set; } + public virtual string PriceVersion { get; set; } + + [DataMember] + public virtual List Lines { get; set; } = []; + + [DataMember] + public virtual long TotalMinor { get; set; } + + [DataMember] + public virtual Dictionary Metadata { get; set; } = new(); + + [DataMember] + public virtual string Status { get; set; } + + [DataMember] + public virtual DateTime CreatedOnUtc { get; set; } + + [DataMember] + public virtual DateTime UpdatedOnUtc { get; set; } + + [DataMember] + public virtual List Checkouts { get; set; } = []; + + [DataMember] + public virtual long? SettledMinor { get; set; } + + [DataMember] + public virtual long RefundedMinor { get; set; } + + [DataMember] + public virtual DateTime? PaidOnUtc { get; set; } + + [DataMember] + public virtual string? ProviderPaymentId { get; set; } + + [DataMember] + public virtual List Mismatches { get; set; } = []; + } + + [DataContract] + public partial class PaymentOrderEventDto + { + [DataMember] + public virtual string OrderEventId { get; set; } + + [DataMember] + public virtual string Event { get; set; } + + [DataMember] + public virtual string From { get; set; } + + [DataMember] + public virtual string To { get; set; } + + [DataMember] + public virtual string Reason { get; set; } + + [DataMember] + public virtual PaymentOrderDto Order { get; set; } + + [DataMember] + public virtual PaymentEventDto Payment { get; set; } + } + + [DataContract] + public partial class PaymentOrderLineDto + { + [DataMember] + public virtual string Sku { get; set; } + + [DataMember] + public virtual string Title { get; set; } + + [DataMember] + public virtual int Quantity { get; set; } + + [DataMember] + public virtual long UnitAmountMinor { get; set; } + + [DataMember] + public virtual long AmountMinor { get; set; } + } + + public partial class PaymentsWebhookLogEntry + { + public virtual string IntegrationId { get; set; } + public virtual string Source { get; set; } + public virtual string? Env { get; set; } + public virtual string? EventName { get; set; } + public virtual string? ProviderEventId { get; set; } + public virtual int StatusCode { get; set; } + public virtual string Description { get; set; } + public virtual DateTime ReceivedOn { get; set; } + } + + public enum LanguageGapKind + { + Template, + Footer, + Signature, + } + + [DataContract] + public partial class TemplateLanguageGapDto + { + [DataMember] + public virtual ApplicationModule Module { get; set; } + + [DataMember] + public virtual LanguageGapKind Kind { get; set; } + + [DataMember] + public virtual string TemplateId { get; set; } + + [DataMember] + public virtual string TemplateName { get; set; } + + [DataMember] + public virtual List MissingLanguages { get; set; } = []; + } + + public partial class DocumentRefDto + : ResourceRefDto + { + public virtual ResourceKindDto Kind { get; set; } + public virtual string DatabaseIntegrationId { get; set; } + public virtual string SchemaId { get; set; } + public virtual string ExternalId { get; set; } + } + + public enum ResolvedRefStatus + { + [EnumMember(Value="ok")] + Ok, + [EnumMember(Value="notFound")] + NotFound, + [EnumMember(Value="unauthorized")] + Unauthorized, + [EnumMember(Value="sourceError")] + SourceError, + [EnumMember(Value="erased")] + Erased, + } + + public partial class ResolvedResourceEntry + { + public virtual ResourceRefDto Ref { get; set; } + public virtual ResolvedRefStatus Status { get; set; } + public virtual Object? Resolved { get; set; } + public virtual string? Diagnostic { get; set; } + } + + public enum ResourceKindDto + { + [EnumMember(Value="contact")] + Contact, + [EnumMember(Value="document")] + Document, + [EnumMember(Value="file")] + File, + [EnumMember(Value="paymentCustomer")] + PaymentCustomer, + [EnumMember(Value="order")] + Order, + [EnumMember(Value="payment")] + Payment, + [EnumMember(Value="product")] + Product, + [EnumMember(Value="integration")] + Integration, + } + + public partial class ResourceRefDto + { + public virtual string ProjectId { get; set; } + public virtual string? IntegrationId { get; set; } + public virtual ResourceKindDto Kind { get; set; } + } + + [DataContract] + public partial class CheckEmailIntegrationDomainHealthResponse + : ResponseBase + { + [DataMember] + public virtual string? Domain { get; set; } + + [DataMember] + public virtual IReadOnlyList? Items { get; set; } } public partial class CodeMashResponseStatus @@ -7213,6 +7560,9 @@ public partial class IdResponse [DataMember] public virtual string? Status { get; set; } + + [DataMember] + public virtual List? Warnings { get; set; } } [DataContract] @@ -7400,6 +7750,12 @@ public partial class SchedulerTaskDto [DataMember] public virtual long? UpdatedAtUnix { get; set; } + [DataMember] + public virtual long? EndsAtUnix { get; set; } + + [DataMember] + public virtual bool HasEnded { get; set; } + [DataMember] public virtual bool IsFailing { get; set; } @@ -7438,6 +7794,12 @@ public partial class SchedulerTaskListProjection [DataMember] public virtual long? LastFailedAtUnix { get; set; } + [DataMember] + public virtual long? EndsAtUnix { get; set; } + + [DataMember] + public virtual bool HasEnded { get; set; } + [DataMember] public virtual string ViewId { get; set; } } @@ -8558,6 +8920,21 @@ public partial class RotateAiServiceUserKeyRequest public virtual string? RevokeKeyId { get; set; } } + [NorbixRoute("/{version}/account/ai/service-users/{Id}", "PUT")] + public partial class UpdateAiServiceUserRequest + : RequestBase, INorbixRequest + { + /// + ///The service user id (aisu_…). + /// + public virtual string Id { get; set; } + + /// + ///The new name, unique in the account, e.g. "Claude Code on my laptop". + /// + public virtual string Name { get; set; } + } + [NorbixRoute("/{version}/account/licensing/status", "GET")] public partial class GetInstallationLicenseStatus : RequestBase, INorbixRequest @@ -9599,7 +9976,7 @@ public partial class UpdateProjectAdminUrl : CodeMashRequestBase, INorbixRequest { /// - ///Custom admin-portal URL to use instead of the canonical address. Null/empty restores the canonical pr_{id}.admin.{host} address. + ///Custom admin-portal URL to use instead of the canonical address. Null/empty restores the canonical pr-{project hex}.admin.{host} address. /// public virtual string? Url { get; set; } } @@ -9703,7 +10080,7 @@ public partial class UpdateProjectAllowedOrigins public virtual HashSet? Origins { get; set; } /// - ///Optional. true removes the project's own Admin Portal origin (pr_{projectId}.{admin host}) on purpose. Without it, a list that drops that origin is rejected with CM-ERRORS-PROJECTS-037, because the Norbix-generated end-user portal could no longer call the project's API. + ///Optional. true removes the project's own Admin Portal origin (pr-{project hex}.{admin host}) on purpose. Without it, a list that drops that origin is rejected with CM-ERRORS-PROJECTS-037, because the Norbix-generated end-user portal could no longer call the project's API. /// public virtual bool? RemoveAdminPortalOrigin { get; set; } } @@ -10165,6 +10542,27 @@ public partial class GetAgentOnboardingResponse public virtual List? Snippets { get; set; } } + /// + ///The AI project-context summary: the projects the caller may work on, with their settings — never a secret. + /// + [NorbixRoute("/{version}/account/ai/context", "GET")] + public partial class GetAiContextRequest + : RequestBase, INorbixRequest + { + public virtual string? ProjectId { get; set; } + public virtual string? Format { get; set; } + public virtual string? KnownVersion { get; set; } + } + + public partial class GetAiContextResponse + : ResponseBase + { + public virtual string? Version { get; set; } + public virtual bool Unchanged { get; set; } + public virtual AiProjectContextWireDto? Context { get; set; } + public virtual string? Markdown { get; set; } + } + /// ///Lists the AI tools this host exposes (external-agent bridge). /// @@ -10540,6 +10938,7 @@ public partial class ValidateSchemaResponse public virtual bool Valid { get; set; } public virtual List? Issues { get; set; } public virtual List? Collections { get; set; } + public virtual List? Warnings { get; set; } } public partial class AnthropicLlmIntegrationRequest @@ -10987,7 +11386,7 @@ public partial class AuthDeviceConsentResponse /// [NorbixRoute("/{version}/auth/device/start", "POST")] public partial class AuthDeviceStartRequest - : RequestBase, INorbixRequest, INorbixOptionalAuth + : RequestBase, INorbixRequest, INoSessionCookies, INorbixOptionalAuth { /// ///Who asks, shown on the dashboard, e.g. "norbix-cli". 1–80 printable characters. @@ -11021,7 +11420,7 @@ public partial class AuthDeviceStartResponse /// [NorbixRoute("/{version}/auth/device/token", "POST")] public partial class AuthDeviceTokenRequest - : RequestBase, INorbixRequest, INorbixOptionalAuth + : RequestBase, INorbixRequest, INoSessionCookies, INorbixOptionalAuth { /// ///The deviceCode from POST /auth/device/start. @@ -11053,7 +11452,7 @@ public partial class AuthDeviceTokenResponse [NorbixRoute("/.well-known/oauth-authorization-server", "GET")] [NorbixRoute("/.well-known/oauth-authorization-server/{Path*}", "GET")] public partial class OAuthAuthorizationServerMetadataRequest - : INorbixRequest, INorbixOptionalAuth + : INorbixRequest, INoSessionCookies, INorbixOptionalAuth { public virtual string? Path { get; set; } } @@ -11063,7 +11462,7 @@ public partial class OAuthAuthorizationServerMetadataRequest /// [NorbixRoute("/{version}/oauth/authorize", "GET")] public partial class OAuthAuthorizeRequest - : INorbixRequest, INorbixOptionalAuth + : INorbixRequest, INoSessionCookies, INorbixOptionalAuth { public virtual string? Version { get; set; } } @@ -11208,7 +11607,7 @@ public partial class OAuthConsentResponse [NorbixRoute("/.well-known/oauth-protected-resource", "GET")] [NorbixRoute("/.well-known/oauth-protected-resource/{Path*}", "GET")] public partial class OAuthProtectedResourceMetadataRequest - : INorbixRequest, INorbixOptionalAuth + : INorbixRequest, INoSessionCookies, INorbixOptionalAuth { public virtual string? Path { get; set; } } @@ -11218,7 +11617,7 @@ public partial class OAuthProtectedResourceMetadataRequest /// [NorbixRoute("/{version}/oauth/register", "POST")] public partial class OAuthRegisterRequest - : INorbixRequest, INorbixOptionalAuth + : INorbixRequest, INoSessionCookies, INorbixOptionalAuth { public virtual string? Version { get; set; } public virtual Stream RequestStream { get; set; } @@ -11229,7 +11628,7 @@ public partial class OAuthRegisterRequest /// [NorbixRoute("/{version}/oauth/revoke", "POST")] public partial class OAuthRevokeRequest - : INorbixRequest, INorbixOptionalAuth + : INorbixRequest, INoSessionCookies, INorbixOptionalAuth { public virtual string? Version { get; set; } } @@ -11239,7 +11638,7 @@ public partial class OAuthRevokeRequest /// [NorbixRoute("/{version}/oauth/token", "POST")] public partial class OAuthTokenRequest - : INorbixRequest, INorbixOptionalAuth + : INorbixRequest, INoSessionCookies, INorbixOptionalAuth { public virtual string? Version { get; set; } } @@ -12412,6 +12811,36 @@ public partial class GetAllContacts ///How many contacts to return per page (default 50). /// public virtual int? PageSize { get; set; } + + /// + ///Free text, case-insensitive: matches the email, phone, display / first / last / full name, or any login's user name or email. + /// + public virtual string? Search { get; set; } + + /// + ///Case-insensitive part of the email (primary email or any login's email). + /// + public virtual string? Email { get; set; } + + /// + ///Case-insensitive part of any login's user name. + /// + public virtual string? UserName { get; set; } + + /// + ///Login status names, any of: Registered, PendingValidation, Active, Unregistered, Suspended, InActive, Blocked. + /// + public virtual string[]? Statuses { get; set; } + + /// + ///Login type names, any of: Service, Email, UserName, Phone, Guest, Social. + /// + public virtual string[]? Types { get; set; } + + /// + ///Composite project-role ids (pr_{project}_nr_{role}); the contact holds any of them. + /// + public virtual string[]? RoleNames { get; set; } } public partial class GetAllContactsResponse @@ -12429,7 +12858,7 @@ public partial class GetContact : CodeMashRequestBase, INorbixRequest { /// - ///The contact id (ct_…) to fetch. Get it from get_all_contacts. + ///The contact id (ct_…) to fetch, or a login id (usr_…) — then the contact that owns that login is returned. Get it from get_all_contacts. /// public virtual string ContactId { get; set; } } @@ -14123,7 +14552,7 @@ public partial class DeleteDatabaseTaxonomyTermRequest : CodeMashRequestBase, INorbixRequest { /// - ///Taxonomy id that owns the term, from get_database_taxonomies. + ///Taxonomy id that owns the term, from get_database_taxonomies — or the taxonomy name (slug or title). /// [DataMember] public virtual string TaxonomyId { get; set; } @@ -14150,7 +14579,7 @@ public partial class DeleteManyDatabaseTaxonomyTermsRequest : CodeMashRequestBase, INorbixRequest { /// - ///Taxonomy id whose terms to delete, from get_database_taxonomies. + ///Taxonomy id whose terms to delete, from get_database_taxonomies — or the taxonomy name (slug or title). /// [DataMember] public virtual string TaxonomyId { get; set; } @@ -14183,7 +14612,7 @@ public partial class GetDatabaseMergedTermTreeRequest public virtual bool AllLanguages { get; set; } /// - ///Root taxonomy slug/name (from get_database_taxonomies). Its terms are the roots; child-taxonomy terms nest under them. + ///Root taxonomy slug/name or id, txn_… (from get_database_taxonomies). Its terms are the roots; child-taxonomy terms nest under them. /// [DataMember] public virtual string TaxonomyName { get; set; } @@ -14216,7 +14645,7 @@ public partial class GetDatabaseTaxonomyTermRequest public virtual bool AllLanguages { get; set; } /// - ///Taxonomy id from get_database_taxonomies. + ///Taxonomy id from get_database_taxonomies — or the taxonomy name (slug or title). /// [DataMember] public virtual string TaxonomyId { get; set; } @@ -14255,7 +14684,7 @@ public partial class GetDatabaseTaxonomyTermTreeRequest public virtual bool AllLanguages { get; set; } /// - ///Taxonomy slug/name to fetch the term tree for, from get_database_taxonomies. + ///Taxonomy slug/name (or its id, txn_…) to fetch the term tree for, from get_database_taxonomies. /// [DataMember] public virtual string TaxonomyName { get; set; } @@ -14294,7 +14723,7 @@ public partial class SaveDatabaseTaxonomyTermRequest : CodeMashRequestBase, INorbixRequest { /// - ///Taxonomy id to insert the term into, from get_database_taxonomies. + ///Taxonomy id to insert the term into, from get_database_taxonomies — or the taxonomy name (slug or title). /// [DataMember] public virtual string TaxonomyId { get; set; } @@ -14321,7 +14750,7 @@ public partial class UpdateDatabaseTaxonomyTermRequest : CodeMashRequestBase, INorbixRequest { /// - ///Taxonomy id that owns the term, from get_database_taxonomies. + ///Taxonomy id that owns the term, from get_database_taxonomies — or the taxonomy name (slug or title). /// [DataMember] public virtual string TaxonomyId { get; set; } @@ -16459,11 +16888,31 @@ public partial class GetAuthorizationSettingsResponse public partial class UpdateAuthorizationSettings : CodeMashRequestBase, INorbixRequest { + /// + ///Single-setting change (dashboard tabs), e.g. 'DefaultRegisterRole' with userRegistersAsRole, or 'PasswordComplexity'. Unknown values are refused. Leave empty to change defaultRoles / allowedRegistrationRoles / allowGuestUsers / guestCleanupPeriodDays — only the fields you send change. + /// public virtual string? Setting { get; set; } + + /// + ///Role names given to a user who registers without naming roles. Omit = keep; [] = none. + /// public virtual List? DefaultRoles { get; set; } + + /// + ///Role names a user may pick when registering. Omit = keep; [] = none. + /// public virtual List? AllowedRegistrationRoles { get; set; } - public virtual bool AllowGuestUsers { get; set; } + + /// + ///Whether guest (anonymous) users may be created. Omit = keep. When sent, guestCleanupPeriodDays is taken with it (null = never clean up). + /// + public virtual bool? AllowGuestUsers { get; set; } + + /// + ///Days after which inactive guests are removed; null or 0 = never. Omit both guest fields = keep. + /// public virtual int? GuestCleanupPeriodDays { get; set; } + public virtual string? UserRegistersAsRole { get; set; } public virtual string? GuestRegistersAsRole { get; set; } public virtual List? AllowedRegisterRoles { get; set; } @@ -16477,6 +16926,21 @@ public partial class UpdateAuthorizationSettings public virtual int? EmailVerificationExpiration { get; set; } public virtual int? DeactivationExpiration { get; set; } public virtual bool DefaultSubscribeToNews { get; set; } + /// + ///"Email registration": the public register/email route accepts sign-ups. Omit = keep. + /// + public virtual bool? AllowEmailRegistration { get; set; } + + /// + ///"Invite-only": public sign-up (email and username) is refused; only invitations create users. Omit = keep. + /// + public virtual bool? InviteOnly { get; set; } + + /// + ///"Allow anyone to sign up": grants (true) / revokes (false) membership:register on the project's Guest role. Omit = keep. + /// + public virtual bool? AllowAnyoneToSignUp { get; set; } + public virtual int MinLength { get; set; } public virtual int? MaxLength { get; set; } public virtual int? MinNumbers { get; set; } @@ -17015,6 +17479,164 @@ public partial class SaveMembershipTrigger { } + [DataContract] + public partial class ImportUserErrorDto + { + [DataMember(Name="code")] + public virtual string? Code { get; set; } + + [DataMember(Name="message")] + public virtual string Message { get; set; } + } + + [DataContract] + public partial class ImportUserOutcomeDto + { + [DataMember(Name="row")] + public virtual int Row { get; set; } + + [DataMember(Name="login")] + public virtual string? Login { get; set; } + + [DataMember(Name="outcome")] + public virtual string Outcome { get; set; } + + [DataMember(Name="userId")] + public virtual string? UserId { get; set; } + + [DataMember(Name="errors")] + public virtual List Errors { get; set; } = []; + } + + [DataContract] + public partial class ImportUserRowDto + { + [DataMember(Name="email")] + public virtual string? Email { get; set; } + + [DataMember(Name="userName")] + public virtual string? UserName { get; set; } + + [DataMember(Name="userGeneralInfo")] + public virtual UserGeneralInfoDto? UserGeneralInfo { get; set; } + + [DataMember(Name="roles")] + public virtual List? Roles { get; set; } + + [DataMember(Name="createdOn")] + public virtual long? CreatedOn { get; set; } + + [DataMember(Name="hashFormat")] + public virtual string? HashFormat { get; set; } + + [DataMember(Name="passwordHash")] + public virtual string? PasswordHash { get; set; } + + [DataMember(Name="passwordSalt")] + public virtual string? PasswordSalt { get; set; } + } + + /// + ///Import users with their existing password hashes + /// + [NorbixRoute("/{version}/membership/users/import", "POST")] + public partial class ImportUsersRequest + : CodeMashRequestBase, INorbixRequest + { + /// + ///True (default) = check every row and write nothing. False = write. + /// + public virtual bool DryRun { get; set; } + + /// + ///True = do not add the project's default roles (as 'ignoreUserRegistersAsRole' on registration). + /// + public virtual bool IgnoreDefaultRoles { get; set; } + + /// + ///The users to import, 1 to 1000 per request. + /// + public virtual List Users { get; set; } = []; + } + + public partial class ImportUsersResponse + : ResponseBase + { + public virtual UsersImportDto? Result { get; set; } + } + + [DataContract] + public partial class LoginProjectRepairDto + { + [DataMember(Name="dryRun")] + public virtual bool DryRun { get; set; } + + [DataMember(Name="loginsWithoutProject")] + public virtual int LoginsWithoutProject { get; set; } + + [DataMember(Name="loginsToRepair")] + public virtual int LoginsToRepair { get; set; } + + [DataMember(Name="loginsRepaired")] + public virtual int LoginsRepaired { get; set; } + + [DataMember(Name="accountLoginsSkipped")] + public virtual int AccountLoginsSkipped { get; set; } + + [DataMember(Name="otherProjectLoginsSkipped")] + public virtual int OtherProjectLoginsSkipped { get; set; } + + [DataMember(Name="loginsWithoutEvidence")] + public virtual int LoginsWithoutEvidence { get; set; } + } + + /// + ///Repair project logins stored without a project id + /// + [NorbixRoute("/{version}/membership/users/repair-logins", "POST")] + public partial class RepairLoginProjectIdsRequest + : CodeMashRequestBase, INorbixRequest + { + /// + ///True (default) = only count what would change. False = write. + /// + public virtual bool DryRun { get; set; } + } + + public partial class RepairLoginProjectIdsResponse + : ResponseBase + { + public virtual LoginProjectRepairDto? Result { get; set; } + } + + [DataContract] + public partial class UsersImportDto + { + [DataMember(Name="dryRun")] + public virtual bool DryRun { get; set; } + + [DataMember(Name="received")] + public virtual int Received { get; set; } + + [DataMember(Name="imported")] + public virtual int Imported { get; set; } + + [DataMember(Name="valid")] + public virtual int Valid { get; set; } + + [DataMember(Name="existing")] + public virtual int Existing { get; set; } + + [DataMember(Name="invalid")] + public virtual int Invalid { get; set; } + + [DataMember(Name="failed")] + public virtual int Failed { get; set; } + + [DataMember(Name="rows")] + public virtual List Rows { get; set; } = []; + } + /// ///Membership /// @@ -17078,6 +17700,55 @@ public partial class ListServiceUserApiKeysRequest public virtual string Id { get; set; } } + [NorbixRoute("/{version}/notifications/inbox", "GET")] + public partial class GetNotificationInboxRequest + : CodeMashListPaginationRequestBase, INorbixRequest + { + public virtual bool UnreadOnly { get; set; } + public virtual string? Channel { get; set; } + } + + public partial class GetNotificationInboxResponse + : ResponseBase + { + public virtual PaginatedResponse? List { get; set; } + } + + [NorbixRoute("/{version}/notifications/inbox/unread-count", "GET")] + public partial class GetUnreadCountRequest + : CodeMashRequestBase, INorbixRequest + { + } + + public partial class GetUnreadCountResponse + : ResponseBase + { + public virtual long Count { get; set; } + } + + [NorbixRoute("/{version}/notifications/inbox/read-all", "POST")] + public partial class MarkAllNotificationsReadRequest + : CodeMashRequestBase, INorbixRequest + { + } + + public partial class MarkAllNotificationsReadResponse + : ResponseBase + { + } + + [NorbixRoute("/{version}/notifications/inbox/{notificationId}/read", "POST")] + public partial class MarkNotificationReadRequest + : CodeMashRequestBase, INorbixRequest + { + public virtual string NotificationId { get; set; } + } + + public partial class MarkNotificationReadResponse + : ResponseBase + { + } + /// ///Disable payments service /// @@ -17121,6 +17792,36 @@ public partial class AppleInAppPaymentIntegrationRequest public virtual string? WebhookBundleId { get; set; } } + public partial class AuthorizeNetPaymentIntegrationRequest + : PaymentIntegrationRequest + { + public virtual PaymentGatewayPlatform Provider { get; set; } + public virtual string MerchantLoginId { get; set; } + public virtual string Environment { get; set; } + public virtual string TransactionKey { get; set; } + public virtual string? WebhookSignatureKey { get; set; } + } + + public partial class BraintreePaymentIntegrationRequest + : PaymentIntegrationRequest + { + public virtual PaymentGatewayPlatform Provider { get; set; } + public virtual string MerchantId { get; set; } + public virtual string Environment { get; set; } + public virtual string PrivateKey { get; set; } + public virtual string? WebhookSecret { get; set; } + } + + public partial class CheckOutComPaymentIntegrationRequest + : PaymentIntegrationRequest + { + public virtual PaymentGatewayPlatform Provider { get; set; } + public virtual string MerchantAccount { get; set; } + public virtual string Environment { get; set; } + public virtual string SecretKey { get; set; } + public virtual string? WebhookSecret { get; set; } + } + /// ///Confirm that you received or verified the test payment integration outcome. /// @@ -17231,6 +17932,14 @@ public partial class LemonSqueezyPaymentIntegrationRequest public virtual bool IsTestMode { get; set; } } + public partial class MagentoPaymentIntegrationRequest + : PaymentIntegrationRequest + { + public virtual PaymentGatewayPlatform Provider { get; set; } + public virtual string StoreUrl { get; set; } + public virtual string WebhookSecret { get; set; } + } + public partial class MolliePaymentIntegrationRequest : PaymentIntegrationRequest { @@ -17241,6 +17950,16 @@ public partial class MolliePaymentIntegrationRequest public virtual string? WebhookSigningSecret { get; set; } } + public partial class MontonioPaymentIntegrationRequest + : PaymentIntegrationRequest + { + public virtual PaymentGatewayPlatform Provider { get; set; } + public virtual string AccessKey { get; set; } + public virtual string SecretKey { get; set; } + public virtual bool IsSandbox { get; set; } + public virtual string? Locale { get; set; } + } + public partial class PaddlePaymentIntegrationRequest : PaymentIntegrationRequest { @@ -17282,6 +18001,14 @@ public partial class SavePaymentsIntegration public virtual PaymentIntegrationRequest Integration { get; set; } } + public partial class ShopifyPaymentIntegrationRequest + : PaymentIntegrationRequest + { + public virtual PaymentGatewayPlatform Provider { get; set; } + public virtual string ShopDomain { get; set; } + public virtual string WebhookSecret { get; set; } + } + public partial class StripePaymentIntegrationRequest : PaymentIntegrationRequest { @@ -17306,6 +18033,24 @@ public partial class TestPaymentsIntegration public virtual string IntegrationId { get; set; } } + public partial class WooCommercePaymentIntegrationRequest + : PaymentIntegrationRequest + { + public virtual PaymentGatewayPlatform Provider { get; set; } + public virtual string StoreUrl { get; set; } + public virtual string WebhookSecret { get; set; } + } + + public partial class WorldpayPaymentIntegrationRequest + : PaymentIntegrationRequest + { + public virtual PaymentGatewayPlatform Provider { get; set; } + public virtual string MerchantCode { get; set; } + public virtual string Environment { get; set; } + public virtual string ApiKey { get; set; } + public virtual string? WebhookSecret { get; set; } + } + /// ///Delete payments trigger /// @@ -17809,6 +18554,7 @@ public partial class GetPushDevicesResponse : ResponseBase { public virtual PaginatedResponse? List { get; set; } + public virtual List TeamDevices { get; set; } = []; } /// @@ -18094,7 +18840,7 @@ public partial class TestPushIntegration public virtual string IntegrationId { get; set; } /// - ///The device token the test is sent to — a device registered for the person receiving the test (get it from get_push_devices). Required for every real provider (only the Fake integration tests without one). For a web device it is the browser subscription JSON. Requires DeliveryFamily. + ///The device token the test is sent to — a device registered for the person receiving the test (get it from get_push_devices). Required for every real provider (only the Sandbox integration tests without one). For a web device it is the browser subscription JSON. Requires DeliveryFamily. /// [DataMember] public virtual string? TestToken { get; set; } @@ -18483,6 +19229,9 @@ public partial class SaveSchedulerTaskRequest [DataMember] public virtual bool StopOnError { get; set; } + [DataMember] + public virtual long? EndsAtUnix { get; set; } + [DataMember] public virtual SchedulerTaskRequest Task { get; set; } } @@ -19402,6 +20151,41 @@ public partial class GetTrigger public virtual string? SchemaId { get; set; } } + /// + ///Get one trigger in the shape its save takes (read → change → save) + /// + [NorbixRoute("/{version}/triggers/{id}/definition", "GET")] + [DataContract] + public partial class GetTriggerDefinition + : CodeMashRequestBase, INorbixRequest + { + /// + ///The trigger id (trg_…). + /// + [DataMember] + public virtual string Id { get; set; } + + /// + ///Which module the trigger belongs to: Schema, Membership, Files, Payments or Ai. + /// + [DataMember] + public virtual TriggerType TriggerType { get; set; } + + /// + ///The collection (schema) id the trigger watches. Required for Schema triggers. + /// + [DataMember] + public virtual string? SchemaId { get; set; } + } + + [DataContract] + public partial class GetTriggerDefinitionResponse + : ResponseBase + { + [DataMember] + public virtual SaveTriggerRequest? Trigger { get; set; } + } + public partial class GetTriggerResponse : ResponseBase { @@ -19490,6 +20274,65 @@ public partial class SchemaTriggerRequest public virtual string? ConfigurationCode { get; set; } } + /// + ///Test a trigger's pre-action code against a sample record + /// + [NorbixRoute("/{version}/triggers/pre-execute-code/test", "POST")] + [DataContract] + public partial class TestTriggerPreExecuteCode + : CodeMashRequestBase, INorbixRequest + { + /// + ///The code to test, as saved in preExecuteCode: C# statements ending in 'return true;' or 'return false;', e.g. 'return New.status == "published";'. + /// + [DataMember] + public virtual string Code { get; set; } + + /// + ///Which kind of trigger the code is for: Schema, Membership, Files, Payments or Ai. + /// + [DataMember] + public virtual TriggerType TriggerType { get; set; } + + /// + ///The sample record AFTER the change (the code's New), as a JSON object. Omit = empty (a delete). + /// + [DataMember] + public virtual string? NewRecord { get; set; } + + /// + ///The sample record BEFORE the change (the code's Old), as a JSON object. Omit = empty (an insert). + /// + [DataMember] + public virtual string? OldRecord { get; set; } + + /// + ///What the code sees as Event.Kind: Inserted, Updated, Deleted or Other. Omit = Updated when both records are given, Inserted when only newRecord, Deleted when only oldRecord. + /// + [DataMember] + public virtual string? EventKind { get; set; } + + /// + ///What the code sees as Event.Name, e.g. database.record.updated. Optional. + /// + [DataMember] + public virtual string? EventName { get; set; } + } + + [DataContract] + public partial class TestTriggerPreExecuteCodeResponse + : ResponseBase + { + [DataMember] + public virtual string Outcome { get; set; } + + [DataMember] + public virtual bool TriggerRuns { get; set; } + + [DataMember] + public virtual List Problems { get; set; } = []; + } + [NorbixRoute("/{version}/webhooks/destinations/{DestinationId}/disable", "PUT")] public partial class DisableWebhookDestinationRequest : CodeMashRequestBase, INorbixRequest @@ -19620,6 +20463,31 @@ public partial class UpdateWebhookIntegrationExtraHeadersRequest public virtual Dictionary? ExtraHeaders { get; set; } } + public partial class SharedTypeGen + { + public virtual StringFieldDto? Typegen_StringFieldDto { get; set; } + public virtual DecimalFieldDto? Typegen_DecimalFieldDto { get; set; } + public virtual CurrencyFieldDto? Typegen_CurrencyFieldDto { get; set; } + public virtual BooleanFieldDto? Typegen_BooleanFieldDto { get; set; } + public virtual DateFieldDto? Typegen_DateFieldDto { get; set; } + public virtual IntegerFieldDto? Typegen_IntegerFieldDto { get; set; } + public virtual GeolocationFieldDto? Typegen_GeolocationFieldDto { get; set; } + public virtual TagsFieldDto? Typegen_TagsFieldDto { get; set; } + public virtual FileFieldDto? Typegen_FileFieldDto { get; set; } + public virtual TaxonomySelectionFieldDto? Typegen_TaxonomySelectionFieldDto { get; set; } + public virtual CollectionSelectionFieldDto? Typegen_CollectionSelectionFieldDto { get; set; } + public virtual UserSelectionFieldDto? Typegen_UserSelectionFieldDto { get; set; } + public virtual RoleSelectionFieldDto? Typegen_RoleSelectionFieldDto { get; set; } + public virtual EnumSelectionFieldDto? Typegen_EnumSelectionFieldDto { get; set; } + public virtual ObjectFieldDto? Typegen_ObjectFieldDto { get; set; } + public virtual ArrayFieldDto? Typegen_ArrayFieldDto { get; set; } + public virtual JsonFieldDto? Typegen_JsonFieldDto { get; set; } + } + + public partial interface INoSessionCookies + { + } + [NorbixRoute("/{version}/echo", "GET")] public partial class Echo : RequestBase, INorbixRequest, INorbixOptionalAuth @@ -19920,6 +20788,20 @@ public partial interface IHasViewId string ViewId { get; set; } } + public partial class InAppNotificationDto + { + public virtual string Id { get; set; } + public virtual string ProjectId { get; set; } + public virtual string UserId { get; set; } + public virtual string Channel { get; set; } + public virtual string EventName { get; set; } + public virtual string? PayloadJson { get; set; } + public virtual bool IsRead { get; set; } + public virtual DateTime? SeenAtUtc { get; set; } + public virtual DateTime? ReadAtUtc { get; set; } + public virtual DateTime CreatedAtUtc { get; set; } + } + [DataContract] public enum CodeMashRelease { @@ -19941,6 +20823,7 @@ public enum AuthStatus { Registered = 0, PendingValidation = 2, + Invited = 4, Active = 8, Unregistered = 16, Suspended = 32, diff --git a/tests/Norbix.Hub.Tests/CodeFunctionEventTests.cs b/tests/Norbix.Hub.Tests/CodeFunctionEventTests.cs index 1dae6ef..fc4d8fa 100644 --- a/tests/Norbix.Hub.Tests/CodeFunctionEventTests.cs +++ b/tests/Norbix.Hub.Tests/CodeFunctionEventTests.cs @@ -99,6 +99,7 @@ private static object Describe(CodeFunctionEvent evt) => User = evt.Data.User is not null, File = evt.Data.File is not null, Payment = evt.Data.Payment is not null, + Order = evt.Data.Order is not null, Ai = evt.Data.Ai is not null, Task = evt.Data.Task is not null, Payload = evt.Data.Payload is not null, @@ -172,6 +173,28 @@ await Verifier.Verify( ); } + [Test] + public async Task Payments_order_reads_the_stored_order_and_keeps_the_callback() + { + var evt = CodeFunctionEvent.Parse(Samples.PaymentOrderPaid); + + await Verifier.Verify( + new { Envelope = Describe(evt), Order = evt.AsPaymentOrder(), Callback = evt.AsPayment() }, + VerifyConfig.VerifySettings + ); + } + + [Test] + public void A_webhook_payment_event_has_no_order_slot() + { + var evt = CodeFunctionEvent.Parse(Samples.PaymentReceived); + + var ex = Assert.Throws(() => evt.AsPaymentOrder()); + + Assert.That(ex!.Message, Is.EqualTo( + "AsPaymentOrder() needs data.order, but this 'payments.webhook.received' event (source 'payments') carries no such slot.")); + } + [Test] public async Task Ai_reads_the_usage_event() { @@ -488,6 +511,83 @@ private static class Samples } """; + public const string PaymentOrderPaid = + """ + { + "specVersion": "1", + "id": "9f1c0000-0000-4000-8000-000000000021", + "eventId": "7a2e0000-0000-4000-8000-000000000022", + "event": "payments.order.paid", + "source": "payments", + "createdOn": "2026-10-19T08:05:00Z", + "context": { + "accountId": "acc_1", + "projectId": "proj_1", + "environment": "PROD", + "hubUrl": "https://hub.example.test", + "apiUrl": "https://api.example.test", + "triggerId": "trg_3", + "correlationId": "corr-3", + "runAs": { "userId": "usr_service_1", "accessToken": "eyJ.run-as.token", "expiresAt": "2026-10-19T08:20:00Z" } + }, + "data": { + "payment": { + "integrationId": "int_montonio", + "provider": "Montonio", + "providerEventId": "order:mnt-1:PAID", + "orderId": "ord_2ToIiRM03X63TZaJ2dJdv2", + "eventName": "order.paid", + "status": "Succeeded", + "amountMinor": 630, + "currency": "EUR", + "externalIds": { "montonioOrder": "mnt-1" }, + "occurredOn": "2026-10-19T08:04:58Z", + "receivedOn": "2026-10-19T08:05:00Z" + }, + "order": { + "orderEventId": "ord_2ToIiRM03X63TZaJ2dJdv2:2", + "event": "payments.order.paid", + "from": "CheckoutStarted", + "to": "Paid", + "reason": "paid in attempt 1", + "order": { + "id": "ord_2ToIiRM03X63TZaJ2dJdv2", + "env": "PROD", + "buyerUserId": "usr_1szWVIyZFBV8HfvC4SfVw", + "merchantReference": "ad-1042-promo-1", + "currency": "EUR", + "priceVersion": "2026-10-01", + "lines": [ + { "sku": "star-day", "title": "Star × day", "quantity": 21, "unitAmountMinor": 30, "amountMinor": 630 } + ], + "totalMinor": 630, + "metadata": { "adId": "ad_1042" }, + "status": "Paid", + "createdOnUtc": "2026-10-19T08:00:00Z", + "updatedOnUtc": "2026-10-19T08:05:00Z", + "checkouts": [], + "settledMinor": 630, + "refundedMinor": 0, + "paidOnUtc": "2026-10-19T08:04:58Z", + "providerPaymentId": "mnt-1", + "mismatches": [] + }, + "payment": { + "integrationId": "int_montonio", + "provider": "Montonio", + "providerEventId": "order:mnt-1:PAID", + "orderId": "ord_2ToIiRM03X63TZaJ2dJdv2", + "eventName": "order.paid", + "status": "Succeeded", + "amountMinor": 630, + "currency": "EUR", + "receivedOn": "2026-10-19T08:05:00Z" + } + } + } + } + """; + public const string AiCreditsWarning = $$""" { diff --git a/tests/Norbix.Hub.Tests/PaymentsMontonioIntegrationTests.cs b/tests/Norbix.Hub.Tests/PaymentsMontonioIntegrationTests.cs new file mode 100644 index 0000000..cc71619 --- /dev/null +++ b/tests/Norbix.Hub.Tests/PaymentsMontonioIntegrationTests.cs @@ -0,0 +1,40 @@ +using Norbix.Sdk.Tests; +using Norbix.Sdk.Tests.Helpers; +using Norbix.Sdk.Types.Hub; +using NUnit.Framework; +using VerifyNUnit; + +namespace Norbix.Hub.Tests; + +/// +/// Saving a Montonio payment integration: the request is declared as the base +/// , so this proves the Montonio fields +/// (accessKey, secretKey, isSandbox, locale) and the +/// provider the server picks the shape by leave the client. +/// +[TestFixture] +public sealed class PaymentsMontonioIntegrationTests +{ + [Test] + public async Task SavePaymentsIntegration_sends_the_Montonio_shape() + { + using var fixture = NorbixTestFixture.Create(); + fixture.Respond("/payments/integrations", new { id = "int_montonio" }); + + var response = await fixture.Client.Payments.SavePaymentsIntegrationAsync(new SavePaymentsIntegration + { + Integration = new MontonioPaymentIntegrationRequest + { + Provider = PaymentGatewayPlatform.Montonio, + AccessKey = "test-access-key", + SecretKey = "test-secret-key", + IsSandbox = true, + Locale = "lt", + }, + }); + + await Verifier.Verify( + new { Sent = fixture.LastRequest, response?.Id }, + VerifyConfig.VerifySettings); + } +} diff --git a/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Ai_reads_the_usage_event.verified.txt b/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Ai_reads_the_usage_event.verified.txt index 1e80c88..8f9206a 100644 --- a/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Ai_reads_the_usage_event.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Ai_reads_the_usage_event.verified.txt @@ -32,6 +32,7 @@ User: false, File: false, Payment: false, + Order: false, Ai: true, Task: false, Payload: false diff --git a/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Database_update_reads_old_and_new_as_the_record_type.verified.txt b/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Database_update_reads_old_and_new_as_the_record_type.verified.txt index a65bd4a..52b6d9e 100644 --- a/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Database_update_reads_old_and_new_as_the_record_type.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Database_update_reads_old_and_new_as_the_record_type.verified.txt @@ -32,6 +32,7 @@ User: false, File: false, Payment: false, + Order: false, Ai: false, Task: false, Payload: false diff --git a/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Files_reads_the_file_change.verified.txt b/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Files_reads_the_file_change.verified.txt index 493e2c5..c4d3c45 100644 --- a/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Files_reads_the_file_change.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Files_reads_the_file_change.verified.txt @@ -32,6 +32,7 @@ User: false, File: true, Payment: false, + Order: false, Ai: false, Task: false, Payload: false diff --git a/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Manual_reads_the_payload_and_has_no_config.verified.txt b/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Manual_reads_the_payload_and_has_no_config.verified.txt index a45db9e..66435a2 100644 --- a/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Manual_reads_the_payload_and_has_no_config.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Manual_reads_the_payload_and_has_no_config.verified.txt @@ -30,6 +30,7 @@ User: false, File: false, Payment: false, + Order: false, Ai: false, Task: false, Payload: true diff --git a/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Membership_reads_the_user_change_raw_and_typed.verified.txt b/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Membership_reads_the_user_change_raw_and_typed.verified.txt index b21ecba..599d131 100644 --- a/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Membership_reads_the_user_change_raw_and_typed.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Membership_reads_the_user_change_raw_and_typed.verified.txt @@ -32,6 +32,7 @@ User: true, File: false, Payment: false, + Order: false, Ai: false, Task: false, Payload: false diff --git a/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Payments_order_reads_the_stored_order_and_keeps_the_callback.verified.txt b/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Payments_order_reads_the_stored_order_and_keeps_the_callback.verified.txt new file mode 100644 index 0000000..82bf0d1 --- /dev/null +++ b/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Payments_order_reads_the_stored_order_and_keeps_the_callback.verified.txt @@ -0,0 +1,94 @@ +{ + Envelope: { + SpecVersion: 1, + Id: Guid_1, + EventId: Guid_2, + Event: payments.order.paid, + Source: Payments, + CreatedOn: DateTimeOffset_1, + Context: { + AccountId: acc_1, + ProjectId: proj_1, + Environment: PROD, + HubUrl: https://hub.example.test, + ApiUrl: https://api.example.test, + TriggerId: trg_3, + CorrelationId: corr-3, + RunAs: { + UserId: usr_service_1, + AccessToken: eyJ.run-as.token, + ExpiresAt: DateTimeOffset_2 + } + }, + Slots: { + Database: false, + User: false, + File: false, + Payment: true, + Order: true, + Ai: false, + Task: false, + Payload: false + } + }, + Order: { + OrderEventId: ord_2ToIiRM03X63TZaJ2dJdv2:2, + Event: payments.order.paid, + From: CheckoutStarted, + To: Paid, + Reason: paid in attempt 1, + Order: { + Id: ord_2ToIiRM03X63TZaJ2dJdv2, + Env: PROD, + BuyerUserId: usr_1szWVIyZFBV8HfvC4SfVw, + MerchantReference: ad-1042-promo-1, + Currency: EUR, + PriceVersion: 2026-10-01, + Lines: [ + { + Sku: star-day, + Title: Star × day, + Quantity: 21, + UnitAmountMinor: 30, + AmountMinor: 630 + } + ], + TotalMinor: 630, + Metadata: { + adId: ad_1042 + }, + Status: Paid, + CreatedOnUtc: DateTime_1, + UpdatedOnUtc: DateTime_2, + SettledMinor: 630, + PaidOnUtc: DateTime_3, + ProviderPaymentId: mnt-1 + }, + Payment: { + IntegrationId: int_montonio, + Provider: Montonio, + ProviderEventId: order:mnt-1:PAID, + OrderId: ord_2ToIiRM03X63TZaJ2dJdv2, + EventName: order.paid, + Status: Succeeded, + AmountMinor: 630, + Currency: EUR, + ReceivedOn: DateTime_2 + } + }, + Callback: { + IntegrationId: int_montonio, + Provider: Montonio, + ProviderEventId: order:mnt-1:PAID, + OrderId: ord_2ToIiRM03X63TZaJ2dJdv2, + EventName: order.paid, + Status: Succeeded, + AmountMinor: 630, + Currency: EUR, + ExternalIds: { + montonioOrder: mnt-1 + }, + OccurredOn: DateTimeOffset_3, + ReceivedOn: DateTimeOffset_1 + } +} \ No newline at end of file diff --git a/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Payments_reads_the_webhook_fact_with_no_caller.verified.txt b/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Payments_reads_the_webhook_fact_with_no_caller.verified.txt index ff90859..8108f09 100644 --- a/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Payments_reads_the_webhook_fact_with_no_caller.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Payments_reads_the_webhook_fact_with_no_caller.verified.txt @@ -26,6 +26,7 @@ User: false, File: false, Payment: true, + Order: false, Ai: false, Task: false, Payload: false diff --git a/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Scheduler_reads_the_task_and_its_static_payload.verified.txt b/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Scheduler_reads_the_task_and_its_static_payload.verified.txt index af143da..60b6659 100644 --- a/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Scheduler_reads_the_task_and_its_static_payload.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/CodeFunctionEventTests.Scheduler_reads_the_task_and_its_static_payload.verified.txt @@ -30,6 +30,7 @@ User: false, File: false, Payment: false, + Order: false, Ai: false, Task: true, Payload: true diff --git a/tests/Norbix.Hub.Tests/test_results/EmailEndpointTests.CreateEmailCampaignAsync.verified.txt b/tests/Norbix.Hub.Tests/test_results/EmailEndpointTests.CreateEmailCampaignAsync.verified.txt index 49f0553..b27d1a0 100644 --- a/tests/Norbix.Hub.Tests/test_results/EmailEndpointTests.CreateEmailCampaignAsync.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/EmailEndpointTests.CreateEmailCampaignAsync.verified.txt @@ -35,6 +35,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Hub.Tests/test_results/EmailEndpointTests.CreateEmailTemplateAsync.verified.txt b/tests/Norbix.Hub.Tests/test_results/EmailEndpointTests.CreateEmailTemplateAsync.verified.txt index 20269c5..ff5f6d1 100644 --- a/tests/Norbix.Hub.Tests/test_results/EmailEndpointTests.CreateEmailTemplateAsync.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/EmailEndpointTests.CreateEmailTemplateAsync.verified.txt @@ -27,6 +27,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Hub.Tests/test_results/EmailEndpointTests.GetEmailCampaignBatchNotificationAsync.verified.txt b/tests/Norbix.Hub.Tests/test_results/EmailEndpointTests.GetEmailCampaignBatchNotificationAsync.verified.txt index a7b7256..6486691 100644 --- a/tests/Norbix.Hub.Tests/test_results/EmailEndpointTests.GetEmailCampaignBatchNotificationAsync.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/EmailEndpointTests.GetEmailCampaignBatchNotificationAsync.verified.txt @@ -30,11 +30,11 @@ HasMore: false }, Content: {}, + TransactionalKind: test-transactionalKind, CampaignId: Guid_1, BatchId: Guid_1, NotificationId: Guid_1, - RefNotificationId: Guid_1, - Body: test-body + RefNotificationId: Guid_1 }, ResponseStatus: { IsSuccess: true diff --git a/tests/Norbix.Hub.Tests/test_results/EmailEndpointTests.SaveEmailFooterAsync.verified.txt b/tests/Norbix.Hub.Tests/test_results/EmailEndpointTests.SaveEmailFooterAsync.verified.txt index 31e27ea..e50f552 100644 --- a/tests/Norbix.Hub.Tests/test_results/EmailEndpointTests.SaveEmailFooterAsync.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/EmailEndpointTests.SaveEmailFooterAsync.verified.txt @@ -26,6 +26,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Hub.Tests/test_results/EmailEndpointTests.SaveEmailIntegrationAsync.verified.txt b/tests/Norbix.Hub.Tests/test_results/EmailEndpointTests.SaveEmailIntegrationAsync.verified.txt index 00c6ff4..ec03e4d 100644 --- a/tests/Norbix.Hub.Tests/test_results/EmailEndpointTests.SaveEmailIntegrationAsync.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/EmailEndpointTests.SaveEmailIntegrationAsync.verified.txt @@ -32,6 +32,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Hub.Tests/test_results/EmailEndpointTests.SaveEmailSignatureAsync.verified.txt b/tests/Norbix.Hub.Tests/test_results/EmailEndpointTests.SaveEmailSignatureAsync.verified.txt index 7e69870..017ed13 100644 --- a/tests/Norbix.Hub.Tests/test_results/EmailEndpointTests.SaveEmailSignatureAsync.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/EmailEndpointTests.SaveEmailSignatureAsync.verified.txt @@ -26,6 +26,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Hub.Tests/test_results/EmailEndpointTests.SaveEmailValidationIntegrationAsync.verified.txt b/tests/Norbix.Hub.Tests/test_results/EmailEndpointTests.SaveEmailValidationIntegrationAsync.verified.txt index aeb2ade..07f2e26 100644 --- a/tests/Norbix.Hub.Tests/test_results/EmailEndpointTests.SaveEmailValidationIntegrationAsync.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/EmailEndpointTests.SaveEmailValidationIntegrationAsync.verified.txt @@ -30,6 +30,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Account.verified.txt b/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Account.verified.txt index 502b658..7ffa337 100644 --- a/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Account.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Account.verified.txt @@ -1,7 +1,7 @@ { Target: Hub, Group: account, - Count: 120, + Count: 122, Endpoints: [ { Target: Hub, @@ -35,6 +35,9 @@ NoTrialReason: test-noTrialReason, Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -68,6 +71,9 @@ Token: test-token, Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -206,6 +212,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -325,6 +334,9 @@ Token: test-token, Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -487,6 +499,38 @@ } } }, + { + Target: Hub, + Group: account, + MethodName: UpdateAiServiceUserAsync, + RequestType: UpdateAiServiceUserRequest, + HttpMethod: PUT, + Path: /{version}/account/ai/service-users/{Id}, + PathParams: [ + Id + ], + IsAccountScoped: false, + IsUnauthenticated: false, + Sent: { + Method: PUT, + Path: /v2/account/ai/service-users/{guid}, + Headers: { + Authorization: Bearer test-bearer, + Content-Type: application/json; charset=utf-8, + norbix-account-id: test-account, + norbix-project-id: test-project + }, + Body: { + name: test-name + } + }, + ResponseType: EmptyResponse, + Response: { + ResponseStatus: { + IsSuccess: true + } + } + }, { Target: Hub, Group: account, @@ -1083,6 +1127,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1116,6 +1163,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1148,6 +1198,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1182,6 +1235,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1212,6 +1268,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1242,6 +1301,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1435,6 +1497,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1468,6 +1533,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1543,6 +1611,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1786,8 +1857,13 @@ Blockers: [ {} ], - FromVersion: 42, - WasDryRun: true + TermChanges: [ + {} + ], + Warnings: [ + {} + ], + WasDryRun: false }, ResponseStatus: { IsSuccess: true @@ -1839,8 +1915,13 @@ Blockers: [ {} ], - FromVersion: 42, - WasDryRun: true + TermChanges: [ + {} + ], + Warnings: [ + {} + ], + WasDryRun: false }, ResponseStatus: { IsSuccess: true @@ -2068,6 +2149,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -3352,6 +3436,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -3473,6 +3560,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -3503,6 +3593,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -3572,6 +3665,45 @@ } } }, + { + Target: Hub, + Group: account, + MethodName: GetAiContextAsync, + RequestType: GetAiContextRequest, + HttpMethod: GET, + Path: /{version}/account/ai/context, + IsAccountScoped: false, + IsUnauthenticated: false, + Sent: { + Method: GET, + Path: /v2/account/ai/context, + Query: ?format=test-format&knownVersion=test-knownVersion, + Headers: { + Authorization: Bearer test-bearer, + norbix-account-id: test-account, + norbix-project-id: test-project + } + }, + ResponseType: GetAiContextResponse, + Response: { + Version: test-version, + Unchanged: true, + Context: { + Version: test-version, + Caller: {}, + Projects: [ + {} + ], + Hints: [ + test-string + ] + }, + Markdown: test-markdown, + ResponseStatus: { + IsSuccess: true + } + } + }, { Target: Hub, Group: account, @@ -3887,6 +4019,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -3921,6 +4056,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -3955,6 +4093,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -3989,6 +4130,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -4020,6 +4164,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -4093,6 +4240,9 @@ Collections: [ test-string ], + Warnings: [ + {} + ], ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Ai.verified.txt b/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Ai.verified.txt index 1b62bcd..9c83ba1 100644 --- a/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Ai.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Ai.verified.txt @@ -494,6 +494,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -537,6 +540,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -578,6 +584,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -926,6 +935,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Code.verified.txt b/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Code.verified.txt index fd69b7e..ee29dea 100644 --- a/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Code.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Code.verified.txt @@ -474,6 +474,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -539,6 +542,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -574,6 +580,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -609,6 +618,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -874,6 +886,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -905,6 +920,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -939,6 +957,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -973,6 +994,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1267,6 +1291,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1349,6 +1376,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Database.verified.txt b/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Database.verified.txt index fc11591..196fc74 100644 --- a/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Database.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Database.verified.txt @@ -195,6 +195,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -328,6 +331,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -742,6 +748,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1223,6 +1232,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1621,9 +1633,15 @@ Response: { Settings: { Columns: [ - {} + { + Primary: false, + LinkReference: false + } ], - DefaultSort: {} + DefaultSort: {}, + Filters: [ + test-string + ] }, ResponseStatus: { IsSuccess: true @@ -1836,7 +1854,10 @@ settings: { softDelete: true, hasRecordOwner: true, - description: test-description + description: test-description, + uniqueIndexes: [ + null + ] }, env: test-env } @@ -1845,6 +1866,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1949,6 +1973,9 @@ settings: { columns: [ null + ], + filters: [ + test-string ] }, env: test-env @@ -1986,7 +2013,10 @@ settings: { softDelete: true, hasRecordOwner: true, - description: test-description + description: test-description, + uniqueIndexes: [ + null + ] }, env: test-env } @@ -2092,11 +2122,9 @@ Slug: test-slug, ParentId: Guid_1, Description: test-description, + Env: test-env, TermsMetaDataSchema: {}, - TermsMetaVisualSchema: {}, - Dependencies: [ - test-string - ] + TermsMetaVisualSchema: {} }, ResponseStatus: { IsSuccess: true @@ -2167,6 +2195,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -2368,6 +2399,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -2619,6 +2653,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Files.verified.txt b/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Files.verified.txt index 5900db4..068ca65 100644 --- a/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Files.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Files.verified.txt @@ -204,6 +204,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -417,6 +420,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -546,6 +552,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -610,6 +619,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -825,6 +837,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Internal.verified.txt b/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Internal.verified.txt index 13eff43..0d34160 100644 --- a/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Internal.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Internal.verified.txt @@ -15,7 +15,7 @@ Sent: { Method: GET, Path: /internal/_typegen, - Query: ?typegen_0_SmtpEmailIntegrationRequest=Norbix.Sdk.Types.Hub.SmtpEmailIntegrationRequest&typegen_1_AwsSesEmailIntegrationRequest=Norbix.Sdk.Types.Hub.AwsSesEmailIntegrationRequest&typegen_2_SendGridEmailIntegrationRequest=Norbix.Sdk.Types.Hub.SendGridEmailIntegrationRequest&typegen_3_MailGunEmailIntegrationRequest=Norbix.Sdk.Types.Hub.MailGunEmailIntegrationRequest&typegen_4_EmailToAllUsersDeliverySettingsRequest=Norbix.Sdk.Types.Hub.EmailToAllUsersDeliverySettingsRequest&typegen_5_EmailToAccountUsersDeliverySettingsRequest=Norbix.Sdk.Types.Hub.EmailToAccountUsersDeliverySettingsRequest&typegen_6_EmailToCollectionRecordsDeliverySettingsRequest=Norbix.Sdk.Types.Hub.EmailToCollectionRecordsDeliverySettingsRequest&typegen_7_EmailToEmailsDeliverySettingsRequest=Norbix.Sdk.Types.Hub.EmailToEmailsDeliverySettingsRequest&typegen_8_EmailToUsersDeliverySettingsRequest=Norbix.Sdk.Types.Hub.EmailToUsersDeliverySettingsRequest&typegen_9_MembershipTriggerRequest=Norbix.Sdk.Types.Hub.MembershipTriggerRequest&typegen_10_SchemaTriggerRequest=Norbix.Sdk.Types.Hub.SchemaTriggerRequest&typegen_11_FilesTriggerRequest=Norbix.Sdk.Types.Hub.FilesTriggerRequest&typegen_12_PaymentTriggerRequest=Norbix.Sdk.Types.Hub.PaymentTriggerRequest&typegen_15_MongoDbConnectionStringDatabaseIntegrationRequest=Norbix.Sdk.Types.Hub.MongoDbConnectionStringDatabaseIntegrationRequest&typegen_16_MongoDbAtlasFlexManagedDatabaseIntegrationRequest=Norbix.Sdk.Types.Hub.MongoDbAtlasFlexManagedDatabaseIntegrationRequest&typegen_16_GoogleDriveFilesIntegrationRequest=Norbix.Sdk.Types.Hub.GoogleDriveFilesIntegrationRequest&typegen_17_FtpFilesIntegrationRequest=Norbix.Sdk.Types.Hub.FtpFilesIntegrationRequest&typegen_18_DropBoxFilesIntegrationRequest=Norbix.Sdk.Types.Hub.DropBoxFilesIntegrationRequest&typegen_19_AppleICloudFilesIntegrationRequest=Norbix.Sdk.Types.Hub.AppleICloudFilesIntegrationRequest&typegen_20_AwsS3FilesIntegrationRequest=Norbix.Sdk.Types.Hub.AwsS3FilesIntegrationRequest&typegen_21_GoogleCloudFilesIntegrationRequest=Norbix.Sdk.Types.Hub.GoogleCloudFilesIntegrationRequest&typegen_22_AzureBlobFilesIntegrationRequest=Norbix.Sdk.Types.Hub.AzureBlobFilesIntegrationRequest&typegen_23_LocalFilesIntegrationRequest=Norbix.Sdk.Types.Hub.LocalFilesIntegrationRequest&typegen_24_AmqpLoggingIntegrationRequest=Norbix.Sdk.Types.Hub.AmqpLoggingIntegrationRequest&typegen_25_AwsKinesisLoggingIntegrationRequest=Norbix.Sdk.Types.Hub.AwsKinesisLoggingIntegrationRequest&typegen_26_AwsS3LoggingIntegrationRequest=Norbix.Sdk.Types.Hub.AwsS3LoggingIntegrationRequest&typegen_28_NewRelicLoggingIntegrationRequest=Norbix.Sdk.Types.Hub.NewRelicLoggingIntegrationRequest&typegen_30_MongoDbLoggingIntegrationRequest=Norbix.Sdk.Types.Hub.MongoDbLoggingIntegrationRequest&typegen_31_KafkaLoggingIntegrationRequest=Norbix.Sdk.Types.Hub.KafkaLoggingIntegrationRequest&typegen_32_PrometheusLoggingIntegrationRequest=Norbix.Sdk.Types.Hub.PrometheusLoggingIntegrationRequest&typegen_33_DataDogLoggingIntegrationRequest=Norbix.Sdk.Types.Hub.DataDogLoggingIntegrationRequest&typegen_34_InternalKafkaLoggingIntegrationRequest=Norbix.Sdk.Types.Hub.InternalKafkaLoggingIntegrationRequest&typegen_35_ElasticSearchLoggingIntegrationRequest=Norbix.Sdk.Types.Hub.ElasticSearchLoggingIntegrationRequest&typegen_37_SplunkLoggingIntegrationRequest=Norbix.Sdk.Types.Hub.SplunkLoggingIntegrationRequest&typegen_38_AzureOtelLoggingIntegrationRequest=Norbix.Sdk.Types.Hub.AzureOtelLoggingIntegrationRequest&typegen_39_KibanaLoggingIntegrationRequest=Norbix.Sdk.Types.Hub.KibanaLoggingIntegrationRequest&typegen_40_LocalFileLoggingIntegrationRequest=Norbix.Sdk.Types.Hub.LocalFileLoggingIntegrationRequest&typegen_41_OktaMembershipIntegrationRequest=Norbix.Sdk.Types.Hub.OktaMembershipIntegrationRequest&typegen_42_XMembershipIntegrationRequest=Norbix.Sdk.Types.Hub.XMembershipIntegrationRequest&typegen_43_GoogleMembershipIntegrationRequest=Norbix.Sdk.Types.Hub.GoogleMembershipIntegrationRequest&typegen_44_MicrosoftMembershipIntegrationRequest=Norbix.Sdk.Types.Hub.MicrosoftMembershipIntegrationRequest&typegen_45_GitHubMembershipIntegrationRequest=Norbix.Sdk.Types.Hub.GitHubMembershipIntegrationRequest&typegen_46_MetaMembershipIntegrationRequest=Norbix.Sdk.Types.Hub.MetaMembershipIntegrationRequest&typegen_47_AppleMembershipIntegrationRequest=Norbix.Sdk.Types.Hub.AppleMembershipIntegrationRequest&typegen_48_LemonSqueezyPaymentIntegrationRequest=Norbix.Sdk.Types.Hub.LemonSqueezyPaymentIntegrationRequest&typegen_49_AdyenPaymentIntegrationRequest=Norbix.Sdk.Types.Hub.AdyenPaymentIntegrationRequest&typegen_50_MolliePaymentIntegrationRequest=Norbix.Sdk.Types.Hub.MolliePaymentIntegrationRequest&typegen_51_PaddlePaymentIntegrationRequest=Norbix.Sdk.Types.Hub.PaddlePaymentIntegrationRequest&typegen_52_PayPalPaymentIntegrationRequest=Norbix.Sdk.Types.Hub.PayPalPaymentIntegrationRequest&typegen_53_StripePaymentIntegrationRequest=Norbix.Sdk.Types.Hub.StripePaymentIntegrationRequest&typegen_54_AppleInAppPaymentIntegrationRequest=Norbix.Sdk.Types.Hub.AppleInAppPaymentIntegrationRequest&typegen_55_GoogleInAppPaymentIntegrationRequest=Norbix.Sdk.Types.Hub.GoogleInAppPaymentIntegrationRequest&typegen_56_EdgeWebPushIntegrationRequest=Norbix.Sdk.Types.Hub.EdgeWebPushIntegrationRequest&typegen_57_ChromePluginPushIntegrationRequest=Norbix.Sdk.Types.Hub.ChromePluginPushIntegrationRequest&typegen_58_SafariPushIntegrationRequest=Norbix.Sdk.Types.Hub.SafariPushIntegrationRequest&typegen_59_ChromeWebPushIntegrationRequest=Norbix.Sdk.Types.Hub.ChromeWebPushIntegrationRequest&typegen_60_FirefoxWebPushIntegrationRequest=Norbix.Sdk.Types.Hub.FirefoxWebPushIntegrationRequest&typegen_61_AndroidFirebasePushIntegrationRequest=Norbix.Sdk.Types.Hub.AndroidFirebasePushIntegrationRequest&typegen_62_AppleApnsPushIntegrationRequest=Norbix.Sdk.Types.Hub.AppleApnsPushIntegrationRequest&typegen_65_AwsLambdaCodeIntegrationRequest=Norbix.Sdk.Types.Hub.AwsLambdaCodeIntegrationRequest&typegen_66_AzureFunctionsCodeIntegrationRequest=Norbix.Sdk.Types.Hub.AzureFunctionsCodeIntegrationRequest&typegen_67_GoogleCloudFunctionsCodeIntegrationRequest=Norbix.Sdk.Types.Hub.GoogleCloudFunctionsCodeIntegrationRequest&typegen_68_OllamaLlmIntegrationRequest=Norbix.Sdk.Types.Hub.OllamaLlmIntegrationRequest&typegen_69_OpenRouterLlmIntegrationRequest=Norbix.Sdk.Types.Hub.OpenRouterLlmIntegrationRequest&typegen_70_MistralLlmIntegrationRequest=Norbix.Sdk.Types.Hub.MistralLlmIntegrationRequest&typegen_71_GrokLlmIntegrationRequest=Norbix.Sdk.Types.Hub.GrokLlmIntegrationRequest&typegen_72_GroqLlmIntegrationRequest=Norbix.Sdk.Types.Hub.GroqLlmIntegrationRequest&typegen_73_GoogleLlmIntegrationRequest=Norbix.Sdk.Types.Hub.GoogleLlmIntegrationRequest&typegen_74_AnthropicLlmIntegrationRequest=Norbix.Sdk.Types.Hub.AnthropicLlmIntegrationRequest&typegen_75_OpenAiLlmIntegrationRequest=Norbix.Sdk.Types.Hub.OpenAiLlmIntegrationRequest&typegen_76_PlaywrightMcpIntegrationRequest=Norbix.Sdk.Types.Hub.PlaywrightMcpIntegrationRequest&typegen_77_MongoDbMcpIntegrationRequest=Norbix.Sdk.Types.Hub.MongoDbMcpIntegrationRequest&typegen_78_GitHubMcpIntegrationRequest=Norbix.Sdk.Types.Hub.GitHubMcpIntegrationRequest&typegen_79_StripeMcpIntegrationRequest=Norbix.Sdk.Types.Hub.StripeMcpIntegrationRequest&typegen_80_BraveSearchMcpIntegrationRequest=Norbix.Sdk.Types.Hub.BraveSearchMcpIntegrationRequest&typegen_81_ObsidianMcpIntegrationRequest=Norbix.Sdk.Types.Hub.ObsidianMcpIntegrationRequest&typegen_82_EmailTemplateDto=Norbix.Sdk.Types.Hub.EmailTemplateDto&typegen_83_PushTemplateDto=Norbix.Sdk.Types.Hub.PushTemplateDto&typegen_84_SmsTemplateDto=Norbix.Sdk.Types.Hub.SmsTemplateDto&typegen_85_SystemEmailTemplateDto=Norbix.Sdk.Types.Hub.SystemEmailTemplateDto&typegen_86_TriggerActionEmailDto=Norbix.Sdk.Types.Hub.TriggerActionEmailDto&typegen_87_TriggerActionPushDto=Norbix.Sdk.Types.Hub.TriggerActionPushDto&typegen_88_TriggerActionCodeDto=Norbix.Sdk.Types.Hub.TriggerActionCodeDto&typegen_89_TriggerActionWebhookDto=Norbix.Sdk.Types.Hub.TriggerActionWebhookDto&typegen_236_TriggerActionSmsDto=Norbix.Sdk.Types.Hub.TriggerActionSmsDto&typegen_237_TriggerActionSseDto=Norbix.Sdk.Types.Hub.TriggerActionSseDto&typegen_238_TriggerActionMarketplaceDto=Norbix.Sdk.Types.Hub.TriggerActionMarketplaceDto&typegen_239_SseDeliverySettingsDto=Norbix.Sdk.Types.Hub.SseDeliverySettingsDto&typegen_240_GetTriggers=Norbix.Sdk.Types.Hub.GetTriggers&typegen_241_GetTriggersResponse=Norbix.Sdk.Types.Hub.GetTriggersResponse&typegen_90_EmailToAllUsersDeliverySettingsDto=Norbix.Sdk.Types.Hub.EmailToAllUsersDeliverySettingsDto&typegen_91_EmailToAccountUsersDeliverySettingsDto=Norbix.Sdk.Types.Hub.EmailToAccountUsersDeliverySettingsDto&typegen_92_EmailToUsersDeliverySettingsDto=Norbix.Sdk.Types.Hub.EmailToUsersDeliverySettingsDto&typegen_93_EmailToEmailAddressesDeliverySettingsDto=Norbix.Sdk.Types.Hub.EmailToEmailAddressesDeliverySettingsDto&typegen_94_EmailToCollectionRecordsDeliverySettingsDto=Norbix.Sdk.Types.Hub.EmailToCollectionRecordsDeliverySettingsDto&typegen_95_PushToAllUsersDeliverySettingsDto=Norbix.Sdk.Types.Hub.PushToAllUsersDeliverySettingsDto&typegen_96_PushToUsersDeliverySettingsDto=Norbix.Sdk.Types.Hub.PushToUsersDeliverySettingsDto&typegen_229_PushToAccountUsersDeliverySettingsDto=Norbix.Sdk.Types.Hub.PushToAccountUsersDeliverySettingsDto&typegen_97_PushToCollectionRecordsDeliverySettingsDto=Norbix.Sdk.Types.Hub.PushToCollectionRecordsDeliverySettingsDto&typegen_98_PushToDevicesDeliverySettingsDto=Norbix.Sdk.Types.Hub.PushToDevicesDeliverySettingsDto&typegen_99_SmsToAllUsersDeliverySettingsDto=Norbix.Sdk.Types.Hub.SmsToAllUsersDeliverySettingsDto&typegen_100_SmsToUsersDeliverySettingsDto=Norbix.Sdk.Types.Hub.SmsToUsersDeliverySettingsDto&typegen_249_SmsToAccountUsersDeliverySettingsDto=Norbix.Sdk.Types.Hub.SmsToAccountUsersDeliverySettingsDto&typegen_101_SmsToCollectionRecordsDeliverySettingsDto=Norbix.Sdk.Types.Hub.SmsToCollectionRecordsDeliverySettingsDto&typegen_102_SmsToPhoneNumbersDeliverySettingsDto=Norbix.Sdk.Types.Hub.SmsToPhoneNumbersDeliverySettingsDto&typegen_103_OpenAiLlmIntegrationDto=Norbix.Sdk.Types.Hub.OpenAiLlmIntegrationDto&typegen_104_AnthropicLlmIntegrationDto=Norbix.Sdk.Types.Hub.AnthropicLlmIntegrationDto&typegen_105_OllamaLlmIntegrationDto=Norbix.Sdk.Types.Hub.OllamaLlmIntegrationDto&typegen_106_GroqLlmIntegrationDto=Norbix.Sdk.Types.Hub.GroqLlmIntegrationDto&typegen_107_GoogleLlmIntegrationDto=Norbix.Sdk.Types.Hub.GoogleLlmIntegrationDto&typegen_108_MistralLlmIntegrationDto=Norbix.Sdk.Types.Hub.MistralLlmIntegrationDto&typegen_109_OpenRouterLlmIntegrationDto=Norbix.Sdk.Types.Hub.OpenRouterLlmIntegrationDto&typegen_110_GrokLlmIntegrationDto=Norbix.Sdk.Types.Hub.GrokLlmIntegrationDto&typegen_111_DockerMcpIntegrationDto=Norbix.Sdk.Types.Hub.DockerMcpIntegrationDto&typegen_112_GoogleCalendarMcpIntegrationDto=Norbix.Sdk.Types.Hub.GoogleCalendarMcpIntegrationDto&typegen_113_ObsidianMcpIntegrationDto=Norbix.Sdk.Types.Hub.ObsidianMcpIntegrationDto&typegen_114_AwsLambdaCrossAccountRoleCodeIntegrationDto=Norbix.Sdk.Types.Hub.AwsLambdaCrossAccountRoleCodeIntegrationDto&typegen_115_AwsLambdaIamCodeIntegrationDto=Norbix.Sdk.Types.Hub.AwsLambdaIamCodeIntegrationDto&typegen_116_AzureFunctionsCodeIntegrationDto=Norbix.Sdk.Types.Hub.AzureFunctionsCodeIntegrationDto&typegen_118_GoogleCloudFunctionsCodeIntegrationDto=Norbix.Sdk.Types.Hub.GoogleCloudFunctionsCodeIntegrationDto&typegen_120_AdyenPaymentIntegrationDto=Norbix.Sdk.Types.Hub.AdyenPaymentIntegrationDto&typegen_121_AppleInAppPaymentIntegrationDto=Norbix.Sdk.Types.Hub.AppleInAppPaymentIntegrationDto&typegen_122_GoogleInAppPaymentIntegrationDto=Norbix.Sdk.Types.Hub.GoogleInAppPaymentIntegrationDto&typegen_123_LemonSqueezyPaymentIntegrationDto=Norbix.Sdk.Types.Hub.LemonSqueezyPaymentIntegrationDto&typegen_124_MolliePaymentIntegrationDto=Norbix.Sdk.Types.Hub.MolliePaymentIntegrationDto&typegen_125_PaddlePaymentIntegrationDto=Norbix.Sdk.Types.Hub.PaddlePaymentIntegrationDto&typegen_126_PayPalPaymentIntegrationDto=Norbix.Sdk.Types.Hub.PayPalPaymentIntegrationDto&typegen_127_StripePaymentIntegrationDto=Norbix.Sdk.Types.Hub.StripePaymentIntegrationDto&typegen_184_ShopifyPaymentIntegrationDto=Norbix.Sdk.Types.Hub.ShopifyPaymentIntegrationDto&typegen_185_WooCommercePaymentIntegrationDto=Norbix.Sdk.Types.Hub.WooCommercePaymentIntegrationDto&typegen_186_MagentoPaymentIntegrationDto=Norbix.Sdk.Types.Hub.MagentoPaymentIntegrationDto&typegen_187_BraintreePaymentIntegrationDto=Norbix.Sdk.Types.Hub.BraintreePaymentIntegrationDto&typegen_188_AuthorizeNetPaymentIntegrationDto=Norbix.Sdk.Types.Hub.AuthorizeNetPaymentIntegrationDto&typegen_189_CheckOutComPaymentIntegrationDto=Norbix.Sdk.Types.Hub.CheckOutComPaymentIntegrationDto&typegen_190_WorldpayPaymentIntegrationDto=Norbix.Sdk.Types.Hub.WorldpayPaymentIntegrationDto&typegen_128_AppleSignInMembershipIntegrationDto=Norbix.Sdk.Types.Hub.AppleSignInMembershipIntegrationDto&typegen_129_GitHubMembershipIntegrationDto=Norbix.Sdk.Types.Hub.GitHubMembershipIntegrationDto&typegen_130_GoogleMembershipIntegrationDto=Norbix.Sdk.Types.Hub.GoogleMembershipIntegrationDto&typegen_131_MetaMembershipIntegrationDto=Norbix.Sdk.Types.Hub.MetaMembershipIntegrationDto&typegen_132_MicrosoftMembershipIntegrationDto=Norbix.Sdk.Types.Hub.MicrosoftMembershipIntegrationDto&typegen_133_OktaMembershipIntegrationDto=Norbix.Sdk.Types.Hub.OktaMembershipIntegrationDto&typegen_134_XMembershipIntegrationDto=Norbix.Sdk.Types.Hub.XMembershipIntegrationDto&typegen_135_AmqpLoggingIntegrationDto=Norbix.Sdk.Types.Hub.AmqpLoggingIntegrationDto&typegen_136_AwsKinesisLoggingIntegrationDto=Norbix.Sdk.Types.Hub.AwsKinesisLoggingIntegrationDto&typegen_137_AwsS3CrossAccountRoleLoggingIntegrationDto=Norbix.Sdk.Types.Hub.AwsS3CrossAccountRoleLoggingIntegrationDto&typegen_138_AwsS3IamLoggingIntegrationDto=Norbix.Sdk.Types.Hub.AwsS3IamLoggingIntegrationDto&typegen_139_AzureOtelLoggingIntegrationDto=Norbix.Sdk.Types.Hub.AzureOtelLoggingIntegrationDto&typegen_140_DataDogLoggingIntegrationDto=Norbix.Sdk.Types.Hub.DataDogLoggingIntegrationDto&typegen_141_ElasticSearchLoggingIntegrationDto=Norbix.Sdk.Types.Hub.ElasticSearchLoggingIntegrationDto&typegen_142_InternalKafkaLoggingIntegrationDto=Norbix.Sdk.Types.Hub.InternalKafkaLoggingIntegrationDto&typegen_143_KafkaLoggingIntegrationDto=Norbix.Sdk.Types.Hub.KafkaLoggingIntegrationDto&typegen_144_KibanaLoggingIntegrationDto=Norbix.Sdk.Types.Hub.KibanaLoggingIntegrationDto&typegen_145_LocalFileLoggingIntegrationDto=Norbix.Sdk.Types.Hub.LocalFileLoggingIntegrationDto&typegen_147_MongoDbLoggingIntegrationDto=Norbix.Sdk.Types.Hub.MongoDbLoggingIntegrationDto&typegen_148_NewRelicLoggingIntegrationDto=Norbix.Sdk.Types.Hub.NewRelicLoggingIntegrationDto&typegen_149_PrometheusLoggingIntegrationDto=Norbix.Sdk.Types.Hub.PrometheusLoggingIntegrationDto&typegen_150_SplunkLoggingIntegrationDto=Norbix.Sdk.Types.Hub.SplunkLoggingIntegrationDto&typegen_153_AppleICloudFilesIntegrationDto=Norbix.Sdk.Types.Hub.AppleICloudFilesIntegrationDto&typegen_154_AwsS3CrossAccountRoleFilesIntegrationDto=Norbix.Sdk.Types.Hub.AwsS3CrossAccountRoleFilesIntegrationDto&typegen_155_AwsS3IamFilesIntegrationDto=Norbix.Sdk.Types.Hub.AwsS3IamFilesIntegrationDto&typegen_156_AzureBlobFilesIntegrationDto=Norbix.Sdk.Types.Hub.AzureBlobFilesIntegrationDto&typegen_157_DropBoxFilesIntegrationDto=Norbix.Sdk.Types.Hub.DropBoxFilesIntegrationDto&typegen_158_FtpFilesIntegrationDto=Norbix.Sdk.Types.Hub.FtpFilesIntegrationDto&typegen_159_GoogleCloudFilesIntegrationDto=Norbix.Sdk.Types.Hub.GoogleCloudFilesIntegrationDto&typegen_160_GoogleDriveFilesIntegrationDto=Norbix.Sdk.Types.Hub.GoogleDriveFilesIntegrationDto&typegen_161_LocalFilesIntegrationDto=Norbix.Sdk.Types.Hub.LocalFilesIntegrationDto&typegen_164_MongoDbConnectionStringIntegrationDto=Norbix.Sdk.Types.Hub.MongoDbConnectionStringIntegrationDto&typegen_165_MongoDbAtlasFlexManagedIntegrationDto=Norbix.Sdk.Types.Hub.MongoDbAtlasFlexManagedIntegrationDto&typegen_165_BirdSmsIntegrationDto=Norbix.Sdk.Types.Hub.BirdSmsIntegrationDto&typegen_166_PlivoSmsIntegrationDto=Norbix.Sdk.Types.Hub.PlivoSmsIntegrationDto&typegen_167_SinchSmsIntegrationDto=Norbix.Sdk.Types.Hub.SinchSmsIntegrationDto&typegen_168_TelesignSmsIntegrationDto=Norbix.Sdk.Types.Hub.TelesignSmsIntegrationDto&typegen_169_TelnyxSmsIntegrationDto=Norbix.Sdk.Types.Hub.TelnyxSmsIntegrationDto&typegen_170_TwilioSmsIntegrationDto=Norbix.Sdk.Types.Hub.TwilioSmsIntegrationDto&typegen_171_VonageSmsIntegrationDto=Norbix.Sdk.Types.Hub.VonageSmsIntegrationDto&typegen_246_FakeSmsIntegrationDto=Norbix.Sdk.Types.Hub.FakeSmsIntegrationDto&typegen_172_AndroidFirebasePushIntegrationDto=Norbix.Sdk.Types.Hub.AndroidFirebasePushIntegrationDto&typegen_173_AppleApnsPushIntegrationDto=Norbix.Sdk.Types.Hub.AppleApnsPushIntegrationDto&typegen_174_ChromePluginPushIntegrationDto=Norbix.Sdk.Types.Hub.ChromePluginPushIntegrationDto&typegen_175_ChromeWebPushIntegrationDto=Norbix.Sdk.Types.Hub.ChromeWebPushIntegrationDto&typegen_176_EdgeWebPushIntegrationDto=Norbix.Sdk.Types.Hub.EdgeWebPushIntegrationDto&typegen_177_FirefoxWebPushIntegrationDto=Norbix.Sdk.Types.Hub.FirefoxWebPushIntegrationDto&typegen_178_SafariPushIntegrationDto=Norbix.Sdk.Types.Hub.SafariPushIntegrationDto&typegen_247_FakePushIntegrationDto=Norbix.Sdk.Types.Hub.FakePushIntegrationDto&typegen_179_AwsCrossAccountRoleEmailIntegrationDto=Norbix.Sdk.Types.Hub.AwsCrossAccountRoleEmailIntegrationDto&typegen_180_AwsIamEmailIntegrationDto=Norbix.Sdk.Types.Hub.AwsIamEmailIntegrationDto&typegen_181_MailGunEmailIntegrationDto=Norbix.Sdk.Types.Hub.MailGunEmailIntegrationDto&typegen_182_SendGridEmailIntegrationDto=Norbix.Sdk.Types.Hub.SendGridEmailIntegrationDto&typegen_183_SmtpEmailIntegrationDto=Norbix.Sdk.Types.Hub.SmtpEmailIntegrationDto&typegen_248_FakeEmailIntegrationDto=Norbix.Sdk.Types.Hub.FakeEmailIntegrationDto&typegen_192_WebhookIntegrationDto=Norbix.Sdk.Types.Hub.WebhookIntegrationDto&typegen_193_WebhookDestinationDto=Norbix.Sdk.Types.Hub.WebhookDestinationDto&typegen_194_SchedulerTaskDto=Norbix.Sdk.Types.Hub.SchedulerTaskDto&typegen_249_EmailCampaignSchedulerTaskRequest=Norbix.Sdk.Types.Hub.EmailCampaignSchedulerTaskRequest&typegen_250_SmsCampaignSchedulerTaskRequest=Norbix.Sdk.Types.Hub.SmsCampaignSchedulerTaskRequest&typegen_251_PushCampaignSchedulerTaskRequest=Norbix.Sdk.Types.Hub.PushCampaignSchedulerTaskRequest&typegen_195_MongoDbAggregateDto=Norbix.Sdk.Types.Hub.MongoDbAggregateDto&typegen_196_MarketplaceIntegrationDto=Norbix.Sdk.Types.Hub.MarketplaceIntegrationDto&typegen_197_MarketplaceFunctionDto=Norbix.Sdk.Types.Hub.MarketplaceFunctionDto&typegen_198_MarketplaceListingDto=Norbix.Sdk.Types.Hub.MarketplaceListingDto&typegen_199_MarketplaceFunctionDefinitionDto=Norbix.Sdk.Types.Hub.MarketplaceFunctionDefinitionDto&typegen_200_MarketplaceFunctionParameterDto=Norbix.Sdk.Types.Hub.MarketplaceFunctionParameterDto&typegen_201_EnableCode=Norbix.Sdk.Types.Hub.EnableCode&typegen_202_DisableCode=Norbix.Sdk.Types.Hub.DisableCode&typegen_203_GetCodeIntegrations=Norbix.Sdk.Types.Hub.GetCodeIntegrations&typegen_204_GetCodeIntegration=Norbix.Sdk.Types.Hub.GetCodeIntegration&typegen_205_SaveCodeIntegration=Norbix.Sdk.Types.Hub.SaveCodeIntegration&typegen_206_TestCodeIntegration=Norbix.Sdk.Types.Hub.TestCodeIntegration&typegen_207_ConfirmCodeIntegrationHumanDeliveryRequest=Norbix.Sdk.Types.Hub.ConfirmCodeIntegrationHumanDeliveryRequest&typegen_209_DeleteCodeIntegrationRequest=Norbix.Sdk.Types.Hub.DeleteCodeIntegrationRequest&typegen_210_EnableCodeIntegrationRequest=Norbix.Sdk.Types.Hub.EnableCodeIntegrationRequest&typegen_211_DisableCodeIntegrationRequest=Norbix.Sdk.Types.Hub.DisableCodeIntegrationRequest&typegen_212_GetMarketplaceListings=Norbix.Sdk.Types.Hub.GetMarketplaceListings&typegen_213_GetMarketplaceListingFunctionTokens=Norbix.Sdk.Types.Hub.GetMarketplaceListingFunctionTokens&typegen_214_GetMarketplaceIntegrations=Norbix.Sdk.Types.Hub.GetMarketplaceIntegrations&typegen_215_GetMarketplaceIntegration=Norbix.Sdk.Types.Hub.GetMarketplaceIntegration&typegen_216_SaveMarketplaceIntegration=Norbix.Sdk.Types.Hub.SaveMarketplaceIntegration&typegen_217_DeleteMarketplaceIntegration=Norbix.Sdk.Types.Hub.DeleteMarketplaceIntegration&typegen_218_EnableMarketplaceIntegration=Norbix.Sdk.Types.Hub.EnableMarketplaceIntegration&typegen_219_DisableMarketplaceIntegration=Norbix.Sdk.Types.Hub.DisableMarketplaceIntegration&typegen_221_GetMarketplaceFunctions=Norbix.Sdk.Types.Hub.GetMarketplaceFunctions&typegen_222_GetMarketplaceFunction=Norbix.Sdk.Types.Hub.GetMarketplaceFunction&typegen_223_SaveMarketplaceFunction=Norbix.Sdk.Types.Hub.SaveMarketplaceFunction&typegen_224_DeleteMarketplaceFunction=Norbix.Sdk.Types.Hub.DeleteMarketplaceFunction&typegen_225_EnableMarketplaceFunction=Norbix.Sdk.Types.Hub.EnableMarketplaceFunction&typegen_226_DisableMarketplaceFunction=Norbix.Sdk.Types.Hub.DisableMarketplaceFunction&typegen_227_GetMarketplaceFunctionTokens=Norbix.Sdk.Types.Hub.GetMarketplaceFunctionTokens&typegen_228_InvokeMarketplaceFunction=Norbix.Sdk.Types.Hub.InvokeMarketplaceFunction&typegen_232_GetMarketplaceListing=Norbix.Sdk.Types.Hub.GetMarketplaceListing&typegen_233_TestMarketplaceIntegration=Norbix.Sdk.Types.Hub.TestMarketplaceIntegration&typegen_234_TestMarketplaceIntegrationResponse=Norbix.Sdk.Types.Hub.TestMarketplaceIntegrationResponse&typegen_235_GetMarketplaceListingResponse=Norbix.Sdk.Types.Hub.GetMarketplaceListingResponse&typegen_230_AdminPortalStructureDto=Norbix.Sdk.Types.Hub.AdminPortalStructureDto&typegen_231_AdminPortalModuleDto=Norbix.Sdk.Types.Hub.AdminPortalModuleDto&typegen_236_UserMessageEntryWireDto=Norbix.Sdk.Types.Hub.UserMessageEntryWireDto&typegen_237_AssistantTextEntryWireDto=Norbix.Sdk.Types.Hub.AssistantTextEntryWireDto&typegen_238_AssistantQuestionEntryWireDto=Norbix.Sdk.Types.Hub.AssistantQuestionEntryWireDto&typegen_239_UserAnswerEntryWireDto=Norbix.Sdk.Types.Hub.UserAnswerEntryWireDto&typegen_240_PlanEntryWireDto=Norbix.Sdk.Types.Hub.PlanEntryWireDto&typegen_241_UserDecisionEntryWireDto=Norbix.Sdk.Types.Hub.UserDecisionEntryWireDto&typegen_242_RunStepEntryWireDto=Norbix.Sdk.Types.Hub.RunStepEntryWireDto&typegen_243_ActionPendingEntryWireDto=Norbix.Sdk.Types.Hub.ActionPendingEntryWireDto&typegen_244_NoticeEntryWireDto=Norbix.Sdk.Types.Hub.NoticeEntryWireDto&typegen_245_ConversationSnapshotEntryWireDto=Norbix.Sdk.Types.Hub.ConversationSnapshotEntryWireDto&typegen_252_StringFieldDto=Norbix.Sdk.Types.Hub.StringFieldDto&typegen_253_DecimalFieldDto=Norbix.Sdk.Types.Hub.DecimalFieldDto&typegen_254_CurrencyFieldDto=Norbix.Sdk.Types.Hub.CurrencyFieldDto&typegen_255_BooleanFieldDto=Norbix.Sdk.Types.Hub.BooleanFieldDto&typegen_256_DateFieldDto=Norbix.Sdk.Types.Hub.DateFieldDto&typegen_257_IntegerFieldDto=Norbix.Sdk.Types.Hub.IntegerFieldDto&typegen_258_GeolocationFieldDto=Norbix.Sdk.Types.Hub.GeolocationFieldDto&typegen_259_TagsFieldDto=Norbix.Sdk.Types.Hub.TagsFieldDto&typegen_260_FileFieldDto=Norbix.Sdk.Types.Hub.FileFieldDto&typegen_261_TaxonomySelectionFieldDto=Norbix.Sdk.Types.Hub.TaxonomySelectionFieldDto&typegen_262_CollectionSelectionFieldDto=Norbix.Sdk.Types.Hub.CollectionSelectionFieldDto&typegen_263_UserSelectionFieldDto=Norbix.Sdk.Types.Hub.UserSelectionFieldDto&typegen_264_RoleSelectionFieldDto=Norbix.Sdk.Types.Hub.RoleSelectionFieldDto&typegen_265_EnumSelectionFieldDto=Norbix.Sdk.Types.Hub.EnumSelectionFieldDto&typegen_266_ObjectFieldDto=Norbix.Sdk.Types.Hub.ObjectFieldDto&typegen_267_ArrayFieldDto=Norbix.Sdk.Types.Hub.ArrayFieldDto&typegen_268_JsonFieldDto=Norbix.Sdk.Types.Hub.JsonFieldDto&typegen_269_FunctionRefDto=Norbix.Sdk.Types.Hub.FunctionRefDto&typegen_270_CodeFunctionEventDto=Norbix.Sdk.Types.Hub.CodeFunctionEventDto&typegen_271_CodeFunctionContextDto=Norbix.Sdk.Types.Hub.CodeFunctionContextDto&typegen_272_CodeFunctionCallerDto=Norbix.Sdk.Types.Hub.CodeFunctionCallerDto&typegen_273_CodeFunctionRunAsDto=Norbix.Sdk.Types.Hub.CodeFunctionRunAsDto&typegen_274_CodeFunctionDataDto=Norbix.Sdk.Types.Hub.CodeFunctionDataDto&typegen_275_DatabaseRecordChangeDto=Norbix.Sdk.Types.Hub.DatabaseRecordChangeDto&typegen_276_UserChangeDto=Norbix.Sdk.Types.Hub.UserChangeDto&typegen_277_FileChangeDto=Norbix.Sdk.Types.Hub.FileChangeDto&typegen_278_PaymentFactDto=Norbix.Sdk.Types.Hub.PaymentFactDto&typegen_279_AiUsageEventDto=Norbix.Sdk.Types.Hub.AiUsageEventDto&typegen_280_ScheduledTaskInfoDto=Norbix.Sdk.Types.Hub.ScheduledTaskInfoDto&typegen_281_FakeCodeIntegrationDto=Norbix.Sdk.Types.Hub.FakeCodeIntegrationDto&typegen_282_FakeCodeIntegrationRequest=Norbix.Sdk.Types.Hub.FakeCodeIntegrationRequest&typegen_283_CodeFunctionSchedulerTaskRequest=Norbix.Sdk.Types.Hub.CodeFunctionSchedulerTaskRequest&typegen_284_MarketplaceFunctionSchedulerTaskRequest=Norbix.Sdk.Types.Hub.MarketplaceFunctionSchedulerTaskRequest, + Query: ?typegen_0_SmtpEmailIntegrationRequest=Norbix.Sdk.Types.Hub.SmtpEmailIntegrationRequest&typegen_1_AwsSesEmailIntegrationRequest=Norbix.Sdk.Types.Hub.AwsSesEmailIntegrationRequest&typegen_2_SendGridEmailIntegrationRequest=Norbix.Sdk.Types.Hub.SendGridEmailIntegrationRequest&typegen_3_MailGunEmailIntegrationRequest=Norbix.Sdk.Types.Hub.MailGunEmailIntegrationRequest&typegen_4_EmailToAllUsersDeliverySettingsRequest=Norbix.Sdk.Types.Hub.EmailToAllUsersDeliverySettingsRequest&typegen_5_EmailToAccountUsersDeliverySettingsRequest=Norbix.Sdk.Types.Hub.EmailToAccountUsersDeliverySettingsRequest&typegen_6_EmailToCollectionRecordsDeliverySettingsRequest=Norbix.Sdk.Types.Hub.EmailToCollectionRecordsDeliverySettingsRequest&typegen_7_EmailToEmailsDeliverySettingsRequest=Norbix.Sdk.Types.Hub.EmailToEmailsDeliverySettingsRequest&typegen_8_EmailToUsersDeliverySettingsRequest=Norbix.Sdk.Types.Hub.EmailToUsersDeliverySettingsRequest&typegen_9_MembershipTriggerRequest=Norbix.Sdk.Types.Hub.MembershipTriggerRequest&typegen_10_SchemaTriggerRequest=Norbix.Sdk.Types.Hub.SchemaTriggerRequest&typegen_11_FilesTriggerRequest=Norbix.Sdk.Types.Hub.FilesTriggerRequest&typegen_12_PaymentTriggerRequest=Norbix.Sdk.Types.Hub.PaymentTriggerRequest&typegen_15_MongoDbConnectionStringDatabaseIntegrationRequest=Norbix.Sdk.Types.Hub.MongoDbConnectionStringDatabaseIntegrationRequest&typegen_16_MongoDbAtlasFlexManagedDatabaseIntegrationRequest=Norbix.Sdk.Types.Hub.MongoDbAtlasFlexManagedDatabaseIntegrationRequest&typegen_16_GoogleDriveFilesIntegrationRequest=Norbix.Sdk.Types.Hub.GoogleDriveFilesIntegrationRequest&typegen_17_FtpFilesIntegrationRequest=Norbix.Sdk.Types.Hub.FtpFilesIntegrationRequest&typegen_18_DropBoxFilesIntegrationRequest=Norbix.Sdk.Types.Hub.DropBoxFilesIntegrationRequest&typegen_19_AppleICloudFilesIntegrationRequest=Norbix.Sdk.Types.Hub.AppleICloudFilesIntegrationRequest&typegen_20_AwsS3FilesIntegrationRequest=Norbix.Sdk.Types.Hub.AwsS3FilesIntegrationRequest&typegen_21_GoogleCloudFilesIntegrationRequest=Norbix.Sdk.Types.Hub.GoogleCloudFilesIntegrationRequest&typegen_22_AzureBlobFilesIntegrationRequest=Norbix.Sdk.Types.Hub.AzureBlobFilesIntegrationRequest&typegen_23_LocalFilesIntegrationRequest=Norbix.Sdk.Types.Hub.LocalFilesIntegrationRequest&typegen_24_AmqpLoggingIntegrationRequest=Norbix.Sdk.Types.Hub.AmqpLoggingIntegrationRequest&typegen_25_AwsKinesisLoggingIntegrationRequest=Norbix.Sdk.Types.Hub.AwsKinesisLoggingIntegrationRequest&typegen_26_AwsS3LoggingIntegrationRequest=Norbix.Sdk.Types.Hub.AwsS3LoggingIntegrationRequest&typegen_28_NewRelicLoggingIntegrationRequest=Norbix.Sdk.Types.Hub.NewRelicLoggingIntegrationRequest&typegen_30_MongoDbLoggingIntegrationRequest=Norbix.Sdk.Types.Hub.MongoDbLoggingIntegrationRequest&typegen_31_KafkaLoggingIntegrationRequest=Norbix.Sdk.Types.Hub.KafkaLoggingIntegrationRequest&typegen_32_PrometheusLoggingIntegrationRequest=Norbix.Sdk.Types.Hub.PrometheusLoggingIntegrationRequest&typegen_33_DataDogLoggingIntegrationRequest=Norbix.Sdk.Types.Hub.DataDogLoggingIntegrationRequest&typegen_34_InternalKafkaLoggingIntegrationRequest=Norbix.Sdk.Types.Hub.InternalKafkaLoggingIntegrationRequest&typegen_35_ElasticSearchLoggingIntegrationRequest=Norbix.Sdk.Types.Hub.ElasticSearchLoggingIntegrationRequest&typegen_37_SplunkLoggingIntegrationRequest=Norbix.Sdk.Types.Hub.SplunkLoggingIntegrationRequest&typegen_38_AzureOtelLoggingIntegrationRequest=Norbix.Sdk.Types.Hub.AzureOtelLoggingIntegrationRequest&typegen_39_KibanaLoggingIntegrationRequest=Norbix.Sdk.Types.Hub.KibanaLoggingIntegrationRequest&typegen_40_LocalFileLoggingIntegrationRequest=Norbix.Sdk.Types.Hub.LocalFileLoggingIntegrationRequest&typegen_41_OktaMembershipIntegrationRequest=Norbix.Sdk.Types.Hub.OktaMembershipIntegrationRequest&typegen_42_XMembershipIntegrationRequest=Norbix.Sdk.Types.Hub.XMembershipIntegrationRequest&typegen_43_GoogleMembershipIntegrationRequest=Norbix.Sdk.Types.Hub.GoogleMembershipIntegrationRequest&typegen_44_MicrosoftMembershipIntegrationRequest=Norbix.Sdk.Types.Hub.MicrosoftMembershipIntegrationRequest&typegen_45_GitHubMembershipIntegrationRequest=Norbix.Sdk.Types.Hub.GitHubMembershipIntegrationRequest&typegen_46_MetaMembershipIntegrationRequest=Norbix.Sdk.Types.Hub.MetaMembershipIntegrationRequest&typegen_47_AppleMembershipIntegrationRequest=Norbix.Sdk.Types.Hub.AppleMembershipIntegrationRequest&typegen_48_LemonSqueezyPaymentIntegrationRequest=Norbix.Sdk.Types.Hub.LemonSqueezyPaymentIntegrationRequest&typegen_49_AdyenPaymentIntegrationRequest=Norbix.Sdk.Types.Hub.AdyenPaymentIntegrationRequest&typegen_50_MolliePaymentIntegrationRequest=Norbix.Sdk.Types.Hub.MolliePaymentIntegrationRequest&typegen_51_PaddlePaymentIntegrationRequest=Norbix.Sdk.Types.Hub.PaddlePaymentIntegrationRequest&typegen_52_PayPalPaymentIntegrationRequest=Norbix.Sdk.Types.Hub.PayPalPaymentIntegrationRequest&typegen_53_StripePaymentIntegrationRequest=Norbix.Sdk.Types.Hub.StripePaymentIntegrationRequest&typegen_54_AppleInAppPaymentIntegrationRequest=Norbix.Sdk.Types.Hub.AppleInAppPaymentIntegrationRequest&typegen_55_GoogleInAppPaymentIntegrationRequest=Norbix.Sdk.Types.Hub.GoogleInAppPaymentIntegrationRequest&typegen_285_MontonioPaymentIntegrationRequest=Norbix.Sdk.Types.Hub.MontonioPaymentIntegrationRequest&typegen_287_ShopifyPaymentIntegrationRequest=Norbix.Sdk.Types.Hub.ShopifyPaymentIntegrationRequest&typegen_288_WooCommercePaymentIntegrationRequest=Norbix.Sdk.Types.Hub.WooCommercePaymentIntegrationRequest&typegen_289_MagentoPaymentIntegrationRequest=Norbix.Sdk.Types.Hub.MagentoPaymentIntegrationRequest&typegen_290_BraintreePaymentIntegrationRequest=Norbix.Sdk.Types.Hub.BraintreePaymentIntegrationRequest&typegen_291_AuthorizeNetPaymentIntegrationRequest=Norbix.Sdk.Types.Hub.AuthorizeNetPaymentIntegrationRequest&typegen_292_CheckOutComPaymentIntegrationRequest=Norbix.Sdk.Types.Hub.CheckOutComPaymentIntegrationRequest&typegen_293_WorldpayPaymentIntegrationRequest=Norbix.Sdk.Types.Hub.WorldpayPaymentIntegrationRequest&typegen_56_EdgeWebPushIntegrationRequest=Norbix.Sdk.Types.Hub.EdgeWebPushIntegrationRequest&typegen_57_ChromePluginPushIntegrationRequest=Norbix.Sdk.Types.Hub.ChromePluginPushIntegrationRequest&typegen_58_SafariPushIntegrationRequest=Norbix.Sdk.Types.Hub.SafariPushIntegrationRequest&typegen_59_ChromeWebPushIntegrationRequest=Norbix.Sdk.Types.Hub.ChromeWebPushIntegrationRequest&typegen_60_FirefoxWebPushIntegrationRequest=Norbix.Sdk.Types.Hub.FirefoxWebPushIntegrationRequest&typegen_61_AndroidFirebasePushIntegrationRequest=Norbix.Sdk.Types.Hub.AndroidFirebasePushIntegrationRequest&typegen_62_AppleApnsPushIntegrationRequest=Norbix.Sdk.Types.Hub.AppleApnsPushIntegrationRequest&typegen_65_AwsLambdaCodeIntegrationRequest=Norbix.Sdk.Types.Hub.AwsLambdaCodeIntegrationRequest&typegen_66_AzureFunctionsCodeIntegrationRequest=Norbix.Sdk.Types.Hub.AzureFunctionsCodeIntegrationRequest&typegen_67_GoogleCloudFunctionsCodeIntegrationRequest=Norbix.Sdk.Types.Hub.GoogleCloudFunctionsCodeIntegrationRequest&typegen_68_OllamaLlmIntegrationRequest=Norbix.Sdk.Types.Hub.OllamaLlmIntegrationRequest&typegen_69_OpenRouterLlmIntegrationRequest=Norbix.Sdk.Types.Hub.OpenRouterLlmIntegrationRequest&typegen_70_MistralLlmIntegrationRequest=Norbix.Sdk.Types.Hub.MistralLlmIntegrationRequest&typegen_71_GrokLlmIntegrationRequest=Norbix.Sdk.Types.Hub.GrokLlmIntegrationRequest&typegen_72_GroqLlmIntegrationRequest=Norbix.Sdk.Types.Hub.GroqLlmIntegrationRequest&typegen_73_GoogleLlmIntegrationRequest=Norbix.Sdk.Types.Hub.GoogleLlmIntegrationRequest&typegen_74_AnthropicLlmIntegrationRequest=Norbix.Sdk.Types.Hub.AnthropicLlmIntegrationRequest&typegen_75_OpenAiLlmIntegrationRequest=Norbix.Sdk.Types.Hub.OpenAiLlmIntegrationRequest&typegen_76_PlaywrightMcpIntegrationRequest=Norbix.Sdk.Types.Hub.PlaywrightMcpIntegrationRequest&typegen_77_MongoDbMcpIntegrationRequest=Norbix.Sdk.Types.Hub.MongoDbMcpIntegrationRequest&typegen_78_GitHubMcpIntegrationRequest=Norbix.Sdk.Types.Hub.GitHubMcpIntegrationRequest&typegen_79_StripeMcpIntegrationRequest=Norbix.Sdk.Types.Hub.StripeMcpIntegrationRequest&typegen_80_BraveSearchMcpIntegrationRequest=Norbix.Sdk.Types.Hub.BraveSearchMcpIntegrationRequest&typegen_81_ObsidianMcpIntegrationRequest=Norbix.Sdk.Types.Hub.ObsidianMcpIntegrationRequest&typegen_82_EmailTemplateDto=Norbix.Sdk.Types.Hub.EmailTemplateDto&typegen_83_PushTemplateDto=Norbix.Sdk.Types.Hub.PushTemplateDto&typegen_84_SmsTemplateDto=Norbix.Sdk.Types.Hub.SmsTemplateDto&typegen_85_SystemEmailTemplateDto=Norbix.Sdk.Types.Hub.SystemEmailTemplateDto&typegen_86_TriggerActionEmailDto=Norbix.Sdk.Types.Hub.TriggerActionEmailDto&typegen_87_TriggerActionPushDto=Norbix.Sdk.Types.Hub.TriggerActionPushDto&typegen_88_TriggerActionCodeDto=Norbix.Sdk.Types.Hub.TriggerActionCodeDto&typegen_89_TriggerActionWebhookDto=Norbix.Sdk.Types.Hub.TriggerActionWebhookDto&typegen_236_TriggerActionSmsDto=Norbix.Sdk.Types.Hub.TriggerActionSmsDto&typegen_237_TriggerActionSseDto=Norbix.Sdk.Types.Hub.TriggerActionSseDto&typegen_238_TriggerActionMarketplaceDto=Norbix.Sdk.Types.Hub.TriggerActionMarketplaceDto&typegen_239_SseDeliverySettingsDto=Norbix.Sdk.Types.Hub.SseDeliverySettingsDto&typegen_240_GetTriggers=Norbix.Sdk.Types.Hub.GetTriggers&typegen_241_GetTriggersResponse=Norbix.Sdk.Types.Hub.GetTriggersResponse&typegen_90_EmailToAllUsersDeliverySettingsDto=Norbix.Sdk.Types.Hub.EmailToAllUsersDeliverySettingsDto&typegen_91_EmailToAccountUsersDeliverySettingsDto=Norbix.Sdk.Types.Hub.EmailToAccountUsersDeliverySettingsDto&typegen_92_EmailToUsersDeliverySettingsDto=Norbix.Sdk.Types.Hub.EmailToUsersDeliverySettingsDto&typegen_93_EmailToEmailAddressesDeliverySettingsDto=Norbix.Sdk.Types.Hub.EmailToEmailAddressesDeliverySettingsDto&typegen_94_EmailToCollectionRecordsDeliverySettingsDto=Norbix.Sdk.Types.Hub.EmailToCollectionRecordsDeliverySettingsDto&typegen_95_PushToAllUsersDeliverySettingsDto=Norbix.Sdk.Types.Hub.PushToAllUsersDeliverySettingsDto&typegen_96_PushToUsersDeliverySettingsDto=Norbix.Sdk.Types.Hub.PushToUsersDeliverySettingsDto&typegen_229_PushToAccountUsersDeliverySettingsDto=Norbix.Sdk.Types.Hub.PushToAccountUsersDeliverySettingsDto&typegen_97_PushToCollectionRecordsDeliverySettingsDto=Norbix.Sdk.Types.Hub.PushToCollectionRecordsDeliverySettingsDto&typegen_98_PushToDevicesDeliverySettingsDto=Norbix.Sdk.Types.Hub.PushToDevicesDeliverySettingsDto&typegen_99_SmsToAllUsersDeliverySettingsDto=Norbix.Sdk.Types.Hub.SmsToAllUsersDeliverySettingsDto&typegen_100_SmsToUsersDeliverySettingsDto=Norbix.Sdk.Types.Hub.SmsToUsersDeliverySettingsDto&typegen_249_SmsToAccountUsersDeliverySettingsDto=Norbix.Sdk.Types.Hub.SmsToAccountUsersDeliverySettingsDto&typegen_101_SmsToCollectionRecordsDeliverySettingsDto=Norbix.Sdk.Types.Hub.SmsToCollectionRecordsDeliverySettingsDto&typegen_102_SmsToPhoneNumbersDeliverySettingsDto=Norbix.Sdk.Types.Hub.SmsToPhoneNumbersDeliverySettingsDto&typegen_103_OpenAiLlmIntegrationDto=Norbix.Sdk.Types.Hub.OpenAiLlmIntegrationDto&typegen_104_AnthropicLlmIntegrationDto=Norbix.Sdk.Types.Hub.AnthropicLlmIntegrationDto&typegen_105_OllamaLlmIntegrationDto=Norbix.Sdk.Types.Hub.OllamaLlmIntegrationDto&typegen_106_GroqLlmIntegrationDto=Norbix.Sdk.Types.Hub.GroqLlmIntegrationDto&typegen_107_GoogleLlmIntegrationDto=Norbix.Sdk.Types.Hub.GoogleLlmIntegrationDto&typegen_108_MistralLlmIntegrationDto=Norbix.Sdk.Types.Hub.MistralLlmIntegrationDto&typegen_109_OpenRouterLlmIntegrationDto=Norbix.Sdk.Types.Hub.OpenRouterLlmIntegrationDto&typegen_110_GrokLlmIntegrationDto=Norbix.Sdk.Types.Hub.GrokLlmIntegrationDto&typegen_111_DockerMcpIntegrationDto=Norbix.Sdk.Types.Hub.DockerMcpIntegrationDto&typegen_112_GoogleCalendarMcpIntegrationDto=Norbix.Sdk.Types.Hub.GoogleCalendarMcpIntegrationDto&typegen_113_ObsidianMcpIntegrationDto=Norbix.Sdk.Types.Hub.ObsidianMcpIntegrationDto&typegen_114_AwsLambdaCrossAccountRoleCodeIntegrationDto=Norbix.Sdk.Types.Hub.AwsLambdaCrossAccountRoleCodeIntegrationDto&typegen_115_AwsLambdaIamCodeIntegrationDto=Norbix.Sdk.Types.Hub.AwsLambdaIamCodeIntegrationDto&typegen_116_AzureFunctionsCodeIntegrationDto=Norbix.Sdk.Types.Hub.AzureFunctionsCodeIntegrationDto&typegen_118_GoogleCloudFunctionsCodeIntegrationDto=Norbix.Sdk.Types.Hub.GoogleCloudFunctionsCodeIntegrationDto&typegen_120_AdyenPaymentIntegrationDto=Norbix.Sdk.Types.Hub.AdyenPaymentIntegrationDto&typegen_121_AppleInAppPaymentIntegrationDto=Norbix.Sdk.Types.Hub.AppleInAppPaymentIntegrationDto&typegen_122_GoogleInAppPaymentIntegrationDto=Norbix.Sdk.Types.Hub.GoogleInAppPaymentIntegrationDto&typegen_123_LemonSqueezyPaymentIntegrationDto=Norbix.Sdk.Types.Hub.LemonSqueezyPaymentIntegrationDto&typegen_124_MolliePaymentIntegrationDto=Norbix.Sdk.Types.Hub.MolliePaymentIntegrationDto&typegen_125_PaddlePaymentIntegrationDto=Norbix.Sdk.Types.Hub.PaddlePaymentIntegrationDto&typegen_126_PayPalPaymentIntegrationDto=Norbix.Sdk.Types.Hub.PayPalPaymentIntegrationDto&typegen_127_StripePaymentIntegrationDto=Norbix.Sdk.Types.Hub.StripePaymentIntegrationDto&typegen_184_ShopifyPaymentIntegrationDto=Norbix.Sdk.Types.Hub.ShopifyPaymentIntegrationDto&typegen_185_WooCommercePaymentIntegrationDto=Norbix.Sdk.Types.Hub.WooCommercePaymentIntegrationDto&typegen_186_MagentoPaymentIntegrationDto=Norbix.Sdk.Types.Hub.MagentoPaymentIntegrationDto&typegen_187_BraintreePaymentIntegrationDto=Norbix.Sdk.Types.Hub.BraintreePaymentIntegrationDto&typegen_188_AuthorizeNetPaymentIntegrationDto=Norbix.Sdk.Types.Hub.AuthorizeNetPaymentIntegrationDto&typegen_189_CheckOutComPaymentIntegrationDto=Norbix.Sdk.Types.Hub.CheckOutComPaymentIntegrationDto&typegen_190_WorldpayPaymentIntegrationDto=Norbix.Sdk.Types.Hub.WorldpayPaymentIntegrationDto&typegen_286_MontonioPaymentIntegrationDto=Norbix.Sdk.Types.Hub.MontonioPaymentIntegrationDto&typegen_294_PaymentOrderEventDto=Norbix.Sdk.Types.Hub.PaymentOrderEventDto&typegen_128_AppleSignInMembershipIntegrationDto=Norbix.Sdk.Types.Hub.AppleSignInMembershipIntegrationDto&typegen_129_GitHubMembershipIntegrationDto=Norbix.Sdk.Types.Hub.GitHubMembershipIntegrationDto&typegen_130_GoogleMembershipIntegrationDto=Norbix.Sdk.Types.Hub.GoogleMembershipIntegrationDto&typegen_131_MetaMembershipIntegrationDto=Norbix.Sdk.Types.Hub.MetaMembershipIntegrationDto&typegen_132_MicrosoftMembershipIntegrationDto=Norbix.Sdk.Types.Hub.MicrosoftMembershipIntegrationDto&typegen_133_OktaMembershipIntegrationDto=Norbix.Sdk.Types.Hub.OktaMembershipIntegrationDto&typegen_134_XMembershipIntegrationDto=Norbix.Sdk.Types.Hub.XMembershipIntegrationDto&typegen_135_AmqpLoggingIntegrationDto=Norbix.Sdk.Types.Hub.AmqpLoggingIntegrationDto&typegen_136_AwsKinesisLoggingIntegrationDto=Norbix.Sdk.Types.Hub.AwsKinesisLoggingIntegrationDto&typegen_137_AwsS3CrossAccountRoleLoggingIntegrationDto=Norbix.Sdk.Types.Hub.AwsS3CrossAccountRoleLoggingIntegrationDto&typegen_138_AwsS3IamLoggingIntegrationDto=Norbix.Sdk.Types.Hub.AwsS3IamLoggingIntegrationDto&typegen_139_AzureOtelLoggingIntegrationDto=Norbix.Sdk.Types.Hub.AzureOtelLoggingIntegrationDto&typegen_140_DataDogLoggingIntegrationDto=Norbix.Sdk.Types.Hub.DataDogLoggingIntegrationDto&typegen_141_ElasticSearchLoggingIntegrationDto=Norbix.Sdk.Types.Hub.ElasticSearchLoggingIntegrationDto&typegen_142_InternalKafkaLoggingIntegrationDto=Norbix.Sdk.Types.Hub.InternalKafkaLoggingIntegrationDto&typegen_143_KafkaLoggingIntegrationDto=Norbix.Sdk.Types.Hub.KafkaLoggingIntegrationDto&typegen_144_KibanaLoggingIntegrationDto=Norbix.Sdk.Types.Hub.KibanaLoggingIntegrationDto&typegen_145_LocalFileLoggingIntegrationDto=Norbix.Sdk.Types.Hub.LocalFileLoggingIntegrationDto&typegen_147_MongoDbLoggingIntegrationDto=Norbix.Sdk.Types.Hub.MongoDbLoggingIntegrationDto&typegen_148_NewRelicLoggingIntegrationDto=Norbix.Sdk.Types.Hub.NewRelicLoggingIntegrationDto&typegen_149_PrometheusLoggingIntegrationDto=Norbix.Sdk.Types.Hub.PrometheusLoggingIntegrationDto&typegen_150_SplunkLoggingIntegrationDto=Norbix.Sdk.Types.Hub.SplunkLoggingIntegrationDto&typegen_153_AppleICloudFilesIntegrationDto=Norbix.Sdk.Types.Hub.AppleICloudFilesIntegrationDto&typegen_154_AwsS3CrossAccountRoleFilesIntegrationDto=Norbix.Sdk.Types.Hub.AwsS3CrossAccountRoleFilesIntegrationDto&typegen_155_AwsS3IamFilesIntegrationDto=Norbix.Sdk.Types.Hub.AwsS3IamFilesIntegrationDto&typegen_156_AzureBlobFilesIntegrationDto=Norbix.Sdk.Types.Hub.AzureBlobFilesIntegrationDto&typegen_157_DropBoxFilesIntegrationDto=Norbix.Sdk.Types.Hub.DropBoxFilesIntegrationDto&typegen_158_FtpFilesIntegrationDto=Norbix.Sdk.Types.Hub.FtpFilesIntegrationDto&typegen_159_GoogleCloudFilesIntegrationDto=Norbix.Sdk.Types.Hub.GoogleCloudFilesIntegrationDto&typegen_160_GoogleDriveFilesIntegrationDto=Norbix.Sdk.Types.Hub.GoogleDriveFilesIntegrationDto&typegen_161_LocalFilesIntegrationDto=Norbix.Sdk.Types.Hub.LocalFilesIntegrationDto&typegen_164_MongoDbConnectionStringIntegrationDto=Norbix.Sdk.Types.Hub.MongoDbConnectionStringIntegrationDto&typegen_165_MongoDbAtlasFlexManagedIntegrationDto=Norbix.Sdk.Types.Hub.MongoDbAtlasFlexManagedIntegrationDto&typegen_165_BirdSmsIntegrationDto=Norbix.Sdk.Types.Hub.BirdSmsIntegrationDto&typegen_166_PlivoSmsIntegrationDto=Norbix.Sdk.Types.Hub.PlivoSmsIntegrationDto&typegen_167_SinchSmsIntegrationDto=Norbix.Sdk.Types.Hub.SinchSmsIntegrationDto&typegen_168_TelesignSmsIntegrationDto=Norbix.Sdk.Types.Hub.TelesignSmsIntegrationDto&typegen_169_TelnyxSmsIntegrationDto=Norbix.Sdk.Types.Hub.TelnyxSmsIntegrationDto&typegen_170_TwilioSmsIntegrationDto=Norbix.Sdk.Types.Hub.TwilioSmsIntegrationDto&typegen_171_VonageSmsIntegrationDto=Norbix.Sdk.Types.Hub.VonageSmsIntegrationDto&typegen_246_FakeSmsIntegrationDto=Norbix.Sdk.Types.Hub.FakeSmsIntegrationDto&typegen_172_AndroidFirebasePushIntegrationDto=Norbix.Sdk.Types.Hub.AndroidFirebasePushIntegrationDto&typegen_173_AppleApnsPushIntegrationDto=Norbix.Sdk.Types.Hub.AppleApnsPushIntegrationDto&typegen_174_ChromePluginPushIntegrationDto=Norbix.Sdk.Types.Hub.ChromePluginPushIntegrationDto&typegen_175_ChromeWebPushIntegrationDto=Norbix.Sdk.Types.Hub.ChromeWebPushIntegrationDto&typegen_176_EdgeWebPushIntegrationDto=Norbix.Sdk.Types.Hub.EdgeWebPushIntegrationDto&typegen_177_FirefoxWebPushIntegrationDto=Norbix.Sdk.Types.Hub.FirefoxWebPushIntegrationDto&typegen_178_SafariPushIntegrationDto=Norbix.Sdk.Types.Hub.SafariPushIntegrationDto&typegen_247_FakePushIntegrationDto=Norbix.Sdk.Types.Hub.FakePushIntegrationDto&typegen_179_AwsCrossAccountRoleEmailIntegrationDto=Norbix.Sdk.Types.Hub.AwsCrossAccountRoleEmailIntegrationDto&typegen_180_AwsIamEmailIntegrationDto=Norbix.Sdk.Types.Hub.AwsIamEmailIntegrationDto&typegen_181_MailGunEmailIntegrationDto=Norbix.Sdk.Types.Hub.MailGunEmailIntegrationDto&typegen_182_SendGridEmailIntegrationDto=Norbix.Sdk.Types.Hub.SendGridEmailIntegrationDto&typegen_183_SmtpEmailIntegrationDto=Norbix.Sdk.Types.Hub.SmtpEmailIntegrationDto&typegen_248_FakeEmailIntegrationDto=Norbix.Sdk.Types.Hub.FakeEmailIntegrationDto&typegen_192_WebhookIntegrationDto=Norbix.Sdk.Types.Hub.WebhookIntegrationDto&typegen_193_WebhookDestinationDto=Norbix.Sdk.Types.Hub.WebhookDestinationDto&typegen_194_SchedulerTaskDto=Norbix.Sdk.Types.Hub.SchedulerTaskDto&typegen_249_EmailCampaignSchedulerTaskRequest=Norbix.Sdk.Types.Hub.EmailCampaignSchedulerTaskRequest&typegen_250_SmsCampaignSchedulerTaskRequest=Norbix.Sdk.Types.Hub.SmsCampaignSchedulerTaskRequest&typegen_251_PushCampaignSchedulerTaskRequest=Norbix.Sdk.Types.Hub.PushCampaignSchedulerTaskRequest&typegen_195_MongoDbAggregateDto=Norbix.Sdk.Types.Hub.MongoDbAggregateDto&typegen_196_MarketplaceIntegrationDto=Norbix.Sdk.Types.Hub.MarketplaceIntegrationDto&typegen_197_MarketplaceFunctionDto=Norbix.Sdk.Types.Hub.MarketplaceFunctionDto&typegen_198_MarketplaceListingDto=Norbix.Sdk.Types.Hub.MarketplaceListingDto&typegen_199_MarketplaceFunctionDefinitionDto=Norbix.Sdk.Types.Hub.MarketplaceFunctionDefinitionDto&typegen_200_MarketplaceFunctionParameterDto=Norbix.Sdk.Types.Hub.MarketplaceFunctionParameterDto&typegen_201_EnableCode=Norbix.Sdk.Types.Hub.EnableCode&typegen_202_DisableCode=Norbix.Sdk.Types.Hub.DisableCode&typegen_203_GetCodeIntegrations=Norbix.Sdk.Types.Hub.GetCodeIntegrations&typegen_204_GetCodeIntegration=Norbix.Sdk.Types.Hub.GetCodeIntegration&typegen_205_SaveCodeIntegration=Norbix.Sdk.Types.Hub.SaveCodeIntegration&typegen_206_TestCodeIntegration=Norbix.Sdk.Types.Hub.TestCodeIntegration&typegen_207_ConfirmCodeIntegrationHumanDeliveryRequest=Norbix.Sdk.Types.Hub.ConfirmCodeIntegrationHumanDeliveryRequest&typegen_209_DeleteCodeIntegrationRequest=Norbix.Sdk.Types.Hub.DeleteCodeIntegrationRequest&typegen_210_EnableCodeIntegrationRequest=Norbix.Sdk.Types.Hub.EnableCodeIntegrationRequest&typegen_211_DisableCodeIntegrationRequest=Norbix.Sdk.Types.Hub.DisableCodeIntegrationRequest&typegen_212_GetMarketplaceListings=Norbix.Sdk.Types.Hub.GetMarketplaceListings&typegen_213_GetMarketplaceListingFunctionTokens=Norbix.Sdk.Types.Hub.GetMarketplaceListingFunctionTokens&typegen_214_GetMarketplaceIntegrations=Norbix.Sdk.Types.Hub.GetMarketplaceIntegrations&typegen_215_GetMarketplaceIntegration=Norbix.Sdk.Types.Hub.GetMarketplaceIntegration&typegen_216_SaveMarketplaceIntegration=Norbix.Sdk.Types.Hub.SaveMarketplaceIntegration&typegen_217_DeleteMarketplaceIntegration=Norbix.Sdk.Types.Hub.DeleteMarketplaceIntegration&typegen_218_EnableMarketplaceIntegration=Norbix.Sdk.Types.Hub.EnableMarketplaceIntegration&typegen_219_DisableMarketplaceIntegration=Norbix.Sdk.Types.Hub.DisableMarketplaceIntegration&typegen_221_GetMarketplaceFunctions=Norbix.Sdk.Types.Hub.GetMarketplaceFunctions&typegen_222_GetMarketplaceFunction=Norbix.Sdk.Types.Hub.GetMarketplaceFunction&typegen_223_SaveMarketplaceFunction=Norbix.Sdk.Types.Hub.SaveMarketplaceFunction&typegen_224_DeleteMarketplaceFunction=Norbix.Sdk.Types.Hub.DeleteMarketplaceFunction&typegen_225_EnableMarketplaceFunction=Norbix.Sdk.Types.Hub.EnableMarketplaceFunction&typegen_226_DisableMarketplaceFunction=Norbix.Sdk.Types.Hub.DisableMarketplaceFunction&typegen_227_GetMarketplaceFunctionTokens=Norbix.Sdk.Types.Hub.GetMarketplaceFunctionTokens&typegen_228_InvokeMarketplaceFunction=Norbix.Sdk.Types.Hub.InvokeMarketplaceFunction&typegen_232_GetMarketplaceListing=Norbix.Sdk.Types.Hub.GetMarketplaceListing&typegen_233_TestMarketplaceIntegration=Norbix.Sdk.Types.Hub.TestMarketplaceIntegration&typegen_234_TestMarketplaceIntegrationResponse=Norbix.Sdk.Types.Hub.TestMarketplaceIntegrationResponse&typegen_235_GetMarketplaceListingResponse=Norbix.Sdk.Types.Hub.GetMarketplaceListingResponse&typegen_230_AdminPortalStructureDto=Norbix.Sdk.Types.Hub.AdminPortalStructureDto&typegen_231_AdminPortalModuleDto=Norbix.Sdk.Types.Hub.AdminPortalModuleDto&typegen_236_UserMessageEntryWireDto=Norbix.Sdk.Types.Hub.UserMessageEntryWireDto&typegen_237_AssistantTextEntryWireDto=Norbix.Sdk.Types.Hub.AssistantTextEntryWireDto&typegen_238_AssistantQuestionEntryWireDto=Norbix.Sdk.Types.Hub.AssistantQuestionEntryWireDto&typegen_239_UserAnswerEntryWireDto=Norbix.Sdk.Types.Hub.UserAnswerEntryWireDto&typegen_240_PlanEntryWireDto=Norbix.Sdk.Types.Hub.PlanEntryWireDto&typegen_241_UserDecisionEntryWireDto=Norbix.Sdk.Types.Hub.UserDecisionEntryWireDto&typegen_242_RunStepEntryWireDto=Norbix.Sdk.Types.Hub.RunStepEntryWireDto&typegen_243_ActionPendingEntryWireDto=Norbix.Sdk.Types.Hub.ActionPendingEntryWireDto&typegen_244_NoticeEntryWireDto=Norbix.Sdk.Types.Hub.NoticeEntryWireDto&typegen_245_ConversationSnapshotEntryWireDto=Norbix.Sdk.Types.Hub.ConversationSnapshotEntryWireDto&typegen_269_FunctionRefDto=Norbix.Sdk.Types.Hub.FunctionRefDto&typegen_270_CodeFunctionEventDto=Norbix.Sdk.Types.Hub.CodeFunctionEventDto&typegen_271_CodeFunctionContextDto=Norbix.Sdk.Types.Hub.CodeFunctionContextDto&typegen_272_CodeFunctionCallerDto=Norbix.Sdk.Types.Hub.CodeFunctionCallerDto&typegen_273_CodeFunctionRunAsDto=Norbix.Sdk.Types.Hub.CodeFunctionRunAsDto&typegen_274_CodeFunctionDataDto=Norbix.Sdk.Types.Hub.CodeFunctionDataDto&typegen_275_DatabaseRecordChangeDto=Norbix.Sdk.Types.Hub.DatabaseRecordChangeDto&typegen_276_UserChangeDto=Norbix.Sdk.Types.Hub.UserChangeDto&typegen_277_FileChangeDto=Norbix.Sdk.Types.Hub.FileChangeDto&typegen_278_PaymentFactDto=Norbix.Sdk.Types.Hub.PaymentFactDto&typegen_279_AiUsageEventDto=Norbix.Sdk.Types.Hub.AiUsageEventDto&typegen_280_ScheduledTaskInfoDto=Norbix.Sdk.Types.Hub.ScheduledTaskInfoDto&typegen_281_FakeCodeIntegrationDto=Norbix.Sdk.Types.Hub.FakeCodeIntegrationDto&typegen_282_FakeCodeIntegrationRequest=Norbix.Sdk.Types.Hub.FakeCodeIntegrationRequest&typegen_283_CodeFunctionSchedulerTaskRequest=Norbix.Sdk.Types.Hub.CodeFunctionSchedulerTaskRequest&typegen_284_MarketplaceFunctionSchedulerTaskRequest=Norbix.Sdk.Types.Hub.MarketplaceFunctionSchedulerTaskRequest, Headers: { Authorization: Bearer test-bearer, norbix-account-id: test-account, diff --git a/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Logs.verified.txt b/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Logs.verified.txt index cedf908..325b68d 100644 --- a/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Logs.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Logs.verified.txt @@ -421,6 +421,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Membership.verified.txt b/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Membership.verified.txt index 700964a..e645dd2 100644 --- a/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Membership.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Membership.verified.txt @@ -1,7 +1,7 @@ { Target: Hub, Group: membership, - Count: 46, + Count: 48, Endpoints: [ { Target: Hub, @@ -78,7 +78,7 @@ Sent: { Method: GET, Path: /v2/membership/users, - Query: ?startingAfter=test-startingAfter&pageSize=1&env=test-env, + Query: ?startingAfter=test-startingAfter&pageSize=1&search=test-search&email=user%40example.test&userName=test-userName&statuses=test-string&types=test-string&roleNames=test-string&env=test-env, Headers: { Authorization: Bearer test-bearer, norbix-account-id: test-account, @@ -544,7 +544,12 @@ ResetPasswordTokenExpiration: 7, InvitationExpiration: 7, EmailVerificationExpiration: 7, - DefaultSubscribeToNews: false + DefaultSubscribeToNews: false, + AllowGuestUsers: false, + AllowEmailRegistration: false, + AllowUsernameRegistration: false, + InviteOnly: false, + AllowAnyoneToSignUp: false }, ResponseStatus: { IsSuccess: true @@ -594,6 +599,9 @@ emailVerificationExpiration: 1.0, deactivationExpiration: 1.0, defaultSubscribeToNews: true, + allowEmailRegistration: true, + inviteOnly: true, + allowAnyoneToSignUp: true, minLength: 1.0, maxLength: 1.0, minNumbers: 1.0, @@ -860,6 +868,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1000,6 +1011,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1123,6 +1137,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1156,6 +1173,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1491,6 +1511,94 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], + ResponseStatus: { + IsSuccess: true + } + } + }, + { + Target: Hub, + Group: membership, + MethodName: ImportUsersAsync, + RequestType: ImportUsersRequest, + HttpMethod: POST, + Path: /{version}/membership/users/import, + IsAccountScoped: false, + IsUnauthenticated: false, + Sent: { + Method: POST, + Path: /v2/membership/users/import, + Headers: { + Authorization: Bearer test-bearer, + Content-Type: application/json; charset=utf-8, + norbix-account-id: test-account, + norbix-project-id: test-project + }, + Body: { + dryRun: true, + ignoreDefaultRoles: true, + users: [ + null + ], + env: test-env + } + }, + ResponseType: ImportUsersResponse, + Response: { + Result: { + dryRun: true, + received: 7, + imported: 7, + valid: 7, + existing: 7, + invalid: 7, + failed: 7, + rows: [ + {} + ] + }, + ResponseStatus: { + IsSuccess: true + } + } + }, + { + Target: Hub, + Group: membership, + MethodName: RepairLoginProjectIdsAsync, + RequestType: RepairLoginProjectIdsRequest, + HttpMethod: POST, + Path: /{version}/membership/users/repair-logins, + IsAccountScoped: false, + IsUnauthenticated: false, + Sent: { + Method: POST, + Path: /v2/membership/users/repair-logins, + Headers: { + Authorization: Bearer test-bearer, + Content-Type: application/json; charset=utf-8, + norbix-account-id: test-account, + norbix-project-id: test-project + }, + Body: { + dryRun: true, + env: test-env + } + }, + ResponseType: RepairLoginProjectIdsResponse, + Response: { + Result: { + dryRun: true, + loginsWithoutProject: 7, + loginsToRepair: 7, + loginsRepaired: 7, + accountLoginsSkipped: 7, + otherProjectLoginsSkipped: 7, + loginsWithoutEvidence: 7 + }, ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Notifications.verified.txt b/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Notifications.verified.txt index f7c24be..3da5d6a 100644 --- a/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Notifications.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Notifications.verified.txt @@ -1,7 +1,7 @@ { Target: Hub, Group: notifications, - Count: 120, + Count: 124, Endpoints: [ { Target: Hub, @@ -138,6 +138,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -283,11 +286,11 @@ HasMore: false }, Content: {}, + TransactionalKind: test-transactionalKind, CampaignId: Guid_1, BatchId: Guid_1, NotificationId: Guid_1, - RefNotificationId: Guid_1, - Body: test-body + RefNotificationId: Guid_1 }, ResponseStatus: { IsSuccess: true @@ -838,6 +841,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1100,6 +1106,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1172,6 +1181,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1583,6 +1595,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1620,6 +1635,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1658,6 +1676,131 @@ } } }, + { + Target: Hub, + Group: notifications, + MethodName: GetNotificationInboxAsync, + RequestType: GetNotificationInboxRequest, + HttpMethod: GET, + Path: /{version}/notifications/inbox, + IsAccountScoped: false, + IsUnauthenticated: false, + Sent: { + Method: GET, + Path: /v2/notifications/inbox, + Query: ?unreadOnly=True&channel=test-channel&env=test-env&startingAfter=test-startingAfter&endingBefore=test-endingBefore&pageSize=1, + Headers: { + Authorization: Bearer test-bearer, + norbix-account-id: test-account, + norbix-project-id: test-project + } + }, + ResponseType: GetNotificationInboxResponse, + Response: { + List: { + Items: [ + { + IsRead: false + } + ], + HasMore: false, + HasPrevious: false, + StartingAfter: cursor-start, + EndingBefore: cursor-end + }, + ResponseStatus: { + IsSuccess: true + } + } + }, + { + Target: Hub, + Group: notifications, + MethodName: GetUnreadCountAsync, + RequestType: GetUnreadCountRequest, + HttpMethod: GET, + Path: /{version}/notifications/inbox/unread-count, + IsAccountScoped: false, + IsUnauthenticated: false, + Sent: { + Method: GET, + Path: /v2/notifications/inbox/unread-count, + Query: ?env=test-env, + Headers: { + Authorization: Bearer test-bearer, + norbix-account-id: test-account, + norbix-project-id: test-project + } + }, + ResponseType: GetUnreadCountResponse, + Response: { + Count: 42, + ResponseStatus: { + IsSuccess: true + } + } + }, + { + Target: Hub, + Group: notifications, + MethodName: MarkAllNotificationsReadAsync, + RequestType: MarkAllNotificationsReadRequest, + HttpMethod: POST, + Path: /{version}/notifications/inbox/read-all, + IsAccountScoped: false, + IsUnauthenticated: false, + Sent: { + Method: POST, + Path: /v2/notifications/inbox/read-all, + Headers: { + Authorization: Bearer test-bearer, + Content-Type: application/json; charset=utf-8, + norbix-account-id: test-account, + norbix-project-id: test-project + }, + Body: { + env: test-env + } + }, + ResponseType: MarkAllNotificationsReadResponse, + Response: { + ResponseStatus: { + IsSuccess: true + } + } + }, + { + Target: Hub, + Group: notifications, + MethodName: MarkNotificationReadAsync, + RequestType: MarkNotificationReadRequest, + HttpMethod: POST, + Path: /{version}/notifications/inbox/{notificationId}/read, + PathParams: [ + notificationId + ], + IsAccountScoped: false, + IsUnauthenticated: false, + Sent: { + Method: POST, + Path: /v2/notifications/inbox/{guid}/read, + Headers: { + Authorization: Bearer test-bearer, + Content-Type: application/json; charset=utf-8, + norbix-account-id: test-account, + norbix-project-id: test-project + }, + Body: { + env: test-env + } + }, + ResponseType: MarkNotificationReadResponse, + Response: { + ResponseStatus: { + IsSuccess: true + } + } + }, { Target: Hub, Group: notifications, @@ -1793,6 +1936,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -2279,6 +2425,9 @@ StartingAfter: cursor-start, EndingBefore: cursor-end }, + TeamDevices: [ + {} + ], ResponseStatus: { IsSuccess: true } @@ -2322,6 +2471,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -2562,6 +2714,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -2754,6 +2909,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -3135,8 +3293,7 @@ collection: { fieldType: user, schemaName: test-schemaName, - recipientsSourceType: allUsers, - campaignTime: 1.0 + recipientsSourceType: allUsers }, phoneNumbers: { recipientsSourceType: allUsers, @@ -3151,6 +3308,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -3755,6 +3915,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -3946,6 +4109,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Payments.verified.txt b/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Payments.verified.txt index ae62f70..bdeccd8 100644 --- a/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Payments.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Payments.verified.txt @@ -295,6 +295,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -548,6 +551,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Projects.verified.txt b/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Projects.verified.txt index c161f65..85d0de8 100644 --- a/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Projects.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Projects.verified.txt @@ -201,6 +201,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Scheduler.verified.txt b/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Scheduler.verified.txt index 2e1d763..61836be 100644 --- a/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Scheduler.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Scheduler.verified.txt @@ -188,6 +188,7 @@ InitiatorId: Guid_1, IsEnabled: false, StopOnError: false, + HasEnded: false, IsFailing: false }, ResponseStatus: { @@ -253,7 +254,8 @@ Items: [ { IsEnabled: false, - IsFailing: false + IsFailing: false, + HasEnded: false } ], HasMore: false, @@ -292,6 +294,7 @@ initiatorUserId: Guid_1, isEnabled: true, stopOnError: true, + endsAtUnix: 1.0, task: { type: emailCampaign }, @@ -302,6 +305,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Support.verified.txt b/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Support.verified.txt index 4b7bb63..1f8be6b 100644 --- a/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Support.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Support.verified.txt @@ -101,6 +101,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -135,6 +138,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Triggers.verified.txt b/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Triggers.verified.txt index 24a981b..ca8965d 100644 --- a/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Triggers.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/EndpointCoverageTests.Hub.Triggers.verified.txt @@ -1,8 +1,46 @@ { Target: Hub, Group: triggers, - Count: 1, + Count: 3, Endpoints: [ + { + Target: Hub, + Group: triggers, + MethodName: GetTriggerDefinitionAsync, + RequestType: GetTriggerDefinition, + HttpMethod: GET, + Path: /{version}/triggers/{id}/definition, + PathParams: [ + id + ], + IsAccountScoped: false, + IsUnauthenticated: false, + Sent: { + Method: GET, + Path: /v2/triggers/{guid}/definition, + Query: ?triggerType=Membership&schemaId={guid}&env=test-env, + Headers: { + Authorization: Bearer test-bearer, + norbix-account-id: test-account, + norbix-project-id: test-project + } + }, + ResponseType: GetTriggerDefinitionResponse, + Response: { + Trigger: { + TriggerId: Guid_1, + Name: test-name, + Description: test-description, + IsEnabled: true, + PreExecuteCode: test-preExecuteCode, + Order: 7, + BreakOnError: true + }, + ResponseStatus: { + IsSuccess: true + } + } + }, { Target: Hub, Group: triggers, @@ -31,6 +69,46 @@ IsSuccess: true } } + }, + { + Target: Hub, + Group: triggers, + MethodName: TestTriggerPreExecuteCodeAsync, + RequestType: TestTriggerPreExecuteCode, + HttpMethod: POST, + Path: /{version}/triggers/pre-execute-code/test, + IsAccountScoped: false, + IsUnauthenticated: false, + Sent: { + Method: POST, + Path: /v2/triggers/pre-execute-code/test, + Headers: { + Authorization: Bearer test-bearer, + Content-Type: application/json; charset=utf-8, + norbix-account-id: test-account, + norbix-project-id: test-project + }, + Body: { + code: test-code, + triggerType: membership, + newRecord: test-newRecord, + oldRecord: test-oldRecord, + eventKind: test-eventKind, + eventName: test-eventName, + env: test-env + } + }, + ResponseType: TestTriggerPreExecuteCodeResponse, + Response: { + Outcome: test-outcome, + TriggerRuns: true, + Problems: [ + {} + ], + ResponseStatus: { + IsSuccess: true + } + } } ] } \ No newline at end of file diff --git a/tests/Norbix.Hub.Tests/test_results/PaymentsMontonioIntegrationTests.SavePaymentsIntegration_sends_the_Montonio_shape.verified.txt b/tests/Norbix.Hub.Tests/test_results/PaymentsMontonioIntegrationTests.SavePaymentsIntegration_sends_the_Montonio_shape.verified.txt new file mode 100644 index 0000000..8bd856b --- /dev/null +++ b/tests/Norbix.Hub.Tests/test_results/PaymentsMontonioIntegrationTests.SavePaymentsIntegration_sends_the_Montonio_shape.verified.txt @@ -0,0 +1,22 @@ +{ + Sent: { + Method: POST, + Path: /v2/payments/integrations, + Headers: { + Authorization: Bearer test-api-key, + Content-Type: application/json; charset=utf-8, + norbix-project-id: test-project + }, + Body: { + integration: { + provider: montonio, + accessKey: test-access-key, + secretKey: test-secret-key, + isSandbox: true, + locale: lt, + isEnabled: false + } + } + }, + Id: int_montonio +} \ No newline at end of file diff --git a/tests/Norbix.Hub.Tests/test_results/PushEndpointTests.CreatePushCampaignAsync.verified.txt b/tests/Norbix.Hub.Tests/test_results/PushEndpointTests.CreatePushCampaignAsync.verified.txt index d8e40af..3f07404 100644 --- a/tests/Norbix.Hub.Tests/test_results/PushEndpointTests.CreatePushCampaignAsync.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/PushEndpointTests.CreatePushCampaignAsync.verified.txt @@ -35,6 +35,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Hub.Tests/test_results/PushEndpointTests.CreatePushTemplateAsync.verified.txt b/tests/Norbix.Hub.Tests/test_results/PushEndpointTests.CreatePushTemplateAsync.verified.txt index 14aa73d..b55219f 100644 --- a/tests/Norbix.Hub.Tests/test_results/PushEndpointTests.CreatePushTemplateAsync.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/PushEndpointTests.CreatePushTemplateAsync.verified.txt @@ -27,6 +27,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Hub.Tests/test_results/PushEndpointTests.GetPushDevicesAsync.verified.txt b/tests/Norbix.Hub.Tests/test_results/PushEndpointTests.GetPushDevicesAsync.verified.txt index 4d80a96..3e7f050 100644 --- a/tests/Norbix.Hub.Tests/test_results/PushEndpointTests.GetPushDevicesAsync.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/PushEndpointTests.GetPushDevicesAsync.verified.txt @@ -28,6 +28,9 @@ StartingAfter: cursor-start, EndingBefore: cursor-end }, + TeamDevices: [ + {} + ], ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Hub.Tests/test_results/PushEndpointTests.RegisterDeviceAsync.verified.txt b/tests/Norbix.Hub.Tests/test_results/PushEndpointTests.RegisterDeviceAsync.verified.txt index c8f49e2..5469e6c 100644 --- a/tests/Norbix.Hub.Tests/test_results/PushEndpointTests.RegisterDeviceAsync.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/PushEndpointTests.RegisterDeviceAsync.verified.txt @@ -36,6 +36,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Hub.Tests/test_results/PushEndpointTests.SavePushIntegrationAsync.verified.txt b/tests/Norbix.Hub.Tests/test_results/PushEndpointTests.SavePushIntegrationAsync.verified.txt index ded8c45..1d800a1 100644 --- a/tests/Norbix.Hub.Tests/test_results/PushEndpointTests.SavePushIntegrationAsync.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/PushEndpointTests.SavePushIntegrationAsync.verified.txt @@ -30,6 +30,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Hub.Tests/test_results/SmsEndpointTests.CreateSmsCampaignAsync.verified.txt b/tests/Norbix.Hub.Tests/test_results/SmsEndpointTests.CreateSmsCampaignAsync.verified.txt index 60d0714..13dbbbe 100644 --- a/tests/Norbix.Hub.Tests/test_results/SmsEndpointTests.CreateSmsCampaignAsync.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/SmsEndpointTests.CreateSmsCampaignAsync.verified.txt @@ -41,8 +41,7 @@ collection: { fieldType: user, schemaName: test-schemaName, - recipientsSourceType: allUsers, - campaignTime: 1.0 + recipientsSourceType: allUsers }, phoneNumbers: { recipientsSourceType: allUsers, @@ -57,6 +56,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Hub.Tests/test_results/SmsEndpointTests.CreateSmsTemplateAsync.verified.txt b/tests/Norbix.Hub.Tests/test_results/SmsEndpointTests.CreateSmsTemplateAsync.verified.txt index 59dbd0a..10f7777 100644 --- a/tests/Norbix.Hub.Tests/test_results/SmsEndpointTests.CreateSmsTemplateAsync.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/SmsEndpointTests.CreateSmsTemplateAsync.verified.txt @@ -27,6 +27,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Hub.Tests/test_results/SmsEndpointTests.SaveSmsIntegrationAsync.verified.txt b/tests/Norbix.Hub.Tests/test_results/SmsEndpointTests.SaveSmsIntegrationAsync.verified.txt index a96fe88..89785a4 100644 --- a/tests/Norbix.Hub.Tests/test_results/SmsEndpointTests.SaveSmsIntegrationAsync.verified.txt +++ b/tests/Norbix.Hub.Tests/test_results/SmsEndpointTests.SaveSmsIntegrationAsync.verified.txt @@ -30,6 +30,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Sdk.Tests/PaymentOrderEndpointTests.cs b/tests/Norbix.Sdk.Tests/PaymentOrderEndpointTests.cs new file mode 100644 index 0000000..75122d7 --- /dev/null +++ b/tests/Norbix.Sdk.Tests/PaymentOrderEndpointTests.cs @@ -0,0 +1,131 @@ +using Norbix.Sdk.Tests.Helpers; +using Norbix.Sdk.Types.Api; +using NUnit.Framework; +using VerifyNUnit; + +namespace Norbix.Sdk.Tests; + +/// +/// Public-API payment orders and checkout, one test per endpoint. +/// +/// Hand-written on purpose, like : the coverage +/// snapshot (EndpointCoverageTests.Api.Payments) proves the group is +/// wired up; these prove what a reader cares about — the order id lands in the +/// URL, the lines and the idempotency key travel in the body, the list filters +/// travel in the query string, and the stored order comes back typed. +/// +/// +[TestFixture] +public sealed class PaymentOrderEndpointTests +{ + private const string OrderId = "ord_2ToIiRM03X63TZaJ2dJdv2"; + + private static readonly object StoredOrder = new + { + id = OrderId, + env = "PROD", + buyerUserId = "usr_1szWVIyZFBV8HfvC4SfVw", + merchantReference = "ad-1042-promo-1", + currency = "EUR", + priceVersion = "v1", + lines = new[] { new { sku = "star-day", title = "Star × day", quantity = 21, unitAmountMinor = 30, amountMinor = 630 } }, + totalMinor = 630, + metadata = new Dictionary { ["adId"] = "ad_1042" }, + status = "Created", + createdOnUtc = "2026-10-19T08:00:00Z", + updatedOnUtc = "2026-10-19T08:00:00Z", + checkouts = Array.Empty(), + refundedMinor = 0, + mismatches = Array.Empty(), + }; + + [Test] + public async Task CreatePaymentOrder_posts_the_lines_and_the_idempotency_key() + { + using var fixture = NorbixTestFixture.Create(); + fixture.Respond("/payments/orders", new { id = OrderId }); + + var response = await fixture.Client.Payments.CreatePaymentOrderAsync(new CreatePaymentOrderRequest + { + BuyerUserId = "usr_1szWVIyZFBV8HfvC4SfVw", + MerchantReference = "ad-1042-promo-1", + IdempotencyKey = "ad-1042-promo-1-key", + Currency = "EUR", + PriceVersion = "v1", + Lines = [new PaymentOrderLineInput { Sku = "star-day", Title = "Star × day", Quantity = 21, UnitAmountMinor = 30 }], + Metadata = new Dictionary { ["adId"] = "ad_1042" }, + }); + + await Verifier.Verify( + new { Sent = fixture.LastRequest, response?.Id }, + VerifyConfig.VerifySettings); + } + + [Test] + public async Task GetPaymentOrder_puts_the_id_in_the_path_and_reads_the_order() + { + using var fixture = NorbixTestFixture.Create(); + fixture.Respond("/payments/orders/" + OrderId, new { item = StoredOrder }); + + var response = await fixture.Client.Payments.GetPaymentOrderAsync(new GetPaymentOrderRequest { Id = OrderId }); + + await Verifier.Verify( + new { Sent = fixture.LastRequest, Order = response?.Item }, + VerifyConfig.VerifySettings); + } + + [Test] + public async Task GetPaymentOrders_sends_the_filters_in_the_query() + { + using var fixture = NorbixTestFixture.Create(); + fixture.Respond("/payments/orders", new { list = new { items = new[] { StoredOrder }, hasMore = false } }); + + var response = await fixture.Client.Payments.GetPaymentOrdersAsync(new GetPaymentOrdersRequest + { + BuyerUserId = "usr_1szWVIyZFBV8HfvC4SfVw", + MerchantReference = "ad-1042-promo-1", + Status = "Paid", + }); + + await Verifier.Verify( + new { Sent = fixture.LastRequest, Ids = response?.List?.Items.Select(o => o.Id) }, + VerifyConfig.VerifySettings); + } + + [Test] + public async Task StartPaymentCheckout_posts_to_the_order_and_reads_the_checkout() + { + using var fixture = NorbixTestFixture.Create(); + fixture.Respond("/payments/orders/" + OrderId + "/checkout", new + { + checkout = new + { + attempt = 1, + integrationId = "int_montonio", + provider = "Montonio", + providerOrderId = "mnt-1", + providerReference = OrderId + ":1", + paymentUrl = "https://sandbox-stargate.montonio.com/pay/mnt-1", + method = "paymentInitiation", + startedOnUtc = "2026-10-19T08:01:00Z", + expiresAtUtc = "2026-10-19T08:31:00Z", + }, + reused = false, + order = StoredOrder, + }); + + var response = await fixture.Client.Payments.StartPaymentCheckoutAsync(new StartPaymentCheckoutRequest + { + Id = OrderId, + IntegrationId = "int_montonio", + Method = "paymentInitiation", + ReturnUrl = "https://shop.example.test/orders/ad-1042", + PreferredCountry = "LT", + PreferredProvider = "SWEDBANK_LT", + }); + + await Verifier.Verify( + new { Sent = fixture.LastRequest, response?.Checkout, response?.Reused, OrderStatus = response?.Order?.Status }, + VerifyConfig.VerifySettings); + } +} diff --git a/tests/Norbix.Sdk.Tests/test_results/EndpointCoverageTests.Api.Ai.verified.txt b/tests/Norbix.Sdk.Tests/test_results/EndpointCoverageTests.Api.Ai.verified.txt index 4c51ca5..cc0bcae 100644 --- a/tests/Norbix.Sdk.Tests/test_results/EndpointCoverageTests.Api.Ai.verified.txt +++ b/tests/Norbix.Sdk.Tests/test_results/EndpointCoverageTests.Api.Ai.verified.txt @@ -64,6 +64,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -600,6 +603,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Sdk.Tests/test_results/EndpointCoverageTests.Api.Database.verified.txt b/tests/Norbix.Sdk.Tests/test_results/EndpointCoverageTests.Api.Database.verified.txt index 1c6e392..32afe4d 100644 --- a/tests/Norbix.Sdk.Tests/test_results/EndpointCoverageTests.Api.Database.verified.txt +++ b/tests/Norbix.Sdk.Tests/test_results/EndpointCoverageTests.Api.Database.verified.txt @@ -420,6 +420,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Sdk.Tests/test_results/EndpointCoverageTests.Api.Files.verified.txt b/tests/Norbix.Sdk.Tests/test_results/EndpointCoverageTests.Api.Files.verified.txt index f7aa8a6..493df32 100644 --- a/tests/Norbix.Sdk.Tests/test_results/EndpointCoverageTests.Api.Files.verified.txt +++ b/tests/Norbix.Sdk.Tests/test_results/EndpointCoverageTests.Api.Files.verified.txt @@ -465,6 +465,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Sdk.Tests/test_results/EndpointCoverageTests.Api.Membership.verified.txt b/tests/Norbix.Sdk.Tests/test_results/EndpointCoverageTests.Api.Membership.verified.txt index 2df4605..eb2f832 100644 --- a/tests/Norbix.Sdk.Tests/test_results/EndpointCoverageTests.Api.Membership.verified.txt +++ b/tests/Norbix.Sdk.Tests/test_results/EndpointCoverageTests.Api.Membership.verified.txt @@ -1,7 +1,7 @@ { Target: Api, Group: membership, - Count: 42, + Count: 43, Endpoints: [ { Target: Api, @@ -681,6 +681,42 @@ } } }, + { + Target: Api, + Group: membership, + MethodName: FinishInvitationAsync, + RequestType: FinishInvitationRequest, + HttpMethod: POST, + Path: /{version}/membership/auth/invitation/finish, + IsAccountScoped: false, + IsUnauthenticated: false, + Sent: { + Method: POST, + Path: /v2/membership/auth/invitation/finish, + Headers: { + Authorization: Bearer test-bearer, + Content-Type: application/json; charset=utf-8, + norbix-account-id: test-account, + norbix-project-id: test-project + }, + Body: { + token: test-token, + password: test-password, + fullName: test-fullName, + salutation: test-salutation, + displayName: test-displayName, + firstName: test-firstName, + lastName: test-lastName, + env: test-env + } + }, + ResponseType: EmptyResponse, + Response: { + ResponseStatus: { + IsSuccess: true + } + } + }, { Target: Api, Group: membership, @@ -769,7 +805,7 @@ Sent: { Method: GET, Path: /v2/membership/auth, - Query: ?databaseIntegrationId={guid}&includePermissions=True&userShouldHavePushDevice=True&userShouldHaveEmail=True&includeMeta=True&env=test-env&startingAfter=test-startingAfter&endingBefore=test-endingBefore&pageSize=1, + Query: ?databaseIntegrationId={guid}&includePermissions=True&userShouldHavePushDevice=True&userShouldHaveEmail=True&includeMeta=True&search=test-search&email=user%40example.test&userName=test-userName&env=test-env&startingAfter=test-startingAfter&endingBefore=test-endingBefore&pageSize=1, Headers: { Authorization: Bearer test-bearer, norbix-account-id: test-account, @@ -848,6 +884,8 @@ }, Body: { email: user@example.test, + fullName: test-fullName, + salutation: test-salutation, databaseIntegrationId: Guid_1, env: test-env } @@ -950,6 +988,9 @@ Body: { password: test-password, email: user@example.test, + roles: [ + test-string + ], databaseIntegrationId: Guid_1, userGeneralInfo: { phone: test-phone, @@ -971,6 +1012,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1021,6 +1065,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1066,6 +1113,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1112,6 +1162,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1161,6 +1214,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1209,6 +1265,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1235,6 +1294,9 @@ Body: { password: test-password, userName: test-userName, + roles: [ + test-string + ], databaseIntegrationId: Guid_1, userGeneralInfo: { phone: test-phone, @@ -1256,6 +1318,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1306,6 +1371,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } @@ -1526,6 +1594,9 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Sdk.Tests/test_results/EndpointCoverageTests.Api.Notifications.verified.txt b/tests/Norbix.Sdk.Tests/test_results/EndpointCoverageTests.Api.Notifications.verified.txt index e0eb1b6..f56700f 100644 --- a/tests/Norbix.Sdk.Tests/test_results/EndpointCoverageTests.Api.Notifications.verified.txt +++ b/tests/Norbix.Sdk.Tests/test_results/EndpointCoverageTests.Api.Notifications.verified.txt @@ -1,7 +1,7 @@ { Target: Api, Group: notifications, - Count: 7, + Count: 11, Endpoints: [ { Target: Api, @@ -224,6 +224,134 @@ Response: { Id: Guid_1, Status: test-status, + Warnings: [ + test-string + ], + ResponseStatus: { + IsSuccess: true + } + } + }, + { + Target: Api, + Group: notifications, + MethodName: GetNotificationInboxAsync, + RequestType: GetNotificationInboxRequest, + HttpMethod: GET, + Path: /{version}/notifications/inbox, + IsAccountScoped: false, + IsUnauthenticated: false, + Sent: { + Method: GET, + Path: /v2/notifications/inbox, + Query: ?unreadOnly=True&channel=test-channel&env=test-env&startingAfter=test-startingAfter&endingBefore=test-endingBefore&pageSize=1, + Headers: { + Authorization: Bearer test-bearer, + norbix-account-id: test-account, + norbix-project-id: test-project + } + }, + ResponseType: GetNotificationInboxResponse, + Response: { + List: { + Items: [ + { + IsRead: false + } + ], + HasMore: false, + HasPrevious: false, + StartingAfter: cursor-start, + EndingBefore: cursor-end + }, + ResponseStatus: { + IsSuccess: true + } + } + }, + { + Target: Api, + Group: notifications, + MethodName: GetUnreadCountAsync, + RequestType: GetUnreadCountRequest, + HttpMethod: GET, + Path: /{version}/notifications/inbox/unread-count, + IsAccountScoped: false, + IsUnauthenticated: false, + Sent: { + Method: GET, + Path: /v2/notifications/inbox/unread-count, + Query: ?env=test-env, + Headers: { + Authorization: Bearer test-bearer, + norbix-account-id: test-account, + norbix-project-id: test-project + } + }, + ResponseType: GetUnreadCountResponse, + Response: { + Count: 42, + ResponseStatus: { + IsSuccess: true + } + } + }, + { + Target: Api, + Group: notifications, + MethodName: MarkAllNotificationsReadAsync, + RequestType: MarkAllNotificationsReadRequest, + HttpMethod: POST, + Path: /{version}/notifications/inbox/read-all, + IsAccountScoped: false, + IsUnauthenticated: false, + Sent: { + Method: POST, + Path: /v2/notifications/inbox/read-all, + Headers: { + Authorization: Bearer test-bearer, + Content-Type: application/json; charset=utf-8, + norbix-account-id: test-account, + norbix-project-id: test-project + }, + Body: { + env: test-env + } + }, + ResponseType: MarkAllNotificationsReadResponse, + Response: { + ResponseStatus: { + IsSuccess: true + } + } + }, + { + Target: Api, + Group: notifications, + MethodName: MarkNotificationReadAsync, + RequestType: MarkNotificationReadRequest, + HttpMethod: POST, + Path: /{version}/notifications/inbox/{notificationId}/read, + PathParams: [ + notificationId + ], + IsAccountScoped: false, + IsUnauthenticated: false, + Sent: { + Method: POST, + Path: /v2/notifications/inbox/{guid}/read, + Headers: { + Authorization: Bearer test-bearer, + Content-Type: application/json; charset=utf-8, + norbix-account-id: test-account, + norbix-project-id: test-project + }, + Body: { + env: test-env + } + }, + ResponseType: MarkNotificationReadResponse, + Response: { ResponseStatus: { IsSuccess: true } diff --git a/tests/Norbix.Sdk.Tests/test_results/EndpointCoverageTests.Api.Payments.verified.txt b/tests/Norbix.Sdk.Tests/test_results/EndpointCoverageTests.Api.Payments.verified.txt new file mode 100644 index 0000000..b4b20cb --- /dev/null +++ b/tests/Norbix.Sdk.Tests/test_results/EndpointCoverageTests.Api.Payments.verified.txt @@ -0,0 +1,188 @@ +{ + Target: Api, + Group: payments, + Count: 4, + Endpoints: [ + { + Target: Api, + Group: payments, + MethodName: CreatePaymentOrderAsync, + RequestType: CreatePaymentOrderRequest, + HttpMethod: POST, + Path: /{version}/payments/orders, + IsAccountScoped: false, + IsUnauthenticated: false, + Sent: { + Method: POST, + Path: /v2/payments/orders, + Headers: { + Authorization: Bearer test-bearer, + Content-Type: application/json; charset=utf-8, + norbix-account-id: test-account, + norbix-project-id: test-project + }, + Body: { + buyerUserId: Guid_1, + merchantReference: test-merchantReference, + idempotencyKey: test-idempotencyKey, + currency: test-currency, + priceVersion: test-priceVersion, + lines: [ + null + ], + metadata: { + test-key: test-string + }, + env: test-env + } + }, + ResponseType: IdResponse, + Response: { + Id: Guid_1, + Status: test-status, + Warnings: [ + test-string + ], + ResponseStatus: { + IsSuccess: true + } + } + }, + { + Target: Api, + Group: payments, + MethodName: GetPaymentOrderAsync, + RequestType: GetPaymentOrderRequest, + HttpMethod: GET, + Path: /{version}/payments/orders/{Id}, + PathParams: [ + Id + ], + IsAccountScoped: false, + IsUnauthenticated: false, + Sent: { + Method: GET, + Path: /v2/payments/orders/{guid}, + Query: ?env=test-env, + Headers: { + Authorization: Bearer test-bearer, + norbix-account-id: test-account, + norbix-project-id: test-project + } + }, + ResponseType: GetPaymentOrderResponse, + Response: { + Item: { + Id: Guid_1, + Env: test-env, + BuyerUserId: Guid_1, + MerchantReference: test-merchantReference, + Currency: test-currency, + PriceVersion: test-priceVersion, + Lines: [ + {} + ], + TotalMinor: 42 + }, + ResponseStatus: { + IsSuccess: true + } + } + }, + { + Target: Api, + Group: payments, + MethodName: GetPaymentOrdersAsync, + RequestType: GetPaymentOrdersRequest, + HttpMethod: GET, + Path: /{version}/payments/orders, + IsAccountScoped: false, + IsUnauthenticated: false, + Sent: { + Method: GET, + Path: /v2/payments/orders, + Query: ?buyerUserId={guid}&merchantReference=test-merchantReference&status=test-status&env=test-env&startingAfter=test-startingAfter&endingBefore=test-endingBefore&pageSize=1, + Headers: { + Authorization: Bearer test-bearer, + norbix-account-id: test-account, + norbix-project-id: test-project + } + }, + ResponseType: GetPaymentOrdersResponse, + Response: { + List: { + Items: [ + {} + ], + HasMore: false, + HasPrevious: false, + StartingAfter: cursor-start, + EndingBefore: cursor-end + }, + ResponseStatus: { + IsSuccess: true + } + } + }, + { + Target: Api, + Group: payments, + MethodName: StartPaymentCheckoutAsync, + RequestType: StartPaymentCheckoutRequest, + HttpMethod: POST, + Path: /{version}/payments/orders/{Id}/checkout, + PathParams: [ + Id + ], + IsAccountScoped: false, + IsUnauthenticated: false, + Sent: { + Method: POST, + Path: /v2/payments/orders/{guid}/checkout, + Headers: { + Authorization: Bearer test-bearer, + Content-Type: application/json; charset=utf-8, + norbix-account-id: test-account, + norbix-project-id: test-project + }, + Body: { + integrationId: Guid_1, + method: test-method, + returnUrl: https://example.test/returnUrl, + preferredCountry: test-preferredCountry, + preferredProvider: test-preferredProvider, + env: test-env + } + }, + ResponseType: StartPaymentCheckoutResponse, + Response: { + Checkout: { + Attempt: 7, + IntegrationId: Guid_1, + Provider: test-provider, + ProviderOrderId: Guid_1, + ProviderReference: test-providerReference, + PaymentUrl: https://example.test/paymentUrl, + Method: test-method, + StartedOnUtc: DateTime_1 + }, + Reused: true, + Order: { + Id: Guid_1, + Env: test-env, + BuyerUserId: Guid_1, + MerchantReference: test-merchantReference, + Currency: test-currency, + PriceVersion: test-priceVersion, + Lines: [ + {} + ], + TotalMinor: 42 + }, + ResponseStatus: { + IsSuccess: true + } + } + } + ] +} \ No newline at end of file diff --git a/tests/Norbix.Sdk.Tests/test_results/PaymentOrderEndpointTests.CreatePaymentOrder_posts_the_lines_and_the_idempotency_key.verified.txt b/tests/Norbix.Sdk.Tests/test_results/PaymentOrderEndpointTests.CreatePaymentOrder_posts_the_lines_and_the_idempotency_key.verified.txt new file mode 100644 index 0000000..50096d4 --- /dev/null +++ b/tests/Norbix.Sdk.Tests/test_results/PaymentOrderEndpointTests.CreatePaymentOrder_posts_the_lines_and_the_idempotency_key.verified.txt @@ -0,0 +1,30 @@ +{ + Sent: { + Method: POST, + Path: /v2/payments/orders, + Headers: { + Authorization: Bearer test-api-key, + Content-Type: application/json; charset=utf-8, + norbix-project-id: test-project + }, + Body: { + buyerUserId: usr_1szWVIyZFBV8HfvC4SfVw, + merchantReference: ad-1042-promo-1, + idempotencyKey: ad-1042-promo-1-key, + currency: EUR, + priceVersion: v1, + lines: [ + { + sku: star-day, + title: Star × day, + quantity: 21.0, + unitAmountMinor: 30.0 + } + ], + metadata: { + adId: ad_1042 + } + } + }, + Id: ord_2ToIiRM03X63TZaJ2dJdv2 +} \ No newline at end of file diff --git a/tests/Norbix.Sdk.Tests/test_results/PaymentOrderEndpointTests.GetPaymentOrder_puts_the_id_in_the_path_and_reads_the_order.verified.txt b/tests/Norbix.Sdk.Tests/test_results/PaymentOrderEndpointTests.GetPaymentOrder_puts_the_id_in_the_path_and_reads_the_order.verified.txt new file mode 100644 index 0000000..9f247f4 --- /dev/null +++ b/tests/Norbix.Sdk.Tests/test_results/PaymentOrderEndpointTests.GetPaymentOrder_puts_the_id_in_the_path_and_reads_the_order.verified.txt @@ -0,0 +1,34 @@ +{ + Sent: { + Method: GET, + Path: /v2/payments/orders/ord_2ToIiRM03X63TZaJ2dJdv2, + Headers: { + Authorization: Bearer test-api-key, + norbix-project-id: test-project + } + }, + Order: { + Id: ord_2ToIiRM03X63TZaJ2dJdv2, + Env: PROD, + BuyerUserId: usr_1szWVIyZFBV8HfvC4SfVw, + MerchantReference: ad-1042-promo-1, + Currency: EUR, + PriceVersion: v1, + Lines: [ + { + Sku: star-day, + Title: Star × day, + Quantity: 21, + UnitAmountMinor: 30, + AmountMinor: 630 + } + ], + TotalMinor: 630, + Metadata: { + adId: ad_1042 + }, + Status: Created, + CreatedOnUtc: DateTime_1, + UpdatedOnUtc: DateTime_1 + } +} \ No newline at end of file diff --git a/tests/Norbix.Sdk.Tests/test_results/PaymentOrderEndpointTests.GetPaymentOrders_sends_the_filters_in_the_query.verified.txt b/tests/Norbix.Sdk.Tests/test_results/PaymentOrderEndpointTests.GetPaymentOrders_sends_the_filters_in_the_query.verified.txt new file mode 100644 index 0000000..2a56866 --- /dev/null +++ b/tests/Norbix.Sdk.Tests/test_results/PaymentOrderEndpointTests.GetPaymentOrders_sends_the_filters_in_the_query.verified.txt @@ -0,0 +1,14 @@ +{ + Sent: { + Method: GET, + Path: /v2/payments/orders, + Query: ?buyerUserId=usr_1szWVIyZFBV8HfvC4SfVw&merchantReference=ad-1042-promo-1&status=Paid, + Headers: { + Authorization: Bearer test-api-key, + norbix-project-id: test-project + } + }, + Ids: [ + ord_2ToIiRM03X63TZaJ2dJdv2 + ] +} \ No newline at end of file diff --git a/tests/Norbix.Sdk.Tests/test_results/PaymentOrderEndpointTests.StartPaymentCheckout_posts_to_the_order_and_reads_the_checkout.verified.txt b/tests/Norbix.Sdk.Tests/test_results/PaymentOrderEndpointTests.StartPaymentCheckout_posts_to_the_order_and_reads_the_checkout.verified.txt new file mode 100644 index 0000000..c0c07c7 --- /dev/null +++ b/tests/Norbix.Sdk.Tests/test_results/PaymentOrderEndpointTests.StartPaymentCheckout_posts_to_the_order_and_reads_the_checkout.verified.txt @@ -0,0 +1,31 @@ +{ + Sent: { + Method: POST, + Path: /v2/payments/orders/ord_2ToIiRM03X63TZaJ2dJdv2/checkout, + Headers: { + Authorization: Bearer test-api-key, + Content-Type: application/json; charset=utf-8, + norbix-project-id: test-project + }, + Body: { + integrationId: int_montonio, + method: paymentInitiation, + returnUrl: https://shop.example.test/orders/ad-1042, + preferredCountry: LT, + preferredProvider: SWEDBANK_LT + } + }, + Checkout: { + Attempt: 1, + IntegrationId: int_montonio, + Provider: Montonio, + ProviderOrderId: mnt-1, + ProviderReference: ord_2ToIiRM03X63TZaJ2dJdv2:1, + PaymentUrl: https://sandbox-stargate.montonio.com/pay/mnt-1, + Method: paymentInitiation, + StartedOnUtc: DateTime_1, + ExpiresAtUtc: DateTime_2 + }, + Reused: false, + OrderStatus: Created +} \ No newline at end of file