@truepic/vision-api-types 3.78.0 → 3.82.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.
Files changed (4) hide show
  1. package/README.md +10 -44
  2. package/index.d.ts +1255 -259
  3. package/package.json +3 -10
  4. package/LICENSE +0 -20
package/index.d.ts CHANGED
@@ -478,12 +478,30 @@ export interface paths {
478
478
  /** @description Limit the PDF to a subset of photos/videos. */
479
479
  photos: number[];
480
480
  };
481
- /** @description Additional sections to include that are NOT included by default. If you do not want to include any extra sections, you can omit this property. */
482
- "include[]"?: "inspectionNote"[];
483
- /** @description Specific sections to exclude that are included by default. If you do not want to exclude any sections, you can omit this property. */
484
- "exclude[]"?: ("questions" | "thumbnails" | "imageDetails" | "timeline")[];
481
+ /**
482
+ * @description Additional sections to include that are NOT included by default. If you do not want to include any extra sections, you can omit this property.
483
+ *
484
+ * Accepts the legacy `inspectionNote` alias and the canonical section ids. The only opt-in section is Inspection Notes; the other ids are accepted for forward-compatibility.
485
+ */
486
+ "include[]"?: ("inspectionNote" | "cover" | "contents" | "captureLocation" | "inspectionItems" | "imageDetails" | "aiAnalysis" | "inspectionNotes" | "captureDevices" | "timeline")[];
487
+ /**
488
+ * @description Specific sections to exclude that are included by default. If you do not want to exclude any sections, you can omit this property.
489
+ *
490
+ * Accepts the legacy tokens (`questions` → Inspection Items, `thumbnails` → no-op, `imageDetails`, `timeline`) and the canonical section ids.
491
+ */
492
+ "exclude[]"?: ("questions" | "thumbnails" | "cover" | "contents" | "captureLocation" | "inspectionItems" | "imageDetails" | "aiAnalysis" | "inspectionNotes" | "captureDevices" | "timeline")[];
493
+ /** @description Whether to include items the customer never submitted (unanswered questions and captures with no upload) in the Inspection Items section. Set to `false` to hide them. */
494
+ showUnansweredItems?: boolean;
485
495
  /** @description The IANA time zone name to use when displaying dates/times in the PDF. Defaults to UTC. */
486
496
  tz?: string;
497
+ /**
498
+ * @description Which capture-location maps to render in the Image Details section. Omit to render a map for every capture (the default); provide a subset to limit which captures get a map, or an empty array to render no maps.
499
+ *
500
+ * - `outside`: captures taken outside the expected address
501
+ * - `within`: captures taken within the expected address
502
+ * - `no_location`: captures with no expected address on the inspection
503
+ */
504
+ "captureLocationMaps[]"?: ("outside" | "within" | "no_location")[];
487
505
  };
488
506
  header?: never;
489
507
  path: {
@@ -2070,7 +2088,7 @@ export interface paths {
2070
2088
  };
2071
2089
  requestBody: {
2072
2090
  content: {
2073
- "application/json": Record<string, never>;
2091
+ "application/json": components["schemas"]["UpdateInspectionTypeBody"];
2074
2092
  };
2075
2093
  };
2076
2094
  responses: {
@@ -2080,7 +2098,7 @@ export interface paths {
2080
2098
  [name: string]: unknown;
2081
2099
  };
2082
2100
  content: {
2083
- "application/json": components["schemas"]["CreateInspectionTypeBody"];
2101
+ "application/json": components["schemas"]["ResponseData"];
2084
2102
  };
2085
2103
  };
2086
2104
  400: components["responses"]["ErrorBadRequest"];
@@ -2744,50 +2762,270 @@ export interface paths {
2744
2762
  patch?: never;
2745
2763
  trace?: never;
2746
2764
  };
2765
+ "/ai-item-types": {
2766
+ parameters: {
2767
+ query?: never;
2768
+ header?: never;
2769
+ path?: never;
2770
+ cookie?: never;
2771
+ };
2772
+ /** List AI Item Types for the organization */
2773
+ get: {
2774
+ parameters: {
2775
+ query?: {
2776
+ inspection_type_id?: number;
2777
+ };
2778
+ header?: never;
2779
+ path?: never;
2780
+ cookie?: never;
2781
+ };
2782
+ requestBody?: never;
2783
+ responses: {
2784
+ /** @description Success */
2785
+ 200: {
2786
+ headers: {
2787
+ [name: string]: unknown;
2788
+ };
2789
+ content?: never;
2790
+ };
2791
+ 400: components["responses"]["ErrorBadRequest"];
2792
+ 401: components["responses"]["ErrorUnauthorized"];
2793
+ 403: components["responses"]["ErrorForbidden"];
2794
+ 404: components["responses"]["ErrorNotFound"];
2795
+ 412: components["responses"]["ErrorPreconditionFailed"];
2796
+ 500: components["responses"]["ErrorUnhandled"];
2797
+ };
2798
+ };
2799
+ put?: never;
2800
+ /** Create an AI Item Type for the organization */
2801
+ post: {
2802
+ parameters: {
2803
+ query?: never;
2804
+ header?: never;
2805
+ path?: never;
2806
+ cookie?: never;
2807
+ };
2808
+ requestBody?: never;
2809
+ responses: {
2810
+ /** @description Created */
2811
+ 201: {
2812
+ headers: {
2813
+ [name: string]: unknown;
2814
+ };
2815
+ content?: never;
2816
+ };
2817
+ /** @description Validation error */
2818
+ 400: {
2819
+ headers: {
2820
+ [name: string]: unknown;
2821
+ };
2822
+ content?: never;
2823
+ };
2824
+ 401: components["responses"]["ErrorUnauthorized"];
2825
+ 403: components["responses"]["ErrorForbidden"];
2826
+ /** @description Inspection Type not in organization */
2827
+ 404: {
2828
+ headers: {
2829
+ [name: string]: unknown;
2830
+ };
2831
+ content?: never;
2832
+ };
2833
+ 412: components["responses"]["ErrorPreconditionFailed"];
2834
+ 500: components["responses"]["ErrorUnhandled"];
2835
+ };
2836
+ };
2837
+ delete?: never;
2838
+ options?: never;
2839
+ head?: never;
2840
+ patch?: never;
2841
+ trace?: never;
2842
+ };
2843
+ "/ai-item-types/{itemTypeId}": {
2844
+ parameters: {
2845
+ query?: never;
2846
+ header?: never;
2847
+ path?: never;
2848
+ cookie?: never;
2849
+ };
2850
+ get?: never;
2851
+ /** Replace an AI Item Type (replace-by-tree) */
2852
+ put: {
2853
+ parameters: {
2854
+ query?: never;
2855
+ header?: never;
2856
+ path: {
2857
+ itemTypeId: number;
2858
+ };
2859
+ cookie?: never;
2860
+ };
2861
+ requestBody?: never;
2862
+ responses: {
2863
+ /** @description Success */
2864
+ 200: {
2865
+ headers: {
2866
+ [name: string]: unknown;
2867
+ };
2868
+ content?: never;
2869
+ };
2870
+ /** @description Validation error */
2871
+ 400: {
2872
+ headers: {
2873
+ [name: string]: unknown;
2874
+ };
2875
+ content?: never;
2876
+ };
2877
+ 401: components["responses"]["ErrorUnauthorized"];
2878
+ 403: components["responses"]["ErrorForbidden"];
2879
+ /** @description Not found */
2880
+ 404: {
2881
+ headers: {
2882
+ [name: string]: unknown;
2883
+ };
2884
+ content?: never;
2885
+ };
2886
+ 412: components["responses"]["ErrorPreconditionFailed"];
2887
+ 500: components["responses"]["ErrorUnhandled"];
2888
+ };
2889
+ };
2890
+ post?: never;
2891
+ /** Delete an AI Item Type */
2892
+ delete: {
2893
+ parameters: {
2894
+ query?: never;
2895
+ header?: never;
2896
+ path: {
2897
+ itemTypeId: number;
2898
+ };
2899
+ cookie?: never;
2900
+ };
2901
+ requestBody?: never;
2902
+ responses: {
2903
+ /** @description No Content */
2904
+ 204: {
2905
+ headers: {
2906
+ [name: string]: unknown;
2907
+ };
2908
+ content?: never;
2909
+ };
2910
+ 400: components["responses"]["ErrorBadRequest"];
2911
+ 401: components["responses"]["ErrorUnauthorized"];
2912
+ 403: components["responses"]["ErrorForbidden"];
2913
+ /** @description Not found */
2914
+ 404: {
2915
+ headers: {
2916
+ [name: string]: unknown;
2917
+ };
2918
+ content?: never;
2919
+ };
2920
+ /** @description Still linked to inspection types */
2921
+ 409: {
2922
+ headers: {
2923
+ [name: string]: unknown;
2924
+ };
2925
+ content?: never;
2926
+ };
2927
+ 412: components["responses"]["ErrorPreconditionFailed"];
2928
+ 500: components["responses"]["ErrorUnhandled"];
2929
+ };
2930
+ };
2931
+ options?: never;
2932
+ head?: never;
2933
+ patch?: never;
2934
+ trace?: never;
2935
+ };
2936
+ "/ai-item-types/{itemTypeId}/inspection-types/{inspectionTypeId}": {
2937
+ parameters: {
2938
+ query?: never;
2939
+ header?: never;
2940
+ path?: never;
2941
+ cookie?: never;
2942
+ };
2943
+ get?: never;
2944
+ put?: never;
2945
+ /** Link an AI Item Type to an Inspection Type */
2946
+ post: {
2947
+ parameters: {
2948
+ query?: never;
2949
+ header?: never;
2950
+ path: {
2951
+ itemTypeId: number;
2952
+ inspectionTypeId: number;
2953
+ };
2954
+ cookie?: never;
2955
+ };
2956
+ requestBody?: never;
2957
+ responses: {
2958
+ /** @description Linked (idempotent) */
2959
+ 204: {
2960
+ headers: {
2961
+ [name: string]: unknown;
2962
+ };
2963
+ content?: never;
2964
+ };
2965
+ 400: components["responses"]["ErrorBadRequest"];
2966
+ 401: components["responses"]["ErrorUnauthorized"];
2967
+ 403: components["responses"]["ErrorForbidden"];
2968
+ /** @description Not found */
2969
+ 404: {
2970
+ headers: {
2971
+ [name: string]: unknown;
2972
+ };
2973
+ content?: never;
2974
+ };
2975
+ 412: components["responses"]["ErrorPreconditionFailed"];
2976
+ 500: components["responses"]["ErrorUnhandled"];
2977
+ };
2978
+ };
2979
+ /** Unlink an AI Item Type from an Inspection Type (auto-deletes the item type if no links remain in V1) */
2980
+ delete: {
2981
+ parameters: {
2982
+ query?: never;
2983
+ header?: never;
2984
+ path: {
2985
+ itemTypeId: number;
2986
+ inspectionTypeId: number;
2987
+ };
2988
+ cookie?: never;
2989
+ };
2990
+ requestBody?: never;
2991
+ responses: {
2992
+ /** @description Unlinked (idempotent) */
2993
+ 204: {
2994
+ headers: {
2995
+ [name: string]: unknown;
2996
+ };
2997
+ content?: never;
2998
+ };
2999
+ 400: components["responses"]["ErrorBadRequest"];
3000
+ 401: components["responses"]["ErrorUnauthorized"];
3001
+ 403: components["responses"]["ErrorForbidden"];
3002
+ /** @description Not found */
3003
+ 404: {
3004
+ headers: {
3005
+ [name: string]: unknown;
3006
+ };
3007
+ content?: never;
3008
+ };
3009
+ 412: components["responses"]["ErrorPreconditionFailed"];
3010
+ 500: components["responses"]["ErrorUnhandled"];
3011
+ };
3012
+ };
3013
+ options?: never;
3014
+ head?: never;
3015
+ patch?: never;
3016
+ trace?: never;
3017
+ };
2747
3018
  }
2748
3019
  export type webhooks = Record<string, never>;
