@epilot/erp-integration-client 0.24.2 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/definition.js +1 -1
- package/dist/openapi.d.ts +343 -40
- package/dist/openapi.json +820 -597
- package/package.json +1 -1
package/dist/openapi.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"openapi": "3.0.3",
|
|
3
3
|
"info": {
|
|
4
4
|
"title": "ERP Integration API",
|
|
5
|
-
"version": "0.
|
|
5
|
+
"version": "0.40.0",
|
|
6
6
|
"description": "API for integrating with ERP systems, handling tracking acknowledgments, triggering ERP processes, and processing ERP updates."
|
|
7
7
|
},
|
|
8
8
|
"tags": [
|
|
@@ -2526,31 +2526,18 @@
|
|
|
2526
2526
|
}
|
|
2527
2527
|
}
|
|
2528
2528
|
},
|
|
2529
|
-
"
|
|
2529
|
+
"IntegrationEditableFields": {
|
|
2530
2530
|
"type": "object",
|
|
2531
|
-
"required": [
|
|
2532
|
-
"id",
|
|
2533
|
-
"orgId",
|
|
2534
|
-
"name",
|
|
2535
|
-
"created_at",
|
|
2536
|
-
"updated_at"
|
|
2537
|
-
],
|
|
2538
2531
|
"properties": {
|
|
2539
|
-
"id": {
|
|
2540
|
-
"type": "string",
|
|
2541
|
-
"format": "uuid",
|
|
2542
|
-
"description": "Unique identifier for the integration"
|
|
2543
|
-
},
|
|
2544
|
-
"orgId": {
|
|
2545
|
-
"type": "string",
|
|
2546
|
-
"description": "Organization ID"
|
|
2547
|
-
},
|
|
2548
2532
|
"name": {
|
|
2549
2533
|
"type": "string",
|
|
2534
|
+
"minLength": 1,
|
|
2535
|
+
"maxLength": 255,
|
|
2550
2536
|
"description": "Integration name"
|
|
2551
2537
|
},
|
|
2552
2538
|
"description": {
|
|
2553
2539
|
"type": "string",
|
|
2540
|
+
"maxLength": 1000,
|
|
2554
2541
|
"description": "Optional description of the integration"
|
|
2555
2542
|
},
|
|
2556
2543
|
"access_token_ids": {
|
|
@@ -2574,94 +2561,68 @@
|
|
|
2574
2561
|
},
|
|
2575
2562
|
"description": "Configuration defining environment variables needed by this integration. Values are stored in the Environments API."
|
|
2576
2563
|
},
|
|
2577
|
-
"
|
|
2578
|
-
"
|
|
2579
|
-
"format": "date-time",
|
|
2580
|
-
"description": "ISO-8601 timestamp when the integration was created"
|
|
2581
|
-
},
|
|
2582
|
-
"updated_at": {
|
|
2583
|
-
"type": "string",
|
|
2584
|
-
"format": "date-time",
|
|
2585
|
-
"description": "ISO-8601 timestamp when the integration was last updated"
|
|
2564
|
+
"settings": {
|
|
2565
|
+
"$ref": "#/components/schemas/IntegrationSettings"
|
|
2586
2566
|
}
|
|
2587
2567
|
}
|
|
2588
2568
|
},
|
|
2589
|
-
"
|
|
2590
|
-
"
|
|
2591
|
-
|
|
2592
|
-
|
|
2593
|
-
|
|
2594
|
-
|
|
2595
|
-
|
|
2596
|
-
|
|
2597
|
-
|
|
2598
|
-
|
|
2599
|
-
|
|
2600
|
-
|
|
2601
|
-
|
|
2602
|
-
|
|
2603
|
-
|
|
2604
|
-
|
|
2605
|
-
|
|
2606
|
-
|
|
2607
|
-
|
|
2608
|
-
|
|
2609
|
-
|
|
2610
|
-
|
|
2611
|
-
|
|
2612
|
-
|
|
2613
|
-
|
|
2614
|
-
|
|
2615
|
-
|
|
2616
|
-
|
|
2617
|
-
|
|
2569
|
+
"Integration": {
|
|
2570
|
+
"allOf": [
|
|
2571
|
+
{
|
|
2572
|
+
"type": "object",
|
|
2573
|
+
"required": [
|
|
2574
|
+
"id",
|
|
2575
|
+
"orgId",
|
|
2576
|
+
"name",
|
|
2577
|
+
"created_at",
|
|
2578
|
+
"updated_at"
|
|
2579
|
+
],
|
|
2580
|
+
"properties": {
|
|
2581
|
+
"id": {
|
|
2582
|
+
"type": "string",
|
|
2583
|
+
"format": "uuid",
|
|
2584
|
+
"readOnly": true,
|
|
2585
|
+
"description": "Unique identifier for the integration"
|
|
2586
|
+
},
|
|
2587
|
+
"orgId": {
|
|
2588
|
+
"type": "string",
|
|
2589
|
+
"readOnly": true,
|
|
2590
|
+
"description": "Organization ID"
|
|
2591
|
+
},
|
|
2592
|
+
"created_at": {
|
|
2593
|
+
"type": "string",
|
|
2594
|
+
"format": "date-time",
|
|
2595
|
+
"readOnly": true,
|
|
2596
|
+
"description": "ISO-8601 timestamp when the integration was created"
|
|
2597
|
+
},
|
|
2598
|
+
"updated_at": {
|
|
2599
|
+
"type": "string",
|
|
2600
|
+
"format": "date-time",
|
|
2601
|
+
"readOnly": true,
|
|
2602
|
+
"description": "ISO-8601 timestamp when the integration was last updated"
|
|
2603
|
+
}
|
|
2618
2604
|
}
|
|
2619
2605
|
},
|
|
2620
|
-
|
|
2621
|
-
"
|
|
2622
|
-
"items": {
|
|
2623
|
-
"$ref": "#/components/schemas/EnvironmentFieldConfig"
|
|
2624
|
-
},
|
|
2625
|
-
"description": "Configuration defining environment variables needed by this integration"
|
|
2606
|
+
{
|
|
2607
|
+
"$ref": "#/components/schemas/IntegrationEditableFields"
|
|
2626
2608
|
}
|
|
2627
|
-
|
|
2609
|
+
]
|
|
2628
2610
|
},
|
|
2629
|
-
"
|
|
2630
|
-
"
|
|
2631
|
-
|
|
2632
|
-
|
|
2633
|
-
"type": "string",
|
|
2634
|
-
"minLength": 1,
|
|
2635
|
-
"maxLength": 255,
|
|
2636
|
-
"description": "Integration name"
|
|
2637
|
-
},
|
|
2638
|
-
"description": {
|
|
2639
|
-
"type": "string",
|
|
2640
|
-
"maxLength": 1000,
|
|
2641
|
-
"description": "Optional description of the integration"
|
|
2642
|
-
},
|
|
2643
|
-
"access_token_ids": {
|
|
2644
|
-
"type": "array",
|
|
2645
|
-
"description": "List of access token IDs to associate with this integration",
|
|
2646
|
-
"items": {
|
|
2647
|
-
"type": "string"
|
|
2648
|
-
}
|
|
2649
|
-
},
|
|
2650
|
-
"app_ids": {
|
|
2651
|
-
"type": "array",
|
|
2652
|
-
"description": "List of app IDs to associate with this integration",
|
|
2653
|
-
"items": {
|
|
2654
|
-
"type": "string"
|
|
2655
|
-
}
|
|
2611
|
+
"CreateIntegrationRequest": {
|
|
2612
|
+
"allOf": [
|
|
2613
|
+
{
|
|
2614
|
+
"$ref": "#/components/schemas/IntegrationEditableFields"
|
|
2656
2615
|
},
|
|
2657
|
-
|
|
2658
|
-
"type": "
|
|
2659
|
-
"
|
|
2660
|
-
"
|
|
2661
|
-
|
|
2662
|
-
"description": "Configuration defining environment variables needed by this integration"
|
|
2616
|
+
{
|
|
2617
|
+
"type": "object",
|
|
2618
|
+
"required": [
|
|
2619
|
+
"name"
|
|
2620
|
+
]
|
|
2663
2621
|
}
|
|
2664
|
-
|
|
2622
|
+
]
|
|
2623
|
+
},
|
|
2624
|
+
"UpdateIntegrationRequest": {
|
|
2625
|
+
"$ref": "#/components/schemas/IntegrationEditableFields"
|
|
2665
2626
|
},
|
|
2666
2627
|
"EnvironmentFieldConfig": {
|
|
2667
2628
|
"type": "object",
|
|
@@ -2707,6 +2668,36 @@
|
|
|
2707
2668
|
}
|
|
2708
2669
|
}
|
|
2709
2670
|
},
|
|
2671
|
+
"IntegrationSettings": {
|
|
2672
|
+
"type": "object",
|
|
2673
|
+
"description": "Settings for the integration",
|
|
2674
|
+
"properties": {
|
|
2675
|
+
"autoRefresh": {
|
|
2676
|
+
"$ref": "#/components/schemas/AutoRefreshSettings"
|
|
2677
|
+
}
|
|
2678
|
+
}
|
|
2679
|
+
},
|
|
2680
|
+
"AutoRefreshSettings": {
|
|
2681
|
+
"type": "object",
|
|
2682
|
+
"description": "Auto-refresh settings for keeping integration data fresh",
|
|
2683
|
+
"properties": {
|
|
2684
|
+
"enabled": {
|
|
2685
|
+
"type": "boolean",
|
|
2686
|
+
"default": false,
|
|
2687
|
+
"description": "Whether auto-refresh is enabled"
|
|
2688
|
+
},
|
|
2689
|
+
"freshnessThresholdMinutes": {
|
|
2690
|
+
"type": "integer",
|
|
2691
|
+
"minimum": 1,
|
|
2692
|
+
"description": "Maximum age (in minutes) of data before it is considered stale and eligible for refresh"
|
|
2693
|
+
},
|
|
2694
|
+
"minIntervalBetweenSyncsMinutes": {
|
|
2695
|
+
"type": "integer",
|
|
2696
|
+
"minimum": 1,
|
|
2697
|
+
"description": "Minimum interval (in minutes) between consecutive sync operations to prevent excessive API calls"
|
|
2698
|
+
}
|
|
2699
|
+
}
|
|
2700
|
+
},
|
|
2710
2701
|
"SetIntegrationAppMappingRequest": {
|
|
2711
2702
|
"type": "object",
|
|
2712
2703
|
"required": [
|
|
@@ -2745,23 +2736,419 @@
|
|
|
2745
2736
|
},
|
|
2746
2737
|
"component_id": {
|
|
2747
2738
|
"type": "string",
|
|
2748
|
-
"format": "uuid",
|
|
2749
|
-
"description": "UUID of the integration app component instance"
|
|
2739
|
+
"format": "uuid",
|
|
2740
|
+
"description": "UUID of the integration app component instance"
|
|
2741
|
+
}
|
|
2742
|
+
}
|
|
2743
|
+
},
|
|
2744
|
+
"IntegrationAppMapping": {
|
|
2745
|
+
"type": "object",
|
|
2746
|
+
"required": [
|
|
2747
|
+
"integration_id"
|
|
2748
|
+
],
|
|
2749
|
+
"properties": {
|
|
2750
|
+
"integration_id": {
|
|
2751
|
+
"type": "string",
|
|
2752
|
+
"format": "uuid",
|
|
2753
|
+
"description": "The integration ID this app/component is mapped to"
|
|
2754
|
+
}
|
|
2755
|
+
}
|
|
2756
|
+
},
|
|
2757
|
+
"IntegrationWithUseCases": {
|
|
2758
|
+
"allOf": [
|
|
2759
|
+
{
|
|
2760
|
+
"$ref": "#/components/schemas/Integration"
|
|
2761
|
+
},
|
|
2762
|
+
{
|
|
2763
|
+
"type": "object",
|
|
2764
|
+
"description": "Integration with embedded use cases for atomic CRUD operations",
|
|
2765
|
+
"required": [
|
|
2766
|
+
"use_cases"
|
|
2767
|
+
],
|
|
2768
|
+
"properties": {
|
|
2769
|
+
"use_cases": {
|
|
2770
|
+
"type": "array",
|
|
2771
|
+
"description": "All use cases belonging to this integration",
|
|
2772
|
+
"items": {
|
|
2773
|
+
"$ref": "#/components/schemas/UseCase"
|
|
2774
|
+
}
|
|
2775
|
+
}
|
|
2776
|
+
}
|
|
2777
|
+
}
|
|
2778
|
+
]
|
|
2779
|
+
},
|
|
2780
|
+
"UpsertIntegrationWithUseCasesRequest": {
|
|
2781
|
+
"allOf": [
|
|
2782
|
+
{
|
|
2783
|
+
"$ref": "#/components/schemas/IntegrationEditableFields"
|
|
2784
|
+
},
|
|
2785
|
+
{
|
|
2786
|
+
"type": "object",
|
|
2787
|
+
"description": "Request to create or update an integration with embedded use cases (upsert).\nThis is a declarative operation - the request represents the desired state.\n",
|
|
2788
|
+
"required": [
|
|
2789
|
+
"name"
|
|
2790
|
+
],
|
|
2791
|
+
"properties": {
|
|
2792
|
+
"use_cases": {
|
|
2793
|
+
"type": "array",
|
|
2794
|
+
"description": "Full list of use cases (declarative). This replaces ALL existing use cases.\n- Use cases with an `id` field matching an existing use case will be updated\n- Use cases without an `id` or with a non-matching `id` will be created\n- Existing use cases not in this list will be deleted\n",
|
|
2795
|
+
"items": {
|
|
2796
|
+
"$ref": "#/components/schemas/EmbeddedUseCaseRequest"
|
|
2797
|
+
}
|
|
2798
|
+
}
|
|
2799
|
+
}
|
|
2800
|
+
}
|
|
2801
|
+
]
|
|
2802
|
+
},
|
|
2803
|
+
"InboundIntegrationEventConfiguration": {
|
|
2804
|
+
"type": "object",
|
|
2805
|
+
"description": "Configuration for inbound use cases (ERP to epilot)",
|
|
2806
|
+
"properties": {
|
|
2807
|
+
"entities": {
|
|
2808
|
+
"type": "array",
|
|
2809
|
+
"description": "Array of entity configurations for this event",
|
|
2810
|
+
"items": {
|
|
2811
|
+
"$ref": "#/components/schemas/IntegrationEntity"
|
|
2812
|
+
}
|
|
2813
|
+
},
|
|
2814
|
+
"meter_readings": {
|
|
2815
|
+
"type": "array",
|
|
2816
|
+
"description": "Array of meter reading configurations for this event",
|
|
2817
|
+
"items": {
|
|
2818
|
+
"$ref": "#/components/schemas/IntegrationMeterReading"
|
|
2819
|
+
}
|
|
2820
|
+
}
|
|
2821
|
+
}
|
|
2822
|
+
},
|
|
2823
|
+
"OutboundIntegrationEventConfiguration": {
|
|
2824
|
+
"type": "object",
|
|
2825
|
+
"required": [
|
|
2826
|
+
"event_catalog_event",
|
|
2827
|
+
"mappings"
|
|
2828
|
+
],
|
|
2829
|
+
"description": "Configuration for outbound use cases. Defines the event that triggers the flow and the webhook mappings.",
|
|
2830
|
+
"properties": {
|
|
2831
|
+
"event_catalog_event": {
|
|
2832
|
+
"type": "string",
|
|
2833
|
+
"description": "The Event Catalog event name that triggers this outbound flow",
|
|
2834
|
+
"example": "contract.created"
|
|
2835
|
+
},
|
|
2836
|
+
"mappings": {
|
|
2837
|
+
"type": "array",
|
|
2838
|
+
"minItems": 1,
|
|
2839
|
+
"items": {
|
|
2840
|
+
"$ref": "#/components/schemas/OutboundMapping"
|
|
2841
|
+
},
|
|
2842
|
+
"description": "List of mappings that transform and deliver the event"
|
|
2843
|
+
}
|
|
2844
|
+
}
|
|
2845
|
+
},
|
|
2846
|
+
"IntegrationEntity": {
|
|
2847
|
+
"type": "object",
|
|
2848
|
+
"required": [
|
|
2849
|
+
"entity_schema",
|
|
2850
|
+
"unique_ids",
|
|
2851
|
+
"fields"
|
|
2852
|
+
],
|
|
2853
|
+
"properties": {
|
|
2854
|
+
"entity_schema": {
|
|
2855
|
+
"type": "string",
|
|
2856
|
+
"description": "Target entity schema (e.g., 'contact', 'contract')"
|
|
2857
|
+
},
|
|
2858
|
+
"unique_ids": {
|
|
2859
|
+
"type": "array",
|
|
2860
|
+
"items": {
|
|
2861
|
+
"type": "string"
|
|
2862
|
+
},
|
|
2863
|
+
"description": "Array of attribute names that uniquely identify this entity.\nThe _type hint for repeatable fields (e.g., email, phone) should be specified\non the corresponding field definition in the fields array.\n"
|
|
2864
|
+
},
|
|
2865
|
+
"jsonataExpression": {
|
|
2866
|
+
"type": "string",
|
|
2867
|
+
"description": "Optional JSONata expression to pre-process the event data before field mapping"
|
|
2868
|
+
},
|
|
2869
|
+
"enabled": {
|
|
2870
|
+
"oneOf": [
|
|
2871
|
+
{
|
|
2872
|
+
"type": "boolean"
|
|
2873
|
+
},
|
|
2874
|
+
{
|
|
2875
|
+
"type": "string"
|
|
2876
|
+
}
|
|
2877
|
+
],
|
|
2878
|
+
"description": "Controls whether this entity mapping should be processed. Can be a boolean or a JSONata expression (string) that evaluates to a boolean."
|
|
2879
|
+
},
|
|
2880
|
+
"mode": {
|
|
2881
|
+
"type": "string",
|
|
2882
|
+
"enum": [
|
|
2883
|
+
"upsert",
|
|
2884
|
+
"delete",
|
|
2885
|
+
"purge",
|
|
2886
|
+
"upsert-prune-scope-purge",
|
|
2887
|
+
"upsert-prune-scope-delete"
|
|
2888
|
+
],
|
|
2889
|
+
"default": "upsert",
|
|
2890
|
+
"description": "Operation mode for entity mapping:\n- 'upsert': Create or update the entity (default)\n- 'delete': Soft delete the entity (marks as deleted)\n- 'purge': Hard delete the entity (permanent removal)\n- 'upsert-prune-scope-purge': Upsert entities from array, then purge entities in scope that weren't upserted\n- 'upsert-prune-scope-delete': Upsert entities from array, then soft delete entities in scope that weren't upserted\n"
|
|
2891
|
+
},
|
|
2892
|
+
"scope": {
|
|
2893
|
+
"$ref": "#/components/schemas/PruneScopeConfig"
|
|
2894
|
+
},
|
|
2895
|
+
"fields": {
|
|
2896
|
+
"type": "array",
|
|
2897
|
+
"description": "Field mapping definitions",
|
|
2898
|
+
"items": {
|
|
2899
|
+
"$ref": "#/components/schemas/IntegrationEntityField"
|
|
2900
|
+
}
|
|
2901
|
+
}
|
|
2902
|
+
}
|
|
2903
|
+
},
|
|
2904
|
+
"IntegrationMeterReading": {
|
|
2905
|
+
"type": "object",
|
|
2906
|
+
"required": [
|
|
2907
|
+
"meter",
|
|
2908
|
+
"fields"
|
|
2909
|
+
],
|
|
2910
|
+
"properties": {
|
|
2911
|
+
"jsonataExpression": {
|
|
2912
|
+
"type": "string",
|
|
2913
|
+
"description": "Optional JSONata expression to extract meter reading items from the event data.\nIf not provided, the entire payload is used as the reading data.\nUseful when you need to extract an array of readings from a nested structure (e.g., \"$.readings\").\n"
|
|
2914
|
+
},
|
|
2915
|
+
"reading_matching": {
|
|
2916
|
+
"type": "string",
|
|
2917
|
+
"enum": [
|
|
2918
|
+
"external_id",
|
|
2919
|
+
"strict-date"
|
|
2920
|
+
],
|
|
2921
|
+
"default": "external_id",
|
|
2922
|
+
"description": "Strategy for matching incoming readings against existing readings.\n- 'external_id': Match readings by external_id attribute (default behavior)\n- 'strict-date': Match by meter_id + counter_id + direction + date (German timezone).\n Useful when readings originate from ECP and are echoed back by the ERP with truncated timestamps.\n"
|
|
2923
|
+
},
|
|
2924
|
+
"mode": {
|
|
2925
|
+
"type": "string",
|
|
2926
|
+
"enum": [
|
|
2927
|
+
"upsert",
|
|
2928
|
+
"delete",
|
|
2929
|
+
"upsert-prune-scope"
|
|
2930
|
+
],
|
|
2931
|
+
"default": "upsert",
|
|
2932
|
+
"description": "Operation mode for meter reading mapping:\n- 'upsert': Create or update meter readings (default)\n- 'delete': Delete the meter reading\n- 'upsert-prune-scope': Upsert readings from array, then delete all other readings for the same meter+counter that weren't upserted\n"
|
|
2933
|
+
},
|
|
2934
|
+
"scope": {
|
|
2935
|
+
"$ref": "#/components/schemas/MeterReadingPruneScopeConfig"
|
|
2936
|
+
},
|
|
2937
|
+
"meter": {
|
|
2938
|
+
"$ref": "#/components/schemas/MeterUniqueIdsConfig"
|
|
2939
|
+
},
|
|
2940
|
+
"meter_counter": {
|
|
2941
|
+
"$ref": "#/components/schemas/MeterUniqueIdsConfig"
|
|
2942
|
+
},
|
|
2943
|
+
"fields": {
|
|
2944
|
+
"type": "array",
|
|
2945
|
+
"description": "Field mapping definitions for meter reading attributes",
|
|
2946
|
+
"items": {
|
|
2947
|
+
"$ref": "#/components/schemas/IntegrationEntityField"
|
|
2948
|
+
}
|
|
2949
|
+
}
|
|
2950
|
+
}
|
|
2951
|
+
},
|
|
2952
|
+
"PruneScopeConfig": {
|
|
2953
|
+
"type": "object",
|
|
2954
|
+
"description": "Scope configuration for upsert-prune-scope modes.\nDefines how to find entities that should be pruned if not in the upsert payload.\nThe scope is resolved against the original event payload (not individual array items).\n",
|
|
2955
|
+
"required": [
|
|
2956
|
+
"scope_mode"
|
|
2957
|
+
],
|
|
2958
|
+
"properties": {
|
|
2959
|
+
"scope_mode": {
|
|
2960
|
+
"type": "string",
|
|
2961
|
+
"enum": [
|
|
2962
|
+
"relations",
|
|
2963
|
+
"query"
|
|
2964
|
+
],
|
|
2965
|
+
"description": "Scope mode for finding entities to prune:\n- 'relations': Find scope by looking at all entities related to a specific entity (both direct and reverse relations)\n- 'query': Find scope entities directly via query parameters\n"
|
|
2966
|
+
},
|
|
2967
|
+
"schema": {
|
|
2968
|
+
"type": "string",
|
|
2969
|
+
"description": "For 'relations' mode: The schema of the entity to find (e.g., 'billing_account').\nNot used for 'query' mode.\n"
|
|
2970
|
+
},
|
|
2971
|
+
"unique_ids": {
|
|
2972
|
+
"type": "array",
|
|
2973
|
+
"description": "For 'relations' mode: How to identify the scope entity from the payload.\nNot used for 'query' mode.\n",
|
|
2974
|
+
"items": {
|
|
2975
|
+
"$ref": "#/components/schemas/RelationUniqueIdField"
|
|
2976
|
+
}
|
|
2977
|
+
},
|
|
2978
|
+
"query": {
|
|
2979
|
+
"type": "array",
|
|
2980
|
+
"description": "For 'query' mode: Direct query parameters to find scope entities.\nNot used for 'relations' or 'reverse-relations' modes.\n",
|
|
2981
|
+
"items": {
|
|
2982
|
+
"$ref": "#/components/schemas/RelationUniqueIdField"
|
|
2983
|
+
}
|
|
2984
|
+
}
|
|
2985
|
+
}
|
|
2986
|
+
},
|
|
2987
|
+
"MeterReadingPruneScopeConfig": {
|
|
2988
|
+
"type": "object",
|
|
2989
|
+
"description": "Scope configuration for meter reading upsert-prune-scope mode.\nThe scope is all readings for the same meter + counter.\n",
|
|
2990
|
+
"properties": {
|
|
2991
|
+
"source": {
|
|
2992
|
+
"type": "string",
|
|
2993
|
+
"description": "Optional source filter. When set, only readings with this source\nare eligible for pruning (e.g., 'ERP' to only prune ERP-synced readings).\n"
|
|
2994
|
+
}
|
|
2995
|
+
}
|
|
2996
|
+
},
|
|
2997
|
+
"MeterUniqueIdsConfig": {
|
|
2998
|
+
"type": "object",
|
|
2999
|
+
"required": [
|
|
3000
|
+
"unique_ids"
|
|
3001
|
+
],
|
|
3002
|
+
"properties": {
|
|
3003
|
+
"unique_ids": {
|
|
3004
|
+
"type": "array",
|
|
3005
|
+
"minItems": 1,
|
|
3006
|
+
"description": "Array of unique identifier field mappings",
|
|
3007
|
+
"items": {
|
|
3008
|
+
"$ref": "#/components/schemas/RelationUniqueIdField"
|
|
3009
|
+
}
|
|
3010
|
+
}
|
|
3011
|
+
}
|
|
3012
|
+
},
|
|
3013
|
+
"IntegrationEntityField": {
|
|
3014
|
+
"type": "object",
|
|
3015
|
+
"required": [
|
|
3016
|
+
"attribute"
|
|
3017
|
+
],
|
|
3018
|
+
"properties": {
|
|
3019
|
+
"attribute": {
|
|
3020
|
+
"type": "string",
|
|
3021
|
+
"description": "Target attribute name"
|
|
3022
|
+
},
|
|
3023
|
+
"field": {
|
|
3024
|
+
"type": "string",
|
|
3025
|
+
"description": "Source field name or JSONPath expression (if starts with $)"
|
|
3026
|
+
},
|
|
3027
|
+
"jsonataExpression": {
|
|
3028
|
+
"type": "string",
|
|
3029
|
+
"description": "JSONata expression for transformation"
|
|
3030
|
+
},
|
|
3031
|
+
"constant": {
|
|
3032
|
+
"description": "Constant value to assign (any type)"
|
|
3033
|
+
},
|
|
3034
|
+
"_type": {
|
|
3035
|
+
"$ref": "#/components/schemas/RepeatableFieldType"
|
|
3036
|
+
},
|
|
3037
|
+
"enabled": {
|
|
3038
|
+
"oneOf": [
|
|
3039
|
+
{
|
|
3040
|
+
"type": "boolean"
|
|
3041
|
+
},
|
|
3042
|
+
{
|
|
3043
|
+
"type": "string"
|
|
3044
|
+
}
|
|
3045
|
+
],
|
|
3046
|
+
"description": "Controls whether this field mapping should be processed. Can be a boolean or a JSONata expression (string) that evaluates to a boolean. Defaults to true if omitted."
|
|
3047
|
+
},
|
|
3048
|
+
"relations": {
|
|
3049
|
+
"$ref": "#/components/schemas/RelationConfig"
|
|
3050
|
+
},
|
|
3051
|
+
"relation_refs": {
|
|
3052
|
+
"$ref": "#/components/schemas/RelationRefsConfig"
|
|
3053
|
+
}
|
|
3054
|
+
}
|
|
3055
|
+
},
|
|
3056
|
+
"EmbeddedUseCaseRequest": {
|
|
3057
|
+
"oneOf": [
|
|
3058
|
+
{
|
|
3059
|
+
"$ref": "#/components/schemas/EmbeddedInboundUseCaseRequest"
|
|
3060
|
+
},
|
|
3061
|
+
{
|
|
3062
|
+
"$ref": "#/components/schemas/EmbeddedOutboundUseCaseRequest"
|
|
3063
|
+
}
|
|
3064
|
+
],
|
|
3065
|
+
"discriminator": {
|
|
3066
|
+
"propertyName": "type",
|
|
3067
|
+
"mapping": {
|
|
3068
|
+
"inbound": "#/components/schemas/EmbeddedInboundUseCaseRequest",
|
|
3069
|
+
"outbound": "#/components/schemas/EmbeddedOutboundUseCaseRequest"
|
|
3070
|
+
}
|
|
3071
|
+
}
|
|
3072
|
+
},
|
|
3073
|
+
"EmbeddedUseCaseRequestBase": {
|
|
3074
|
+
"type": "object",
|
|
3075
|
+
"required": [
|
|
3076
|
+
"name",
|
|
3077
|
+
"type",
|
|
3078
|
+
"enabled"
|
|
3079
|
+
],
|
|
3080
|
+
"properties": {
|
|
3081
|
+
"id": {
|
|
3082
|
+
"type": "string",
|
|
3083
|
+
"format": "uuid",
|
|
3084
|
+
"description": "Optional use case ID for update matching.\n- If provided and matches an existing use case, that use case is updated\n- If provided but no match, a new use case with this ID is created\n- If omitted, a new use case with auto-generated ID is created\n"
|
|
3085
|
+
},
|
|
3086
|
+
"name": {
|
|
3087
|
+
"type": "string",
|
|
3088
|
+
"minLength": 1,
|
|
3089
|
+
"maxLength": 255,
|
|
3090
|
+
"description": "Use case name"
|
|
3091
|
+
},
|
|
3092
|
+
"enabled": {
|
|
3093
|
+
"type": "boolean",
|
|
3094
|
+
"description": "Whether the use case is enabled"
|
|
3095
|
+
},
|
|
3096
|
+
"change_description": {
|
|
3097
|
+
"type": "string",
|
|
3098
|
+
"maxLength": 2000,
|
|
3099
|
+
"description": "Optional description of this change (like a commit message)"
|
|
2750
3100
|
}
|
|
2751
3101
|
}
|
|
2752
3102
|
},
|
|
2753
|
-
"
|
|
2754
|
-
"
|
|
2755
|
-
|
|
2756
|
-
|
|
2757
|
-
|
|
2758
|
-
|
|
2759
|
-
|
|
2760
|
-
"
|
|
2761
|
-
|
|
2762
|
-
|
|
3103
|
+
"EmbeddedInboundUseCaseRequest": {
|
|
3104
|
+
"allOf": [
|
|
3105
|
+
{
|
|
3106
|
+
"$ref": "#/components/schemas/EmbeddedUseCaseRequestBase"
|
|
3107
|
+
},
|
|
3108
|
+
{
|
|
3109
|
+
"type": "object",
|
|
3110
|
+
"required": [
|
|
3111
|
+
"type"
|
|
3112
|
+
],
|
|
3113
|
+
"properties": {
|
|
3114
|
+
"type": {
|
|
3115
|
+
"type": "string",
|
|
3116
|
+
"enum": [
|
|
3117
|
+
"inbound"
|
|
3118
|
+
],
|
|
3119
|
+
"description": "Use case type"
|
|
3120
|
+
},
|
|
3121
|
+
"configuration": {
|
|
3122
|
+
"$ref": "#/components/schemas/InboundIntegrationEventConfiguration"
|
|
3123
|
+
}
|
|
3124
|
+
}
|
|
2763
3125
|
}
|
|
2764
|
-
|
|
3126
|
+
]
|
|
3127
|
+
},
|
|
3128
|
+
"EmbeddedOutboundUseCaseRequest": {
|
|
3129
|
+
"allOf": [
|
|
3130
|
+
{
|
|
3131
|
+
"$ref": "#/components/schemas/EmbeddedUseCaseRequestBase"
|
|
3132
|
+
},
|
|
3133
|
+
{
|
|
3134
|
+
"type": "object",
|
|
3135
|
+
"required": [
|
|
3136
|
+
"type"
|
|
3137
|
+
],
|
|
3138
|
+
"properties": {
|
|
3139
|
+
"type": {
|
|
3140
|
+
"type": "string",
|
|
3141
|
+
"enum": [
|
|
3142
|
+
"outbound"
|
|
3143
|
+
],
|
|
3144
|
+
"description": "Use case type"
|
|
3145
|
+
},
|
|
3146
|
+
"configuration": {
|
|
3147
|
+
"$ref": "#/components/schemas/OutboundIntegrationEventConfiguration"
|
|
3148
|
+
}
|
|
3149
|
+
}
|
|
3150
|
+
}
|
|
3151
|
+
]
|
|
2765
3152
|
},
|
|
2766
3153
|
"UseCaseBase": {
|
|
2767
3154
|
"type": "object",
|
|
@@ -2793,7 +3180,8 @@
|
|
|
2793
3180
|
"type": "string",
|
|
2794
3181
|
"enum": [
|
|
2795
3182
|
"inbound",
|
|
2796
|
-
"outbound"
|
|
3183
|
+
"outbound",
|
|
3184
|
+
"file_proxy"
|
|
2797
3185
|
],
|
|
2798
3186
|
"description": "Use case type"
|
|
2799
3187
|
},
|
|
@@ -2867,6 +3255,31 @@
|
|
|
2867
3255
|
}
|
|
2868
3256
|
]
|
|
2869
3257
|
},
|
|
3258
|
+
"FileProxyUseCase": {
|
|
3259
|
+
"allOf": [
|
|
3260
|
+
{
|
|
3261
|
+
"$ref": "#/components/schemas/UseCaseBase"
|
|
3262
|
+
},
|
|
3263
|
+
{
|
|
3264
|
+
"type": "object",
|
|
3265
|
+
"required": [
|
|
3266
|
+
"type"
|
|
3267
|
+
],
|
|
3268
|
+
"properties": {
|
|
3269
|
+
"type": {
|
|
3270
|
+
"type": "string",
|
|
3271
|
+
"enum": [
|
|
3272
|
+
"file_proxy"
|
|
3273
|
+
],
|
|
3274
|
+
"description": "Use case type"
|
|
3275
|
+
},
|
|
3276
|
+
"configuration": {
|
|
3277
|
+
"$ref": "#/components/schemas/FileProxyUseCaseConfiguration"
|
|
3278
|
+
}
|
|
3279
|
+
}
|
|
3280
|
+
}
|
|
3281
|
+
]
|
|
3282
|
+
},
|
|
2870
3283
|
"UseCase": {
|
|
2871
3284
|
"oneOf": [
|
|
2872
3285
|
{
|
|
@@ -2874,13 +3287,17 @@
|
|
|
2874
3287
|
},
|
|
2875
3288
|
{
|
|
2876
3289
|
"$ref": "#/components/schemas/OutboundUseCase"
|
|
3290
|
+
},
|
|
3291
|
+
{
|
|
3292
|
+
"$ref": "#/components/schemas/FileProxyUseCase"
|
|
2877
3293
|
}
|
|
2878
3294
|
],
|
|
2879
3295
|
"discriminator": {
|
|
2880
3296
|
"propertyName": "type",
|
|
2881
3297
|
"mapping": {
|
|
2882
3298
|
"inbound": "#/components/schemas/InboundUseCase",
|
|
2883
|
-
"outbound": "#/components/schemas/OutboundUseCase"
|
|
3299
|
+
"outbound": "#/components/schemas/OutboundUseCase",
|
|
3300
|
+
"file_proxy": "#/components/schemas/FileProxyUseCase"
|
|
2884
3301
|
}
|
|
2885
3302
|
}
|
|
2886
3303
|
},
|
|
@@ -2891,13 +3308,17 @@
|
|
|
2891
3308
|
},
|
|
2892
3309
|
{
|
|
2893
3310
|
"$ref": "#/components/schemas/CreateOutboundUseCaseRequest"
|
|
3311
|
+
},
|
|
3312
|
+
{
|
|
3313
|
+
"$ref": "#/components/schemas/CreateFileProxyUseCaseRequest"
|
|
2894
3314
|
}
|
|
2895
3315
|
],
|
|
2896
3316
|
"discriminator": {
|
|
2897
3317
|
"propertyName": "type",
|
|
2898
3318
|
"mapping": {
|
|
2899
3319
|
"inbound": "#/components/schemas/CreateInboundUseCaseRequest",
|
|
2900
|
-
"outbound": "#/components/schemas/CreateOutboundUseCaseRequest"
|
|
3320
|
+
"outbound": "#/components/schemas/CreateOutboundUseCaseRequest",
|
|
3321
|
+
"file_proxy": "#/components/schemas/CreateFileProxyUseCaseRequest"
|
|
2901
3322
|
}
|
|
2902
3323
|
}
|
|
2903
3324
|
},
|
|
@@ -2971,6 +3392,31 @@
|
|
|
2971
3392
|
}
|
|
2972
3393
|
]
|
|
2973
3394
|
},
|
|
3395
|
+
"CreateFileProxyUseCaseRequest": {
|
|
3396
|
+
"allOf": [
|
|
3397
|
+
{
|
|
3398
|
+
"$ref": "#/components/schemas/CreateUseCaseRequestBase"
|
|
3399
|
+
},
|
|
3400
|
+
{
|
|
3401
|
+
"type": "object",
|
|
3402
|
+
"required": [
|
|
3403
|
+
"type"
|
|
3404
|
+
],
|
|
3405
|
+
"properties": {
|
|
3406
|
+
"type": {
|
|
3407
|
+
"type": "string",
|
|
3408
|
+
"enum": [
|
|
3409
|
+
"file_proxy"
|
|
3410
|
+
],
|
|
3411
|
+
"description": "Use case type"
|
|
3412
|
+
},
|
|
3413
|
+
"configuration": {
|
|
3414
|
+
"$ref": "#/components/schemas/FileProxyUseCaseConfiguration"
|
|
3415
|
+
}
|
|
3416
|
+
}
|
|
3417
|
+
}
|
|
3418
|
+
]
|
|
3419
|
+
},
|
|
2974
3420
|
"UpdateUseCaseRequest": {
|
|
2975
3421
|
"oneOf": [
|
|
2976
3422
|
{
|
|
@@ -2978,13 +3424,17 @@
|
|
|
2978
3424
|
},
|
|
2979
3425
|
{
|
|
2980
3426
|
"$ref": "#/components/schemas/UpdateOutboundUseCaseRequest"
|
|
3427
|
+
},
|
|
3428
|
+
{
|
|
3429
|
+
"$ref": "#/components/schemas/UpdateFileProxyUseCaseRequest"
|
|
2981
3430
|
}
|
|
2982
3431
|
],
|
|
2983
3432
|
"discriminator": {
|
|
2984
3433
|
"propertyName": "type",
|
|
2985
3434
|
"mapping": {
|
|
2986
3435
|
"inbound": "#/components/schemas/UpdateInboundUseCaseRequest",
|
|
2987
|
-
"outbound": "#/components/schemas/UpdateOutboundUseCaseRequest"
|
|
3436
|
+
"outbound": "#/components/schemas/UpdateOutboundUseCaseRequest",
|
|
3437
|
+
"file_proxy": "#/components/schemas/UpdateFileProxyUseCaseRequest"
|
|
2988
3438
|
}
|
|
2989
3439
|
}
|
|
2990
3440
|
},
|
|
@@ -3052,6 +3502,28 @@
|
|
|
3052
3502
|
}
|
|
3053
3503
|
]
|
|
3054
3504
|
},
|
|
3505
|
+
"UpdateFileProxyUseCaseRequest": {
|
|
3506
|
+
"allOf": [
|
|
3507
|
+
{
|
|
3508
|
+
"$ref": "#/components/schemas/UpdateUseCaseRequestBase"
|
|
3509
|
+
},
|
|
3510
|
+
{
|
|
3511
|
+
"type": "object",
|
|
3512
|
+
"properties": {
|
|
3513
|
+
"type": {
|
|
3514
|
+
"type": "string",
|
|
3515
|
+
"enum": [
|
|
3516
|
+
"file_proxy"
|
|
3517
|
+
],
|
|
3518
|
+
"description": "Use case type"
|
|
3519
|
+
},
|
|
3520
|
+
"configuration": {
|
|
3521
|
+
"$ref": "#/components/schemas/FileProxyUseCaseConfiguration"
|
|
3522
|
+
}
|
|
3523
|
+
}
|
|
3524
|
+
}
|
|
3525
|
+
]
|
|
3526
|
+
},
|
|
3055
3527
|
"UseCaseHistoryEntry": {
|
|
3056
3528
|
"oneOf": [
|
|
3057
3529
|
{
|
|
@@ -3059,13 +3531,17 @@
|
|
|
3059
3531
|
},
|
|
3060
3532
|
{
|
|
3061
3533
|
"$ref": "#/components/schemas/OutboundUseCaseHistoryEntry"
|
|
3534
|
+
},
|
|
3535
|
+
{
|
|
3536
|
+
"$ref": "#/components/schemas/FileProxyUseCaseHistoryEntry"
|
|
3062
3537
|
}
|
|
3063
3538
|
],
|
|
3064
3539
|
"discriminator": {
|
|
3065
3540
|
"propertyName": "type",
|
|
3066
3541
|
"mapping": {
|
|
3067
3542
|
"inbound": "#/components/schemas/InboundUseCaseHistoryEntry",
|
|
3068
|
-
"outbound": "#/components/schemas/OutboundUseCaseHistoryEntry"
|
|
3543
|
+
"outbound": "#/components/schemas/OutboundUseCaseHistoryEntry",
|
|
3544
|
+
"file_proxy": "#/components/schemas/FileProxyUseCaseHistoryEntry"
|
|
3069
3545
|
}
|
|
3070
3546
|
}
|
|
3071
3547
|
},
|
|
@@ -3175,7 +3651,193 @@
|
|
|
3175
3651
|
}
|
|
3176
3652
|
}
|
|
3177
3653
|
}
|
|
3178
|
-
]
|
|
3654
|
+
]
|
|
3655
|
+
},
|
|
3656
|
+
"FileProxyUseCaseHistoryEntry": {
|
|
3657
|
+
"allOf": [
|
|
3658
|
+
{
|
|
3659
|
+
"$ref": "#/components/schemas/UseCaseHistoryEntryBase"
|
|
3660
|
+
},
|
|
3661
|
+
{
|
|
3662
|
+
"type": "object",
|
|
3663
|
+
"required": [
|
|
3664
|
+
"type"
|
|
3665
|
+
],
|
|
3666
|
+
"properties": {
|
|
3667
|
+
"type": {
|
|
3668
|
+
"type": "string",
|
|
3669
|
+
"enum": [
|
|
3670
|
+
"file_proxy"
|
|
3671
|
+
],
|
|
3672
|
+
"description": "Use case type"
|
|
3673
|
+
},
|
|
3674
|
+
"configuration": {
|
|
3675
|
+
"$ref": "#/components/schemas/FileProxyUseCaseConfiguration"
|
|
3676
|
+
}
|
|
3677
|
+
}
|
|
3678
|
+
}
|
|
3679
|
+
]
|
|
3680
|
+
},
|
|
3681
|
+
"FileProxyUseCaseConfiguration": {
|
|
3682
|
+
"type": "object",
|
|
3683
|
+
"required": [
|
|
3684
|
+
"steps",
|
|
3685
|
+
"response"
|
|
3686
|
+
],
|
|
3687
|
+
"description": "Configuration for file_proxy use cases. Defines how to authenticate and fetch files from external document systems.\n\nThe file proxy download URL always requires `orgId`, `integrationId`, and `useCaseId` as query parameters.\nThe `orgId` is included in the signed URL to establish organization context without requiring authentication.\nAdditional use-case-specific parameters are declared in the `params` array.\n",
|
|
3688
|
+
"properties": {
|
|
3689
|
+
"requires_vpc": {
|
|
3690
|
+
"type": "boolean",
|
|
3691
|
+
"description": "Whether requests require VPC routing for IP allowlisting",
|
|
3692
|
+
"default": false
|
|
3693
|
+
},
|
|
3694
|
+
"auth": {
|
|
3695
|
+
"$ref": "#/components/schemas/FileProxyAuth"
|
|
3696
|
+
},
|
|
3697
|
+
"params": {
|
|
3698
|
+
"type": "array",
|
|
3699
|
+
"items": {
|
|
3700
|
+
"$ref": "#/components/schemas/FileProxyParam"
|
|
3701
|
+
},
|
|
3702
|
+
"description": "Additional use-case-specific parameters expected in the download URL query string (beyond the required orgId, integrationId, useCaseId)"
|
|
3703
|
+
},
|
|
3704
|
+
"steps": {
|
|
3705
|
+
"type": "array",
|
|
3706
|
+
"minItems": 1,
|
|
3707
|
+
"items": {
|
|
3708
|
+
"$ref": "#/components/schemas/FileProxyStep"
|
|
3709
|
+
},
|
|
3710
|
+
"description": "Ordered list of HTTP steps to execute to retrieve the file"
|
|
3711
|
+
},
|
|
3712
|
+
"response": {
|
|
3713
|
+
"$ref": "#/components/schemas/FileProxyResponseConfig"
|
|
3714
|
+
}
|
|
3715
|
+
}
|
|
3716
|
+
},
|
|
3717
|
+
"FileProxyAuth": {
|
|
3718
|
+
"type": "object",
|
|
3719
|
+
"required": [
|
|
3720
|
+
"type",
|
|
3721
|
+
"token_url",
|
|
3722
|
+
"client_id",
|
|
3723
|
+
"client_secret"
|
|
3724
|
+
],
|
|
3725
|
+
"properties": {
|
|
3726
|
+
"type": {
|
|
3727
|
+
"type": "string",
|
|
3728
|
+
"enum": [
|
|
3729
|
+
"oauth2_client_credentials"
|
|
3730
|
+
],
|
|
3731
|
+
"description": "Authentication type"
|
|
3732
|
+
},
|
|
3733
|
+
"token_url": {
|
|
3734
|
+
"type": "string",
|
|
3735
|
+
"description": "Handlebars template for the OAuth2 token endpoint URL"
|
|
3736
|
+
},
|
|
3737
|
+
"client_id": {
|
|
3738
|
+
"type": "string",
|
|
3739
|
+
"description": "Handlebars template for the OAuth2 client ID"
|
|
3740
|
+
},
|
|
3741
|
+
"client_secret": {
|
|
3742
|
+
"type": "string",
|
|
3743
|
+
"description": "Handlebars template for the OAuth2 client secret"
|
|
3744
|
+
},
|
|
3745
|
+
"scope": {
|
|
3746
|
+
"type": "string",
|
|
3747
|
+
"description": "Optional OAuth2 scope"
|
|
3748
|
+
}
|
|
3749
|
+
}
|
|
3750
|
+
},
|
|
3751
|
+
"FileProxyParam": {
|
|
3752
|
+
"type": "object",
|
|
3753
|
+
"required": [
|
|
3754
|
+
"name",
|
|
3755
|
+
"required"
|
|
3756
|
+
],
|
|
3757
|
+
"properties": {
|
|
3758
|
+
"name": {
|
|
3759
|
+
"type": "string",
|
|
3760
|
+
"description": "Parameter name as it appears in the query string"
|
|
3761
|
+
},
|
|
3762
|
+
"required": {
|
|
3763
|
+
"type": "boolean",
|
|
3764
|
+
"description": "Whether this parameter is required"
|
|
3765
|
+
},
|
|
3766
|
+
"description": {
|
|
3767
|
+
"type": "string",
|
|
3768
|
+
"description": "Human-readable description of the parameter"
|
|
3769
|
+
}
|
|
3770
|
+
}
|
|
3771
|
+
},
|
|
3772
|
+
"FileProxyStep": {
|
|
3773
|
+
"type": "object",
|
|
3774
|
+
"required": [
|
|
3775
|
+
"url",
|
|
3776
|
+
"method",
|
|
3777
|
+
"response_type"
|
|
3778
|
+
],
|
|
3779
|
+
"properties": {
|
|
3780
|
+
"url": {
|
|
3781
|
+
"type": "string",
|
|
3782
|
+
"description": "Handlebars template for the request URL"
|
|
3783
|
+
},
|
|
3784
|
+
"method": {
|
|
3785
|
+
"type": "string",
|
|
3786
|
+
"enum": [
|
|
3787
|
+
"GET",
|
|
3788
|
+
"POST"
|
|
3789
|
+
],
|
|
3790
|
+
"description": "HTTP method"
|
|
3791
|
+
},
|
|
3792
|
+
"headers": {
|
|
3793
|
+
"type": "object",
|
|
3794
|
+
"additionalProperties": {
|
|
3795
|
+
"type": "string"
|
|
3796
|
+
},
|
|
3797
|
+
"description": "Handlebars templates for request headers"
|
|
3798
|
+
},
|
|
3799
|
+
"body": {
|
|
3800
|
+
"type": "string",
|
|
3801
|
+
"description": "Handlebars template for the request body (POST only)"
|
|
3802
|
+
},
|
|
3803
|
+
"response_type": {
|
|
3804
|
+
"type": "string",
|
|
3805
|
+
"enum": [
|
|
3806
|
+
"json",
|
|
3807
|
+
"binary"
|
|
3808
|
+
],
|
|
3809
|
+
"description": "Expected response type"
|
|
3810
|
+
}
|
|
3811
|
+
}
|
|
3812
|
+
},
|
|
3813
|
+
"FileProxyResponseConfig": {
|
|
3814
|
+
"type": "object",
|
|
3815
|
+
"required": [
|
|
3816
|
+
"body",
|
|
3817
|
+
"encoding"
|
|
3818
|
+
],
|
|
3819
|
+
"properties": {
|
|
3820
|
+
"body": {
|
|
3821
|
+
"type": "string",
|
|
3822
|
+
"description": "JSONata expression to extract file content from step results"
|
|
3823
|
+
},
|
|
3824
|
+
"encoding": {
|
|
3825
|
+
"type": "string",
|
|
3826
|
+
"enum": [
|
|
3827
|
+
"base64",
|
|
3828
|
+
"binary"
|
|
3829
|
+
],
|
|
3830
|
+
"description": "Encoding of the extracted body"
|
|
3831
|
+
},
|
|
3832
|
+
"filename": {
|
|
3833
|
+
"type": "string",
|
|
3834
|
+
"description": "JSONata expression to extract the filename"
|
|
3835
|
+
},
|
|
3836
|
+
"content_type": {
|
|
3837
|
+
"type": "string",
|
|
3838
|
+
"description": "JSONata expression to extract the content type"
|
|
3839
|
+
}
|
|
3840
|
+
}
|
|
3179
3841
|
},
|
|
3180
3842
|
"MappingSimulationRequest": {
|
|
3181
3843
|
"type": "object",
|
|
@@ -3468,49 +4130,6 @@
|
|
|
3468
4130
|
}
|
|
3469
4131
|
}
|
|
3470
4132
|
},
|
|
3471
|
-
"InboundIntegrationEventConfiguration": {
|
|
3472
|
-
"type": "object",
|
|
3473
|
-
"description": "Configuration for inbound use cases (ERP to epilot)",
|
|
3474
|
-
"properties": {
|
|
3475
|
-
"entities": {
|
|
3476
|
-
"type": "array",
|
|
3477
|
-
"description": "Array of entity configurations for this event",
|
|
3478
|
-
"items": {
|
|
3479
|
-
"$ref": "#/components/schemas/IntegrationEntity"
|
|
3480
|
-
}
|
|
3481
|
-
},
|
|
3482
|
-
"meter_readings": {
|
|
3483
|
-
"type": "array",
|
|
3484
|
-
"description": "Array of meter reading configurations for this event",
|
|
3485
|
-
"items": {
|
|
3486
|
-
"$ref": "#/components/schemas/IntegrationMeterReading"
|
|
3487
|
-
}
|
|
3488
|
-
}
|
|
3489
|
-
}
|
|
3490
|
-
},
|
|
3491
|
-
"OutboundIntegrationEventConfiguration": {
|
|
3492
|
-
"type": "object",
|
|
3493
|
-
"required": [
|
|
3494
|
-
"event_catalog_event",
|
|
3495
|
-
"mappings"
|
|
3496
|
-
],
|
|
3497
|
-
"description": "Configuration for outbound use cases. Defines the event that triggers the flow and the webhook mappings.",
|
|
3498
|
-
"properties": {
|
|
3499
|
-
"event_catalog_event": {
|
|
3500
|
-
"type": "string",
|
|
3501
|
-
"description": "The Event Catalog event name that triggers this outbound flow",
|
|
3502
|
-
"example": "contract.created"
|
|
3503
|
-
},
|
|
3504
|
-
"mappings": {
|
|
3505
|
-
"type": "array",
|
|
3506
|
-
"minItems": 1,
|
|
3507
|
-
"items": {
|
|
3508
|
-
"$ref": "#/components/schemas/OutboundMapping"
|
|
3509
|
-
},
|
|
3510
|
-
"description": "List of mappings that transform and deliver the event"
|
|
3511
|
-
}
|
|
3512
|
-
}
|
|
3513
|
-
},
|
|
3514
4133
|
"OutboundMapping": {
|
|
3515
4134
|
"type": "object",
|
|
3516
4135
|
"required": [
|
|
@@ -3638,279 +4257,69 @@
|
|
|
3638
4257
|
"$ref": "#/components/schemas/WebhookStatus"
|
|
3639
4258
|
}
|
|
3640
4259
|
},
|
|
3641
|
-
"status": {
|
|
3642
|
-
"type": "string",
|
|
3643
|
-
"enum": [
|
|
3644
|
-
"ok",
|
|
3645
|
-
"conflict",
|
|
3646
|
-
"disabled"
|
|
3647
|
-
],
|
|
3648
|
-
"description": "Overall status of the use case:\n- 'ok': Use case is enabled and all dependencies are properly configured\n- 'conflict': Use case has configuration issues (disabled events/webhooks while enabled)\n- 'disabled': Use case is disabled\n"
|
|
3649
|
-
},
|
|
3650
|
-
"conflicts": {
|
|
3651
|
-
"type": "array",
|
|
3652
|
-
"items": {
|
|
3653
|
-
"$ref": "#/components/schemas/OutboundConflict"
|
|
3654
|
-
},
|
|
3655
|
-
"description": "List of detected conflicts, if any"
|
|
3656
|
-
}
|
|
3657
|
-
}
|
|
3658
|
-
},
|
|
3659
|
-
"WebhookStatus": {
|
|
3660
|
-
"type": "object",
|
|
3661
|
-
"required": [
|
|
3662
|
-
"webhookId"
|
|
3663
|
-
],
|
|
3664
|
-
"properties": {
|
|
3665
|
-
"webhookId": {
|
|
3666
|
-
"type": "string",
|
|
3667
|
-
"description": "Unique identifier for the webhook"
|
|
3668
|
-
},
|
|
3669
|
-
"webhookName": {
|
|
3670
|
-
"type": "string",
|
|
3671
|
-
"description": "Human-readable name of the webhook"
|
|
3672
|
-
},
|
|
3673
|
-
"enabled": {
|
|
3674
|
-
"type": "boolean",
|
|
3675
|
-
"nullable": true,
|
|
3676
|
-
"description": "Whether the webhook is enabled. Null if the API is unreachable."
|
|
3677
|
-
}
|
|
3678
|
-
}
|
|
3679
|
-
},
|
|
3680
|
-
"OutboundConflict": {
|
|
3681
|
-
"type": "object",
|
|
3682
|
-
"required": [
|
|
3683
|
-
"type",
|
|
3684
|
-
"message"
|
|
3685
|
-
],
|
|
3686
|
-
"properties": {
|
|
3687
|
-
"type": {
|
|
3688
|
-
"type": "string",
|
|
3689
|
-
"enum": [
|
|
3690
|
-
"event_disabled",
|
|
3691
|
-
"all_webhooks_disabled",
|
|
3692
|
-
"event_enabled_while_disabled",
|
|
3693
|
-
"webhook_enabled_while_disabled"
|
|
3694
|
-
],
|
|
3695
|
-
"description": "Type of conflict:\n- 'event_disabled': Event catalog event is disabled while use case is enabled\n- 'all_webhooks_disabled': All webhooks are disabled while use case is enabled\n- 'event_enabled_while_disabled': Event is enabled while use case is disabled\n- 'webhook_enabled_while_disabled': A webhook is enabled while use case is disabled\n"
|
|
3696
|
-
},
|
|
3697
|
-
"webhookId": {
|
|
3698
|
-
"type": "string",
|
|
3699
|
-
"description": "Webhook ID (only present for webhook_enabled_while_disabled conflicts)"
|
|
3700
|
-
},
|
|
3701
|
-
"message": {
|
|
3702
|
-
"type": "string",
|
|
3703
|
-
"description": "Human-readable description of the conflict"
|
|
3704
|
-
}
|
|
3705
|
-
}
|
|
3706
|
-
},
|
|
3707
|
-
"IntegrationEntity": {
|
|
3708
|
-
"type": "object",
|
|
3709
|
-
"required": [
|
|
3710
|
-
"entity_schema",
|
|
3711
|
-
"unique_ids",
|
|
3712
|
-
"fields"
|
|
3713
|
-
],
|
|
3714
|
-
"properties": {
|
|
3715
|
-
"entity_schema": {
|
|
3716
|
-
"type": "string",
|
|
3717
|
-
"description": "Target entity schema (e.g., 'contact', 'contract')"
|
|
3718
|
-
},
|
|
3719
|
-
"unique_ids": {
|
|
3720
|
-
"type": "array",
|
|
3721
|
-
"items": {
|
|
3722
|
-
"type": "string"
|
|
3723
|
-
},
|
|
3724
|
-
"description": "Array of attribute names that uniquely identify this entity.\nThe _type hint for repeatable fields (e.g., email, phone) should be specified\non the corresponding field definition in the fields array.\n"
|
|
3725
|
-
},
|
|
3726
|
-
"jsonataExpression": {
|
|
3727
|
-
"type": "string",
|
|
3728
|
-
"description": "Optional JSONata expression to pre-process the event data before field mapping"
|
|
3729
|
-
},
|
|
3730
|
-
"enabled": {
|
|
3731
|
-
"oneOf": [
|
|
3732
|
-
{
|
|
3733
|
-
"type": "boolean"
|
|
3734
|
-
},
|
|
3735
|
-
{
|
|
3736
|
-
"type": "string"
|
|
3737
|
-
}
|
|
3738
|
-
],
|
|
3739
|
-
"description": "Controls whether this entity mapping should be processed. Can be a boolean or a JSONata expression (string) that evaluates to a boolean."
|
|
3740
|
-
},
|
|
3741
|
-
"mode": {
|
|
3742
|
-
"type": "string",
|
|
3743
|
-
"enum": [
|
|
3744
|
-
"upsert",
|
|
3745
|
-
"delete",
|
|
3746
|
-
"purge",
|
|
3747
|
-
"upsert-prune-scope-purge",
|
|
3748
|
-
"upsert-prune-scope-delete"
|
|
3749
|
-
],
|
|
3750
|
-
"default": "upsert",
|
|
3751
|
-
"description": "Operation mode for entity mapping:\n- 'upsert': Create or update the entity (default)\n- 'delete': Soft delete the entity (marks as deleted)\n- 'purge': Hard delete the entity (permanent removal)\n- 'upsert-prune-scope-purge': Upsert entities from array, then purge entities in scope that weren't upserted\n- 'upsert-prune-scope-delete': Upsert entities from array, then soft delete entities in scope that weren't upserted\n"
|
|
3752
|
-
},
|
|
3753
|
-
"scope": {
|
|
3754
|
-
"$ref": "#/components/schemas/PruneScopeConfig"
|
|
3755
|
-
},
|
|
3756
|
-
"fields": {
|
|
3757
|
-
"type": "array",
|
|
3758
|
-
"description": "Field mapping definitions",
|
|
3759
|
-
"items": {
|
|
3760
|
-
"$ref": "#/components/schemas/IntegrationEntityField"
|
|
3761
|
-
}
|
|
3762
|
-
}
|
|
3763
|
-
}
|
|
3764
|
-
},
|
|
3765
|
-
"PruneScopeConfig": {
|
|
3766
|
-
"type": "object",
|
|
3767
|
-
"description": "Scope configuration for upsert-prune-scope modes.\nDefines how to find entities that should be pruned if not in the upsert payload.\nThe scope is resolved against the original event payload (not individual array items).\n",
|
|
3768
|
-
"required": [
|
|
3769
|
-
"scope_mode"
|
|
3770
|
-
],
|
|
3771
|
-
"properties": {
|
|
3772
|
-
"scope_mode": {
|
|
3773
|
-
"type": "string",
|
|
3774
|
-
"enum": [
|
|
3775
|
-
"relations",
|
|
3776
|
-
"query"
|
|
3777
|
-
],
|
|
3778
|
-
"description": "Scope mode for finding entities to prune:\n- 'relations': Find scope by looking at all entities related to a specific entity (both direct and reverse relations)\n- 'query': Find scope entities directly via query parameters\n"
|
|
3779
|
-
},
|
|
3780
|
-
"schema": {
|
|
3781
|
-
"type": "string",
|
|
3782
|
-
"description": "For 'relations' mode: The schema of the entity to find (e.g., 'billing_account').\nNot used for 'query' mode.\n"
|
|
3783
|
-
},
|
|
3784
|
-
"unique_ids": {
|
|
3785
|
-
"type": "array",
|
|
3786
|
-
"description": "For 'relations' mode: How to identify the scope entity from the payload.\nNot used for 'query' mode.\n",
|
|
3787
|
-
"items": {
|
|
3788
|
-
"$ref": "#/components/schemas/RelationUniqueIdField"
|
|
3789
|
-
}
|
|
3790
|
-
},
|
|
3791
|
-
"query": {
|
|
3792
|
-
"type": "array",
|
|
3793
|
-
"description": "For 'query' mode: Direct query parameters to find scope entities.\nNot used for 'relations' or 'reverse-relations' modes.\n",
|
|
3794
|
-
"items": {
|
|
3795
|
-
"$ref": "#/components/schemas/RelationUniqueIdField"
|
|
3796
|
-
}
|
|
3797
|
-
}
|
|
3798
|
-
}
|
|
3799
|
-
},
|
|
3800
|
-
"MeterReadingPruneScopeConfig": {
|
|
3801
|
-
"type": "object",
|
|
3802
|
-
"description": "Scope configuration for meter reading upsert-prune-scope mode.\nThe scope is all readings for the same meter + counter.\n",
|
|
3803
|
-
"properties": {
|
|
3804
|
-
"source": {
|
|
3805
|
-
"type": "string",
|
|
3806
|
-
"description": "Optional source filter. When set, only readings with this source\nare eligible for pruning (e.g., 'ERP' to only prune ERP-synced readings).\n"
|
|
3807
|
-
}
|
|
3808
|
-
}
|
|
3809
|
-
},
|
|
3810
|
-
"IntegrationMeterReading": {
|
|
3811
|
-
"type": "object",
|
|
3812
|
-
"required": [
|
|
3813
|
-
"meter",
|
|
3814
|
-
"fields"
|
|
3815
|
-
],
|
|
3816
|
-
"properties": {
|
|
3817
|
-
"jsonataExpression": {
|
|
3818
|
-
"type": "string",
|
|
3819
|
-
"description": "Optional JSONata expression to extract meter reading items from the event data.\nIf not provided, the entire payload is used as the reading data.\nUseful when you need to extract an array of readings from a nested structure (e.g., \"$.readings\").\n"
|
|
3820
|
-
},
|
|
3821
|
-
"reading_matching": {
|
|
3822
|
-
"type": "string",
|
|
3823
|
-
"enum": [
|
|
3824
|
-
"external_id",
|
|
3825
|
-
"strict-date"
|
|
3826
|
-
],
|
|
3827
|
-
"default": "external_id",
|
|
3828
|
-
"description": "Strategy for matching incoming readings against existing readings.\n- 'external_id': Match readings by external_id attribute (default behavior)\n- 'strict-date': Match by meter_id + counter_id + direction + date (German timezone).\n Useful when readings originate from ECP and are echoed back by the ERP with truncated timestamps.\n"
|
|
3829
|
-
},
|
|
3830
|
-
"mode": {
|
|
3831
|
-
"type": "string",
|
|
3832
|
-
"enum": [
|
|
3833
|
-
"upsert",
|
|
3834
|
-
"delete",
|
|
3835
|
-
"upsert-prune-scope"
|
|
3836
|
-
],
|
|
3837
|
-
"default": "upsert",
|
|
3838
|
-
"description": "Operation mode for meter reading mapping:\n- 'upsert': Create or update meter readings (default)\n- 'delete': Delete the meter reading\n- 'upsert-prune-scope': Upsert readings from array, then delete all other readings for the same meter+counter that weren't upserted\n"
|
|
3839
|
-
},
|
|
3840
|
-
"scope": {
|
|
3841
|
-
"$ref": "#/components/schemas/MeterReadingPruneScopeConfig"
|
|
3842
|
-
},
|
|
3843
|
-
"meter": {
|
|
3844
|
-
"$ref": "#/components/schemas/MeterUniqueIdsConfig"
|
|
3845
|
-
},
|
|
3846
|
-
"meter_counter": {
|
|
3847
|
-
"$ref": "#/components/schemas/MeterUniqueIdsConfig"
|
|
3848
|
-
},
|
|
3849
|
-
"fields": {
|
|
4260
|
+
"status": {
|
|
4261
|
+
"type": "string",
|
|
4262
|
+
"enum": [
|
|
4263
|
+
"ok",
|
|
4264
|
+
"conflict",
|
|
4265
|
+
"disabled"
|
|
4266
|
+
],
|
|
4267
|
+
"description": "Overall status of the use case:\n- 'ok': Use case is enabled and all dependencies are properly configured\n- 'conflict': Use case has configuration issues (disabled events/webhooks while enabled)\n- 'disabled': Use case is disabled\n"
|
|
4268
|
+
},
|
|
4269
|
+
"conflicts": {
|
|
3850
4270
|
"type": "array",
|
|
3851
|
-
"description": "Field mapping definitions for meter reading attributes",
|
|
3852
4271
|
"items": {
|
|
3853
|
-
"$ref": "#/components/schemas/
|
|
3854
|
-
}
|
|
4272
|
+
"$ref": "#/components/schemas/OutboundConflict"
|
|
4273
|
+
},
|
|
4274
|
+
"description": "List of detected conflicts, if any"
|
|
3855
4275
|
}
|
|
3856
4276
|
}
|
|
3857
4277
|
},
|
|
3858
|
-
"
|
|
4278
|
+
"WebhookStatus": {
|
|
3859
4279
|
"type": "object",
|
|
3860
4280
|
"required": [
|
|
3861
|
-
"
|
|
4281
|
+
"webhookId"
|
|
3862
4282
|
],
|
|
3863
4283
|
"properties": {
|
|
3864
|
-
"
|
|
3865
|
-
"type": "
|
|
3866
|
-
"
|
|
3867
|
-
|
|
3868
|
-
|
|
3869
|
-
|
|
3870
|
-
|
|
4284
|
+
"webhookId": {
|
|
4285
|
+
"type": "string",
|
|
4286
|
+
"description": "Unique identifier for the webhook"
|
|
4287
|
+
},
|
|
4288
|
+
"webhookName": {
|
|
4289
|
+
"type": "string",
|
|
4290
|
+
"description": "Human-readable name of the webhook"
|
|
4291
|
+
},
|
|
4292
|
+
"enabled": {
|
|
4293
|
+
"type": "boolean",
|
|
4294
|
+
"nullable": true,
|
|
4295
|
+
"description": "Whether the webhook is enabled. Null if the API is unreachable."
|
|
3871
4296
|
}
|
|
3872
4297
|
}
|
|
3873
4298
|
},
|
|
3874
|
-
"
|
|
4299
|
+
"OutboundConflict": {
|
|
3875
4300
|
"type": "object",
|
|
3876
4301
|
"required": [
|
|
3877
|
-
"
|
|
4302
|
+
"type",
|
|
4303
|
+
"message"
|
|
3878
4304
|
],
|
|
3879
4305
|
"properties": {
|
|
3880
|
-
"
|
|
4306
|
+
"type": {
|
|
3881
4307
|
"type": "string",
|
|
3882
|
-
"
|
|
4308
|
+
"enum": [
|
|
4309
|
+
"event_disabled",
|
|
4310
|
+
"all_webhooks_disabled",
|
|
4311
|
+
"event_enabled_while_disabled",
|
|
4312
|
+
"webhook_enabled_while_disabled"
|
|
4313
|
+
],
|
|
4314
|
+
"description": "Type of conflict:\n- 'event_disabled': Event catalog event is disabled while use case is enabled\n- 'all_webhooks_disabled': All webhooks are disabled while use case is enabled\n- 'event_enabled_while_disabled': Event is enabled while use case is disabled\n- 'webhook_enabled_while_disabled': A webhook is enabled while use case is disabled\n"
|
|
3883
4315
|
},
|
|
3884
|
-
"
|
|
4316
|
+
"webhookId": {
|
|
3885
4317
|
"type": "string",
|
|
3886
|
-
"description": "
|
|
4318
|
+
"description": "Webhook ID (only present for webhook_enabled_while_disabled conflicts)"
|
|
3887
4319
|
},
|
|
3888
|
-
"
|
|
4320
|
+
"message": {
|
|
3889
4321
|
"type": "string",
|
|
3890
|
-
"description": "
|
|
3891
|
-
},
|
|
3892
|
-
"constant": {
|
|
3893
|
-
"description": "Constant value to assign (any type)"
|
|
3894
|
-
},
|
|
3895
|
-
"_type": {
|
|
3896
|
-
"$ref": "#/components/schemas/RepeatableFieldType"
|
|
3897
|
-
},
|
|
3898
|
-
"enabled": {
|
|
3899
|
-
"oneOf": [
|
|
3900
|
-
{
|
|
3901
|
-
"type": "boolean"
|
|
3902
|
-
},
|
|
3903
|
-
{
|
|
3904
|
-
"type": "string"
|
|
3905
|
-
}
|
|
3906
|
-
],
|
|
3907
|
-
"description": "Controls whether this field mapping should be processed. Can be a boolean or a JSONata expression (string) that evaluates to a boolean. Defaults to true if omitted."
|
|
3908
|
-
},
|
|
3909
|
-
"relations": {
|
|
3910
|
-
"$ref": "#/components/schemas/RelationConfig"
|
|
3911
|
-
},
|
|
3912
|
-
"relation_refs": {
|
|
3913
|
-
"$ref": "#/components/schemas/RelationRefsConfig"
|
|
4322
|
+
"description": "Human-readable description of the conflict"
|
|
3914
4323
|
}
|
|
3915
4324
|
}
|
|
3916
4325
|
},
|
|
@@ -4095,192 +4504,6 @@
|
|
|
4095
4504
|
],
|
|
4096
4505
|
"description": "Type hint for repeatable fields that require special search handling.\nThese fields are stored as arrays of objects (e.g., email: [{ email: \"value\" }]).\n"
|
|
4097
4506
|
},
|
|
4098
|
-
"IntegrationWithUseCases": {
|
|
4099
|
-
"type": "object",
|
|
4100
|
-
"description": "Integration with embedded use cases for atomic CRUD operations",
|
|
4101
|
-
"required": [
|
|
4102
|
-
"id",
|
|
4103
|
-
"orgId",
|
|
4104
|
-
"name",
|
|
4105
|
-
"use_cases",
|
|
4106
|
-
"created_at",
|
|
4107
|
-
"updated_at"
|
|
4108
|
-
],
|
|
4109
|
-
"properties": {
|
|
4110
|
-
"id": {
|
|
4111
|
-
"type": "string",
|
|
4112
|
-
"format": "uuid",
|
|
4113
|
-
"description": "Unique identifier for the integration"
|
|
4114
|
-
},
|
|
4115
|
-
"orgId": {
|
|
4116
|
-
"type": "string",
|
|
4117
|
-
"description": "Organization ID"
|
|
4118
|
-
},
|
|
4119
|
-
"name": {
|
|
4120
|
-
"type": "string",
|
|
4121
|
-
"description": "Integration name"
|
|
4122
|
-
},
|
|
4123
|
-
"description": {
|
|
4124
|
-
"type": "string",
|
|
4125
|
-
"description": "Optional description of the integration"
|
|
4126
|
-
},
|
|
4127
|
-
"access_token_ids": {
|
|
4128
|
-
"type": "array",
|
|
4129
|
-
"description": "List of access token IDs associated with this integration",
|
|
4130
|
-
"items": {
|
|
4131
|
-
"type": "string"
|
|
4132
|
-
}
|
|
4133
|
-
},
|
|
4134
|
-
"use_cases": {
|
|
4135
|
-
"type": "array",
|
|
4136
|
-
"description": "All use cases belonging to this integration",
|
|
4137
|
-
"items": {
|
|
4138
|
-
"$ref": "#/components/schemas/UseCase"
|
|
4139
|
-
}
|
|
4140
|
-
},
|
|
4141
|
-
"created_at": {
|
|
4142
|
-
"type": "string",
|
|
4143
|
-
"format": "date-time",
|
|
4144
|
-
"description": "ISO-8601 timestamp when the integration was created"
|
|
4145
|
-
},
|
|
4146
|
-
"updated_at": {
|
|
4147
|
-
"type": "string",
|
|
4148
|
-
"format": "date-time",
|
|
4149
|
-
"description": "ISO-8601 timestamp when the integration was last updated"
|
|
4150
|
-
}
|
|
4151
|
-
}
|
|
4152
|
-
},
|
|
4153
|
-
"UpsertIntegrationWithUseCasesRequest": {
|
|
4154
|
-
"type": "object",
|
|
4155
|
-
"description": "Request to create or update an integration with embedded use cases (upsert).\nThis is a declarative operation - the request represents the desired state.\n",
|
|
4156
|
-
"required": [
|
|
4157
|
-
"name"
|
|
4158
|
-
],
|
|
4159
|
-
"properties": {
|
|
4160
|
-
"name": {
|
|
4161
|
-
"type": "string",
|
|
4162
|
-
"minLength": 1,
|
|
4163
|
-
"maxLength": 255,
|
|
4164
|
-
"description": "Integration name"
|
|
4165
|
-
},
|
|
4166
|
-
"description": {
|
|
4167
|
-
"type": "string",
|
|
4168
|
-
"maxLength": 1000,
|
|
4169
|
-
"description": "Optional description of the integration"
|
|
4170
|
-
},
|
|
4171
|
-
"access_token_ids": {
|
|
4172
|
-
"type": "array",
|
|
4173
|
-
"description": "List of access token IDs to associate with this integration",
|
|
4174
|
-
"items": {
|
|
4175
|
-
"type": "string"
|
|
4176
|
-
}
|
|
4177
|
-
},
|
|
4178
|
-
"use_cases": {
|
|
4179
|
-
"type": "array",
|
|
4180
|
-
"description": "Full list of use cases (declarative). This replaces ALL existing use cases.\n- Use cases with an `id` field matching an existing use case will be updated\n- Use cases without an `id` or with a non-matching `id` will be created\n- Existing use cases not in this list will be deleted\n",
|
|
4181
|
-
"items": {
|
|
4182
|
-
"$ref": "#/components/schemas/EmbeddedUseCaseRequest"
|
|
4183
|
-
}
|
|
4184
|
-
}
|
|
4185
|
-
}
|
|
4186
|
-
},
|
|
4187
|
-
"EmbeddedUseCaseRequest": {
|
|
4188
|
-
"oneOf": [
|
|
4189
|
-
{
|
|
4190
|
-
"$ref": "#/components/schemas/EmbeddedInboundUseCaseRequest"
|
|
4191
|
-
},
|
|
4192
|
-
{
|
|
4193
|
-
"$ref": "#/components/schemas/EmbeddedOutboundUseCaseRequest"
|
|
4194
|
-
}
|
|
4195
|
-
],
|
|
4196
|
-
"discriminator": {
|
|
4197
|
-
"propertyName": "type",
|
|
4198
|
-
"mapping": {
|
|
4199
|
-
"inbound": "#/components/schemas/EmbeddedInboundUseCaseRequest",
|
|
4200
|
-
"outbound": "#/components/schemas/EmbeddedOutboundUseCaseRequest"
|
|
4201
|
-
}
|
|
4202
|
-
}
|
|
4203
|
-
},
|
|
4204
|
-
"EmbeddedUseCaseRequestBase": {
|
|
4205
|
-
"type": "object",
|
|
4206
|
-
"required": [
|
|
4207
|
-
"name",
|
|
4208
|
-
"type",
|
|
4209
|
-
"enabled"
|
|
4210
|
-
],
|
|
4211
|
-
"properties": {
|
|
4212
|
-
"id": {
|
|
4213
|
-
"type": "string",
|
|
4214
|
-
"format": "uuid",
|
|
4215
|
-
"description": "Optional use case ID for update matching.\n- If provided and matches an existing use case, that use case is updated\n- If provided but no match, a new use case with this ID is created\n- If omitted, a new use case with auto-generated ID is created\n"
|
|
4216
|
-
},
|
|
4217
|
-
"name": {
|
|
4218
|
-
"type": "string",
|
|
4219
|
-
"minLength": 1,
|
|
4220
|
-
"maxLength": 255,
|
|
4221
|
-
"description": "Use case name"
|
|
4222
|
-
},
|
|
4223
|
-
"enabled": {
|
|
4224
|
-
"type": "boolean",
|
|
4225
|
-
"description": "Whether the use case is enabled"
|
|
4226
|
-
},
|
|
4227
|
-
"change_description": {
|
|
4228
|
-
"type": "string",
|
|
4229
|
-
"maxLength": 2000,
|
|
4230
|
-
"description": "Optional description of this change (like a commit message)"
|
|
4231
|
-
}
|
|
4232
|
-
}
|
|
4233
|
-
},
|
|
4234
|
-
"EmbeddedInboundUseCaseRequest": {
|
|
4235
|
-
"allOf": [
|
|
4236
|
-
{
|
|
4237
|
-
"$ref": "#/components/schemas/EmbeddedUseCaseRequestBase"
|
|
4238
|
-
},
|
|
4239
|
-
{
|
|
4240
|
-
"type": "object",
|
|
4241
|
-
"required": [
|
|
4242
|
-
"type"
|
|
4243
|
-
],
|
|
4244
|
-
"properties": {
|
|
4245
|
-
"type": {
|
|
4246
|
-
"type": "string",
|
|
4247
|
-
"enum": [
|
|
4248
|
-
"inbound"
|
|
4249
|
-
],
|
|
4250
|
-
"description": "Use case type"
|
|
4251
|
-
},
|
|
4252
|
-
"configuration": {
|
|
4253
|
-
"$ref": "#/components/schemas/InboundIntegrationEventConfiguration"
|
|
4254
|
-
}
|
|
4255
|
-
}
|
|
4256
|
-
}
|
|
4257
|
-
]
|
|
4258
|
-
},
|
|
4259
|
-
"EmbeddedOutboundUseCaseRequest": {
|
|
4260
|
-
"allOf": [
|
|
4261
|
-
{
|
|
4262
|
-
"$ref": "#/components/schemas/EmbeddedUseCaseRequestBase"
|
|
4263
|
-
},
|
|
4264
|
-
{
|
|
4265
|
-
"type": "object",
|
|
4266
|
-
"required": [
|
|
4267
|
-
"type"
|
|
4268
|
-
],
|
|
4269
|
-
"properties": {
|
|
4270
|
-
"type": {
|
|
4271
|
-
"type": "string",
|
|
4272
|
-
"enum": [
|
|
4273
|
-
"outbound"
|
|
4274
|
-
],
|
|
4275
|
-
"description": "Use case type"
|
|
4276
|
-
},
|
|
4277
|
-
"configuration": {
|
|
4278
|
-
"$ref": "#/components/schemas/OutboundIntegrationEventConfiguration"
|
|
4279
|
-
}
|
|
4280
|
-
}
|
|
4281
|
-
}
|
|
4282
|
-
]
|
|
4283
|
-
},
|
|
4284
4507
|
"ReplayEventsRequest": {
|
|
4285
4508
|
"type": "object",
|
|
4286
4509
|
"required": [
|