tango-python 1.3.0__py3-none-any.whl → 1.4.0__py3-none-any.whl

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.
tango/__init__.py CHANGED
@@ -50,7 +50,7 @@ from .webhooks import (
50
50
  )
51
51
  from .webhooks.receiver import Delivery, WebhookReceiver
52
52
 
53
- __version__ = "1.3.0"
53
+ __version__ = "1.4.0"
54
54
  __all__ = [
55
55
  "TangoClient",
56
56
  "TangoAPIError",
tango/client.py CHANGED
@@ -2540,6 +2540,7 @@ class TangoClient:
2540
2540
  filed_date_before: str | None = None,
2541
2541
  decision_date_after: str | None = None,
2542
2542
  decision_date_before: str | None = None,
2543
+ naics_code: str | None = None,
2543
2544
  search: str | None = None,
2544
2545
  ) -> PaginatedResponse:
2545
2546
  """
@@ -2569,6 +2570,7 @@ class TangoClient:
2569
2570
  filed_date_before: Filed date on or before
2570
2571
  decision_date_after: Decision date on or after
2571
2572
  decision_date_before: Decision date on or before
2573
+ naics_code: Filter by the solicitation's NAICS code (e.g. 541519)
2572
2574
  search: Full-text search over protest searchable fields
2573
2575
  """
2574
2576
  params: dict[str, Any] = {"page": page, "limit": min(limit, 100)}
@@ -2594,6 +2596,7 @@ class TangoClient:
2594
2596
  ("filed_date_before", filed_date_before),
2595
2597
  ("decision_date_after", decision_date_after),
2596
2598
  ("decision_date_before", decision_date_before),
2599
+ ("naics_code", naics_code),
2597
2600
  ("search", search),
2598
2601
  ):
2599
2602
  if val is not None:
@@ -4445,8 +4448,13 @@ class TangoClient:
4445
4448
  shape: str | None = None,
4446
4449
  flat: bool = False,
4447
4450
  flat_lists: bool = False,
4451
+ has_awards: bool | None = None,
4448
4452
  ) -> PaginatedResponse[dict[str, Any]]:
4449
- """List Product Service Codes (`/api/psc/`)."""
4453
+ """List Product Service Codes (`/api/psc/`).
4454
+
4455
+ Args:
4456
+ has_awards: When True, return only codes with contract award history.
4457
+ """
4450
4458
  params: dict[str, Any] = {"page": page, "limit": min(limit, 100)}
4451
4459
  if shape:
4452
4460
  params["shape"] = shape
@@ -4454,6 +4462,8 @@ class TangoClient:
4454
4462
  params["flat"] = "true"
4455
4463
  if flat_lists:
4456
4464
  params["flat_lists"] = "true"
4465
+ if has_awards is not None:
4466
+ params["has_awards"] = "true" if has_awards else "false"
4457
4467
  data = self._get("/api/psc/", params)