2749
3020
  export interface components {
2750
3021
  schemas: {
2751
- AIAnalysisSetPayload: {
2752
- /**
2753
- * Format: date-time
2754
- * @description The date/time the resource was created
2755
- * @example 2020-05-01T21:44:40.000Z
2756
- */
2757
- created_at: string;
2758
- /**
2759
- * @description The id of the user that created this AI Analysis Set.
2760
- * @example 894
2761
- */
2762
- created_by_user_id: number;
2763
- /**
2764
- * @description The id of the resource.
2765
- * @example 1843
2766
- */
2767
- id: number;
2768
- is_deleted: unknown;
2769
- /**
2770
- * @description The id of the user that last edited this AI Analysis Set.
2771
- * @example 542
2772
- */
2773
- modified_by_user_id?: number;
2774
- /**
2775
- * @description The name of the AI Analysis Set
2776
- * @example AI Analysis Set Name
2777
- */
2778
- name: string;
2779
- /**
2780
- * @description The id of the organization that owns this AI Analysis Set
2781
- * @example 532
2782
- */
2783
- organization_id: number;
2784
- questions: string[];
2785
- /**
2786
- * Format: date-time
2787
- * @description The date/time the resource was last updated
2788
- * @example 2020-05-01T21:44:40.000Z
2789
- */
2790
- updated_at: string;
3022
+ AIAnalysisStatus: {
3023
+ completed_event_count?: number;
3024
+ /** @description Number of non-deleted truepics actually evaluated by the latest completed AI Analysis run, after the AI capture cap (VISION-2118). Equals the total non-deleted count when under the cap; the cap value when over. Present only when the inspection has at least one completed extraction event — drives the summary's "N images analyzed" clause so the user sees the actually-evaluated number rather than the total non-deleted count. */
3025
+ evaluated_truepic_count?: number;
3026
+ last_completed_at: string | null;
3027
+ /** @enum {string} */
3028
+ state: "idle" | "waiting" | "running" | "completed" | "failed";
2791
3029
  };
2792
3030
  AIInspectionCriteriaEvaluationModelResultV1: {
2793
3031
  cachedTokens: number;
@@ -2813,6 +3051,117 @@ export interface components {
2813
3051
  queryTimeMs: number;
2814
3052
  totalCostUSD: number | null;
2815
3053
  };
3054
+ AIInspectionFeedback: {
3055
+ created_at: string;
3056
+ created_by_member_user_id: number;
3057
+ feedback: components["schemas"]["AIInspectionFeedbackSections"];
3058
+ id: number;
3059
+ inspection_id: number;
3060
+ };
3061
+ /** @enum {string} */
3062
+ AIInspectionFeedbackDecision: "accept" | "reject";
3063
+ AIInspectionFeedbackItem: {
3064
+ comment: string | null;
3065
+ decision: components["schemas"]["AIInspectionFeedbackDecision"];
3066
+ list_item_id: number;
3067
+ };
3068
+ AIInspectionFeedbackOverall: {
3069
+ comment: string | null;
3070
+ decision: components["schemas"]["AIInspectionFeedbackDecision"] | unknown;
3071
+ reason?: string | null;
3072
+ };
3073
+ /** @description The three feedback surfaces, each optional. A row carries whichever sections the user has submitted feedback for. */
3074
+ AIInspectionFeedbackSections: {
3075
+ additional_details?: components["schemas"]["AIInspectionSubjectScopedFeedbackSection"];
3076
+ inspection_ready?: components["schemas"]["AIInspectionReadyFeedbackSection"];
3077
+ item_information?: components["schemas"]["AIInspectionSubjectScopedFeedbackSection"];
3078
+ };
3079
+ /** @description One per-Subject verdict row for the `item_information` and `additional_details` surfaces, keyed by the detected `ai_items[].id`. */
3080
+ AIInspectionFeedbackSubjectItem: {
3081
+ comment: string | null;
3082
+ decision: components["schemas"]["AIInspectionFeedbackDecision"];
3083
+ item_id: number;
3084
+ reason?: string | null;
3085
+ };
3086
+ AIInspectionItemAdditionalDetailsResult: {
3087
+ /** @description Per-model call audit data for the Additional Details extraction step. */
3088
+ audit_json: components["schemas"]["AuditEntry"][];
3089
+ /** @description AI observations responding to the configured considerations text. */
3090
+ considerations_observations: components["schemas"]["ConsiderationsObservationEntry"][];
3091
+ /** @description Self-referential reuse provenance (VISION-2080): the prior `ai_inspection_item_additional_details_results.id` this row was cloned from. Null on freshly-computed rows. ON DELETE SET NULL — deleting the source row leaves this as a tombstone. */
3092
+ copied_from_additional_details_result_id: number | null;
3093
+ /**
3094
+ * Format: date-time
3095
+ * @description The date/time the resource was created
3096
+ * @example 2020-05-01T21:44:40.000Z
3097
+ */
3098
+ created_at: string;
3099
+ id: number;
3100
+ /** @description Row-level hex SHA-256 over the canonical projection of the additional_details inputs for every eligible item in this event (VISION-2080). The table stores one row per event with every item's findings merged, so the fingerprint covers the whole row's inputs — any single item's change invalidates the whole row. Drives the prior-result reuse fast path. Null on rows that predate the feature. */
3101
+ input_fingerprint: string | null;
3102
+ inspection_id: number;
3103
+ /** @description Configured items-to-look-for that were found, plus adjacent discoveries. lookfor_id is a UUID referencing the item type's additional_details_lookfor array; null for adjacent-discovery items. */
3104
+ items_found: components["schemas"]["ItemsFoundEntry"][];
3105
+ /** @description FK to ai_extraction_events.id — the run that produced this row. */
3106
+ triggering_event_id?: number;
3107
+ /**
3108
+ * Format: date-time
3109
+ * @description The date/time the resource was last updated
3110
+ * @example 2020-05-01T21:44:40.000Z
3111
+ */
3112
+ updated_at: string;
3113
+ };
3114
+ AIInspectionItemFieldResult: {
3115
+ /**
3116
+ * @description AI-derived disposition.
3117
+ * @enum {string|null}
3118
+ */
3119
+ ai_disposition: "pass" | "warn" | null;
3120
+ /** @description Per-model call audit data for this field extraction step, plus (when a rerun drift was suppressed) the suppressed verdict — VISION-2126. */
3121
+ audit_json: components["schemas"]["FieldResultAuditEntry"][];
3122
+ /** @description Cross-extraction conflict candidates. Present and non-empty only when status='conflict'. Not deduplicated — vote distribution is preserved. */
3123
+ candidate_values: components["schemas"]["CandidateValue"][];
3124
+ /** @description 0..1 consensus confidence; null when status !== 'found'. */
3125
+ confidence: number | null;
3126
+ /** @description Self-referential reuse provenance (VISION-2080): the prior `ai_inspection_item_field_results.id` this row was cloned from. Null on freshly-computed rows. ON DELETE SET NULL — deleting the source row leaves this as a tombstone. */
3127
+ copied_from_field_result_id: number | null;
3128
+ /**
3129
+ * Format: date-time
3130
+ * @description The date/time the resource was created
3131
+ * @example 2020-05-01T21:44:40.000Z
3132
+ */
3133
+ created_at: string;
3134
+ /**
3135
+ * @description Override disposition (Sprint 2).
3136
+ * @enum {string|null}
3137
+ */
3138
+ current_disposition: "pass" | "warn" | null;
3139
+ /** @description Models that disagreed with the consensus within this extraction run. */
3140
+ dissenters: components["schemas"]["Dissenter"][];
3141
+ /** @description FK to ai_item_type_fields.id (INSTANCE row); ON DELETE RESTRICT. */
3142
+ field_id: number;
3143
+ id: number;
3144
+ /** @description Hex SHA-256 over the canonical projection of every input the item_information prompt fed the model for this (item, field) call (VISION-2080). On rerun, the executor recomputes this and compares against the prior row's fingerprint; on match it skips the AI call entirely and copies the prior row's value verbatim. Null on rows that predate the feature. */
3145
+ input_fingerprint: string | null;
3146
+ /** @description FK to ai_inspection_item_results.id. */
3147
+ inspection_item_id: number;
3148
+ override_at: string | null;
3149
+ /** @description FK to users.id; set when a user overrides the disposition (Sprint 2). */
3150
+ override_user_id: number | null;
3151
+ reasoning: string | null;
3152
+ /** @description Evidence sources for this extraction. Empty when status !== 'found'. */
3153
+ sources: components["schemas"]["Source"][];
3154
+ /** @description Per-field extraction status ( {@link FieldStatus } ). The DB column is a free-form string so future values (skipped, error, partial, low_confidence) need no migration; adding one means widening {@link FieldStatus } and the model-layer Joi `.valid(...)` together. */
3155
+ status: components["schemas"]["FieldStatus"];
3156
+ /**
3157
+ * Format: date-time
3158
+ * @description The date/time the resource was last updated
3159
+ * @example 2020-05-01T21:44:40.000Z
3160
+ */
3161
+ updated_at: string;
3162
+ /** @description Polymorphic: string for open_answer / single-select; string[] for multi-select; null when status !== 'found'. */
3163
+ value: string | string[] | unknown;
3164
+ };
2816
3165
  AIInspectionReadyCriteriaResultV1: {
2817
3166
  cachedTokens: number;
2818
3167
  criteria: components["schemas"]["CriteriaGenerationOutputV1"];
@@ -2831,29 +3180,165 @@ export interface components {
2831
3180
  queryTimeMs: number;
2832
3181
  totalCostUSD: number | null;
2833
3182
  };
3183
+ /** @description Content Summary / Inspection Readiness — overall verdict plus per-item feedback. */
3184
+ AIInspectionReadyFeedbackSection: {
3185
+ items: components["schemas"]["AIInspectionFeedbackItem"][];
3186
+ overall: components["schemas"]["AIInspectionFeedbackOverall"];
3187
+ };
2834
3188
  AIInspectionReadyResult: {
2835
3189
  client_override_date?: string | null;
2836
3190
  client_override_result?: components["schemas"]["TestResult"] | unknown;
2837
3191
  client_override_user_id?: number | null;
2838
3192
  details: components["schemas"]["AIInspectionReadyResultDetailsV1"] | components["schemas"]["AIInspectionReadyResultDetailsV2"] | unknown;
2839
3193
  id: number;
2840
- initial_date: string;
2841
- initial_reason: string | null;
2842
- initial_result: components["schemas"]["TestResult"];
2843
- inspection_id: number;
3194
+ initial_date: string;
3195
+ initial_reason: string | null;
3196
+ initial_result: components["schemas"]["TestResult"];
3197
+ inspection_id: number;
3198
+ };
3199
+ AIInspectionReadyResultDetailsV1: {
3200
+ criteria: components["schemas"]["AIInspectionReadyCriteriaResultV1"] | unknown;
3201
+ criteriaEvaluation: components["schemas"]["AIInspectionCriteriaEvaluationResultV1"][] | unknown;
3202
+ schema_version: number;
3203
+ };
3204
+ AIInspectionReadyResultDetailsV2: {
3205
+ criteria: components["schemas"]["AIInspectionReadyCriteriaResultV2"] | unknown;
3206
+ criteriaEvaluation: components["schemas"]["AIInspectionCriteriaEvaluationResultV1"][] | unknown;
3207
+ schema_version: number;
3208
+ };
3209
+ /** @description AI Item Information & Additional Details — per-Subject verdicts. Both surfaces render once per detected Subject, so feedback is scoped to each `ai_items[].id` rather than a single overall verdict. */
3210
+ AIInspectionSubjectScopedFeedbackSection: {
3211
+ items: components["schemas"]["AIInspectionFeedbackSubjectItem"][];
3212
+ };
3213
+ AIItemType: {
3214
+ additional_details_considerations: string | null;
3215
+ /** @description Items-to-look-for for Additional Details. Each entry carries a UUID stable across template→instance copies; items_found[*].lookfor_id references it. */
3216
+ additional_details_lookfor: components["schemas"]["AIItemTypeLookforEntry"][];
3217
+ /**
3218
+ * Format: date-time
3219
+ * @description The date/time the resource was created
3220
+ * @example 2020-05-01T21:44:40.000Z
3221
+ */
3222
+ created_at: string;
3223
+ id: number;
3224
+ /** @description Set for INSTANCE rows; null for TEMPLATE rows. Template rows are associated with inspection types via the ai_item_type_inspection_types junction table. */
3225
+ inspection_id: number | null;
3226
+ name: string;
3227
+ organization_id: number;
3228
+ /** @description Informational pointer to the TEMPLATE row this INSTANCE was deep-copied from. Not a FK — survives template deletion intentionally. */
3229
+ source_item_type_id: number | null;
3230
+ /**
3231
+ * @description Discriminates template rows (owned by an inspection type) from instance rows (frozen copies owned by an inspection).
3232
+ * @enum {string}
3233
+ */
3234
+ type: "TEMPLATE" | "INSTANCE";
3235
+ /**
3236
+ * Format: date-time
3237
+ * @description The date/time the resource was last updated
3238
+ * @example 2020-05-01T21:44:40.000Z
3239
+ */
3240
+ updated_at: string;
3241
+ };
3242
+ AIItemTypeField: {
3243
+ /**
3244
+ * Format: date-time
3245
+ * @description The date/time the resource was created
3246
+ * @example 2020-05-01T21:44:40.000Z
3247
+ */
3248
+ created_at: string;
3249
+ description: string;
3250
+ id: number;
3251
+ item_type_id: number;
3252
+ name: string;
3253
+ /** @description Populated for choose_from_options fields; empty array for open_answer. No per-option IDs — the array is replaced atomically on update. */
3254
+ options: components["schemas"]["AIItemTypeOption"][];
3255
+ /** @description Required when response_mode='choose_from_options'; null for open_answer. */
3256
+ options_multiple: boolean | null;
3257
+ position: number;
3258
+ /** @enum {string} */
3259
+ response_mode: "open_answer" | "choose_from_options";
3260
+ /**
3261
+ * Format: date-time
3262
+ * @description The date/time the resource was last updated
3263
+ * @example 2020-05-01T21:44:40.000Z
3264
+ */
3265
+ updated_at: string;
3266
+ /**
3267
+ * @description 'missing' = warn if AI doesn't find it; 'found' = warn if AI does find it; null = no warning.
3268
+ * @enum {string|null}
3269
+ */
3270
+ warn_mode: "missing" | "found" | null;
2844
3271
  };
2845
- AIInspectionReadyResultDetailsV1: {
2846
- criteria: components["schemas"]["AIInspectionReadyCriteriaResultV1"] | unknown;
2847
- criteriaEvaluation: components["schemas"]["AIInspectionCriteriaEvaluationResultV1"][] | unknown;
2848
- schema_version: number;
3272
+ /** @description One entry in ai_item_types.additional_details_lookfor. The uuid is server-generated and preserved verbatim through template→instance copies. */
3273
+ AIItemTypeLookforEntry: {
3274
+ label: string;
3275
+ position: number;
3276
+ uuid: string;
2849
3277
  };
2850
- AIInspectionReadyResultDetailsV2: {
2851
- criteria: components["schemas"]["AIInspectionReadyCriteriaResultV2"] | unknown;
2852
- criteriaEvaluation: components["schemas"]["AIInspectionCriteriaEvaluationResultV1"][] | unknown;
2853
- schema_version: number;
3278
+ /** @description One entry in ai_item_type_fields.options (choose_from_options fields). */
3279
+ AIItemTypeOption: {
3280
+ label: string;
3281
+ position: number;
2854
3282
  };
2855
3283
  /** @description The details of the AI status for an inspection */
2856
3284
  AIStatusDetails: {
3285
+ /** @description Configured AI Analysis additional details */
3286
+ ai_additional_details?: {
3287
+ /** @description AI observations responding to the configured considerations text. */
3288
+ considerations_observations: components["schemas"]["ConsiderationsObservationEntry"][];
3289
+ /** @description Configured items-to-look-for that were found, plus adjacent discoveries. lookfor_id is a UUID referencing the item type's additional_details_lookfor array; null for adjacent-discovery items. */
3290
+ items_found: components["schemas"]["ItemsFoundEntry"][];
3291
+ } | unknown;
3292
+ /** @description Current configured AI Analysis run state */
3293
+ ai_analysis_status?: components["schemas"]["AIAnalysisStatus"];
3294
+ /** @description Configured AI Analysis expected items and field results */
3295
+ ai_items?: {
3296
+ additional_details_attribution: number[];
3297
+ classification_confidence: number | null;
3298
+ detected_type: string;
3299
+ id: number;
3300
+ item_index: number | null;
3301
+ item_information: {
3302
+ candidate_values: components["schemas"]["CandidateValue"][];
3303
+ confidence: number | null;
3304
+ /** @enum {string} */
3305
+ disposition: "pass" | "warn";
3306
+ field_id: number;
3307
+ field_name: string;
3308
+ reasoning: string | null;
3309
+ sources: components["schemas"]["Source"][];
3310
+ status: components["schemas"]["FieldStatus"];
3311
+ value: string | string[] | unknown;
3312
+ }[];
3313
+ item_type_id: number | null;
3314
+ truepic_ids: number[];
3315
+ }[];
3316
+ /** @description Configured AI Analysis unexpected items */
3317
+ ai_unexpected_items?: {
3318
+ classification_confidence: number | null;
3319
+ detected_type: string;
3320
+ id: number;
3321
+ message: string | null;
3322
+ truepic_ids: number[];
3323
+ }[];
3324
+ /** @description AI Analysis Configuration rollup of detected items for the L1 sidebar (Contract §2.7). Present only on inspections running the new feature; mirrors entries in `ai_items[]` / `ai_unexpected_items[]` by `id`, stripped to a rollup shape. */
3325
+ detected_items?: {
3326
+ /** @description Free-text classification label (e.g. `'watch'`). */
3327
+ detected_type: string;
3328
+ /** @description Matches the corresponding `ai_items[].id` / `ai_unexpected_items[].id`. */
3329
+ id: number;
3330
+ /** @description 0-indexed position within the expected items; null for unexpected. */
3331
+ item_index: number | null;
3332
+ /**
3333
+ * @description Whether this is a configured (expected) item or an unexpected detection.
3334
+ * @enum {string}
3335
+ */
3336
+ kind: "expected" | "unexpected";
3337
+ /** @description Short rollup summary for the sidebar. */
3338
+ summary?: string;
3339
+ /** @description Truepic IDs of the captures associated with this item. */
3340
+ truepic_ids: number[];
3341
+ }[];
2857
3342
  /** @description AI analyses per-list-item */
2858
3343
  list_items?: {
2859
3344
  /** @description The id of the list item this AI analysis corresponds to */
@@ -2876,6 +3361,10 @@ export interface components {
2876
3361
  };
2877
3362
  /** @enum {string} */
2878
3363
  AIStatusReason: "COMPLETE_WITH_NO_INCONSISTENCIES" | "COMPLETE_WITH_INCONSISTENCIES" | "INCOMPLETE";
3364
+ AISuggestedSource: {
3365
+ truepic_ids: number[];
3366
+ type: string;
3367
+ };
2879
3368
  AIUserCriteriaResult: {
2880
3369
  client_override_date?: string | null;
2881
3370
  client_override_result?: string | null;
@@ -2891,6 +3380,46 @@ export interface components {
2891
3380
  photo_id?: number;
2892
3381
  test_key: string;
2893
3382
  };
3383
+ /** @description One entry per model call in audit_json arrays on result tables. */
3384
+ AuditEntry: {
3385
+ /** @description ISO 8601 timestamp when this model call completed. */
3386
+ completed_at: string;
3387
+ /** @description Raw provider-side grounding metadata captured when a provider tool fired during this query (e.g. Gemini `google_search` / `url_context`, OpenAI `web_search`, per VISION-1850). Persisted verbatim — operators reviewing a flagged inspection need the full citation chain the provider returned, not just whatever the model summarized into the `sources[]` array. Absent when no provider tool fired. */
3388
+ grounding_metadata?: {
3389
+ [key: string]: unknown;
3390
+ };
3391
+ /** @description Discriminates this per-model-call entry from other audit_json entry shapes (e.g. `SuppressedExtractionAuditEntry`). Optional on read so rows persisted before this field existed validate; written going forward by `buildAuditFields`. Nothing branches on it today — it's a forward-looking discriminator only. */
3392
+ kind?: string;
3393
+ model_name: string;
3394
+ prompt_id: number;
3395
+ query_time_ms: number;
3396
+ /** @description Model's free-form reasoning text alongside its terminal tool call (VISION-2075). Gemini 3.x preview surfaces a structured chain-of-thought as `text` parts that capture observations, source evaluation, and self-checks — much richer than the one-sentence `reasoning` field the model writes into its own output, and the only audit-time record of rejected first-attempt content when a retry succeeds. Absent on queriers that don't yet populate it. */
3397
+ reasoning_text?: string;
3398
+ /** @description Provider-reported reason the model stopped generating (VISION-2023). Surfaces truncation (`max_tokens`) and policy declines (`refusal`) per step/model so observability can spot them without grepping logs. Provider-specific values: Anthropic emits `end_turn`, `tool_use`, `max_tokens`, `refusal`, `pause_turn`; OpenAI emits `completed`, `incomplete`; Gemini emits raw `STOP`, `MAX_TOKENS`, etc. Absent on queriers that don't yet populate it. */
3399
+ stop_reason?: string;
3400
+ tokens: components["schemas"]["AuditEntryTokens"];
3401
+ /** @description Per-tool-call audit records for any non-terminal tool invocations the model issued during this query (VISION-1965). One entry per invocation, in invocation order; shape is the tool's own `auditRecord` field from its `PipelineToolResult`. Absent / empty when the query didn't use any non-terminal tools. */
3402
+ tool_calls?: {
3403
+ [key: string]: unknown;
3404
+ }[];
3405
+ total_cost_usd: number;
3406
+ };
3407
+ AuditEntryTokens: {
3408
+ cached?: number;
3409
+ input: number;
3410
+ output: number;
3411
+ };
3412
+ /**
3413
+ * @description One entry in ai_inspection_item_field_results.candidate_values. Populated when status='conflict'; never deduplicated.
3414
+ *
3415
+ * `value` is nullable: when a field disappears across runs (found in a prior run, `not_captured` in a later one), the null candidate represents the "missing on this side" vote so the comparison UI can render both outcomes against each other. (Appearance — `not_captured` then `found` — no longer produces a conflict or candidate; see VISION-2054.)
3416
+ */
3417
+ CandidateValue: {
3418
+ confidence: number;
3419
+ reasoning: string;
3420
+ sources: components["schemas"]["Source"][];
3421
+ value: string | string[] | unknown;
3422
+ };
2894
3423
  /** @description The request body for PUT /inspections/{inspectionId}/inspection-type */
2895
3424
  ChangeInspectionTypeBody: {
2896
3425
  /**
@@ -2899,6 +3428,15 @@ export interface components {
2899
3428
  */
2900
3429
  inspection_type_id: number;
2901
3430
  };
3431
+ /** @description One entry in ai_inspection_item_additional_details_results.considerations_observations. */
3432
+ ConsiderationsObservationEntry: {
3433
+ confidence: number;
3434
+ id: number;
3435
+ /** @description id from ai_inspection_item_results (same event); null when attribution is ambiguous. */
3436
+ item_id: number | null;
3437
+ observation: string;
3438
+ sources: components["schemas"]["Source"][];
3439
+ };
2902
3440
  ContentAnalysisDetails: {
2903
3441
  /**
2904
3442
  * @description The expected result of the content analysis test. Will be an object specifying a min and mix on the vehicle odometer for ODOMETER tests. Will be a string representing the expected VIN number on the vehicle for VIN tests. Will be a string representing the expected DOT TIN on the vehicle tire for DOT TIN tests.
@@ -3273,8 +3811,6 @@ export interface components {
3273
3811
  * @enum {string}
3274
3812
  */
3275
3813
  ContentAnalysisType: "ODOMETER" | "VIN" | "TEXT_MATCHING" | "CUSTOM_FIELD_MATCHING" | "DOT_TIN";
3276
- CreateAIAnalysisSetProps: components["schemas"]["AIAnalysisSetPayload"];
3277
- CreateAIAnalysisSetResult: components["schemas"]["SuccessfulCreationResponseData"];
3278
3814
  /** @description The response body for POST /auth/auth0 */
3279
3815
  CreateAPICredentialsResult: {
3280
3816
  /**
@@ -3383,7 +3919,12 @@ export interface components {
3383
3919
  * @example 3028675309
3384
3920
  */
3385
3921
  customer_phone_number?: string;
3386
- include_list?: unknown;
3922
+ /**
3923
+ * @description This must be set to `true` when including items in the `list` object.
3924
+ * @default false
3925
+ * @example false
3926
+ */
3927
+ include_list: boolean;
3387
3928
  /**
3388
3929
  * @description Free-form inspection-ready criteria text. Max length 10KB.
3389
3930
  * @example Capture all rooms and appliances.
@@ -3427,7 +3968,7 @@ export interface components {
3427
3968
  /** @description The method(s) to send the inspection request to the customer completing the inspection. */
3428
3969
  send_methods?: {
3429
3970
  /**
3430
- * @description When true, will send text messages to the customer_email_address
3971
+ * @description When true, will send emails to the customer_email_address
3431
3972
  * @example false
3432
3973
  */
3433
3974
  email: boolean;
@@ -3462,7 +4003,7 @@ export interface components {
3462
4003
  response_code: number;
3463
4004
  result: components["schemas"]["SerializedInspection"];
3464
4005
  };
3465
- /** @description Request Body for POST /inspections */
4006
+ /** @description Request Body for POST /inspection-types */
3466
4007
  CreateInspectionTypeBody: {
3467
4008
  /**
3468
4009
  * @description the id of the user who created this inspection type. References `users.id`
@@ -3523,6 +4064,20 @@ export interface components {
3523
4064
  * @example 539
3524
4065
  */
3525
4066
  outcome_set_id?: number;
4067
+ /**
4068
+ * @description The teams that are allowed to use this inspection type. Pass each team as an object containing its `id`. Passing an empty array removes all team associations.
4069
+ * @example [
4070
+ * {
4071
+ * "id": 12
4072
+ * },
4073
+ * {
4074
+ * "id": 24
4075
+ * }
4076
+ * ]
4077
+ */
4078
+ teams?: {
4079
+ id: number;
4080
+ }[];
3526
4081
  /**
3527
4082
  * @description When true, there is only one name for the user to fill out rather than a separate first name and last name field
3528
4083
  * @example true
@@ -3845,7 +4400,12 @@ export interface components {
3845
4400
  custom_field_option_set_id?: number;
3846
4401
  /** @description The entry method for the custom field */
3847
4402
  entry_method: components["schemas"]["CustomFieldEntryMethods"];
3848
- is_required: unknown;
4403
+ /**
4404
+ * @description When true, the user must supply a value for this custom field in order to create an inspection
4405
+ * @default false
4406
+ * @example true
4407
+ */
4408
+ is_required: boolean;
3849
4409
  /** @description The label for the custom field */
3850
4410
  label?: string;
3851
4411
  };
@@ -3887,6 +4447,13 @@ export interface components {
3887
4447
  issue_description: string;
3888
4448
  related_item_ids: number[];
3889
4449
  };
4450
+ /** @description A model whose response differed from the consensus value within a single extraction run. Stored in ai_inspection_item_field_results.dissenters. */
4451
+ Dissenter: {
4452
+ confidence: number | null;
4453
+ model_name: string;
4454
+ reasoning: string | null;
4455
+ value: string | string[] | unknown;
4456
+ };
3890
4457
  /** @description An email token used for unsubscribing and resubscribing from emails */
3891
4458
  EmailToken: {
3892
4459
  /**
@@ -3917,20 +4484,41 @@ export interface components {
3917
4484
  * @default false
3918
4485
  */
3919
4486
  async: boolean;
4487
+ /**
4488
+ * @description Which capture-location maps to render in the Image Details section. Omit to render a map for every capture (the default). Provide a subset to limit it, or an empty array to render no maps.
4489
+ * - `outside`: captures taken outside the expected address
4490
+ * - `within`: captures taken within the expected address
4491
+ * - `no_location`: captures with no expected address on the inspection
4492
+ * @default [
4493
+ * "outside",
4494
+ * "within",
4495
+ * "no_location"
4496
+ * ]
4497
+ */
4498
+ captureLocationMaps: ("outside" | "within" | "no_location")[];
3920
4499
  /**
3921
4500
  * @description Specific sections to exclude that are included by default. If you do not want to exclude any sections, you can omit this property.
4501
+ *
4502
+ * Accepts the legacy tokens (`questions` → Inspection Items, `thumbnails` → no-op, `imageDetails`, `timeline`) and the canonical section ids.
3922
4503
  * @default []
3923
4504
  */
3924
- exclude: ("questions" | "thumbnails" | "imageDetails" | "timeline")[];
4505
+ exclude: ("questions" | "thumbnails" | "cover" | "contents" | "captureLocation" | "inspectionItems" | "imageDetails" | "aiAnalysis" | "inspectionNotes" | "captureDevices" | "timeline")[];
3925
4506
  /** @description Filters which photos/videos are included in the PDF. Once specified, the PDF will only be generated based on the specific list of photos that are listed. By default all photos/videos are included. If you don't want to generate a PDF with a specific set of photos/videos, you can omit this property. */
3926
4507
  filter?: {
3927
4508
  photos: number[];
3928
4509
  };
3929
4510
  /**
3930
4511
  * @description Additional sections to include that are NOT included by default. If you do not want to include any extra sections, you can omit this property.
4512
+ *
4513
+ * Accepts the legacy `inspectionNote` alias and the canonical section ids. The only opt-in section is Inspection Notes; the other ids are accepted for forward-compatibility and are no-ops when a section is already included.
3931
4514
  * @default []
3932
4515
  */
3933
- include: ("inspectionNote" | "")[];
4516
+ include: ("inspectionNote" | "cover" | "contents" | "captureLocation" | "inspectionItems" | "imageDetails" | "aiAnalysis" | "inspectionNotes" | "captureDevices" | "timeline")[];
4517
+ /**
4518
+ * @description Whether to include items the customer never submitted (unanswered questions and captures with no upload) in the Inspection Items section. Set `false` to hide them.
4519
+ * @default true
4520
+ */
4521
+ showUnansweredItems: boolean;
3934
4522
  /**
3935
4523
  * @description The IANA time zone name to use when displaying dates/times in the PDF. Defaults to UTC.
3936
4524
  * @default UTC
@@ -3938,6 +4526,13 @@ export interface components {
3938
4526
  */
3939
4527
  tz: string;
3940
4528
  };
4529
+ /** @description An entry in a field result's `audit_json` array: either a per-model-call record or a suppressed-rerun verdict (VISION-2126). */
4530
+ FieldResultAuditEntry: components["schemas"]["AuditEntry"] | components["schemas"]["SuppressedExtractionAuditEntry"];
4531
+ /**
4532
+ * @description Per-field extraction status. V1 emits exactly these three values; adding a member requires updating both this union and the model-layer Joi `.valid(...)` (`ai-inspection-item-field-results.model.ts`) and the runtime set in `ai-status-consolidator.ts`. Single source of truth for the status literal.
4533
+ * @enum {string}
4534
+ */
4535
+ FieldStatus: "found" | "not_captured" | "conflict";
3941
4536
  /** @description Request body for POST /inspections/{inspectionId}/flag-device */
3942
4537
  FlagDeviceRequestBody: {
3943
4538
  /** @description The comment to apply to the activity log for this flag action. */
@@ -3947,73 +4542,6 @@ export interface components {
3947
4542
  /** @description The complete list of flags to apply to the device for this inspection. This will update the list of flags to match this array by adding and/or removing any existing flags. */
3948
4543
  flags: components["schemas"]["DeviceFlagType"][];
3949
4544
  };
3950
- GetAIAnalysisSetQuestionTruepicsExamplesResult: {
3951
- question: string;
3952
- question_id: number;
3953
- truepics: components["schemas"]["QuestionTruepicExampleItem"][];
3954
- }[];
3955
- GetAIAnalysisSetResult: {
3956
- /**
3957
- * @description The current version number of the Vision API
3958
- * @example 3.0.0
3959
- */
3960
- api_version: string;
3961
- /**
3962
- * @description The human readable-status of the response
3963
- * @example Success
3964
- */
3965
- message: string;
3966
- /**
3967
- * @description The HTTP status code of the response
3968
- * @example 200
3969
- */
3970
- response_code: number;
3971
- result: {
3972
- id: number;
3973
- name?: string | null;
3974
- num_evaluated_truepics: number;
3975
- questions: string[];
3976
- };
3977
- };
3978
- GetAIAnalysisSetsResult: {
3979
- /**
3980
- * @description The current version number of the Vision API
3981
- * @example 3.0.0
3982
- */
3983
- api_version: string;
3984
- /**
3985
- * @description The human readable-status of the response
3986
- * @example Success
3987
- */
3988
- message: string;
3989
- /**
3990
- * @description The total number of pages for the given query
3991
- * @example 12
3992
- */
3993
- pageCount: number;
3994
- /**
3995
- * @description The HTTP status code of the response
3996
- * @example 200
3997
- */
3998
- response_code: number;
3999
- result: {
4000
- created_at: string;
4001
- id: number;
4002
- name?: string | null;
4003
- num_evaluated_truepics: number;
4004
- questions: string[];
4005
- }[];
4006
- /**
4007
- * @description The total number of results for the given page
4008
- * @example 25
4009
- */
4010
- total: number;
4011
- /**
4012
- * @description The total number of results for the given query
4013
- * @example 251
4014
- */
4015
- totalResults: number;
4016
- };
4017
4545
  /** @description The response body for GET /auth/auth0 */
4018
4546
  GetAPICredentialsResult: components["schemas"]["CreateAPICredentialsResult"];
4019
4547
  /** @description Response Body for GET /inspections/bearer */
@@ -4051,6 +4579,8 @@ export interface components {
4051
4579
  * @example 40.0612708
4052
4580
  */
4053
4581
  address_lng?: string;
4582
+ /** @description Per-inspection lock for the AI Analysis Configuration "inspection items" pipeline. Null until the first AI run resolves it from global_configs.VISION_AI_INSPECTION_ITEMS_PIPELINE_ID under FOR UPDATE; immutable thereafter so the audit chain attaches to a single pipeline even if the global config is later changed. Spec §2.7, §3.4. */
4583
+ ai_inspection_items_pipeline_id?: number | null;
4054
4584
  /**
4055
4585
  * @description The AI analysis result for this inspection.
4056
4586
  * @example pass
@@ -4059,11 +4589,11 @@ export interface components {
4059
4589
  /** @description The details of the AI status for this inspection. This may include information about the criteria evaluation, any inconsistencies detected, and more. */
4060
4590
  ai_status_details?: components["schemas"]["AIStatusDetails"];
4061
4591
  /**
4062
- * @description The reason for the AI analysis result for this inspection.
4063
- * @example COMPLETE_WITH_NO_INCONSISTENCIES
4592
+ * @description Whether the Vision app has been opened by the customer
4593
+ * @default false
4594
+ * @example true
4064
4595
  */
4065
- ai_status_reason?: components["schemas"]["AIStatusReason"];
4066
- app_opened?: unknown;
4596
+ app_opened: boolean;
4067
4597
  /**
4068
4598
  * @description The id of the user this inspection is assigned to.
4069
4599
  * @example 19
@@ -4185,8 +4715,18 @@ export interface components {
4185
4715
  * @example 12
4186
4716
  */
4187
4717
  inspection_type_id?: number;
4188
- is_deleted?: unknown;
4189
- is_expired?: unknown;
4718
+ /**
4719
+ * @description Represents if the inspection has been soft-deleted
4720
+ * @default false
4721
+ * @example true
4722
+ */
4723
+ is_deleted: boolean;
4724
+ /**
4725
+ * @description Whether the inspection has expired
4726
+ * @default false
4727
+ * @example true
4728
+ */
4729
+ is_expired: boolean;
4190
4730
  /**
4191
4731
  * @description The maximum distance, in meters, from the address that the photos/videos must be taken in order to be valid
4192
4732
  * @example 1000
@@ -4234,7 +4774,7 @@ export interface components {
4234
4774
  /** @description The method(s) to send the inspection request to the customer completing the inspection. */
4235
4775
  send_methods?: {
4236
4776
  /**
4237
- * @description When true, will send text messages to the customer_email_address
4777
+ * @description When true, will send emails to the customer_email_address
4238
4778
  * @example false
4239
4779
  */
4240
4780
  email: boolean;
@@ -4473,7 +5013,12 @@ export interface components {
4473
5013
  */
4474
5014
  inspection_id?: number;
4475
5015
  inspection_types: components["schemas"]["InspectionType"][];
4476
- is_deleted: unknown;
5016
+ /**
5017
+ * @description Whether or not this list has been soft-deleted
5018
+ * @default false
5019
+ * @example true
5020
+ */
5021
+ is_deleted: boolean;
4477
5022
  items: components["schemas"]["ListItem"][];
4478
5023
  /**
4479
5024
  * @description The auto-generated name of the list.
@@ -4750,7 +5295,12 @@ export interface components {
4750
5295
  */
4751
5296
  inspection_id?: number;
4752
5297
  inspection_types: components["schemas"]["InspectionType"][];
4753
- is_deleted: unknown;
5298
+ /**
5299
+ * @description Whether or not this list has been soft-deleted
5300
+ * @default false
5301
+ * @example true
5302
+ */
5303
+ is_deleted: boolean;
4754
5304
  items: components["schemas"]["ListItem"][];
4755
5305
  /**
4756
5306
  * @description The auto-generated name of the list.
@@ -4965,7 +5515,12 @@ export interface components {
4965
5515
  * @example 1843
4966
5516
  */
4967
5517
  id: number;
4968
- is_mfa_required: unknown;
5518
+ /**
5519
+ * @description Whether multi-factor authentication is required for user login.
5520
+ * @default false
5521
+ * @example true
5522
+ */
5523
+ is_mfa_required: boolean;
4969
5524
  /**
4970
5525
  * @description The name of the organization.
4971
5526
  * @example Quality Capital
@@ -5228,11 +5783,6 @@ export interface components {
5228
5783
  */
5229
5784
  web_camera: boolean;
5230
5785
  };
5231
- /**
5232
- * @description An identifier from an external system used to reference the team. It must be unique within an organization when set.
5233
- * @example X50100039
5234
- */
5235
- external_id?: string | null;
5236
5786
  /**
5237
5787
  * @description The accuracy threshold that GPS coordinates must not exceed in meters.
5238
5788
  * @example 1500
@@ -5260,7 +5810,12 @@ export interface components {
5260
5810
  */
5261
5811
  name: string;
5262
5812
  };
5263
- include_list?: unknown;
5813
+ /**
5814
+ * @description Whether to include the inspection type's list by default with new inspection requests.
5815
+ * @default false
5816
+ * @example true
5817
+ */
5818
+ include_list: boolean;
5264
5819
  inspection_types: {
5265
5820
  /**
5266
5821
  * Format: date-time
@@ -5319,7 +5874,12 @@ export interface components {
5319
5874
  * @example 1000
5320
5875
  */
5321
5876
  is_address_required: boolean;
5322
- is_deleted: unknown;
5877
+ /**
5878
+ * @description Whether this inspection type is deleted
5879
+ * @default false
5880
+ * @example true
5881
+ */
5882
+ is_deleted: boolean;
5323
5883
  /**
5324
5884
  * @description When true, the list associated with this inspection type cannot be changed
5325
5885
  * @example false
@@ -5360,7 +5920,12 @@ export interface components {
5360
5920
  */
5361
5921
  inspection_id?: number;
5362
5922
  inspection_types: components["schemas"]["InspectionType"][];
5363
- is_deleted: unknown;
5923
+ /**
5924
+ * @description Whether or not this list has been soft-deleted
5925
+ * @default false
5926
+ * @example true
5927
+ */
5928
+ is_deleted: boolean;
5364
5929
  items: components["schemas"]["ListItem"][];
5365
5930
  /**
5366
5931
  * @description The auto-generated name of the list.
@@ -5459,7 +6024,12 @@ export interface components {
5459
6024
  */
5460
6025
  use_single_name_field: boolean;
5461
6026
  }[];
5462
- is_deleted: unknown;
6027
+ /**
6028
+ * @description Whether or not this config has been soft-deleted
6029
+ * @default false
6030
+ * @example true
6031
+ */
6032
+ is_deleted: boolean;
5463
6033
  /**
5464
6034
  * @description The amount of time before an admin member's login token when switching teams expires. Any format supported by https://github.com/vercel/ms is valid.
5465
6035
  * @default 72h
@@ -5504,7 +6074,12 @@ export interface components {
5504
6074
  */
5505
6075
  inspection_id?: number;
5506
6076
  inspection_types: components["schemas"]["InspectionType"][];
5507
- is_deleted: unknown;
6077
+ /**
6078
+ * @description Whether or not this list has been soft-deleted
6079
+ * @default false
6080
+ * @example true
6081
+ */
6082
+ is_deleted: boolean;
5508
6083
  items: components["schemas"]["ListItem"][];
5509
6084
  /**
5510
6085
  * @description The auto-generated name of the list.
@@ -5606,7 +6181,20 @@ export interface components {
5606
6181
  * @example 2020-05-01T21:44:40.000Z
5607
6182
  */
5608
6183
  updated_at: string;
5609
- video_enabled?: unknown;
6184
+ /**
6185
+ * @description Verisk customer codes used to route SSO users to this team. Multiple values are supported so a single team can be addressed by many Verisk custCodes, and a single custCode may be shared across multiple teams within an organization (no uniqueness constraint is enforced). Requires the `verisk_sso` organization feature to be enabled.
6186
+ * @example [
6187
+ * "X50100039",
6188
+ * "X50100040"
6189
+ * ]
6190
+ */
6191
+ verisk_cust_codes?: string[] | unknown;
6192
+ /**
6193
+ * @description Whether video is enabled as a capture method in the app.
6194
+ * @default false
6195
+ * @example true
6196
+ */
6197
+ video_enabled: boolean;
5610
6198
  };
5611
6199
  };
5612
6200
  GetTeamWebhookResult: {
@@ -5979,6 +6567,8 @@ export interface components {
5979
6567
  * @example 40.0612708
5980
6568
  */
5981
6569
  address_lng?: string;
6570
+ /** @description Per-inspection lock for the AI Analysis Configuration "inspection items" pipeline. Null until the first AI run resolves it from global_configs.VISION_AI_INSPECTION_ITEMS_PIPELINE_ID under FOR UPDATE; immutable thereafter so the audit chain attaches to a single pipeline even if the global config is later changed. Spec §2.7, §3.4. */
6571
+ ai_inspection_items_pipeline_id: number | null;
5982
6572
  /**
5983
6573
  * @description The AI analysis result for this inspection.
5984
6574
  * @example pass
@@ -5987,11 +6577,11 @@ export interface components {
5987
6577
  /** @description The details of the AI status for this inspection. This may include information about the criteria evaluation, any inconsistencies detected, and more. */
5988
6578
  ai_status_details?: components["schemas"]["AIStatusDetails"];
5989
6579
  /**
5990
- * @description The reason for the AI analysis result for this inspection.
5991
- * @example COMPLETE_WITH_NO_INCONSISTENCIES
6580
+ * @description Whether the Vision app has been opened by the customer
6581
+ * @default false
6582
+ * @example true
5992
6583
  */
5993
- ai_status_reason?: components["schemas"]["AIStatusReason"];
5994
- app_opened: unknown;
6584
+ app_opened: boolean;
5995
6585
  /**
5996
6586
  * @description The id of the user this inspection is assigned to.
5997
6587
  * @example 19
@@ -6113,8 +6703,18 @@ export interface components {
6113
6703
  * @example 12
6114
6704
  */
6115
6705
  inspection_type_id: number;
6116
- is_deleted: unknown;
6117
- is_expired: unknown;
6706
+ /**
6707
+ * @description Represents if the inspection has been soft-deleted
6708
+ * @default false
6709
+ * @example true
6710
+ */
6711
+ is_deleted: boolean;
6712
+ /**
6713
+ * @description Whether the inspection has expired
6714
+ * @default false
6715
+ * @example true
6716
+ */
6717
+ is_expired: boolean;
6118
6718
  /**
6119
6719
  * @description The maximum distance, in meters, from the address that the photos/videos must be taken in order to be valid
6120
6720
  * @example 1000
@@ -6162,7 +6762,7 @@ export interface components {
6162
6762
  /** @description The method(s) to send the inspection request to the customer completing the inspection. */
6163
6763
  send_methods: {
6164
6764
  /**
6165
- * @description When true, will send text messages to the customer_email_address
6765
+ * @description When true, will send emails to the customer_email_address
6166
6766
  * @example false
6167
6767
  */
6168
6768
  email: boolean;
@@ -6236,7 +6836,12 @@ export interface components {
6236
6836
  * @example 1843
6237
6837
  */
6238
6838
  id: number;
6239
- is_deleted: unknown;
6839
+ /**
6840
+ * @description Whether or not this alert has been soft-deleted
6841
+ * @default false
6842
+ * @example true
6843
+ */
6844
+ is_deleted: boolean;
6240
6845
  /**
6241
6846
  * @description The id of the user that last edited the alert.
6242
6847
  * @example 124
@@ -6252,6 +6857,12 @@ export interface components {
6252
6857
  * @example 531
6253
6858
  */
6254
6859
  organization_id: number;
6860
+ /**
6861
+ * @description Whether or not to surface an AI Analysis warn/fail as an alert. Opt-in: defaults to false so an org's alerting behavior does not change until it explicitly enables AI Analysis alerting.
6862
+ * @default false
6863
+ * @example false
6864
+ */
6865
+ test_ai_analysis: boolean;
6255
6866
  /**
6256
6867
  * @description Whether or not to include the blurriness test in this alert.
6257
6868
  * @example true
@@ -6339,6 +6950,12 @@ export interface components {
6339
6950
  * @example true
6340
6951
  */
6341
6952
  test_insecure_device: boolean;
6953
+ /**
6954
+ * @description Whether or not to surface an Inspection Readiness fail/warn as an alert. Opt-in: defaults to false so an org's alerting behavior does not change until it explicitly enables Inspection Readiness alerting.
6955
+ * @default false
6956
+ * @example false
6957
+ */
6958
+ test_inspection_readiness: boolean;
6342
6959
  /**
6343
6960
  * @description Whether or not to include the object detection test in this alert.
6344
6961
  * @default true
@@ -6488,11 +7105,6 @@ export interface components {
6488
7105
  * @example false
6489
7106
  */
6490
7107
  accept_existing_images?: boolean;
6491
- /**
6492
- * @description The id of the AI Analysis Set used for Vision AI Analysis. References `ai_analysis_sets.id`
6493
- * @example 3
6494
- */
6495
- ai_analysis_set_id?: number | null;
6496
7108
  /**
6497
7109
  * @description Limit the number of images taken for this list item. Must be positive number
6498
7110
  * @example 11
@@ -6553,8 +7165,18 @@ export interface components {
6553
7165
  id: number;
6554
7166
  /** @description The timestamp when the list item was marked as incomplete. */
6555
7167
  incomplete_at?: string;
6556
- is_deleted: unknown;
6557
- is_required: unknown;
7168
+ /**
7169
+ * @description Whether or not this item has been soft-deleted
7170
+ * @default false
7171
+ * @example true
7172
+ */
7173
+ is_deleted: boolean;
7174
+ /**
7175
+ * @description Whether the photo/video/question is required to finish the inspection.
7176
+ * @default false
7177
+ * @example true
7178
+ */
7179
+ is_required: boolean;
6558
7180
  /**
6559
7181
  * @description The id of the list that is item is associated with.
6560
7182
  * @example 1256
@@ -6641,16 +7263,11 @@ export interface components {
6641
7263
  */
6642
7264
  accuracy?: number;
6643
7265
  /**
6644
- * @description Whether the AI analysis test is complete for this Truepic.
7266
+ * @description Whether the Truepic has been archived
7267
+ * @default false
6645
7268
  * @example true
6646
7269
  */
6647
- ai_analysis_done?: boolean;
6648
- /**
6649
- * @description The status of an AI analysis test on this Truepic.
6650
- * @example P
6651
- */
6652
- ai_analysis_status: components["schemas"]["TestResult"];
6653
- archived: unknown;
7270
+ archived: boolean;
6654
7271
  /**
6655
7272
  * @description The status of a blockchain test on this Truepic.
6656
7273
  * @example P
@@ -6754,14 +7371,29 @@ export interface components {
6754
7371
  * @example Looks damaged.
6755
7372
  */
6756
7373
  internal_note?: string;
6757
- is_deleted: unknown;
6758
- is_rooted: unknown;
7374
+ /**
7375
+ * @description Whether this Truepic has been deleted.
7376
+ * @default false
7377
+ * @example true
7378
+ */
7379
+ is_deleted: boolean;
7380
+ /**
7381
+ * @description Whether the device that captured the Truepic is rooted
7382
+ * @default false
7383
+ * @example true
7384
+ */
7385
+ is_rooted: boolean;
6759
7386
  /**
6760
7387
  * @description The GPS latitude where the photo/video was taken.
6761
7388
  * @example 33.5565051716316
6762
7389
  */
6763
7390
  lat: string;
6764
- lens_transfer_done: unknown;
7391
+ /**
7392
+ * @description Whether the transfer from Lens is complete for this Truepic.
7393
+ * @default false
7394
+ * @example true
7395
+ */
7396
+ lens_transfer_done: boolean;
6765
7397
  /** @description The list item this photo/video was captured for, if any. */
6766
7398
  list_item?: {
6767
7399
  /**
@@ -6787,8 +7419,18 @@ export interface components {
6787
7419
  * @example 1843
6788
7420
  */
6789
7421
  id: number;
6790
- is_deleted: unknown;
6791
- is_required: unknown;
7422
+ /**
7423
+ * @description Whether or not this item has been soft-deleted
7424
+ * @default false
7425
+ * @example true
7426
+ */
7427
+ is_deleted: boolean;
7428
+ /**
7429
+ * @description Whether the photo/video/question is required to finish the inspection.
7430
+ * @default false
7431
+ * @example true
7432
+ */
7433
+ is_required: boolean;
6792
7434
  /**
6793
7435
  * @description A description of the requested photo or video when `type` is `IMAGE`, `PHOTO`, or `VIDEO`. A question for the customer to answer when `type` is `QUESTION`. The customer will see this value in the Vision app during the inspection.
6794
7436
  * @example Front of car
@@ -6885,7 +7527,17 @@ export interface components {
6885
7527
  * @example 11.4.1
6886
7528
  */
6887
7529
  os?: string;
6888
- pending_upload: unknown;
7530
+ /**
7531
+ * @description A URL to a PDF-optimized variant (max 720×960, aspect preserved), used by the PDF report engine to cut render time and file size.
7532
+ * @example https://d3tbfdtihunht2.cloudfront.net/qfzkoxugjn_p.jpg?...
7533
+ */
7534
+ pdf_image?: string;
7535
+ /**
7536
+ * @description Whether the Truepic is still uploading
7537
+ * @default false
7538
+ * @example true
7539
+ */
7540
+ pending_upload: boolean;
6889
7541
  /**
6890
7542
  * @description The photo list id this Truepic is a part of
6891
7543
  * @example 5678
@@ -6932,7 +7584,12 @@ export interface components {
6932
7584
  * @example CA
6933
7585
  */
6934
7586
  state?: string;
6935
- status_overridden: unknown;
7587
+ /**
7588
+ * @description Whether the status for this Truepic has been overridden
7589
+ * @default false
7590
+ * @example true
7591
+ */
7592
+ status_overridden: boolean;
6936
7593
  /**
6937
7594
  * @description The timestamp of the capture of the Truepic
6938
7595
  * @example 2018-08-07 13:16:15
@@ -7003,7 +7660,12 @@ export interface components {
7003
7660
  * @example 1000
7004
7661
  */
7005
7662
  is_address_required: boolean;
7006
- is_deleted: unknown;
7663
+ /**
7664
+ * @description Whether this inspection type is deleted
7665
+ * @default false
7666
+ * @example true
7667
+ */
7668
+ is_deleted: boolean;
7007
7669
  /**
7008
7670
  * @description When true, the list associated with this inspection type cannot be changed
7009
7671
  * @example false
@@ -7147,6 +7809,18 @@ export interface components {
7147
7809
  */
7148
7810
  use_single_name_field: boolean;
7149
7811
  };
7812
+ /** @description One entry in ai_inspection_item_additional_details_results.items_found. */
7813
+ ItemsFoundEntry: {
7814
+ confidence: number;
7815
+ id: number;
7816
+ /** @description id from ai_inspection_item_results (same event); null when attribution is ambiguous. */
7817
+ item_id: number | null;
7818
+ label: string;
7819
+ /** @description UUID from the matching ai_item_types.additional_details_lookfor entry (INSTANCE row). null for adjacent-discovery items the AI surfaced without a configured match. */
7820
+ lookfor_id: string | null;
7821
+ observation: string;
7822
+ sources: components["schemas"]["Source"][];
7823
+ };
7150
7824
  LandingPageContentSerialized: {
7151
7825
  assets: {
7152
7826
  [key: string]: string;
@@ -7301,11 +7975,6 @@ export interface components {
7301
7975
  * @example false
7302
7976
  */
7303
7977
  accept_existing_images?: boolean;
7304
- /**
7305
- * @description The id of the AI Analysis Set used for Vision AI Analysis. References `ai_analysis_sets.id`
7306
- * @example 3
7307
- */
7308
- ai_analysis_set_id?: number | null;
7309
7978
  /**
7310
7979
  * @description Limit the number of images taken for this list item. Must be positive number
7311
7980
  * @example 11
@@ -7367,8 +8036,18 @@ export interface components {
7367
8036
  id: number;
7368
8037
  /** @description The timestamp when the list item was marked as incomplete. */
7369
8038
  incomplete_at?: string;
7370
- is_deleted: unknown;
7371
- is_required: unknown;
8039
+ /**
8040
+ * @description Whether or not this item has been soft-deleted
8041
+ * @default false
8042
+ * @example true
8043
+ */
8044
+ is_deleted: boolean;
8045
+ /**
8046
+ * @description Whether the photo/video/question is required to finish the inspection.
8047
+ * @default false
8048
+ * @example true
8049
+ */
8050
+ is_required: boolean;
7372
8051
  /**
7373
8052
  * @description The id of the list that is item is associated with.
7374
8053
  * @example 1256
@@ -7484,11 +8163,6 @@ export interface components {
7484
8163
  * @example false
7485
8164
  */
7486
8165
  accept_existing_images?: boolean;
7487
- /**
7488
- * @description The id of the AI Analysis Set used for Vision AI Analysis. References `ai_analysis_sets.id`
7489
- * @example 3
7490
- */
7491
- ai_analysis_set_id?: number | null;
7492
8166
  /**
7493
8167
  * @description Limit the number of images taken for this list item. Must be positive number
7494
8168
  * @example 11
@@ -7539,7 +8213,12 @@ export interface components {
7539
8213
  * @example true
7540
8214
  */
7541
8215
  incomplete?: boolean;
7542
- is_required: unknown;
8216
+ /**
8217
+ * @description Whether the photo/video/question is required to finish the inspection.
8218
+ * @default false
8219
+ * @example true
8220
+ */
8221
+ is_required: boolean;
7543
8222
  /**
7544
8223
  * @description A description of the requested photo or video when `type` is `IMAGE`, `PHOTO`, or `VIDEO`. A question for the customer to answer when `type` is `QUESTION`. The customer will see this value in the Vision app during the inspection.
7545
8224
  * @example Front of car
@@ -7655,7 +8334,12 @@ export interface components {
7655
8334
  * @example Inspection Finished for {{OrganizationFirstName}}
7656
8335
  */
7657
8336
  inspection_finished_subject: string;
7658
- is_deleted: unknown;
8337
+ /**
8338
+ * @description Whether or not this message template set has been soft-deleted
8339
+ * @default false
8340
+ * @example true
8341
+ */
8342
+ is_deleted: boolean;
7659
8343
  /**
7660
8344
  * @description The name of the message template set
7661
8345
  * @example Default Set
@@ -7931,8 +8615,18 @@ export interface components {
7931
8615
  * @example 1843
7932
8616
  */
7933
8617
  id: number;
7934
- is_deleted: unknown;
7935
- is_mfa_required: unknown;
8618
+ /**
8619
+ * @description Whether or not this organization has been soft-deleted.
8620
+ * @default false
8621
+ * @example true
8622
+ */
8623
+ is_deleted: boolean;
8624
+ /**
8625
+ * @description Whether multi-factor authentication is required for user login.
8626
+ * @default false
8627
+ * @example true
8628
+ */
8629
+ is_mfa_required: boolean;
7936
8630
  /**
7937
8631
  * @description The name of the organization.
7938
8632
  * @example Quality Capital
@@ -8001,7 +8695,7 @@ export interface components {
8001
8695
  updated_by_user_id: number | null;
8002
8696
  };
8003
8697
  /** @enum {string} */
8004
- OrganizationEnabledFeatureType: "ai_analysis" | "ask_for_app_review" | "inspection_device_insights" | "device_details" | "risk_network" | "external_risk_network" | "content_analysis_odometer" | "content_analysis_text_matching" | "content_analysis_vin" | "content_analysis_dot_tin" | "object_detection_auto" | "object_detection_jewelry" | "object_detection_real_estate" | "landing_pages" | "inspection_ai_criteria" | "dashboard_user_feedback_forms" | "member_homepage" | "reuse_detection";
8698
+ OrganizationEnabledFeatureType: "ai_analysis" | "ask_for_app_review" | "inspection_device_insights" | "device_details" | "risk_network" | "external_risk_network" | "content_analysis_odometer" | "content_analysis_text_matching" | "content_analysis_vin" | "content_analysis_dot_tin" | "object_detection_auto" | "object_detection_jewelry" | "object_detection_real_estate" | "landing_pages" | "inspection_readiness" | "dashboard_user_feedback_forms" | "member_homepage" | "reuse_detection" | "restrict_members_to_inspection_details" | "ai_analysis_configuration" | "guided_capture" | "verisk_sso";
8005
8699
  /** @description A possible outcome for an inspection */
8006
8700
  Outcome: {
8007
8701
  /**
@@ -8020,7 +8714,12 @@ export interface components {
8020
8714
  * @example 1843
8021
8715
  */
8022
8716
  id: number;
8023
- is_deleted: unknown;
8717
+ /**
8718
+ * @description Whether or not this outcome set has been soft-deleted
8719
+ * @default false
8720
+ * @example true
8721
+ */
8722
+ is_deleted: boolean;
8024
8723
  /**
8025
8724
  * @description The id of the user that last edited this outcome set.
8026
8725
  * @example 542
@@ -8061,7 +8760,12 @@ export interface components {
8061
8760
  * @example 1843
8062
8761
  */
8063
8762
  id: number;
8064
- is_deleted: unknown;
8763
+ /**
8764
+ * @description Whether or not this outcome set has been soft-deleted
8765
+ * @default false
8766
+ * @example true
8767
+ */
8768
+ is_deleted: boolean;
8065
8769
  /**
8066
8770
  * @description The id of the user that last edited this outcome set.
8067
8771
  * @example 542
@@ -8152,6 +8856,55 @@ export interface components {
8152
8856
  PaginationSorting: {
8153
8857
  [key: string]: "asc" | "desc";
8154
8858
  };
8859
+ PhotoDetectedSource: {
8860
+ tag: string;
8861
+ truepic_ids: number[];
8862
+ type: string;
8863
+ };
8864
+ PhotoTextSource: {
8865
+ string: string;
8866
+ truepic_ids: number[];
8867
+ type: string;
8868
+ };
8869
+ /** @description Attached by `inspection-ai-items-populator` (via `InspectionPopulator` when constructed with `includeAIItems: true`). Holds the result snapshot from the latest *completed* extraction event, the derived analysis status, and the inspection's frozen AI Item Type schema. Optional fields on `PopulatedInspection` because they're only present on the inspection-detail code path. */
8870
+ PopulatedAIInspectionItem: {
8871
+ /** @description Per-model call audit data from the classification step. */
8872
+ classification_audit_json: components["schemas"]["AuditEntry"][] | unknown;
8873
+ /** @description 0..1 classifier confidence for this item identification. */
8874
+ classification_confidence: number | null;
8875
+ /**
8876
+ * Format: date-time
8877
+ * @description The date/time the resource was created
8878
+ * @example 2020-05-01T21:44:40.000Z
8879
+ */
8880
+ created_at: string;
8881
+ detected_type: string;
8882
+ fields: components["schemas"]["AIInspectionItemFieldResult"][];
8883
+ id: number;
8884
+ inspection_id: number;
8885
+ /** @description 0-indexed position within the set of EXPECTED items for this event. */
8886
+ item_index: number | null;
8887
+ /** @description FK to ai_item_types.id (INSTANCE row); null for UNEXPECTED items. */
8888
+ item_type_id: number | null;
8889
+ /** @enum {string} */
8890
+ kind: "EXPECTED" | "UNEXPECTED";
8891
+ /** @description Populated for UNEXPECTED items; null for EXPECTED. */
8892
+ message: string | null;
8893
+ /** @description FK to ai_extraction_events.id — the run that produced this row. */
8894
+ triggering_event_id?: number;
8895
+ /** @description Truepic IDs of all captures the classifier associated with this item. */
8896
+ truepic_ids: number[];
8897
+ /**
8898
+ * Format: date-time
8899
+ * @description The date/time the resource was last updated
8900
+ * @example 2020-05-01T21:44:40.000Z
8901
+ */
8902
+ updated_at: string;
8903
+ };
8904
+ PopulatedAIItemTypeInstance: {
8905
+ fields: components["schemas"]["AIItemTypeField"][];
8906
+ itemType: components["schemas"]["AIItemType"];
8907
+ };
8155
8908
  PopulatedCustomField: {
8156
8909
  /** @description The id of the custom field option set used by this custom field when the entry method is ENTRY_METHOD_SELECTABLE */
8157
8910
  custom_field_option_set_id?: number;
@@ -8167,7 +8920,12 @@ export interface components {
8167
8920
  custom_field_options?: components["schemas"]["CustomFieldOption"][];
8168
8921
  /** @description The entry method for the custom field */
8169
8922
  entry_method: components["schemas"]["CustomFieldEntryMethods"];
8170
- is_required: unknown;
8923
+ /**
8924
+ * @description When true, the user must supply a value for this custom field in order to create an inspection
8925
+ * @default false
8926
+ * @example true
8927
+ */
8928
+ is_required: boolean;
8171
8929
  /** @description The label for the custom field */
8172
8930
  label?: string;
8173
8931
  };
@@ -8200,7 +8958,12 @@ export interface components {
8200
8958
  */
8201
8959
  name: string;
8202
8960
  }[];
8203
- is_deleted: unknown;
8961
+ /**
8962
+ * @description Whether or not this custom field option set has been soft-deleted
8963
+ * @default false
8964
+ * @example true
8965
+ */
8966
+ is_deleted: boolean;
8204
8967
  /**
8205
8968
  * @description The id of the user that last edited this custom field option set.
8206
8969
  * @example 542
@@ -8419,11 +9182,6 @@ export interface components {
8419
9182
  */
8420
9183
  web_camera: boolean;
8421
9184
  };
8422
- /**
8423
- * @description An identifier from an external system used to reference the team. It must be unique within an organization when set.
8424
- * @example X50100039
8425
- */
8426
- external_id?: string | null;
8427
9185
  /**
8428
9186
  * @description The accuracy threshold that GPS coordinates must not exceed in meters.
8429
9187
  * @example 1500
@@ -8456,7 +9214,12 @@ export interface components {
8456
9214
  * @example 1843
8457
9215
  */
8458
9216
  id: number;
8459
- include_list?: unknown;
9217
+ /**
9218
+ * @description Whether to include the inspection type's list by default with new inspection requests.
9219
+ * @default false
9220
+ * @example true
9221
+ */
9222
+ include_list: boolean;
8460
9223
  inspection_types: {
8461
9224
  /**
8462
9225
  * Format: date-time
@@ -8515,7 +9278,12 @@ export interface components {
8515
9278
  * @example 1000
8516
9279
  */
8517
9280
  is_address_required: boolean;
8518
- is_deleted: unknown;
9281
+ /**
9282
+ * @description Whether this inspection type is deleted
9283
+ * @default false
9284
+ * @example true
9285
+ */
9286
+ is_deleted: boolean;
8519
9287
  /**
8520
9288
  * @description When true, the list associated with this inspection type cannot be changed
8521
9289
  * @example false
@@ -8556,7 +9324,12 @@ export interface components {
8556
9324
  */
8557
9325
  inspection_id?: number;
8558
9326
  inspection_types: components["schemas"]["InspectionType"][];
8559
- is_deleted: unknown;
9327
+ /**
9328
+ * @description Whether or not this list has been soft-deleted
9329
+ * @default false
9330
+ * @example true
9331
+ */
9332
+ is_deleted: boolean;
8560
9333
  items: components["schemas"]["ListItem"][];
8561
9334
  /**
8562
9335
  * @description The auto-generated name of the list.
@@ -8655,7 +9428,12 @@ export interface components {
8655
9428
  */
8656
9429
  use_single_name_field: boolean;
8657
9430
  }[];
8658
- is_deleted: unknown;
9431
+ /**
9432
+ * @description Whether or not this config has been soft-deleted
9433
+ * @default false
9434
+ * @example true
9435
+ */
9436
+ is_deleted: boolean;
8659
9437
  /**
8660
9438
  * @description The amount of time before an admin member's login token when switching teams expires. Any format supported by https://github.com/vercel/ms is valid.
8661
9439
  * @default 72h
@@ -8700,7 +9478,12 @@ export interface components {
8700
9478
  */
8701
9479
  inspection_id?: number;
8702
9480
  inspection_types: components["schemas"]["InspectionType"][];
8703
- is_deleted: unknown;
9481
+ /**
9482
+ * @description Whether or not this list has been soft-deleted
9483
+ * @default false
9484
+ * @example true
9485
+ */
9486
+ is_deleted: boolean;
8704
9487
  items: components["schemas"]["ListItem"][];
8705
9488
  /**
8706
9489
  * @description The auto-generated name of the list.
@@ -8802,7 +9585,20 @@ export interface components {
8802
9585
  * @example 2020-05-01T21:44:40.000Z
8803
9586
  */
8804
9587
  updated_at: string;
8805
- video_enabled?: unknown;
9588
+ /**
9589
+ * @description Verisk customer codes used to route SSO users to this team. Multiple values are supported so a single team can be addressed by many Verisk custCodes, and a single custCode may be shared across multiple teams within an organization (no uniqueness constraint is enforced). Requires the `verisk_sso` organization feature to be enabled.
9590
+ * @example [
9591
+ * "X50100039",
9592
+ * "X50100040"
9593
+ * ]
9594
+ */
9595
+ verisk_cust_codes?: string[] | unknown;
9596
+ /**
9597
+ * @description Whether video is enabled as a capture method in the app.
9598
+ * @default false
9599
+ * @example true
9600
+ */
9601
+ video_enabled: boolean;
8806
9602
  };
8807
9603
  PopulatedTextMatchingSet: {
8808
9604
  can_delete: boolean;
@@ -8822,7 +9618,12 @@ export interface components {
8822
9618
  * @example 1843
8823
9619
  */
8824
9620
  id: number;
8825
- is_deleted: unknown;
9621
+ /**
9622
+ * @description Whether or not this text matching set has been soft-deleted
9623
+ * @default false
9624
+ * @example true
9625
+ */
9626
+ is_deleted: boolean;
8826
9627
  lists: {
8827
9628
  id: number;
8828
9629
  name: string;
@@ -8917,14 +9718,6 @@ export interface components {
8917
9718
  /** @description The identifier for the user */
8918
9719
  user_id: string;
8919
9720
  };
8920
- QuestionTruepicExampleItem: {
8921
- accepted: boolean;
8922
- confidence?: number | null;
8923
- consensus?: boolean | null;
8924
- reason: string | null;
8925
- truepic_id: number;
8926
- url: string;
8927
- };
8928
9721
  RecordWebsiteFormBearerActivityBody: {
8929
9722
  activity: string;
8930
9723
  data?: Record<string, never>;
@@ -8995,7 +9788,12 @@ export interface components {
8995
9788
  };
8996
9789
  /** @description The request body for PUT /text/request */
8997
9790
  SendRequestMoreTextBody: {
8998
- include_list?: unknown;
9791
+ /**
9792
+ * @description Set to true when sending list items in the `list` property.
9793
+ * @default false
9794
+ * @example true
9795
+ */
9796
+ include_list: boolean;
8999
9797
  /**
9000
9798
  * @description The id of the inspection
9001
9799
  * @example 123
@@ -9080,7 +9878,16 @@ export interface components {
9080
9878
  name: string;
9081
9879
  };
9082
9880
  SerializedInspection: {
9881
+ ai_analysis_status?: components["schemas"]["AIAnalysisStatus"];
9882
+ ai_inspection_additional_details?: components["schemas"]["AIInspectionItemAdditionalDetailsResult"] | unknown;
9883
+ /** @description The reviewing member user's latest consolidated verdict feedback (all surfaces), surfaced on GET /inspections/{id}. Null when no feedback has been submitted. */
9884
+ ai_inspection_feedback?: components["schemas"]["AIInspectionFeedback"] | unknown;
9885
+ /** @description Populated by `inspection-ai-items-populator` only — present when the populator was constructed with `includeAIItems: true`. */
9886
+ ai_inspection_items?: components["schemas"]["PopulatedAIInspectionItem"][];
9887
+ /** @description Per-inspection lock for the AI Analysis Configuration "inspection items" pipeline. Null until the first AI run resolves it from global_configs.VISION_AI_INSPECTION_ITEMS_PIPELINE_ID under FOR UPDATE; immutable thereafter so the audit chain attaches to a single pipeline even if the global config is later changed. Spec §2.7, §3.4. */
9888
+ ai_inspection_items_pipeline_id: number | null;
9083
9889
  ai_inspection_ready_result?: components["schemas"]["AIInspectionReadyResult"] | unknown;
9890
+ ai_item_type_instances?: components["schemas"]["PopulatedAIItemTypeInstance"][];
9084
9891
  /**
9085
9892
  * @description The AI analysis result for this inspection.
9086
9893
  * @example pass
@@ -9088,14 +9895,14 @@ export interface components {
9088
9895
  ai_status?: components["schemas"]["VerificationResult"];
9089
9896
  /** @description The details of the AI status for this inspection. This may include information about the criteria evaluation, any inconsistencies detected, and more. */
9090
9897
  ai_status_details?: components["schemas"]["AIStatusDetails"];
9091
- /**
9092
- * @description The reason for the AI analysis result for this inspection.
9093
- * @example COMPLETE_WITH_NO_INCONSISTENCIES
9094
- */
9095
- ai_status_reason?: components["schemas"]["AIStatusReason"];
9096
9898
  ai_user_criteria_result?: components["schemas"]["AIUserCriteriaResult"] | unknown;
9097
9899
  alert: components["schemas"]["InspectionAlertResult"];
9098
- app_opened: unknown;
9900
+ /**
9901
+ * @description Whether the Vision app has been opened by the customer
9902
+ * @default false
9903
+ * @example true
9904
+ */
9905
+ app_opened: boolean;
9099
9906
  assigned_to_member_user: components["schemas"]["User"];
9100
9907
  /**
9101
9908
  * @description The id of the user this inspection is assigned to.
@@ -9288,7 +10095,12 @@ export interface components {
9288
10095
  * @example 1000
9289
10096
  */
9290
10097
  is_address_required: boolean;
9291
- is_deleted: unknown;
10098
+ /**
10099
+ * @description Whether this inspection type is deleted
10100
+ * @default false
10101
+ * @example true
10102
+ */
10103
+ is_deleted: boolean;
9292
10104
  /**
9293
10105
  * @description When true, the list associated with this inspection type cannot be changed
9294
10106
  * @example false
@@ -9329,7 +10141,12 @@ export interface components {
9329
10141
  */
9330
10142
  inspection_id?: number;
9331
10143
  inspection_types: components["schemas"]["InspectionType"][];
9332
- is_deleted: unknown;
10144
+ /**
10145
+ * @description Whether or not this list has been soft-deleted
10146
+ * @default false
10147
+ * @example true
10148
+ */
10149
+ is_deleted: boolean;
9333
10150
  items: components["schemas"]["ListItem"][];
9334
10151
  /**
9335
10152
  * @description The auto-generated name of the list.
@@ -9433,8 +10250,18 @@ export interface components {
9433
10250
  * @example 12
9434
10251
  */
9435
10252
  inspection_type_id: number;
9436
- is_deleted: unknown;
9437
- is_expired: unknown;
10253
+ /**
10254
+ * @description Represents if the inspection has been soft-deleted
10255
+ * @default false
10256
+ * @example true
10257
+ */
10258
+ is_deleted: boolean;
10259
+ /**
10260
+ * @description Whether the inspection has expired
10261
+ * @default false
10262
+ * @example true
10263
+ */
10264
+ is_expired: boolean;
9438
10265
  list: {
9439
10266
  /**
9440
10267
  * @description The groups of items in the list
@@ -9511,7 +10338,7 @@ export interface components {
9511
10338
  /** @description The method(s) to send the inspection request to the customer completing the inspection. */
9512
10339
  send_methods: {
9513
10340
  /**
9514
- * @description When true, will send text messages to the customer_email_address
10341
+ * @description When true, will send emails to the customer_email_address
9515
10342
  * @example false
9516
10343
  */
9517
10344
  email: boolean;
@@ -9627,7 +10454,12 @@ export interface components {
9627
10454
  * @example 4335
9628
10455
  */
9629
10456
  inspection_id: number;
9630
- is_deleted?: unknown;
10457
+ /**
10458
+ * @description Whether or not this action has been soft-deleted
10459
+ * @default false
10460
+ * @example true
10461
+ */
10462
+ is_deleted: boolean;
9631
10463
  location: components["schemas"]["PopulatedLocation"];
9632
10464
  /**
9633
10465
  * @description The id of the location record
@@ -9744,7 +10576,12 @@ export interface components {
9744
10576
  * @example 1843
9745
10577
  */
9746
10578
  id: number;
9747
- is_mfa_required: unknown;
10579
+ /**
10580
+ * @description Whether multi-factor authentication is required for user login.
10581
+ * @default false
10582
+ * @example true
10583
+ */
10584
+ is_mfa_required: boolean;
9748
10585
  /**
9749
10586
  * @description The name of the organization.
9750
10587
  * @example Quality Capital
@@ -9799,6 +10636,7 @@ export interface components {
9799
10636
  name?: string;
9800
10637
  }[];
9801
10638
  };
10639
+ Source: components["schemas"]["PhotoTextSource"] | components["schemas"]["PhotoDetectedSource"] | components["schemas"]["AISuggestedSource"] | components["schemas"]["OrganizationStatedSource"] | components["schemas"]["WebLookupSource"];
9802
10640
  SubmitItemDetailsToolCallParams: {
9803
10641
  auditor_notes: string;
9804
10642
  criteria_results: {
@@ -9846,6 +10684,16 @@ export interface components {
9846
10684
  */
9847
10685
  response_code: number;
9848
10686
  };
10687
+ /** @description Records a rerun verdict that was suppressed in favor of the prior value (VISION-2126). When an `open_answer` field re-runs without genuinely-new evidence, the persisted columns keep the prior value, but the verdict the rerun actually produced is preserved here in the field's `audit_json` so the suppressed answer (and its dissent) isn't lost. The `dissenters` that belong to this rerun live on this entry rather than on the row, keeping the row's own `dissenters` aligned with its (prior) value. */
10688
+ SuppressedExtractionAuditEntry: {
10689
+ confidence: number | null;
10690
+ dissenters: components["schemas"]["Dissenter"][];
10691
+ kind: string;
10692
+ reasoning: string | null;
10693
+ sources: components["schemas"]["Source"][];
10694
+ status: components["schemas"]["FieldStatus"];
10695
+ value: string | string[] | unknown;
10696
+ };
9849
10697
  /** @description A Team that exists under an organization in Vision that sends out inspection requests */
9850
10698
  Team: {
9851
10699
  /**
@@ -9936,11 +10784,6 @@ export interface components {
9936
10784
  */
9937
10785
  web_camera: boolean;
9938
10786
  };
9939
- /**
9940
- * @description An identifier from an external system used to reference the team. It must be unique within an organization when set.
9941
- * @example X50100039
9942
- */
9943
- external_id?: string | null;
9944
10787
  /**
9945
10788
  * @description The accuracy threshold that GPS coordinates must not exceed in meters.
9946
10789
  * @example 1500
@@ -9956,8 +10799,18 @@ export interface components {
9956
10799
  * @example 1843
9957
10800
  */
9958
10801
  id: number;
9959
- include_list?: unknown;
9960
- is_deleted: unknown;
10802
+ /**
10803
+ * @description Whether to include the inspection type's list by default with new inspection requests.
10804
+ * @default false
10805
+ * @example true
10806
+ */
10807
+ include_list: boolean;
10808
+ /**
10809
+ * @description Whether or not this config has been soft-deleted
10810
+ * @default false
10811
+ * @example true
10812
+ */
10813
+ is_deleted: boolean;
9961
10814
  /**
9962
10815
  * @description The amount of time before an admin member's login token when switching teams expires. Any format supported by https://github.com/vercel/ms is valid.
9963
10816
  * @default 72h
@@ -10040,7 +10893,20 @@ export interface components {
10040
10893
  * @example 2020-05-01T21:44:40.000Z
10041
10894
  */
10042
10895
  updated_at: string;
10043
- video_enabled?: unknown;
10896
+ /**
10897
+ * @description Verisk customer codes used to route SSO users to this team. Multiple values are supported so a single team can be addressed by many Verisk custCodes, and a single custCode may be shared across multiple teams within an organization (no uniqueness constraint is enforced). Requires the `verisk_sso` organization feature to be enabled.
10898
+ * @example [
10899
+ * "X50100039",
10900
+ * "X50100040"
10901
+ * ]
10902
+ */
10903
+ verisk_cust_codes?: string[] | unknown;
10904
+ /**
10905
+ * @description Whether video is enabled as a capture method in the app.
10906
+ * @default false
10907
+ * @example true
10908
+ */
10909
+ video_enabled: boolean;
10044
10910
  };
10045
10911
  TeamPayload: {
10046
10912
  /**
@@ -10131,11 +10997,6 @@ export interface components {
10131
10997
  */
10132
10998
  web_camera: boolean;
10133
10999
  };
10134
- /**
10135
- * @description An identifier from an external system used to reference the team. It must be unique within an organization when set.
10136
- * @example X50100039
10137
- */
10138
- external_id?: string | null;
10139
11000
  /**
10140
11001
  * @description The accuracy threshold that GPS coordinates must not exceed in meters.
10141
11002
  * @example 1500
@@ -10151,8 +11012,18 @@ export interface components {
10151
11012
  * @example 1843
10152
11013
  */
10153
11014
  id?: number;
10154
- include_list?: unknown;
10155
- is_deleted?: unknown;
11015
+ /**
11016
+ * @description Whether to include the inspection type's list by default with new inspection requests.
11017
+ * @default false
11018
+ * @example true
11019
+ */
11020
+ include_list: boolean;
11021
+ /**
11022
+ * @description Whether or not this config has been soft-deleted
11023
+ * @default false
11024
+ * @example true
11025
+ */
11026
+ is_deleted: boolean;
10156
11027
  /**
10157
11028
  * @description The amount of time before an admin member's login token when switching teams expires. Any format supported by https://github.com/vercel/ms is valid.
10158
11029
  * @default 72h
@@ -10238,7 +11109,20 @@ export interface components {
10238
11109
  * @example 2020-05-01T21:44:40.000Z
10239
11110
  */
10240
11111
  updated_at?: string;
10241
- video_enabled?: unknown;
11112
+ /**
11113
+ * @description Verisk customer codes used to route SSO users to this team. Multiple values are supported so a single team can be addressed by many Verisk custCodes, and a single custCode may be shared across multiple teams within an organization (no uniqueness constraint is enforced). Requires the `verisk_sso` organization feature to be enabled.
11114
+ * @example [
11115
+ * "X50100039",
11116
+ * "X50100040"
11117
+ * ]
11118
+ */
11119
+ verisk_cust_codes?: string[] | unknown;
11120
+ /**
11121
+ * @description Whether video is enabled as a capture method in the app.
11122
+ * @default false
11123
+ * @example true
11124
+ */
11125
+ video_enabled: boolean;
10242
11126
  };
10243
11127
  TeamWebhookDBPayload: {
10244
11128
  /**
@@ -10568,7 +11452,12 @@ export interface components {
10568
11452
  * @example true
10569
11453
  */
10570
11454
  is_enabled: boolean;
10571
- is_required: unknown;
11455
+ /**
11456
+ * @description When true, the user must supply a value for this custom field in order to create an inspection
11457
+ * @default false
11458
+ * @example true
11459
+ */
11460
+ is_required: boolean;
10572
11461
  /** @description The label for the custom field */
10573
11462
  label?: string;
10574
11463
  };
@@ -10656,7 +11545,12 @@ export interface components {
10656
11545
  * @example 3028675309
10657
11546
  */
10658
11547
  customer_phone_number?: string;
10659
- include_list?: unknown;
11548
+ /**
11549
+ * @description Must be true when including `list`.
11550
+ * @default false
11551
+ * @example false
11552
+ */
11553
+ include_list: boolean;
10660
11554
  /**
10661
11555
  * @description Free-form inspection-ready criteria text. Max length 10KB.
10662
11556
  * @example Capture all rooms and appliances.
@@ -10710,7 +11604,7 @@ export interface components {
10710
11604
  /** @description The method(s) to send the inspection request to the customer completing the inspection. */
10711
11605
  send_methods?: {
10712
11606
  /**
10713
- * @description When true, will send text messages to the customer_email_address
11607
+ * @description When true, will send emails to the customer_email_address
10714
11608
  * @example false
10715
11609
  */
10716
11610
  email: boolean;
@@ -10746,6 +11640,87 @@ export interface components {
10746
11640
  id: number;
10747
11641
  };
10748
11642
  };
11643
+ /** @description Request Body for PUT /inspection-types/{inspectionTypeId} */
11644
+ UpdateInspectionTypeBody: {
11645
+ /**
11646
+ * @description the id of the user who created this inspection type. References `users.id`
11647
+ * @example 2343
11648
+ */
11649
+ created_by_member_user_id?: number;
11650
+ /** @description An array of custom fields that are used by this inspection type */
11651
+ custom_fields?: components["schemas"]["CustomField"][];
11652
+ /**
11653
+ * @description The id of the inspection alert configuration that is used by this inspection type. References `inspection_alert_configs.id`
11654
+ * @example 539
11655
+ */
11656
+ inspection_alert_config_id?: number;
11657
+ /**
11658
+ * @description Optional inspection-ready criteria text for this inspection type.
11659
+ * @example Capture the VIN plate clearly and include a full odometer photo.
11660
+ */
11661
+ inspection_ready_criteria_text?: string | null;
11662
+ /**
11663
+ * @description Controls whether an address is required for the inspection or not
11664
+ * @example 1000
11665
+ */
11666
+ is_address_required?: boolean;
11667
+ /**
11668
+ * @description When true, the list associated with this inspection type cannot be changed
11669
+ * @example false
11670
+ */
11671
+ is_list_locked?: boolean;
11672
+ /** @description The IETF language tag for the intended language of the inspection. Non-customizable text in emails will use the language specified here. */
11673
+ language?: components["schemas"]["LocalizationLanguages"];
11674
+ /**
11675
+ * @description The id of the list that is used by this inspection type. References `lists.id`
11676
+ * @example 3345
11677
+ */
11678
+ list_id?: number;
11679
+ /**
11680
+ * @description the maximum distance away from the configured inspection address that an inspection can be completed in meters.
11681
+ * @example 1000
11682
+ */
11683
+ max_distance_from_address_threshold?: number;
11684
+ /**
11685
+ * @description The id of the message template set that is used by this inspection type. References `message_template_sets.id`
11686
+ * @example 539
11687
+ */
11688
+ message_template_set_id?: number;
11689
+ /**
11690
+ * @description the id of the user who last modified this inspection type. References `users.id`
11691
+ * @example 2343
11692
+ */
11693
+ modified_by_member_user_id?: number;
11694
+ /**
11695
+ * @description The name of the inspection type
11696
+ * @example My Type
11697
+ */
11698
+ name?: string;
11699
+ /**
11700
+ * @description The id of the outcome set that is used by this inspection type. References `outcome_sets.id`
11701
+ * @example 539
11702
+ */
11703
+ outcome_set_id?: number;
11704
+ /**
11705
+ * @description The teams that are allowed to use this inspection type. Pass each team as an object containing its `id`. Passing an empty array removes all team associations.
11706
+ * @example [
11707
+ * {
11708
+ * "id": 12
11709
+ * },
11710
+ * {
11711
+ * "id": 24
11712
+ * }
11713
+ * ]
11714
+ */
11715
+ teams?: {
11716
+ id: number;
11717
+ }[];
11718
+ /**
11719
+ * @description When true, there is only one name for the user to fill out rather than a separate first name and last name field
11720
+ * @example true
11721
+ */
11722
+ use_single_name_field?: boolean;
11723
+ };
10749
11724
  UpdateInternalNoteBody: components["schemas"]["CreateInternalNoteBody"];
10750
11725
  UpdateLandingPageBody: {
10751
11726
  /**
@@ -11051,6 +12026,16 @@ export interface components {
11051
12026
  * @enum {string}
11052
12027
  */
11053
12028
  VisionRole: "SUPER_ADMIN" | "VISION_AGENT_ADMIN" | "VISION_AGENT" | "VISION_CONSUMER" | "AUTH0_BOT" | "WEBSITE_FORM_BOT" | "GROUP_AGENT" | "VISION_AGENT_OWN_INSPECTIONS" | "VIEW_ONLY" | "VISION_AGENT_REPORT";
12029
+ /** @description A citation backed by a provider-side web call — any of the registered provider tools (Google Search grounding, URL fetching, web search). Surfaces per VISION-1850. */
12030
+ WebLookupSource: {
12031
+ /** @description Excerpt or snippet from the cited content; absent when the provider didn't return one. */
12032
+ snippet?: string;
12033
+ /** @description Page/document title from the provider's grounding metadata. Absent when the provider didn't return one. */
12034
+ title?: string;
12035
+ type: string;
12036
+ /** @description URI of the page or document the model relied on. One URI per source — multiple supporting URIs become multiple `web_lookup` entries. */
12037
+ uri: string;
12038
+ };
11054
12039
  WebsiteFormBearerSerialized: {
11055
12040
  inspection_types: {
11056
12041
  /** @description An array of custom fields that are used by this inspection type */
@@ -11229,6 +12214,17 @@ export interface components {
11229
12214
  */
11230
12215
  updated_at: string;
11231
12216
  };
12217
+ /** @description V1 emits two intake_field values; additional values are reserved for post-V1. */
12218
+ OrganizationStatedSource: {
12219
+ /** @enum {string} */
12220
+ intake_field: "comment" | "list_item_answer";
12221
+ /** @description Present when intake_field='list_item_answer' — the answered list_items.id values. */
12222
+ list_item_ids?: number[];
12223
+ string: string;
12224
+ /** @description Present when intake_field='comment' — the capture(s) the comment is on. */
12225
+ truepic_ids?: number[];
12226
+ type: string;
12227
+ };
11232
12228
  };
11233
12229
  responses: {
11234
12230
  /** @description The request body couldn't be parsed. */