@vitrina/api 15.24.0 → 15.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -17937,6 +17937,349 @@ interface paths {
17937
17937
  patch?: never;
17938
17938
  trace?: never;
17939
17939
  };
17940
+ "/vehicles/photo-labels": {
17941
+ parameters: {
17942
+ query?: never;
17943
+ header?: never;
17944
+ path?: never;
17945
+ cookie?: never;
17946
+ };
17947
+ /**
17948
+ * What each stock photo shows (exterior, interior, motor…)
17949
+ * @description Labels for the photos of one vehicle (`vehicle_id`) and/or explicit `url`s (repeat the param, up to 40). A url with no row has not been labelled yet. `source` is `ai` (the vision model) or `manual` (a person corrected it; the AI never overwrites it). `status: failed` = the last vision call failed and the label is unknown.
17950
+ */
17951
+ get: {
17952
+ parameters: {
17953
+ query?: {
17954
+ vehicle_id?: string;
17955
+ url?: string | string[];
17956
+ };
17957
+ header?: never;
17958
+ path?: never;
17959
+ cookie?: never;
17960
+ };
17961
+ requestBody?: never;
17962
+ responses: {
17963
+ /** @description Labels */
17964
+ 200: {
17965
+ headers: {
17966
+ [name: string]: unknown;
17967
+ };
17968
+ content: {
17969
+ /**
17970
+ * @example {
17971
+ * "labels": [
17972
+ * {
17973
+ * "url": "https://media.vitrinadev.com/vehicles/00000000-0000-4000-8000-000000000001/8a76.jpg",
17974
+ * "label": "Interior — tablero y volante",
17975
+ * "view": "interior",
17976
+ * "source": "ai",
17977
+ * "status": "labelled"
17978
+ * }
17979
+ * ]
17980
+ * }
17981
+ */
17982
+ "application/json": {
17983
+ data?: unknown;
17984
+ meta?: {
17985
+ [key: string]: unknown;
17986
+ };
17987
+ };
17988
+ };
17989
+ };
17990
+ /** @description Validation error */
17991
+ 400: {
17992
+ headers: {
17993
+ [name: string]: unknown;
17994
+ };
17995
+ content: {
17996
+ "application/json": components["schemas"]["Error"];
17997
+ };
17998
+ };
17999
+ /** @description Unauthorized */
18000
+ 401: {
18001
+ headers: {
18002
+ [name: string]: unknown;
18003
+ };
18004
+ content: {
18005
+ "application/json": components["schemas"]["Error"];
18006
+ };
18007
+ };
18008
+ /** @description Forbidden */
18009
+ 403: {
18010
+ headers: {
18011
+ [name: string]: unknown;
18012
+ };
18013
+ content: {
18014
+ "application/json": components["schemas"]["Error"];
18015
+ };
18016
+ };
18017
+ /** @description Not found */
18018
+ 404: {
18019
+ headers: {
18020
+ [name: string]: unknown;
18021
+ };
18022
+ content: {
18023
+ "application/json": components["schemas"]["Error"];
18024
+ };
18025
+ };
18026
+ /** @description Conflict (incl. Idempotency-Key reuse with different body) */
18027
+ 409: {
18028
+ headers: {
18029
+ [name: string]: unknown;
18030
+ };
18031
+ content: {
18032
+ "application/json": components["schemas"]["Error"];
18033
+ };
18034
+ };
18035
+ /** @description Rate limited */
18036
+ 429: {
18037
+ headers: {
18038
+ [name: string]: unknown;
18039
+ };
18040
+ content: {
18041
+ "application/json": components["schemas"]["Error"];
18042
+ };
18043
+ };
18044
+ };
18045
+ };
18046
+ /**
18047
+ * Correct what a stock photo shows
18048
+ * @description Sets the view (and an optional short description) of one photo as a person's correction (`source: manual`). The AI agent uses it at once (get_vehicle `shows`, send_attachment view check) and no later AI pass overwrites it. The url must be one of this workspace's uploads, or a photo of `vehicle_id`.
18049
+ */
18050
+ put: {
18051
+ parameters: {
18052
+ query?: never;
18053
+ header?: never;
18054
+ path?: never;
18055
+ cookie?: never;
18056
+ };
18057
+ requestBody?: {
18058
+ content: {
18059
+ /**
18060
+ * @example {
18061
+ * "url": "https://media.vitrinadev.com/vehicles/00000000-0000-4000-8000-000000000001/8a76.jpg",
18062
+ * "view": "interior",
18063
+ * "description": "tablero y volante",
18064
+ * "vehicle_id": "9f4a2b7c-1111-4a2b-8c3d-000000000001"
18065
+ * }
18066
+ */
18067
+ "application/json": {
18068
+ url: string;
18069
+ /** @enum {string} */
18070
+ view: "exterior" | "interior" | "motor" | "maletero" | "detalle";
18071
+ description?: string | null;
18072
+ /** Format: uuid */
18073
+ vehicle_id?: string;
18074
+ };
18075
+ };
18076
+ };
18077
+ responses: {
18078
+ /** @description The saved label */
18079
+ 200: {
18080
+ headers: {
18081
+ [name: string]: unknown;
18082
+ };
18083
+ content: {
18084
+ /**
18085
+ * @example {
18086
+ * "url": "https://media.vitrinadev.com/vehicles/00000000-0000-4000-8000-000000000001/8a76.jpg",
18087
+ * "label": "Interior — tablero y volante",
18088
+ * "view": "interior",
18089
+ * "source": "manual",
18090
+ * "status": "labelled"
18091
+ * }
18092
+ */
18093
+ "application/json": {
18094
+ data?: unknown;
18095
+ meta?: {
18096
+ [key: string]: unknown;
18097
+ };
18098
+ };
18099
+ };
18100
+ };
18101
+ /** @description Validation error */
18102
+ 400: {
18103
+ headers: {
18104
+ [name: string]: unknown;
18105
+ };
18106
+ content: {
18107
+ "application/json": components["schemas"]["Error"];
18108
+ };
18109
+ };
18110
+ /** @description Unauthorized */
18111
+ 401: {
18112
+ headers: {
18113
+ [name: string]: unknown;
18114
+ };
18115
+ content: {
18116
+ "application/json": components["schemas"]["Error"];
18117
+ };
18118
+ };
18119
+ /** @description Forbidden */
18120
+ 403: {
18121
+ headers: {
18122
+ [name: string]: unknown;
18123
+ };
18124
+ content: {
18125
+ "application/json": components["schemas"]["Error"];
18126
+ };
18127
+ };
18128
+ /** @description Not found */
18129
+ 404: {
18130
+ headers: {
18131
+ [name: string]: unknown;
18132
+ };
18133
+ content: {
18134
+ "application/json": components["schemas"]["Error"];
18135
+ };
18136
+ };
18137
+ /** @description Conflict (incl. Idempotency-Key reuse with different body) */
18138
+ 409: {
18139
+ headers: {
18140
+ [name: string]: unknown;
18141
+ };
18142
+ content: {
18143
+ "application/json": components["schemas"]["Error"];
18144
+ };
18145
+ };
18146
+ /** @description Rate limited */
18147
+ 429: {
18148
+ headers: {
18149
+ [name: string]: unknown;
18150
+ };
18151
+ content: {
18152
+ "application/json": components["schemas"]["Error"];
18153
+ };
18154
+ };
18155
+ };
18156
+ };
18157
+ post?: never;
18158
+ delete?: never;
18159
+ options?: never;
18160
+ head?: never;
18161
+ patch?: never;
18162
+ trace?: never;
18163
+ };
18164
+ "/vehicles/photo-labels/label": {
18165
+ parameters: {
18166
+ query?: never;
18167
+ header?: never;
18168
+ path?: never;
18169
+ cookie?: never;
18170
+ };
18171
+ get?: never;
18172
+ put?: never;
18173
+ /**
18174
+ * Label new uploads now
18175
+ * @description Queues the vision model for up to 30 of this workspace's uploaded photo urls that have no label yet (2–3 s each, 5 in parallel). Poll `GET /vehicles/photo-labels?url=…` for the result. Urls that are not this workspace's uploads are ignored.
18176
+ */
18177
+ post: {
18178
+ parameters: {
18179
+ query?: never;
18180
+ header?: {
18181
+ /** @description Replay-safe retries: resending the SAME key with the SAME body returns the original response (`X-Idempotent-Replay: 1`) instead of creating a second copy — safe to send whenever a response might not have arrived. The same key with a DIFFERENT body answers `409 IDEMPOTENCY_KEY_CONFLICT`; use a fresh key per operation. */
18182
+ "Idempotency-Key"?: string;
18183
+ };
18184
+ path?: never;
18185
+ cookie?: never;
18186
+ };
18187
+ requestBody?: {
18188
+ content: {
18189
+ /**
18190
+ * @example {
18191
+ * "urls": [
18192
+ * "https://media.vitrinadev.com/vehicles/00000000-0000-4000-8000-000000000001/8a76.jpg"
18193
+ * ]
18194
+ * }
18195
+ */
18196
+ "application/json": {
18197
+ urls: string[];
18198
+ };
18199
+ };
18200
+ };
18201
+ responses: {
18202
+ /** @description Queued */
18203
+ 202: {
18204
+ headers: {
18205
+ [name: string]: unknown;
18206
+ };
18207
+ content: {
18208
+ /**
18209
+ * @example {
18210
+ * "queued": 1
18211
+ * }
18212
+ */
18213
+ "application/json": {
18214
+ data?: unknown;
18215
+ meta?: {
18216
+ [key: string]: unknown;
18217
+ };
18218
+ };
18219
+ };
18220
+ };
18221
+ /** @description Validation error */
18222
+ 400: {
18223
+ headers: {
18224
+ [name: string]: unknown;
18225
+ };
18226
+ content: {
18227
+ "application/json": components["schemas"]["Error"];
18228
+ };
18229
+ };
18230
+ /** @description Unauthorized */
18231
+ 401: {
18232
+ headers: {
18233
+ [name: string]: unknown;
18234
+ };
18235
+ content: {
18236
+ "application/json": components["schemas"]["Error"];
18237
+ };
18238
+ };
18239
+ /** @description Forbidden */
18240
+ 403: {
18241
+ headers: {
18242
+ [name: string]: unknown;
18243
+ };
18244
+ content: {
18245
+ "application/json": components["schemas"]["Error"];
18246
+ };
18247
+ };
18248
+ /** @description Not found */
18249
+ 404: {
18250
+ headers: {
18251
+ [name: string]: unknown;
18252
+ };
18253
+ content: {
18254
+ "application/json": components["schemas"]["Error"];
18255
+ };
18256
+ };
18257
+ /** @description Conflict (incl. Idempotency-Key reuse with different body) */
18258
+ 409: {
18259
+ headers: {
18260
+ [name: string]: unknown;
18261
+ };
18262
+ content: {
18263
+ "application/json": components["schemas"]["Error"];
18264
+ };
18265
+ };
18266
+ /** @description Rate limited */
18267
+ 429: {
18268
+ headers: {
18269
+ [name: string]: unknown;
18270
+ };
18271
+ content: {
18272
+ "application/json": components["schemas"]["Error"];
18273
+ };
18274
+ };
18275
+ };
18276
+ };
18277
+ delete?: never;
18278
+ options?: never;
18279
+ head?: never;
18280
+ patch?: never;
18281
+ trace?: never;
18282
+ };
17940
18283
  "/vehicles": {
17941
18284
  parameters: {
17942
18285
  query?: never;
package/dist/index.d.ts CHANGED
@@ -17937,6 +17937,349 @@ interface paths {
17937
17937
  patch?: never;
17938
17938
  trace?: never;
17939
17939
  };
17940
+ "/vehicles/photo-labels": {
17941
+ parameters: {
17942
+ query?: never;
17943
+ header?: never;
17944
+ path?: never;
17945
+ cookie?: never;
17946
+ };
17947
+ /**
17948
+ * What each stock photo shows (exterior, interior, motor…)
17949
+ * @description Labels for the photos of one vehicle (`vehicle_id`) and/or explicit `url`s (repeat the param, up to 40). A url with no row has not been labelled yet. `source` is `ai` (the vision model) or `manual` (a person corrected it; the AI never overwrites it). `status: failed` = the last vision call failed and the label is unknown.
17950
+ */
17951
+ get: {
17952
+ parameters: {
17953
+ query?: {
17954
+ vehicle_id?: string;
17955
+ url?: string | string[];
17956
+ };
17957
+ header?: never;
17958
+ path?: never;
17959
+ cookie?: never;
17960
+ };
17961
+ requestBody?: never;
17962
+ responses: {
17963
+ /** @description Labels */
17964
+ 200: {
17965
+ headers: {
17966
+ [name: string]: unknown;
17967
+ };
17968
+ content: {
17969
+ /**
17970
+ * @example {
17971
+ * "labels": [
17972
+ * {
17973
+ * "url": "https://media.vitrinadev.com/vehicles/00000000-0000-4000-8000-000000000001/8a76.jpg",
17974
+ * "label": "Interior — tablero y volante",
17975
+ * "view": "interior",
17976
+ * "source": "ai",
17977
+ * "status": "labelled"
17978
+ * }
17979
+ * ]
17980
+ * }
17981
+ */
17982
+ "application/json": {
17983
+ data?: unknown;
17984
+ meta?: {
17985
+ [key: string]: unknown;
17986
+ };
17987
+ };
17988
+ };
17989
+ };
17990
+ /** @description Validation error */
17991
+ 400: {
17992
+ headers: {
17993
+ [name: string]: unknown;
17994
+ };
17995
+ content: {
17996
+ "application/json": components["schemas"]["Error"];
17997
+ };
17998
+ };
17999
+ /** @description Unauthorized */
18000
+ 401: {
18001
+ headers: {
18002
+ [name: string]: unknown;
18003
+ };
18004
+ content: {
18005
+ "application/json": components["schemas"]["Error"];
18006
+ };
18007
+ };
18008
+ /** @description Forbidden */
18009
+ 403: {
18010
+ headers: {
18011
+ [name: string]: unknown;
18012
+ };
18013
+ content: {
18014
+ "application/json": components["schemas"]["Error"];
18015
+ };
18016
+ };
18017
+ /** @description Not found */
18018
+ 404: {
18019
+ headers: {
18020
+ [name: string]: unknown;
18021
+ };
18022
+ content: {
18023
+ "application/json": components["schemas"]["Error"];
18024
+ };
18025
+ };
18026
+ /** @description Conflict (incl. Idempotency-Key reuse with different body) */
18027
+ 409: {
18028
+ headers: {
18029
+ [name: string]: unknown;
18030
+ };
18031
+ content: {
18032
+ "application/json": components["schemas"]["Error"];
18033
+ };
18034
+ };
18035
+ /** @description Rate limited */
18036
+ 429: {
18037
+ headers: {
18038
+ [name: string]: unknown;
18039
+ };
18040
+ content: {
18041
+ "application/json": components["schemas"]["Error"];
18042
+ };
18043
+ };
18044
+ };
18045
+ };
18046
+ /**
18047
+ * Correct what a stock photo shows
18048
+ * @description Sets the view (and an optional short description) of one photo as a person's correction (`source: manual`). The AI agent uses it at once (get_vehicle `shows`, send_attachment view check) and no later AI pass overwrites it. The url must be one of this workspace's uploads, or a photo of `vehicle_id`.
18049
+ */
18050
+ put: {
18051
+ parameters: {
18052
+ query?: never;
18053
+ header?: never;
18054
+ path?: never;
18055
+ cookie?: never;
18056
+ };
18057
+ requestBody?: {
18058
+ content: {
18059
+ /**
18060
+ * @example {
18061
+ * "url": "https://media.vitrinadev.com/vehicles/00000000-0000-4000-8000-000000000001/8a76.jpg",
18062
+ * "view": "interior",
18063
+ * "description": "tablero y volante",
18064
+ * "vehicle_id": "9f4a2b7c-1111-4a2b-8c3d-000000000001"
18065
+ * }
18066
+ */
18067
+ "application/json": {
18068
+ url: string;
18069
+ /** @enum {string} */
18070
+ view: "exterior" | "interior" | "motor" | "maletero" | "detalle";
18071
+ description?: string | null;
18072
+ /** Format: uuid */
18073
+ vehicle_id?: string;
18074
+ };
18075
+ };
18076
+ };
18077
+ responses: {
18078
+ /** @description The saved label */
18079
+ 200: {
18080
+ headers: {
18081
+ [name: string]: unknown;
18082
+ };
18083
+ content: {
18084
+ /**
18085
+ * @example {
18086
+ * "url": "https://media.vitrinadev.com/vehicles/00000000-0000-4000-8000-000000000001/8a76.jpg",
18087
+ * "label": "Interior — tablero y volante",
18088
+ * "view": "interior",
18089
+ * "source": "manual",
18090
+ * "status": "labelled"
18091
+ * }
18092
+ */
18093
+ "application/json": {
18094
+ data?: unknown;
18095
+ meta?: {
18096
+ [key: string]: unknown;
18097
+ };
18098
+ };
18099
+ };
18100
+ };
18101
+ /** @description Validation error */
18102
+ 400: {
18103
+ headers: {
18104
+ [name: string]: unknown;
18105
+ };
18106
+ content: {
18107
+ "application/json": components["schemas"]["Error"];
18108
+ };
18109
+ };
18110
+ /** @description Unauthorized */
18111
+ 401: {
18112
+ headers: {
18113
+ [name: string]: unknown;
18114
+ };
18115
+ content: {
18116
+ "application/json": components["schemas"]["Error"];
18117
+ };
18118
+ };
18119
+ /** @description Forbidden */
18120
+ 403: {
18121
+ headers: {
18122
+ [name: string]: unknown;
18123
+ };
18124
+ content: {
18125
+ "application/json": components["schemas"]["Error"];
18126
+ };
18127
+ };
18128
+ /** @description Not found */
18129
+ 404: {
18130
+ headers: {
18131
+ [name: string]: unknown;
18132
+ };
18133
+ content: {
18134
+ "application/json": components["schemas"]["Error"];
18135
+ };
18136
+ };
18137
+ /** @description Conflict (incl. Idempotency-Key reuse with different body) */
18138
+ 409: {
18139
+ headers: {
18140
+ [name: string]: unknown;
18141
+ };
18142
+ content: {
18143
+ "application/json": components["schemas"]["Error"];
18144
+ };
18145
+ };
18146
+ /** @description Rate limited */
18147
+ 429: {
18148
+ headers: {
18149
+ [name: string]: unknown;
18150
+ };
18151
+ content: {
18152
+ "application/json": components["schemas"]["Error"];
18153
+ };
18154
+ };
18155
+ };
18156
+ };
18157
+ post?: never;
18158
+ delete?: never;
18159
+ options?: never;
18160
+ head?: never;
18161
+ patch?: never;
18162
+ trace?: never;
18163
+ };
18164
+ "/vehicles/photo-labels/label": {
18165
+ parameters: {
18166
+ query?: never;
18167
+ header?: never;
18168
+ path?: never;
18169
+ cookie?: never;
18170
+ };
18171
+ get?: never;
18172
+ put?: never;
18173
+ /**
18174
+ * Label new uploads now
18175
+ * @description Queues the vision model for up to 30 of this workspace's uploaded photo urls that have no label yet (2–3 s each, 5 in parallel). Poll `GET /vehicles/photo-labels?url=…` for the result. Urls that are not this workspace's uploads are ignored.
18176
+ */
18177
+ post: {
18178
+ parameters: {
18179
+ query?: never;
18180
+ header?: {
18181
+ /** @description Replay-safe retries: resending the SAME key with the SAME body returns the original response (`X-Idempotent-Replay: 1`) instead of creating a second copy — safe to send whenever a response might not have arrived. The same key with a DIFFERENT body answers `409 IDEMPOTENCY_KEY_CONFLICT`; use a fresh key per operation. */
18182
+ "Idempotency-Key"?: string;
18183
+ };
18184
+ path?: never;
18185
+ cookie?: never;
18186
+ };
18187
+ requestBody?: {
18188
+ content: {
18189
+ /**
18190
+ * @example {
18191
+ * "urls": [
18192
+ * "https://media.vitrinadev.com/vehicles/00000000-0000-4000-8000-000000000001/8a76.jpg"
18193
+ * ]
18194
+ * }
18195
+ */
18196
+ "application/json": {
18197
+ urls: string[];
18198
+ };
18199
+ };
18200
+ };
18201
+ responses: {
18202
+ /** @description Queued */
18203
+ 202: {
18204
+ headers: {
18205
+ [name: string]: unknown;
18206
+ };
18207
+ content: {
18208
+ /**
18209
+ * @example {
18210
+ * "queued": 1
18211
+ * }
18212
+ */
18213
+ "application/json": {
18214
+ data?: unknown;
18215
+ meta?: {
18216
+ [key: string]: unknown;
18217
+ };
18218
+ };
18219
+ };
18220
+ };
18221
+ /** @description Validation error */
18222
+ 400: {
18223
+ headers: {
18224
+ [name: string]: unknown;
18225
+ };
18226
+ content: {
18227
+ "application/json": components["schemas"]["Error"];
18228
+ };
18229
+ };
18230
+ /** @description Unauthorized */
18231
+ 401: {
18232
+ headers: {
18233
+ [name: string]: unknown;
18234
+ };
18235
+ content: {
18236
+ "application/json": components["schemas"]["Error"];
18237
+ };
18238
+ };
18239
+ /** @description Forbidden */
18240
+ 403: {
18241
+ headers: {
18242
+ [name: string]: unknown;
18243
+ };
18244
+ content: {
18245
+ "application/json": components["schemas"]["Error"];
18246
+ };
18247
+ };
18248
+ /** @description Not found */
18249
+ 404: {
18250
+ headers: {
18251
+ [name: string]: unknown;
18252
+ };
18253
+ content: {
18254
+ "application/json": components["schemas"]["Error"];
18255
+ };
18256
+ };
18257
+ /** @description Conflict (incl. Idempotency-Key reuse with different body) */
18258
+ 409: {
18259
+ headers: {
18260
+ [name: string]: unknown;
18261
+ };
18262
+ content: {
18263
+ "application/json": components["schemas"]["Error"];
18264
+ };
18265
+ };
18266
+ /** @description Rate limited */
18267
+ 429: {
18268
+ headers: {
18269
+ [name: string]: unknown;
18270
+ };
18271
+ content: {
18272
+ "application/json": components["schemas"]["Error"];
18273
+ };
18274
+ };
18275
+ };
18276
+ };
18277
+ delete?: never;
18278
+ options?: never;
18279
+ head?: never;
18280
+ patch?: never;
18281
+ trace?: never;
18282
+ };
17940
18283
  "/vehicles": {
17941
18284
  parameters: {
17942
18285
  query?: never;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vitrina/api",
3
- "version": "15.24.0",
3
+ "version": "15.25.0",
4
4
  "description": "Typed TypeScript SDK for the Vitrina API pública — generated from the committed openapi.public.json (ADR 0106).",
5
5
  "type": "module",
6
6
  "license": "MIT",