4458
4468
  return PaginatedResponse(
4459
4469
  count=int(data.get("count", 0)),
@@ -18,6 +18,13 @@ ADDITIONAL_INFO_SCHEMA: dict[str, FieldSchema] = {
18
18
  "link": FieldSchema(name="link", type=str, is_optional=True, is_list=False),
19
19
  }
20
20
 
21
+ ADDRESS_SCHEMA: dict[str, FieldSchema] = {
22
+ "city": FieldSchema(name="city", type=str, is_optional=True, is_list=False),
23
+ "country": FieldSchema(name="country", type=str, is_optional=True, is_list=False),
24
+ "state": FieldSchema(name="state", type=str, is_optional=True, is_list=False),
25
+ "zip": FieldSchema(name="zip", type=str, is_optional=True, is_list=False),
26
+ }
27
+
21
28
  AGENCY_SCHEMA: dict[str, FieldSchema] = {
22
29
  "abbreviation": FieldSchema(name="abbreviation", type=str, is_optional=True, is_list=False),
23
30
  "code": FieldSchema(name="code", type=int, is_optional=True, is_list=False),
@@ -68,7 +75,36 @@ APPENDIX_SCHEMA: dict[str, FieldSchema] = {
68
75
  ),
69
76
  }
70
77
 
78
+ ARCHIVE_SCHEMA: dict[str, FieldSchema] = {
79
+ "date": FieldSchema(name="date", type=date, is_optional=True, is_list=False),
80
+ "type": FieldSchema(name="type", type=str, is_optional=True, is_list=False),
81
+ }
82
+
71
83
  ATTACHMENTS_SCHEMA: dict[str, FieldSchema] = {
84
+ "attachment_id": FieldSchema(name="attachment_id", type=str, is_optional=True, is_list=False),
85
+ "extracted_text": FieldSchema(name="extracted_text", type=str, is_optional=True, is_list=False),
86
+ "file_size": FieldSchema(name="file_size", type=int, is_optional=True, is_list=False),
87
+ "mime_type": FieldSchema(name="mime_type", type=str, is_optional=True, is_list=False),
88
+ "name": FieldSchema(name="name", type=str, is_optional=True, is_list=False),
89
+ "posted_date": FieldSchema(name="posted_date", type=str, is_optional=True, is_list=False),
90
+ "resource_id": FieldSchema(name="resource_id", type=str, is_optional=True, is_list=False),
91
+ "type": FieldSchema(name="type", type=str, is_optional=True, is_list=False),
92
+ "url": FieldSchema(name="url", type=str, is_optional=True, is_list=False),
93
+ }
94
+
95
+ ATTACHMENTS2_SCHEMA: dict[str, FieldSchema] = {
96
+ "attachment_id": FieldSchema(name="attachment_id", type=str, is_optional=True, is_list=False),
97
+ "extracted_text": FieldSchema(name="extracted_text", type=str, is_optional=True, is_list=False),
98
+ "file_size": FieldSchema(name="file_size", type=int, is_optional=True, is_list=False),
99
+ "mime_type": FieldSchema(name="mime_type", type=str, is_optional=True, is_list=False),
100
+ "name": FieldSchema(name="name", type=str, is_optional=True, is_list=False),
101
+ "posted_date": FieldSchema(name="posted_date", type=datetime, is_optional=True, is_list=False),
102
+ "resource_id": FieldSchema(name="resource_id", type=str, is_optional=True, is_list=False),
103
+ "type": FieldSchema(name="type", type=str, is_optional=True, is_list=False),
104
+ "url": FieldSchema(name="url", type=str, is_optional=True, is_list=False),
105
+ }
106
+
107
+ ATTACHMENTS3_SCHEMA: dict[str, FieldSchema] = {
72
108
  "attachment_id": FieldSchema(name="attachment_id", type=str, is_optional=True, is_list=False),
73
109
  "extracted_text": FieldSchema(name="extracted_text", type=str, is_optional=True, is_list=False),
74
110
  "file_size": FieldSchema(name="file_size", type=str, is_optional=True, is_list=False),
@@ -88,22 +124,6 @@ AWARDEE_SCHEMA: dict[str, FieldSchema] = {
88
124
  "uei": FieldSchema(name="uei", type=str, is_optional=True, is_list=False),
89
125
  }
90
126
 
91
- AWARDING_OFFICE_SCHEMA: dict[str, FieldSchema] = {
92
- "agency_code": FieldSchema(name="agency_code", type=str, is_optional=True, is_list=False),
93
- "agency_name": FieldSchema(name="agency_name", type=str, is_optional=True, is_list=False),
94
- "department_code": FieldSchema(
95
- name="department_code", type=str, is_optional=True, is_list=False
96
- ),
97
- "department_name": FieldSchema(
98
- name="department_name", type=str, is_optional=True, is_list=False
99
- ),
100
- "office_code": FieldSchema(name="office_code", type=str, is_optional=True, is_list=False),
101
- "office_name": FieldSchema(name="office_name", type=str, is_optional=True, is_list=False),
102
- "organization_id": FieldSchema(
103
- name="organization_id", type=str, is_optional=True, is_list=False
104
- ),
105
- }
106
-
107
127
  BUDGET_APPROPRIATION_SCHEMA: dict[str, FieldSchema] = {
108
128
  "cgac": FieldSchema(name="cgac", type=int, is_optional=True, is_list=False),
109
129
  "fiscal_year": FieldSchema(name="fiscal_year", type=int, is_optional=True, is_list=False),
@@ -147,6 +167,18 @@ CURRENT_SCHEMA: dict[str, FieldSchema] = {
147
167
  "start_date": FieldSchema(name="start_date", type=date, is_optional=True, is_list=False),
148
168
  }
149
169
 
170
+ DECISIONS_SCHEMA: dict[str, FieldSchema] = {
171
+ "courtlistener_url": FieldSchema(
172
+ name="courtlistener_url", type=str, is_optional=True, is_list=False
173
+ ),
174
+ "decision_date": FieldSchema(name="decision_date", type=date, is_optional=True, is_list=False),
175
+ "document_type": FieldSchema(name="document_type", type=str, is_optional=True, is_list=False),
176
+ "document_url": FieldSchema(name="document_url", type=str, is_optional=True, is_list=False),
177
+ "judges": FieldSchema(name="judges", type=str, is_optional=True, is_list=False),
178
+ "outcome": FieldSchema(name="outcome", type=str, is_optional=True, is_list=False),
179
+ "title": FieldSchema(name="title", type=str, is_optional=True, is_list=False),
180
+ }
181
+
150
182
  DEPARTMENT_SCHEMA: dict[str, FieldSchema] = {
151
183
  "abbreviation": FieldSchema(name="abbreviation", type=str, is_optional=True, is_list=False),
152
184
  "cgac": FieldSchema(name="cgac", type=str, is_optional=True, is_list=False),
@@ -171,6 +203,45 @@ DEPARTMENT2_SCHEMA: dict[str, FieldSchema] = {
171
203
  "website": FieldSchema(name="website", type=str, is_optional=True, is_list=False),
172
204
  }
173
205
 
206
+ DETAILS_SCHEMA: dict[str, FieldSchema] = {
207
+ "business_case_url": FieldSchema(
208
+ name="business_case_url", type=str, is_optional=True, is_list=False
209
+ ),
210
+ "change_in_status": FieldSchema(
211
+ name="change_in_status", type=str, is_optional=True, is_list=False
212
+ ),
213
+ "current_uii": FieldSchema(name="current_uii", type=str, is_optional=True, is_list=False),
214
+ "investment_description": FieldSchema(
215
+ name="investment_description", type=str, is_optional=True, is_list=False
216
+ ),
217
+ "it_infrastructure_and_management_type": FieldSchema(
218
+ name="it_infrastructure_and_management_type", type=int, is_optional=True, is_list=False
219
+ ),
220
+ "last_updated": FieldSchema(
221
+ name="last_updated", type=datetime, is_optional=True, is_list=False
222
+ ),
223
+ "mission_delivery_and_management_support_area": FieldSchema(
224
+ name="mission_delivery_and_management_support_area",
225
+ type=int,
226
+ is_optional=True,
227
+ is_list=False,
228
+ ),
229
+ "mission_support_investment_categories": FieldSchema(
230
+ name="mission_support_investment_categories", type=str, is_optional=True, is_list=False
231
+ ),
232
+ "national_security_system_identifier": FieldSchema(
233
+ name="national_security_system_identifier", type=int, is_optional=True, is_list=False
234
+ ),
235
+ "previous_uii": FieldSchema(name="previous_uii", type=str, is_optional=True, is_list=False),
236
+ "public_urls": FieldSchema(name="public_urls", type=str, is_optional=True, is_list=False),
237
+ "shared_services_category": FieldSchema(
238
+ name="shared_services_category", type=str, is_optional=True, is_list=False
239
+ ),
240
+ "shared_services_identifier": FieldSchema(
241
+ name="shared_services_identifier", type=int, is_optional=True, is_list=False
242
+ ),
243
+ }
244
+
174
245
  DISPLAY_SCHEMA: dict[str, FieldSchema] = {
175
246
  "agency": FieldSchema(name="agency", type=str, is_optional=True, is_list=False),
176
247
  "anticipated_award_date": FieldSchema(
@@ -214,6 +285,45 @@ FEDERAL_OBLIGATIONS_SCHEMA: dict[str, FieldSchema] = {
214
285
  "total": FieldSchema(name="total", type=str, is_optional=True, is_list=False),
215
286
  }
216
287
 
288
+ FUNDING_SCHEMA: dict[str, FieldSchema] = {
289
+ "fy2020_contribution": FieldSchema(
290
+ name="fy2020_contribution", type=Decimal, is_optional=True, is_list=False
291
+ ),
292
+ "fy2020_internal_funding": FieldSchema(
293
+ name="fy2020_internal_funding", type=Decimal, is_optional=True, is_list=False
294
+ ),
295
+ "fy2021_contribution": FieldSchema(
296
+ name="fy2021_contribution", type=Decimal, is_optional=True, is_list=False
297
+ ),
298
+ "fy2021_internal_funding": FieldSchema(
299
+ name="fy2021_internal_funding", type=Decimal, is_optional=True, is_list=False
300
+ ),
301
+ "fy2022_contribution": FieldSchema(
302
+ name="fy2022_contribution", type=Decimal, is_optional=True, is_list=False
303
+ ),
304
+ "fy2022_internal_funding": FieldSchema(
305
+ name="fy2022_internal_funding", type=Decimal, is_optional=True, is_list=False
306
+ ),
307
+ "fy2023_contribution": FieldSchema(
308
+ name="fy2023_contribution", type=Decimal, is_optional=True, is_list=False
309
+ ),
310
+ "fy2023_internal_funding": FieldSchema(
311
+ name="fy2023_internal_funding", type=Decimal, is_optional=True, is_list=False
312
+ ),
313
+ "fy2024_contribution": FieldSchema(
314
+ name="fy2024_contribution", type=Decimal, is_optional=True, is_list=False
315
+ ),
316
+ "fy2024_internal_funding": FieldSchema(
317
+ name="fy2024_internal_funding", type=Decimal, is_optional=True, is_list=False
318
+ ),
319
+ "fy2025_contribution": FieldSchema(
320
+ name="fy2025_contribution", type=Decimal, is_optional=True, is_list=False
321
+ ),
322
+ "fy2025_internal_funding": FieldSchema(
323
+ name="fy2025_internal_funding", type=Decimal, is_optional=True, is_list=False
324
+ ),
325
+ }
326
+
217
327
  FUNDING_DETAILS_SCHEMA: dict[str, FieldSchema] = {
218
328
  "award_ceiling": FieldSchema(name="award_ceiling", type=int, is_optional=True, is_list=False),
219
329
  "award_floor": FieldSchema(name="award_floor", type=int, is_optional=True, is_list=False),
@@ -259,6 +369,14 @@ GSA_ELIBRARY_SCHEMA: dict[str, FieldSchema] = {
259
369
  "uei": FieldSchema(name="uei", type=str, is_optional=True, is_list=False),
260
370
  }
261
371
 
372
+ HIGHEST_OWNER_SCHEMA: dict[str, FieldSchema] = {
373
+ "cage_code": FieldSchema(name="cage_code", type=str, is_optional=True, is_list=False),
374
+ "legal_business_name": FieldSchema(
375
+ name="legal_business_name", type=str, is_optional=True, is_list=False
376
+ ),
377
+ "uei": FieldSchema(name="uei", type=str, is_optional=True, is_list=False),
378
+ }
379
+
262
380
  HISTORICAL_SCHEMA: dict[str, FieldSchema] = {
263
381
  "active": FieldSchema(name="active", type=bool, is_optional=True, is_list=False),
264
382
  "description": FieldSchema(name="description", type=str, is_optional=True, is_list=False),
@@ -297,7 +415,36 @@ LATEST_NOTICE_SCHEMA: dict[str, FieldSchema] = {
297
415
  "notice_id": FieldSchema(name="notice_id", type=str, is_optional=True, is_list=False),
298
416
  }
299
417
 
418
+ MAILING_ADDRESS_SCHEMA: dict[str, FieldSchema] = {
419
+ "address_line1": FieldSchema(name="address_line1", type=str, is_optional=True, is_list=False),
420
+ "address_line2": FieldSchema(name="address_line2", type=str, is_optional=True, is_list=False),
421
+ "city": FieldSchema(name="city", type=str, is_optional=True, is_list=False),
422
+ "country_code": FieldSchema(name="country_code", type=str, is_optional=True, is_list=False),
423
+ "country_name": FieldSchema(name="country_name", type=str, is_optional=True, is_list=False),
424
+ "county": FieldSchema(name="county", type=str, is_optional=True, is_list=False),
425
+ "county_code": FieldSchema(name="county_code", type=str, is_optional=True, is_list=False),
426
+ "fips_code": FieldSchema(name="fips_code", type=str, is_optional=True, is_list=False),
427
+ "state_or_province_code": FieldSchema(
428
+ name="state_or_province_code", type=int, is_optional=True, is_list=False
429
+ ),
430
+ "zip_code": FieldSchema(name="zip_code", type=int, is_optional=True, is_list=False),
431
+ "zip_code_plus4": FieldSchema(name="zip_code_plus4", type=str, is_optional=True, is_list=False),
432
+ }
433
+
300
434
  META_SCHEMA: dict[str, FieldSchema] = {
435
+ "link": FieldSchema(name="link", type=str, is_optional=True, is_list=False),
436
+ "notice_type": FieldSchema(
437
+ name="notice_type", type=dict, is_optional=True, is_list=False, nested_model="NoticeType"
438
+ ),
439
+ "parent_notice_id": FieldSchema(
440
+ name="parent_notice_id", type=str, is_optional=True, is_list=False
441
+ ),
442
+ "related_notice_id": FieldSchema(
443
+ name="related_notice_id", type=str, is_optional=True, is_list=False
444
+ ),
445
+ }
446
+
447
+ META2_SCHEMA: dict[str, FieldSchema] = {
301
448
  "attachments_count": FieldSchema(
302
449
  name="attachments_count", type=int, is_optional=True, is_list=False
303
450
  ),
@@ -307,6 +454,13 @@ META_SCHEMA: dict[str, FieldSchema] = {
307
454
  "notices_count": FieldSchema(name="notices_count", type=int, is_optional=True, is_list=False),
308
455
  }
309
456
 
457
+ NAICS_CODES_SCHEMA: dict[str, FieldSchema] = {
458
+ "code": FieldSchema(name="code", type=int, is_optional=True, is_list=False),
459
+ "sba_small_business": FieldSchema(
460
+ name="sba_small_business", type=str, is_optional=True, is_list=False
461
+ ),
462
+ }
463
+
310
464
  NARRATIVES_SCHEMA: dict[str, FieldSchema] = {
311
465
  "account_code": FieldSchema(name="account_code", type=int, is_optional=True, is_list=False),
312
466
  "account_heading": FieldSchema(
@@ -347,6 +501,27 @@ NARRATIVES_SCHEMA: dict[str, FieldSchema] = {
347
501
  }
348
502
 
349
503
  NOTICE_HISTORY_SCHEMA: dict[str, FieldSchema] = {
504
+ "deleted": FieldSchema(name="deleted", type=bool, is_optional=True, is_list=False),
505
+ "index": FieldSchema(name="index", type=int, is_optional=True, is_list=False),
506
+ "latest": FieldSchema(name="latest", type=bool, is_optional=True, is_list=False),
507
+ "notice_id": FieldSchema(name="notice_id", type=str, is_optional=True, is_list=False),
508
+ "notice_type_code": FieldSchema(
509
+ name="notice_type_code", type=str, is_optional=True, is_list=False
510
+ ),
511
+ "parent_notice_id": FieldSchema(
512
+ name="parent_notice_id", type=str, is_optional=True, is_list=False
513
+ ),
514
+ "posted_date": FieldSchema(name="posted_date", type=datetime, is_optional=True, is_list=False),
515
+ "related_notice_id": FieldSchema(
516
+ name="related_notice_id", type=str, is_optional=True, is_list=False
517
+ ),
518
+ "solicitation_number": FieldSchema(
519
+ name="solicitation_number", type=str, is_optional=True, is_list=False
520
+ ),
521
+ "title": FieldSchema(name="title", type=str, is_optional=True, is_list=False),
522
+ }
523
+
524
+ NOTICE_HISTORY2_SCHEMA: dict[str, FieldSchema] = {
350
525
  "deleted": FieldSchema(name="deleted", type=str, is_optional=True, is_list=False),
351
526
  "index": FieldSchema(name="index", type=str, is_optional=True, is_list=False),
352
527
  "latest": FieldSchema(name="latest", type=str, is_optional=True, is_list=False),
@@ -372,6 +547,22 @@ NOTICE_TYPE_SCHEMA: dict[str, FieldSchema] = {
372
547
  "type": FieldSchema(name="type", type=str, is_optional=True, is_list=False),
373
548
  }
374
549
 
550
+ OFFICE_SCHEMA: dict[str, FieldSchema] = {
551
+ "agency_code": FieldSchema(name="agency_code", type=str, is_optional=True, is_list=False),
552
+ "agency_name": FieldSchema(name="agency_name", type=str, is_optional=True, is_list=False),
553
+ "department_code": FieldSchema(
554
+ name="department_code", type=str, is_optional=True, is_list=False
555
+ ),
556
+ "department_name": FieldSchema(
557
+ name="department_name", type=str, is_optional=True, is_list=False
558
+ ),
559
+ "office_code": FieldSchema(name="office_code", type=str, is_optional=True, is_list=False),
560
+ "office_name": FieldSchema(name="office_name", type=str, is_optional=True, is_list=False),
561
+ "organization_id": FieldSchema(
562
+ name="organization_id", type=str, is_optional=True, is_list=False
563
+ ),
564
+ }
565
+
375
566
  OFFICERS_SCHEMA: dict[str, FieldSchema] = {
376
567
  "highly_compensated_officer_1_amount": FieldSchema(
377
568
  name="highly_compensated_officer_1_amount", type=Decimal, is_optional=True, is_list=False
@@ -406,6 +597,11 @@ OFFICERS_SCHEMA: dict[str, FieldSchema] = {
406
597
  }
407
598
 
408
599
  OPPORTUNITY_SCHEMA: dict[str, FieldSchema] = {
600
+ "link": FieldSchema(name="link", type=str, is_optional=True, is_list=False),
601
+ "opportunity_id": FieldSchema(name="opportunity_id", type=str, is_optional=True, is_list=False),
602
+ }
603
+
604
+ OPPORTUNITY2_SCHEMA: dict[str, FieldSchema] = {
409
605
  "opportunity_id": FieldSchema(name="opportunity_id", type=str, is_optional=True, is_list=False),
410
606
  "response_deadline": FieldSchema(
411
607
  name="response_deadline", type=datetime, is_optional=True, is_list=False
@@ -432,11 +628,32 @@ ORGANIZATION_SCHEMA: dict[str, FieldSchema] = {
432
628
  ),
433
629
  }
434
630
 
631
+ ORGANIZATION2_SCHEMA: dict[str, FieldSchema] = {
632
+ "agency_code": FieldSchema(name="agency_code", type=int, is_optional=True, is_list=False),
633
+ "agency_name": FieldSchema(name="agency_name", type=str, is_optional=True, is_list=False),
634
+ "department_code": FieldSchema(
635
+ name="department_code", type=int, is_optional=True, is_list=False
636
+ ),
637
+ "department_name": FieldSchema(
638
+ name="department_name", type=str, is_optional=True, is_list=False
639
+ ),
640
+ "office_code": FieldSchema(name="office_code", type=int, is_optional=True, is_list=False),
641
+ "office_name": FieldSchema(name="office_name", type=str, is_optional=True, is_list=False),
642
+ "organization_id": FieldSchema(
643
+ name="organization_id", type=str, is_optional=True, is_list=False
644
+ ),
645
+ }
646
+
435
647
  PARENT_AWARD_SCHEMA: dict[str, FieldSchema] = {
436
648
  "key": FieldSchema(name="key", type=str, is_optional=True, is_list=False),
437
649
  "piid": FieldSchema(name="piid", type=str, is_optional=True, is_list=False),
438
650
  }
439
651
 
652
+ PAST_PERFORMANCE_SCHEMA: dict[str, FieldSchema] = {
653
+ "summary": FieldSchema(name="summary", type=str, is_optional=True, is_list=False),
654
+ "top_agencies": FieldSchema(name="top_agencies", type=str, is_optional=True, is_list=False),
655
+ }
656
+
440
657
  PERIOD_OF_PERFORMANCE_SCHEMA: dict[str, FieldSchema] = {
441
658
  "current_end_date": FieldSchema(
442
659
  name="current_end_date", type=date, is_optional=True, is_list=False
@@ -447,16 +664,23 @@ PERIOD_OF_PERFORMANCE_SCHEMA: dict[str, FieldSchema] = {
447
664
  ),
448
665
  }
449
666
 
450
- PLACE_OF_PERFORMANCE_SCHEMA: dict[str, FieldSchema] = {
451
- "city_name": FieldSchema(name="city_name", type=str, is_optional=True, is_list=False),
667
+ PHYSICAL_ADDRESS_SCHEMA: dict[str, FieldSchema] = {
668
+ "address_line1": FieldSchema(name="address_line1", type=str, is_optional=True, is_list=False),
669
+ "address_line2": FieldSchema(name="address_line2", type=str, is_optional=True, is_list=False),
670
+ "city": FieldSchema(name="city", type=str, is_optional=True, is_list=False),
452
671
  "country_code": FieldSchema(name="country_code", type=str, is_optional=True, is_list=False),
453
672
  "country_name": FieldSchema(name="country_name", type=str, is_optional=True, is_list=False),
454
- "state_code": FieldSchema(name="state_code", type=str, is_optional=True, is_list=False),
455
- "state_name": FieldSchema(name="state_name", type=str, is_optional=True, is_list=False),
456
- "zip_code": FieldSchema(name="zip_code", type=str, is_optional=True, is_list=False),
673
+ "county": FieldSchema(name="county", type=str, is_optional=True, is_list=False),
674
+ "county_code": FieldSchema(name="county_code", type=str, is_optional=True, is_list=False),
675
+ "fips_code": FieldSchema(name="fips_code", type=str, is_optional=True, is_list=False),
676
+ "state_or_province_code": FieldSchema(
677
+ name="state_or_province_code", type=str, is_optional=True, is_list=False
678
+ ),
679
+ "zip_code": FieldSchema(name="zip_code", type=int, is_optional=True, is_list=False),
680
+ "zip_code_plus4": FieldSchema(name="zip_code_plus4", type=int, is_optional=True, is_list=False),
457
681
  }
458
682
 
459
- PLACE_OF_PERFORMANCE2_SCHEMA: dict[str, FieldSchema] = {
683
+ PLACE_OF_PERFORMANCE_SCHEMA: dict[str, FieldSchema] = {
460
684
  "city": FieldSchema(name="city", type=str, is_optional=True, is_list=False),
461
685
  "country": FieldSchema(name="country", type=str, is_optional=True, is_list=False),
462
686
  "state": FieldSchema(name="state", type=str, is_optional=True, is_list=False),
@@ -464,7 +688,24 @@ PLACE_OF_PERFORMANCE2_SCHEMA: dict[str, FieldSchema] = {
464
688
  "zip": FieldSchema(name="zip", type=str, is_optional=True, is_list=False),
465
689
  }
466
690
 
467
- SECONDARY_CONTACT_SCHEMA: dict[str, FieldSchema] = {
691
+ PLACE_OF_PERFORMANCE2_SCHEMA: dict[str, FieldSchema] = {
692
+ "city": FieldSchema(name="city", type=int, is_optional=True, is_list=False),
693
+ "country": FieldSchema(name="country", type=str, is_optional=True, is_list=False),
694
+ "state": FieldSchema(name="state", type=str, is_optional=True, is_list=False),
695
+ "street_address": FieldSchema(name="street_address", type=str, is_optional=True, is_list=False),
696
+ "zip": FieldSchema(name="zip", type=str, is_optional=True, is_list=False),
697
+ }
698
+
699
+ PLACE_OF_PERFORMANCE3_SCHEMA: dict[str, FieldSchema] = {
700
+ "city_name": FieldSchema(name="city_name", type=str, is_optional=True, is_list=False),
701
+ "country_code": FieldSchema(name="country_code", type=str, is_optional=True, is_list=False),
702
+ "country_name": FieldSchema(name="country_name", type=str, is_optional=True, is_list=False),
703
+ "state_code": FieldSchema(name="state_code", type=str, is_optional=True, is_list=False),
704
+ "state_name": FieldSchema(name="state_name", type=str, is_optional=True, is_list=False),
705
+ "zip_code": FieldSchema(name="zip_code", type=str, is_optional=True, is_list=False),
706
+ }
707
+
708
+ PRIMARY_CONTACT_SCHEMA: dict[str, FieldSchema] = {
468
709
  "email": FieldSchema(name="email", type=str, is_optional=True, is_list=False),
469
710
  "fax": FieldSchema(name="fax", type=str, is_optional=True, is_list=False),
470
711
  "full_name": FieldSchema(name="full_name", type=str, is_optional=True, is_list=False),
@@ -472,6 +713,37 @@ SECONDARY_CONTACT_SCHEMA: dict[str, FieldSchema] = {
472
713
  "title": FieldSchema(name="title", type=str, is_optional=True, is_list=False),
473
714
  }
474
715
 
716
+ RELATIONSHIPS_SCHEMA: dict[str, FieldSchema] = {
717
+ "display_name": FieldSchema(name="display_name", type=str, is_optional=True, is_list=False),
718
+ "relation": FieldSchema(name="relation", type=str, is_optional=True, is_list=False),
719
+ "uei": FieldSchema(name="uei", type=str, is_optional=True, is_list=False),
720
+ }
721
+
722
+ RESOLVED_AGENCY_SCHEMA: dict[str, FieldSchema] = {
723
+ "key": FieldSchema(name="key", type=str, is_optional=True, is_list=False),
724
+ "match_confidence": FieldSchema(
725
+ name="match_confidence", type=str, is_optional=True, is_list=False
726
+ ),
727
+ "name": FieldSchema(name="name", type=str, is_optional=True, is_list=False),
728
+ "rationale": FieldSchema(name="rationale", type=str, is_optional=True, is_list=False),
729
+ }
730
+
731
+ RESOLVED_PROTESTER_SCHEMA: dict[str, FieldSchema] = {
732
+ "match_confidence": FieldSchema(
733
+ name="match_confidence", type=str, is_optional=True, is_list=False
734
+ ),
735
+ "name": FieldSchema(name="name", type=str, is_optional=True, is_list=False),
736
+ "rationale": FieldSchema(name="rationale", type=str, is_optional=True, is_list=False),
737
+ "uei": FieldSchema(name="uei", type=str, is_optional=True, is_list=False),
738
+ }
739
+
740
+ SBA_BUSINESS_TYPES_SCHEMA: dict[str, FieldSchema] = {
741
+ "code": FieldSchema(name="code", type=str, is_optional=True, is_list=False),
742
+ "description": FieldSchema(name="description", type=str, is_optional=True, is_list=False),
743
+ "entry_date": FieldSchema(name="entry_date", type=date, is_optional=True, is_list=False),
744
+ "exit_date": FieldSchema(name="exit_date", type=date, is_optional=True, is_list=False),
745
+ }
746
+
475
747
  SIZE_STANDARDS_SCHEMA: dict[str, FieldSchema] = {
476
748
  "employee_limit": FieldSchema(name="employee_limit", type=str, is_optional=True, is_list=False),
477
749
  "revenue_limit": FieldSchema(name="revenue_limit", type=int, is_optional=True, is_list=False),
@@ -531,41 +803,62 @@ TRANSACTIONS2_SCHEMA: dict[str, FieldSchema] = {
531
803
 
532
804
  GENERATED_NESTED: dict[str, dict[str, FieldSchema]] = {
533
805
  "AdditionalInfo": ADDITIONAL_INFO_SCHEMA,
806
+ "Address": ADDRESS_SCHEMA,
534
807
  "Agency": AGENCY_SCHEMA,
535
808
  "Agency2": AGENCY2_SCHEMA,
536
809
  "Ancestors": ANCESTORS_SCHEMA,
537
810
  "Appendix": APPENDIX_SCHEMA,
811
+ "Archive": ARCHIVE_SCHEMA,
538
812
  "Attachments": ATTACHMENTS_SCHEMA,
813
+ "Attachments2": ATTACHMENTS2_SCHEMA,
814
+ "Attachments3": ATTACHMENTS3_SCHEMA,
539
815
  "Awardee": AWARDEE_SCHEMA,
540
- "AwardingOffice": AWARDING_OFFICE_SCHEMA,
541
816
  "BudgetAppropriation": BUDGET_APPROPRIATION_SCHEMA,
542
817
  "BudgetSpending": BUDGET_SPENDING_SCHEMA,
543
818
  "Children": CHILDREN_SCHEMA,
544
819
  "Current": CURRENT_SCHEMA,
820
+ "Decisions": DECISIONS_SCHEMA,
545
821
  "Department": DEPARTMENT_SCHEMA,
546
822
  "Department2": DEPARTMENT2_SCHEMA,
823
+ "Details": DETAILS_SCHEMA,
547
824
  "Display": DISPLAY_SCHEMA,
548
825
  "Documents": DOCUMENTS_SCHEMA,
549
826
  "FederalObligations": FEDERAL_OBLIGATIONS_SCHEMA,
827
+ "Funding": FUNDING_SCHEMA,
550
828
  "FundingDetails": FUNDING_DETAILS_SCHEMA,
551
829
  "Grant": GRANT_SCHEMA,
552
830
  "GrantorContact": GRANTOR_CONTACT_SCHEMA,
553
831
  "GsaElibrary": GSA_ELIBRARY_SCHEMA,
832
+ "HighestOwner": HIGHEST_OWNER_SCHEMA,
554
833
  "Historical": HISTORICAL_SCHEMA,
555
834
  "ImportantDates": IMPORTANT_DATES_SCHEMA,
556
835
  "LatestNotice": LATEST_NOTICE_SCHEMA,
836
+ "MailingAddress": MAILING_ADDRESS_SCHEMA,
557
837
  "Meta": META_SCHEMA,
838
+ "Meta2": META2_SCHEMA,
839
+ "NaicsCodes": NAICS_CODES_SCHEMA,
558
840
  "Narratives": NARRATIVES_SCHEMA,
559
841
  "NoticeHistory": NOTICE_HISTORY_SCHEMA,
842
+ "NoticeHistory2": NOTICE_HISTORY2_SCHEMA,
560
843
  "NoticeType": NOTICE_TYPE_SCHEMA,
844
+ "Office": OFFICE_SCHEMA,
561
845
  "Officers": OFFICERS_SCHEMA,
562
846
  "Opportunity": OPPORTUNITY_SCHEMA,
847
+ "Opportunity2": OPPORTUNITY2_SCHEMA,
563
848
  "Organization": ORGANIZATION_SCHEMA,
849
+ "Organization2": ORGANIZATION2_SCHEMA,
564
850
  "ParentAward": PARENT_AWARD_SCHEMA,
851
+ "PastPerformance": PAST_PERFORMANCE_SCHEMA,
565
852
  "PeriodOfPerformance": PERIOD_OF_PERFORMANCE_SCHEMA,
853
+ "PhysicalAddress": PHYSICAL_ADDRESS_SCHEMA,
566
854
  "PlaceOfPerformance": PLACE_OF_PERFORMANCE_SCHEMA,
567
855
  "PlaceOfPerformance2": PLACE_OF_PERFORMANCE2_SCHEMA,
568
- "SecondaryContact": SECONDARY_CONTACT_SCHEMA,
856
+ "PlaceOfPerformance3": PLACE_OF_PERFORMANCE3_SCHEMA,
857
+ "PrimaryContact": PRIMARY_CONTACT_SCHEMA,
858
+ "Relationships": RELATIONSHIPS_SCHEMA,
859
+ "ResolvedAgency": RESOLVED_AGENCY_SCHEMA,
860
+ "ResolvedProtester": RESOLVED_PROTESTER_SCHEMA,
861
+ "SbaBusinessTypes": SBA_BUSINESS_TYPES_SCHEMA,
569
862
  "SizeStandards": SIZE_STANDARDS_SCHEMA,
570
863
  "Solicitation": SOLICITATION_SCHEMA,
571
864
  "Topics": TOPICS_SCHEMA,
@@ -1090,6 +1383,151 @@ GENERATED_OVERLAY: dict[str, dict[str, FieldSchema]] = {
1090
1383
  ),
1091
1384
  "uuid": FieldSchema(name="uuid", type=str, is_optional=True, is_list=False),
1092
1385
  },
1386
+ "Entity": {
1387
+ "additional_website": FieldSchema(
1388
+ name="additional_website", type=str, is_optional=True, is_list=False
1389
+ ),
1390
+ "business_types": FieldSchema(
1391
+ name="business_types",
1392
+ type=dict,
1393
+ is_optional=True,
1394
+ is_list=False,
1395
+ nested_model="CodeDescription",
1396
+ ),
1397
+ "capabilities_link": FieldSchema(
1398
+ name="capabilities_link", type=str, is_optional=True, is_list=False
1399
+ ),
1400
+ "country_of_incorporation": FieldSchema(
1401
+ name="country_of_incorporation",
1402
+ type=dict,
1403
+ is_optional=True,
1404
+ is_list=False,
1405
+ nested_model="CodeDescription",
1406
+ ),
1407
+ "county": FieldSchema(name="county", type=str, is_optional=True, is_list=False),
1408
+ "current_principals": FieldSchema(
1409
+ name="current_principals", type=str, is_optional=True, is_list=False
1410
+ ),
1411
+ "display_name": FieldSchema(name="display_name", type=str, is_optional=True, is_list=False),
1412
+ "entity_structure": FieldSchema(
1413
+ name="entity_structure",
1414
+ type=dict,
1415
+ is_optional=True,
1416
+ is_list=False,
1417
+ nested_model="CodeDescription",
1418
+ ),
1419
+ "entity_type": FieldSchema(
1420
+ name="entity_type",
1421
+ type=dict,
1422
+ is_optional=True,
1423
+ is_list=False,
1424
+ nested_model="CodeDescription",
1425
+ ),
1426
+ "federal_obligations": FieldSchema(
1427
+ name="federal_obligations",
1428
+ type=dict,
1429
+ is_optional=True,
1430
+ is_list=False,
1431
+ nested_model="FederalObligations",
1432
+ ),
1433
+ "g2x_about": FieldSchema(name="g2x_about", type=str, is_optional=True, is_list=False),
1434
+ "g2x_ai_summary": FieldSchema(
1435
+ name="g2x_ai_summary", type=str, is_optional=True, is_list=False
1436
+ ),
1437
+ "g2x_employee_count": FieldSchema(
1438
+ name="g2x_employee_count", type=str, is_optional=True, is_list=False
1439
+ ),
1440
+ "highest_owner": FieldSchema(
1441
+ name="highest_owner",
1442
+ type=dict,
1443
+ is_optional=True,
1444
+ is_list=False,
1445
+ nested_model="HighestOwner",
1446
+ ),
1447
+ "immediate_owner": FieldSchema(
1448
+ name="immediate_owner",
1449
+ type=dict,
1450
+ is_optional=True,
1451
+ is_list=False,
1452
+ nested_model="HighestOwner",
1453
+ ),
1454
+ "mailing_address": FieldSchema(
1455
+ name="mailing_address",
1456
+ type=dict,
1457
+ is_optional=True,
1458
+ is_list=False,
1459
+ nested_model="MailingAddress",
1460
+ ),
1461
+ "naics_codes": FieldSchema(
1462
+ name="naics_codes", type=dict, is_optional=True, is_list=True, nested_model="NaicsCodes"
1463
+ ),
1464
+ "naics_small_codes": FieldSchema(
1465
+ name="naics_small_codes", type=int, is_optional=True, is_list=True
1466
+ ),
1467
+ "non_fed_govt_certifications": FieldSchema(
1468
+ name="non_fed_govt_certifications", type=str, is_optional=True, is_list=False
1469
+ ),
1470
+ "organization_structure": FieldSchema(
1471
+ name="organization_structure",
1472
+ type=dict,
1473
+ is_optional=True,
1474
+ is_list=False,
1475
+ nested_model="CodeDescription",
1476
+ ),
1477
+ "past_performance": FieldSchema(
1478
+ name="past_performance",
1479
+ type=dict,
1480
+ is_optional=True,
1481
+ is_list=False,
1482
+ nested_model="PastPerformance",
1483
+ ),
1484
+ "physical_address": FieldSchema(
1485
+ name="physical_address",
1486
+ type=dict,
1487
+ is_optional=True,
1488
+ is_list=False,
1489
+ nested_model="PhysicalAddress",
1490
+ ),
1491
+ "profit_structure": FieldSchema(
1492
+ name="profit_structure",
1493
+ type=dict,
1494
+ is_optional=True,
1495
+ is_list=False,
1496
+ nested_model="CodeDescription",
1497
+ ),
1498
+ "purpose_of_registration": FieldSchema(
1499
+ name="purpose_of_registration",
1500
+ type=dict,
1501
+ is_optional=True,
1502
+ is_list=False,
1503
+ nested_model="CodeDescription",
1504
+ ),
1505
+ "relationships": FieldSchema(
1506
+ name="relationships",
1507
+ type=dict,
1508
+ is_optional=True,
1509
+ is_list=True,
1510
+ nested_model="Relationships",
1511
+ ),
1512
+ "sba_business_types": FieldSchema(
1513
+ name="sba_business_types",
1514
+ type=dict,
1515
+ is_optional=True,
1516
+ is_list=True,
1517
+ nested_model="SbaBusinessTypes",
1518
+ ),
1519
+ "special_equip_material": FieldSchema(
1520
+ name="special_equip_material", type=str, is_optional=True, is_list=False
1521
+ ),
1522
+ "state_of_incorporation": FieldSchema(
1523
+ name="state_of_incorporation",
1524
+ type=dict,
1525
+ is_optional=True,
1526
+ is_list=False,
1527
+ nested_model="CodeDescription",
1528
+ ),
1529
+ "uuid": FieldSchema(name="uuid", type=str, is_optional=True, is_list=False),
1530
+ },
1093
1531
  "Exclusion": {
1094
1532
  "activate_date": FieldSchema(
1095
1533
  name="activate_date", type=date, is_optional=True, is_list=False
@@ -1376,6 +1814,17 @@ GENERATED_OVERLAY: dict[str, dict[str, FieldSchema]] = {
1376
1814
  "vehicle_uuid": FieldSchema(name="vehicle_uuid", type=str, is_optional=True, is_list=False),
1377
1815
  "who_can_use": FieldSchema(name="who_can_use", type=str, is_optional=True, is_list=False),
1378
1816
  },
1817
+ "ITDashboardInvestment": {
1818
+ "details": FieldSchema(
1819
+ name="details", type=dict, is_optional=True, is_list=False, nested_model="Details"
1820
+ ),
1821
+ "funding": FieldSchema(
1822
+ name="funding", type=dict, is_optional=True, is_list=False, nested_model="Funding"
1823
+ ),
1824
+ "organization_id": FieldSchema(
1825
+ name="organization_id", type=str, is_optional=True, is_list=False
1826
+ ),
1827
+ },
1379
1828
  "MasSin": {
1380
1829
  "description": FieldSchema(name="description", type=str, is_optional=True, is_list=False),
1381
1830
  "expiration_date": FieldSchema(
@@ -1425,6 +1874,65 @@ GENERATED_OVERLAY: dict[str, dict[str, FieldSchema]] = {
1425
1874
  nested_model="SizeStandards",
1426
1875
  ),
1427
1876
  },
1877
+ "Notice": {
1878
+ "address": FieldSchema(
1879
+ name="address", type=dict, is_optional=True, is_list=False, nested_model="Address"
1880
+ ),
1881
+ "archive": FieldSchema(
1882
+ name="archive", type=dict, is_optional=True, is_list=False, nested_model="Archive"
1883
+ ),
1884
+ "attachments": FieldSchema(
1885
+ name="attachments",
1886
+ type=dict,
1887
+ is_optional=True,
1888
+ is_list=True,
1889
+ nested_model="Attachments",
1890
+ ),
1891
+ "meta": FieldSchema(
1892
+ name="meta", type=dict, is_optional=True, is_list=False, nested_model="Meta"
1893
+ ),
1894
+ "office": FieldSchema(
1895
+ name="office", type=dict, is_optional=True, is_list=False, nested_model="Office"
1896
+ ),
1897
+ "opportunity": FieldSchema(
1898
+ name="opportunity",
1899
+ type=dict,
1900
+ is_optional=True,
1901
+ is_list=False,
1902
+ nested_model="Opportunity",
1903
+ ),
1904
+ "opportunity_id": FieldSchema(
1905
+ name="opportunity_id", type=str, is_optional=True, is_list=False
1906
+ ),
1907
+ "place_of_performance": FieldSchema(
1908
+ name="place_of_performance",
1909
+ type=dict,
1910
+ is_optional=True,
1911
+ is_list=False,
1912
+ nested_model="PlaceOfPerformance",
1913
+ ),
1914
+ "primary_contact": FieldSchema(
1915
+ name="primary_contact",
1916
+ type=dict,
1917
+ is_optional=True,
1918
+ is_list=False,
1919
+ nested_model="PrimaryContact",
1920
+ ),
1921
+ "secondary_contact": FieldSchema(
1922
+ name="secondary_contact",
1923
+ type=dict,
1924
+ is_optional=True,
1925
+ is_list=False,
1926
+ nested_model="PrimaryContact",
1927
+ ),
1928
+ "set_aside": FieldSchema(
1929
+ name="set_aside",
1930
+ type=dict,
1931
+ is_optional=True,
1932
+ is_list=False,
1933
+ nested_model="CodeDescription",
1934
+ ),
1935
+ },
1428
1936
  "OTA": {
1429
1937
  "award_type": FieldSchema(
1430
1938
  name="award_type",
@@ -1438,7 +1946,7 @@ GENERATED_OVERLAY: dict[str, dict[str, FieldSchema]] = {
1438
1946
  type=dict,
1439
1947
  is_optional=True,
1440
1948
  is_list=False,
1441
- nested_model="AwardingOffice",
1949
+ nested_model="Office",
1442
1950
  ),
1443
1951
  "base_and_exercised_options_value": FieldSchema(
1444
1952
  name="base_and_exercised_options_value", type=Decimal, is_optional=True, is_list=False
@@ -1459,11 +1967,7 @@ GENERATED_OVERLAY: dict[str, dict[str, FieldSchema]] = {
1459
1967
  ),
1460
1968
  "fiscal_year": FieldSchema(name="fiscal_year", type=int, is_optional=True, is_list=False),
1461
1969
  "funding_office": FieldSchema(
1462
- name="funding_office",
1463
- type=dict,
1464
- is_optional=True,
1465
- is_list=False,
1466
- nested_model="AwardingOffice",
1970
+ name="funding_office", type=dict, is_optional=True, is_list=False, nested_model="Office"
1467
1971
  ),
1468
1972
  "non_governmental_dollars": FieldSchema(
1469
1973
  name="non_governmental_dollars", type=Decimal, is_optional=True, is_list=False
@@ -1496,7 +2000,7 @@ GENERATED_OVERLAY: dict[str, dict[str, FieldSchema]] = {
1496
2000
  type=dict,
1497
2001
  is_optional=True,
1498
2002
  is_list=False,
1499
- nested_model="PlaceOfPerformance",
2003
+ nested_model="PlaceOfPerformance3",
1500
2004
  ),
1501
2005
  "psc": FieldSchema(
1502
2006
  name="psc", type=dict, is_optional=True, is_list=False, nested_model="CodeDescription"
@@ -1523,7 +2027,7 @@ GENERATED_OVERLAY: dict[str, dict[str, FieldSchema]] = {
1523
2027
  type=dict,
1524
2028
  is_optional=True,
1525
2029
  is_list=False,
1526
- nested_model="AwardingOffice",
2030
+ nested_model="Office",
1527
2031
  ),
1528
2032
  "base_and_exercised_options_value": FieldSchema(
1529
2033
  name="base_and_exercised_options_value", type=Decimal, is_optional=True, is_list=False
@@ -1544,11 +2048,7 @@ GENERATED_OVERLAY: dict[str, dict[str, FieldSchema]] = {
1544
2048
  ),
1545
2049
  "fiscal_year": FieldSchema(name="fiscal_year", type=int, is_optional=True, is_list=False),
1546
2050
  "funding_office": FieldSchema(
1547
- name="funding_office",
1548
- type=dict,
1549
- is_optional=True,
1550
- is_list=False,
1551
- nested_model="AwardingOffice",
2051
+ name="funding_office", type=dict, is_optional=True, is_list=False, nested_model="Office"
1552
2052
  ),
1553
2053
  "non_governmental_dollars": FieldSchema(
1554
2054
  name="non_governmental_dollars", type=Decimal, is_optional=True, is_list=False
@@ -1571,7 +2071,7 @@ GENERATED_OVERLAY: dict[str, dict[str, FieldSchema]] = {
1571
2071
  type=dict,
1572
2072
  is_optional=True,
1573
2073
  is_list=False,
1574
- nested_model="PlaceOfPerformance",
2074
+ nested_model="PlaceOfPerformance3",
1575
2075
  ),
1576
2076
  "psc": FieldSchema(
1577
2077
  name="psc", type=dict, is_optional=True, is_list=False, nested_model="CodeDescription"
@@ -1626,7 +2126,7 @@ GENERATED_OVERLAY: dict[str, dict[str, FieldSchema]] = {
1626
2126
  type=dict,
1627
2127
  is_optional=True,
1628
2128
  is_list=False,
1629
- nested_model="Attachments",
2129
+ nested_model="Attachments3",
1630
2130
  ),
1631
2131
  "department": FieldSchema(
1632
2132
  name="department",
@@ -1649,14 +2149,14 @@ GENERATED_OVERLAY: dict[str, dict[str, FieldSchema]] = {
1649
2149
  name="latest_notice_id", type=str, is_optional=True, is_list=False
1650
2150
  ),
1651
2151
  "meta": FieldSchema(
1652
- name="meta", type=dict, is_optional=True, is_list=False, nested_model="Meta"
2152
+ name="meta", type=dict, is_optional=True, is_list=False, nested_model="Meta2"
1653
2153
  ),
1654
2154
  "notice_history": FieldSchema(
1655
2155
  name="notice_history",
1656
2156
  type=dict,
1657
2157
  is_optional=True,
1658
2158
  is_list=False,
1659
- nested_model="NoticeHistory",
2159
+ nested_model="NoticeHistory2",
1660
2160
  ),
1661
2161
  "office_id": FieldSchema(name="office_id", type=str, is_optional=True, is_list=False),
1662
2162
  "place_of_performance": FieldSchema(
@@ -1664,14 +2164,14 @@ GENERATED_OVERLAY: dict[str, dict[str, FieldSchema]] = {
1664
2164
  type=dict,
1665
2165
  is_optional=True,
1666
2166
  is_list=False,
1667
- nested_model="PlaceOfPerformance2",
2167
+ nested_model="PlaceOfPerformance",
1668
2168
  ),
1669
2169
  "secondary_contact": FieldSchema(
1670
2170
  name="secondary_contact",
1671
2171
  type=dict,
1672
2172
  is_optional=True,
1673
2173
  is_list=False,
1674
- nested_model="SecondaryContact",
2174
+ nested_model="PrimaryContact",
1675
2175
  ),
1676
2176
  "set_aside": FieldSchema(
1677
2177
  name="set_aside",
@@ -1779,6 +2279,62 @@ GENERATED_OVERLAY: dict[str, dict[str, FieldSchema]] = {
1779
2279
  ),
1780
2280
  "parent": FieldSchema(name="parent", type=str, is_optional=True, is_list=False),
1781
2281
  },
2282
+ "Protest": {
2283
+ "challenged_party": FieldSchema(
2284
+ name="challenged_party", type=str, is_optional=True, is_list=False
2285
+ ),
2286
+ "decision_text": FieldSchema(
2287
+ name="decision_text", type=str, is_optional=True, is_list=False
2288
+ ),
2289
+ "decisions": FieldSchema(
2290
+ name="decisions", type=dict, is_optional=True, is_list=True, nested_model="Decisions"
2291
+ ),
2292
+ "judge": FieldSchema(name="judge", type=str, is_optional=True, is_list=False),
2293
+ "naics_code": FieldSchema(name="naics_code", type=str, is_optional=True, is_list=False),
2294
+ "outcome_reason": FieldSchema(
2295
+ name="outcome_reason", type=str, is_optional=True, is_list=False
2296
+ ),
2297
+ "resolved_agency": FieldSchema(
2298
+ name="resolved_agency",
2299
+ type=dict,
2300
+ is_optional=True,
2301
+ is_list=False,
2302
+ nested_model="ResolvedAgency",
2303
+ ),
2304
+ "resolved_protester": FieldSchema(
2305
+ name="resolved_protester",
2306
+ type=dict,
2307
+ is_optional=True,
2308
+ is_list=False,
2309
+ nested_model="ResolvedProtester",
2310
+ ),
2311
+ "size_standard": FieldSchema(
2312
+ name="size_standard", type=str, is_optional=True, is_list=False
2313
+ ),
2314
+ },
2315
+ "ProtestDocket": {
2316
+ "challenged_party": FieldSchema(
2317
+ name="challenged_party", type=str, is_optional=True, is_list=False
2318
+ ),
2319
+ "decision_text": FieldSchema(
2320
+ name="decision_text", type=str, is_optional=True, is_list=False
2321
+ ),
2322
+ "judge": FieldSchema(name="judge", type=str, is_optional=True, is_list=False),
2323
+ "naics_code": FieldSchema(name="naics_code", type=str, is_optional=True, is_list=False),
2324
+ "organization": FieldSchema(
2325
+ name="organization",
2326
+ type=dict,
2327
+ is_optional=True,
2328
+ is_list=False,
2329
+ nested_model="Organization2",
2330
+ ),
2331
+ "outcome_reason": FieldSchema(
2332
+ name="outcome_reason", type=str, is_optional=True, is_list=False
2333
+ ),
2334
+ "size_standard": FieldSchema(
2335
+ name="size_standard", type=str, is_optional=True, is_list=False
2336
+ ),
2337
+ },
1782
2338
  "SbirSolicitation": {
1783
2339
  "activity": FieldSchema(name="activity", type=str, is_optional=True, is_list=False),
1784
2340
  "cycle": FieldSchema(name="cycle", type=str, is_optional=True, is_list=False),
@@ -1838,7 +2394,7 @@ GENERATED_OVERLAY: dict[str, dict[str, FieldSchema]] = {
1838
2394
  type=dict,
1839
2395
  is_optional=True,
1840
2396
  is_list=False,
1841
- nested_model="Opportunity",
2397
+ nested_model="Opportunity2",
1842
2398
  ),
1843
2399
  "release_date": FieldSchema(
1844
2400
  name="release_date", type=date, is_optional=True, is_list=False
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tango-python
3
- Version: 1.3.0
3
+ Version: 1.4.0
4
4
  Summary: Python SDK for the Tango API
5
5
  Project-URL: Homepage, https://github.com/makegov/tango-python
6
6
  Project-URL: Documentation, https://docs.makegov.com/tango-python
@@ -1,11 +1,11 @@
1
- tango/__init__.py,sha256=3V48WMqtixl5whcpX2-Q0_7mUS0O2PS3KOEHdszdO48,2116
2
- tango/client.py,sha256=c0E727B0d3h5Wb28ZdJe310LPYsbMJSo2-VKM2lt2kg,191940
1
+ tango/__init__.py,sha256=uWoNiW6r4Nl5qj4i1FamGX7e-hMHyinEGnTpPIEPAxU,2116
2
+ tango/client.py,sha256=dwe6stsasKblpgX67X8U6INkaFZTOcx0pzoJY0z1R3I,192347
3
3
  tango/exceptions.py,sha256=B1t27BBxHcPglAfJQyan5khNEYNAyF6Wkp2EmPMdRxM,3858
4
4
  tango/models.py,sha256=WubpSHIKzaH0iGwm3Mh9ydGj_lRhr42otbpRUz0GfRo,42443
5
5
  tango/shapes/__init__.py,sha256=7ea1WU74jp4znhNw-gXruag6m6eyPZtbVgbDFmFUWro,1072
6
6
  tango/shapes/explicit_schemas.py,sha256=8HgxKpAi2U80JP_MnABnW1JpYJA05aoOZSJsJIcyIWQ,71421
7
7
  tango/shapes/factory.py,sha256=uDPhnp6VVzrLBKodxteZy5AcU43juEv-qKVRWth51j0,31550
8
- tango/shapes/generated_overlay.py,sha256=wxznTjPwbSLzdVHOmJNJM7j9UaCtYXeDPdCbeZnL574,88244
8
+ tango/shapes/generated_overlay.py,sha256=8ycXBD3Xc80bz0D6pMytb66hIHEv69-H7_h492S2Pfk,112810
9
9
  tango/shapes/generator.py,sha256=xzakpwTwqTMUr89I06hp54-FIYZziviWHk2Glscg-LM,22775
10
10
  tango/shapes/models.py,sha256=h3pIhOqrrdlN953Y6r0oney5HFbKPOD-frRndRWimJ0,3018
11
11
  tango/shapes/parser.py,sha256=AecNx5oT_hV_pf2AWZnsR8Y2aLmCtjfgS9-znA2Pesc,27429
@@ -16,8 +16,8 @@ tango/webhooks/cli.py,sha256=f_vQbJ2AeSQjKnQo7MxHFyUB2SAKcgHYmGQULS0isqQ,13858
16
16
  tango/webhooks/receiver.py,sha256=5yhsVhlLyoxmOCGvmbynWAIlDB2OaCPVf1H4GA1SxmU,9279
17
17
  tango/webhooks/signing.py,sha256=92Ee-0B6PR7ZkvY3Np3gzl88-mtfKkh-I7lxqCe2lGw,2374
18
18
  tango/webhooks/simulate.py,sha256=g2Osa0FYU5mJuon07T2aUCtmkUoTEzsY261tlp76fF0,3165
19
- tango_python-1.3.0.dist-info/METADATA,sha256=dcEzRUvkWiMU6LcGrFPEmY7trQCTAN0WF6wL3RZrh2Y,20599
20
- tango_python-1.3.0.dist-info/WHEEL,sha256=lCkmxWfQsSc9CfIClYeavTdQeEX2toPqufh9gI35EQA,87
21
- tango_python-1.3.0.dist-info/entry_points.txt,sha256=kGLUbglUjuaAqEFvOZ1QuSW0vWb6VeSpCIFKaOFkKoQ,50
22
- tango_python-1.3.0.dist-info/licenses/LICENSE,sha256=j2kYVHMwTkoGn3ZNScnrdIueG0k2XzB_LCPFoyBc2wk,1064
23
- tango_python-1.3.0.dist-info/RECORD,,
19
+ tango_python-1.4.0.dist-info/METADATA,sha256=w8SoNn5PBCH3qeqfD1y1Pi8t_LOmWNxn18_eOFvSCds,20599
20
+ tango_python-1.4.0.dist-info/WHEEL,sha256=lCkmxWfQsSc9CfIClYeavTdQeEX2toPqufh9gI35EQA,87
21
+ tango_python-1.4.0.dist-info/entry_points.txt,sha256=kGLUbglUjuaAqEFvOZ1QuSW0vWb6VeSpCIFKaOFkKoQ,50
22
+ tango_python-1.4.0.dist-info/licenses/LICENSE,sha256=j2kYVHMwTkoGn3ZNScnrdIueG0k2XzB_LCPFoyBc2wk,1064
23
+ tango_python-1.4.0.dist-info/RECORD,,