colacloud 1.0.0 → 1.2.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/README.md CHANGED
@@ -165,9 +165,10 @@ for (const cola of result.colas) {
165
165
  const usage = await client.usage.get();
166
166
 
167
167
  console.log(`Tier: ${usage.tier}`);
168
- console.log(`Used: ${usage.requests_used} / ${usage.monthly_limit}`);
169
- console.log(`Remaining: ${usage.requests_remaining}`);
170
- console.log(`Rate limit: ${usage.per_minute_limit} req/min`);
168
+ console.log(`Period: ${usage.current_period}`);
169
+ console.log(`Detail views: ${usage.detail_views.used} / ${usage.detail_views.limit}`);
170
+ console.log(`List records: ${usage.list_records.used} / ${usage.list_records.limit}`);
171
+ console.log(`Burst limit: ${usage.per_minute_limit} req/min`);
171
172
  ```
172
173
 
173
174
  ### Rate Limit Information
package/dist/index.d.mts CHANGED
@@ -80,73 +80,133 @@ interface ColaSummary {
80
80
  origin_name: string | null;
81
81
  /** Permit number of the applicant */
82
82
  permit_number: string | null;
83
- /** Date the COLA was approved */
83
+ /** Date the COLA was approved (ISO date string) */
84
84
  approval_date: string | null;
85
- /** Alcohol by volume percentage */
86
- abv: number | null;
87
- /** Container volume */
88
- volume: string | null;
89
85
  /** Number of images associated with this COLA */
90
86
  image_count: number;
91
- /** URL to the main/primary image */
92
- main_image_url: string | null;
87
+ /** Whether any barcode was extracted from label images */
88
+ has_barcode: boolean;
93
89
  }
94
90
  /**
95
91
  * Image associated with a COLA
96
92
  */
97
93
  interface ColaImage {
98
- /** Unique identifier for this image */
99
- image_id: string;
100
- /** URL to the image */
101
- url: string;
102
- /** Type of image (e.g., "front", "back") */
103
- image_type: string | null;
94
+ /** Unique TTB image identifier */
95
+ ttb_image_id: string;
96
+ /** Position of image within the COLA's image set (0-indexed) */
97
+ image_index: number;
98
+ /** Position on the container (e.g., "FRONT", "BACK", "NECK", "STRIP") */
99
+ container_position: string | null;
100
+ /** File extension (e.g., "jpg", "png") */
101
+ extension_type: string | null;
104
102
  /** Image width in pixels */
105
- width: number | null;
103
+ width_pixels: number | null;
106
104
  /** Image height in pixels */
107
- height: number | null;
105
+ height_pixels: number | null;
106
+ /** Physical label width in inches */
107
+ width_inches: number | null;
108
+ /** Physical label height in inches */
109
+ height_inches: number | null;
110
+ /** File size in megabytes */
111
+ file_size_mb: number | null;
112
+ /** Number of barcodes detected in this image */
113
+ barcode_count: number;
114
+ /** Number of QR codes detected in this image */
115
+ qrcode_count: number;
116
+ /** Signed URL to the image (when available) */
117
+ image_url?: string;
108
118
  }
109
119
  /**
110
120
  * Barcode found on a COLA label
111
121
  */
112
122
  interface ColaBarcode {
113
- /** The barcode value/number */
114
- barcode_value: string;
115
123
  /** Type of barcode (e.g., "UPC-A", "EAN-13") */
116
124
  barcode_type: string | null;
125
+ /** The barcode value/number */
126
+ barcode_value: string;
127
+ /** TTB image ID where this barcode was found */
128
+ ttb_image_id: string;
129
+ /** Barcode width in pixels */
130
+ width_pixels: number | null;
131
+ /** Barcode height in pixels */
132
+ height_pixels: number | null;
133
+ /** Barcode orientation (e.g., "horizontal", "vertical") */
134
+ orientation: string | null;
135
+ /** Position of the barcode relative to the image */
136
+ relative_image_position: string | null;
117
137
  }
118
138
  /**
119
139
  * Full details for a COLA including images and barcodes
120
140
  */
121
141
  interface ColaDetail extends ColaSummary {
122
- /** Images associated with this COLA */
142
+ /** Product class ID */
143
+ class_id: string | null;
144
+ /** Origin ID */
145
+ origin_id: string | null;
146
+ /** Date of the most recent update (ISO date string) */
147
+ latest_update_date: string | null;
148
+ /** Whether the container has a distinctive shape */
149
+ is_distinctive_container: boolean | null;
150
+ /** Distinctive container capacity */
151
+ for_distinctive_capacity: string | null;
152
+ /** Whether this is a resubmission */
153
+ is_resubmission: boolean | null;
154
+ /** TTB ID of the original submission if this is a resubmission */
155
+ for_resubmission_ttb_id: string | null;
156
+ /** State exemption, if applicable */
157
+ for_exemption_state: string | null;
158
+ /** Applicant address recipient */
159
+ address_recipient: string | null;
160
+ /** Applicant ZIP code */
161
+ address_zip_code: string | null;
162
+ /** Applicant state */
163
+ address_state: string | null;
164
+ /** Grape varietals (wine) */
165
+ grape_varietals: string | null;
166
+ /** Vintage year (wine) */
167
+ wine_vintage_year: number | null;
168
+ /** Appellation (wine) */
169
+ wine_appellation: string | null;
170
+ /** LLM-extracted container type */
171
+ llm_container_type: string | null;
172
+ /** LLM-extracted product description */
173
+ llm_product_description: string | null;
174
+ /** LLM-extracted brand established year */
175
+ llm_brand_established_year: number | null;
176
+ /** LLM-extracted tasting note flavors */
177
+ llm_tasting_note_flavors: string | null;
178
+ /** LLM-extracted artwork credit */
179
+ llm_artwork_credit: string | null;
180
+ /** LLM-extracted wine designation */
181
+ llm_wine_designation: string | null;
182
+ /** LLM-extracted International Bitterness Units (beer) */
183
+ llm_beer_ibu: number | null;
184
+ /** LLM-extracted hop varieties (beer) */
185
+ llm_beer_hops_varieties: string | null;
186
+ /** LLM-extracted aged years (liquor) */
187
+ llm_liquor_aged_years: number | null;
188
+ /** LLM-extracted finishing process (liquor) */
189
+ llm_liquor_finishing_process: string | null;
190
+ /** LLM-extracted grains used (liquor) */
191
+ llm_liquor_grains: string | null;
192
+ /** Primary barcode type on this COLA */
193
+ barcode_type: string | null;
194
+ /** Primary barcode value on this COLA */
195
+ barcode_value: string | null;
196
+ /** QR code URL if present */
197
+ qrcode_url: string | null;
198
+ /** Whether a front label image exists */
199
+ has_front_image: boolean;
200
+ /** Whether a back label image exists */
201
+ has_back_image: boolean;
202
+ /** Whether a neck label image exists */
203
+ has_neck_image: boolean;
204
+ /** Whether a strip label image exists */
205
+ has_strip_image: boolean;
206
+ /** All images associated with this COLA */
123
207
  images: ColaImage[];
124
- /** Barcodes found on the label */
208
+ /** All barcodes found on this COLA's images */
125
209
  barcodes: ColaBarcode[];
126
- /** LLM-extracted description */
127
- llm_description: string | null;
128
- /** LLM-extracted ingredients */
129
- llm_ingredients: string | null;
130
- /** LLM-extracted tasting notes */
131
- llm_tasting_notes: string | null;
132
- /** LLM-extracted producer/brand information */
133
- llm_producer: string | null;
134
- /** Vintage year for wines */
135
- vintage: number | null;
136
- /** Grape varietal(s) */
137
- varietal: string | null;
138
- /** Wine appellation */
139
- appellation: string | null;
140
- /** Beer style */
141
- beer_style: string | null;
142
- /** International Bitterness Units */
143
- ibu: number | null;
144
- /** Status of the COLA */
145
- status: string | null;
146
- /** Date the COLA was submitted */
147
- submitted_date: string | null;
148
- /** Serial number */
149
- serial_number: string | null;
150
210
  }
151
211
  /**
152
212
  * Query parameters for searching/listing COLAs
@@ -183,14 +243,20 @@ interface PermitteeSummary {
183
243
  company_name: string | null;
184
244
  /** State where the company is located */
185
245
  company_state: string | null;
246
+ /** Company ZIP code */
247
+ company_zip_code: string | null;
186
248
  /** Type of permit */
187
249
  permittee_type: string | null;
188
250
  /** Whether the permit is currently active */
189
251
  is_active: boolean;
252
+ /** Reason for active/inactive status */
253
+ active_reason: string | null;
190
254
  /** Total number of COLAs */
191
255
  colas: number;
192
256
  /** Number of approved COLAs */
193
257
  colas_approved: number;
258
+ /** Date of most recent COLA application (ISO date string) */
259
+ last_cola_application_date: string | null;
194
260
  }
195
261
  /**
196
262
  * Full details for a permittee including recent COLAs
@@ -227,21 +293,33 @@ interface BarcodeLookupResult {
227
293
  /** Total number of COLAs with this barcode */
228
294
  total_colas: number;
229
295
  }
296
+ /**
297
+ * API usage statistics for the current account
298
+ */
299
+ /**
300
+ * Usage quota for a single meter (detail views or list records)
301
+ */
302
+ interface UsageQuota {
303
+ /** Number used this period */
304
+ used: number;
305
+ /** Maximum allowed this period */
306
+ limit: number;
307
+ /** Remaining this period */
308
+ remaining: number;
309
+ }
230
310
  /**
231
311
  * API usage statistics for the current account
232
312
  */
233
313
  interface UsageStats {
234
- /** Account tier (e.g., "free", "pro", "enterprise") */
314
+ /** Account tier (e.g., "free", "starter", "pro") */
235
315
  tier: string;
236
- /** Monthly request limit */
237
- monthly_limit: number;
238
- /** Current billing period (ISO date string) */
316
+ /** Current billing period (YYYY-MM) */
239
317
  current_period: string;
240
- /** Number of requests used this period */
241
- requests_used: number;
242
- /** Number of requests remaining this period */
243
- requests_remaining: number;
244
- /** Per-minute rate limit */
318
+ /** Detail view usage and limits */
319
+ detail_views: UsageQuota;
320
+ /** List record usage and limits */
321
+ list_records: UsageQuota;
322
+ /** Per-minute burst limit */
245
323
  per_minute_limit: number;
246
324
  }
247
325
  /**
package/dist/index.d.ts CHANGED
@@ -80,73 +80,133 @@ interface ColaSummary {
80
80
  origin_name: string | null;
81
81
  /** Permit number of the applicant */
82
82
  permit_number: string | null;
83
- /** Date the COLA was approved */
83
+ /** Date the COLA was approved (ISO date string) */
84
84
  approval_date: string | null;
85
- /** Alcohol by volume percentage */
86
- abv: number | null;
87
- /** Container volume */
88
- volume: string | null;
89
85
  /** Number of images associated with this COLA */
90
86
  image_count: number;
91
- /** URL to the main/primary image */
92
- main_image_url: string | null;
87
+ /** Whether any barcode was extracted from label images */
88
+ has_barcode: boolean;
93
89
  }
94
90
  /**
95
91
  * Image associated with a COLA
96
92
  */
97
93
  interface ColaImage {
98
- /** Unique identifier for this image */
99
- image_id: string;
100
- /** URL to the image */
101
- url: string;
102
- /** Type of image (e.g., "front", "back") */
103
- image_type: string | null;
94
+ /** Unique TTB image identifier */
95
+ ttb_image_id: string;
96
+ /** Position of image within the COLA's image set (0-indexed) */
97
+ image_index: number;
98
+ /** Position on the container (e.g., "FRONT", "BACK", "NECK", "STRIP") */
99
+ container_position: string | null;
100
+ /** File extension (e.g., "jpg", "png") */
101
+ extension_type: string | null;
104
102
  /** Image width in pixels */
105
- width: number | null;
103
+ width_pixels: number | null;
106
104
  /** Image height in pixels */
107
- height: number | null;
105
+ height_pixels: number | null;
106
+ /** Physical label width in inches */
107
+ width_inches: number | null;
108
+ /** Physical label height in inches */
109
+ height_inches: number | null;
110
+ /** File size in megabytes */
111
+ file_size_mb: number | null;
112
+ /** Number of barcodes detected in this image */
113
+ barcode_count: number;
114
+ /** Number of QR codes detected in this image */
115
+ qrcode_count: number;
116
+ /** Signed URL to the image (when available) */
117
+ image_url?: string;
108
118
  }
109
119
  /**
110
120
  * Barcode found on a COLA label
111
121
  */
112
122
  interface ColaBarcode {
113
- /** The barcode value/number */
114
- barcode_value: string;
115
123
  /** Type of barcode (e.g., "UPC-A", "EAN-13") */
116
124
  barcode_type: string | null;
125
+ /** The barcode value/number */
126
+ barcode_value: string;
127
+ /** TTB image ID where this barcode was found */
128
+ ttb_image_id: string;
129
+ /** Barcode width in pixels */
130
+ width_pixels: number | null;
131
+ /** Barcode height in pixels */
132
+ height_pixels: number | null;
133
+ /** Barcode orientation (e.g., "horizontal", "vertical") */
134
+ orientation: string | null;
135
+ /** Position of the barcode relative to the image */
136
+ relative_image_position: string | null;
117
137
  }
118
138
  /**
119
139
  * Full details for a COLA including images and barcodes
120
140
  */
121
141
  interface ColaDetail extends ColaSummary {
122
- /** Images associated with this COLA */
142
+ /** Product class ID */
143
+ class_id: string | null;
144
+ /** Origin ID */
145
+ origin_id: string | null;
146
+ /** Date of the most recent update (ISO date string) */
147
+ latest_update_date: string | null;
148
+ /** Whether the container has a distinctive shape */
149
+ is_distinctive_container: boolean | null;
150
+ /** Distinctive container capacity */
151
+ for_distinctive_capacity: string | null;
152
+ /** Whether this is a resubmission */
153
+ is_resubmission: boolean | null;
154
+ /** TTB ID of the original submission if this is a resubmission */
155
+ for_resubmission_ttb_id: string | null;
156
+ /** State exemption, if applicable */
157
+ for_exemption_state: string | null;
158
+ /** Applicant address recipient */
159
+ address_recipient: string | null;
160
+ /** Applicant ZIP code */
161
+ address_zip_code: string | null;
162
+ /** Applicant state */
163
+ address_state: string | null;
164
+ /** Grape varietals (wine) */
165
+ grape_varietals: string | null;
166
+ /** Vintage year (wine) */
167
+ wine_vintage_year: number | null;
168
+ /** Appellation (wine) */
169
+ wine_appellation: string | null;
170
+ /** LLM-extracted container type */
171
+ llm_container_type: string | null;
172
+ /** LLM-extracted product description */
173
+ llm_product_description: string | null;
174
+ /** LLM-extracted brand established year */
175
+ llm_brand_established_year: number | null;
176
+ /** LLM-extracted tasting note flavors */
177
+ llm_tasting_note_flavors: string | null;
178
+ /** LLM-extracted artwork credit */
179
+ llm_artwork_credit: string | null;
180
+ /** LLM-extracted wine designation */
181
+ llm_wine_designation: string | null;
182
+ /** LLM-extracted International Bitterness Units (beer) */
183
+ llm_beer_ibu: number | null;
184
+ /** LLM-extracted hop varieties (beer) */
185
+ llm_beer_hops_varieties: string | null;
186
+ /** LLM-extracted aged years (liquor) */
187
+ llm_liquor_aged_years: number | null;
188
+ /** LLM-extracted finishing process (liquor) */
189
+ llm_liquor_finishing_process: string | null;
190
+ /** LLM-extracted grains used (liquor) */
191
+ llm_liquor_grains: string | null;
192
+ /** Primary barcode type on this COLA */
193
+ barcode_type: string | null;
194
+ /** Primary barcode value on this COLA */
195
+ barcode_value: string | null;
196
+ /** QR code URL if present */
197
+ qrcode_url: string | null;
198
+ /** Whether a front label image exists */
199
+ has_front_image: boolean;
200
+ /** Whether a back label image exists */
201
+ has_back_image: boolean;
202
+ /** Whether a neck label image exists */
203
+ has_neck_image: boolean;
204
+ /** Whether a strip label image exists */
205
+ has_strip_image: boolean;
206
+ /** All images associated with this COLA */
123
207
  images: ColaImage[];
124
- /** Barcodes found on the label */
208
+ /** All barcodes found on this COLA's images */
125
209
  barcodes: ColaBarcode[];
126
- /** LLM-extracted description */
127
- llm_description: string | null;
128
- /** LLM-extracted ingredients */
129
- llm_ingredients: string | null;
130
- /** LLM-extracted tasting notes */
131
- llm_tasting_notes: string | null;
132
- /** LLM-extracted producer/brand information */
133
- llm_producer: string | null;
134
- /** Vintage year for wines */
135
- vintage: number | null;
136
- /** Grape varietal(s) */
137
- varietal: string | null;
138
- /** Wine appellation */
139
- appellation: string | null;
140
- /** Beer style */
141
- beer_style: string | null;
142
- /** International Bitterness Units */
143
- ibu: number | null;
144
- /** Status of the COLA */
145
- status: string | null;
146
- /** Date the COLA was submitted */
147
- submitted_date: string | null;
148
- /** Serial number */
149
- serial_number: string | null;
150
210
  }
151
211
  /**
152
212
  * Query parameters for searching/listing COLAs
@@ -183,14 +243,20 @@ interface PermitteeSummary {
183
243
  company_name: string | null;
184
244
  /** State where the company is located */
185
245
  company_state: string | null;
246
+ /** Company ZIP code */
247
+ company_zip_code: string | null;
186
248
  /** Type of permit */
187
249
  permittee_type: string | null;
188
250
  /** Whether the permit is currently active */
189
251
  is_active: boolean;
252
+ /** Reason for active/inactive status */
253
+ active_reason: string | null;
190
254
  /** Total number of COLAs */
191
255
  colas: number;
192
256
  /** Number of approved COLAs */
193
257
  colas_approved: number;
258
+ /** Date of most recent COLA application (ISO date string) */
259
+ last_cola_application_date: string | null;
194
260
  }
195
261
  /**
196
262
  * Full details for a permittee including recent COLAs
@@ -227,21 +293,33 @@ interface BarcodeLookupResult {
227
293
  /** Total number of COLAs with this barcode */
228
294
  total_colas: number;
229
295
  }
296
+ /**
297
+ * API usage statistics for the current account
298
+ */
299
+ /**
300
+ * Usage quota for a single meter (detail views or list records)
301
+ */
302
+ interface UsageQuota {
303
+ /** Number used this period */
304
+ used: number;
305
+ /** Maximum allowed this period */
306
+ limit: number;
307
+ /** Remaining this period */
308
+ remaining: number;
309
+ }
230
310
  /**
231
311
  * API usage statistics for the current account
232
312
  */
233
313
  interface UsageStats {
234
- /** Account tier (e.g., "free", "pro", "enterprise") */
314
+ /** Account tier (e.g., "free", "starter", "pro") */
235
315
  tier: string;
236
- /** Monthly request limit */
237
- monthly_limit: number;
238
- /** Current billing period (ISO date string) */
316
+ /** Current billing period (YYYY-MM) */
239
317
  current_period: string;
240
- /** Number of requests used this period */
241
- requests_used: number;
242
- /** Number of requests remaining this period */
243
- requests_remaining: number;
244
- /** Per-minute rate limit */
318
+ /** Detail view usage and limits */
319
+ detail_views: UsageQuota;
320
+ /** List record usage and limits */
321
+ list_records: UsageQuota;
322
+ /** Per-minute burst limit */
245
323
  per_minute_limit: number;
246
324
  }
247
325
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "colacloud",
3
- "version": "1.0.0",
3
+ "version": "1.2.0",
4
4
  "description": "Official JavaScript/TypeScript SDK for the COLA Cloud API - access the TTB COLA Registry of alcohol product label approvals",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",