# /vneps/tenders

`POST /api/vneps/tenders`

Price: 20 credits

Vietnam contractor selection notice from muasamcong.mpi.gov.vn by notice number or URL: the notice with lots, guarantees, locations and amendments, the procurement plan package, cancellation, shortlist, online price re-offer rounds, bid opening with every bidder's price, and the award result with winners, lot prices and awarded goods.

## How to use it

Takes the `id` of a vneps/tenders/search row. `bid_submissions` fills once bids are opened and `award` once the result is published; `reoffer` is set on shortened online quotations instead of `notice`. Shortened direct appointments, and other notices the portal publishes only as an award, carry `award` without `notice` or `package`.

## Parameters

- `access-token` (string, required)

## Request body

- `timeout` (integer) — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)
- `id` (string, required) — Notice number or notice URL (examples: "IB2600554528", "DC2600017791", "https://muasamcong.mpi.gov.vn/web/guest/contractor-selection?p_p_id=egpportalcontractorselectionv2_WAR_egpportalcontractorselectionv2&id=d46f8cd7-ed1a-4cd2-b70e-e63b41b996ec&notifyNo=IB2600554528")

## Response

### 200 — Successful Response

- `@type` (string) (default: "VnepsTender")
- `id` (string, required)
- `notice_id` (string, nullable)
- `notify_version` (string, nullable)
- `url` (string, nullable)
- `name` (string, nullable)
- `project_name` (string, nullable)
- `package_number` (string, nullable)
- `package_id` (string, nullable)
- `plan_number` (string, nullable)
- `plan_type` (string, nullable)
- `stage` (string, nullable)
- `status` (string, nullable)
- `notify_status` (string, nullable)
- `invest_fields` (array) (default: [])
- `bid_field` (string, nullable)
- `procedure` (string, nullable)
- `selection_method` (string, nullable)
- `bid_mode` (string, nullable)
- `work_type` (string, nullable)
- `is_online` (boolean, nullable)
- `is_domestic` (boolean, nullable)
- `is_multi_lot` (boolean, nullable)
- `is_medicine` (boolean, nullable)
- `medicine_count` (integer, nullable)
- `price` (number, nullable)
- `reoffer_start_price` (number, nullable)
- `reoffer_price_step` (number, nullable)
- `investor` (object, nullable)
  - `@type` (string) (default: "VnepsParty")
  - `code` (string, nullable)
  - `name` (string, nullable)
- `procuring_entity` (object, nullable)
  - `@type` (string) (default: "VnepsParty")
  - `code` (string, nullable)
  - `name` (string, nullable)
- `joint_venture_name` (string, nullable)
- `locations` (array) (default: [])
  - `@type` (string) (default: "VnepsLocation")
  - `province_code` (string, nullable)
  - `province_name` (string, nullable)
  - `district_code` (string, nullable)
  - `district_name` (string, nullable)
  - `ward_code` (string, nullable)
  - `ward_name` (string, nullable)
- `published_at` (integer, nullable)
- `original_published_at` (integer, nullable)
- `bid_close_at` (integer, nullable)
- `bid_open_at` (integer, nullable)
- `actual_bid_open_at` (integer, nullable)
- `bid_opening_published_at` (integer, nullable)
- `award_published_at` (integer, nullable)
- `award_decision_at` (integer, nullable)
- `approval_at` (integer, nullable)
- `bidder_count` (integer, nullable)
- `technical_bidder_count` (integer, nullable)
- `clarification_count` (integer, nullable)
- `petition_count` (integer, nullable)
- `petition_documents_count` (integer, nullable)
- `petition_selection_count` (integer, nullable)
- `petition_result_count` (integer, nullable)
- `is_passed` (boolean, nullable)
- `winners` (array) (default: [])
  - `@type` (string) (default: "VnepsWinner")
  - `code` (string, nullable)
  - `name` (string, nullable)
  - `price` (number, nullable)
  - `lot_number` (string, nullable)
  - `lot_name` (string, nullable)
- `lot_winning_prices` (array) (default: [])
- `notice` (object, nullable)
  - `@type` (string) (default: "VnepsNotice")
  - `id` (string, nullable)
  - `notify_number` (string, nullable)
  - `notify_version` (string, nullable)
  - `notify_type` (string, nullable)
  - `package_number` (string, nullable)
  - `package_name` (string, nullable)
  - `plan_number` (string, nullable)
  - `plan_name` (string, nullable)
  - `plan_type` (string, nullable)
  - `project_name` (string, nullable)
  - `project_code` (string, nullable)
  - `invest_field` (string, nullable)
  - `procedure` (string, nullable)
  - `selection_method` (string, nullable)
  - `bid_mode` (string, nullable)
  - `contract_type` (string, nullable)
  - `contract_period` (integer, nullable)
  - `contract_period_unit` (string, nullable)
  - `price` (number, nullable)
  - `estimate_price` (number, nullable)
  - `currency` (string, nullable)
  - `capital_detail` (string, nullable)
  - `bid_validity_period` (integer, nullable)
  - `bid_validity_period_unit` (string, nullable)
  - `guarantee_value` (number, nullable)
  - `guarantee_form` (string, nullable)
  - `guarantee_form_en` (string, nullable)
  - `fee_type` (string, nullable)
  - `fee_value` (number, nullable)
  - `issue_location` (string, nullable)
  - `receive_location` (string, nullable)
  - `receive_location_en` (string, nullable)
  - `bid_open_location` (string, nullable)
  - `bid_open_location_en` (string, nullable)
  - `investor` (object, nullable)
    - `@type` (string) (default: "VnepsParty")
    - `code` (string, nullable)
    - `name` (string, nullable)
  - `procuring_entity` (object, nullable)
    - `@type` (string) (default: "VnepsParty")
    - `code` (string, nullable)
    - `name` (string, nullable)
  - `status` (string, nullable)
  - `work_type` (string, nullable)
  - `subordinate_unit` (string, nullable)
  - `mixed_fields` (string, nullable)
  - `is_domestic` (boolean, nullable)
  - `is_online` (boolean, nullable)
  - `is_prequalification` (boolean, nullable)
  - `is_medicine` (boolean, nullable)
  - `medical_type` (integer, nullable)
  - `base_medicine` (integer, nullable)
  - `is_rented` (boolean, nullable)
  - `is_sustainable` (boolean, nullable)
  - `is_framework_agreement` (boolean, nullable)
  - `is_early_selection` (boolean, nullable)
  - `is_eligible_29b` (boolean, nullable)
  - `is_priority_selection` (boolean, nullable)
  - `is_workday_count` (boolean, nullable)
  - `is_provisional_calculation` (boolean, nullable)
  - `days_before_close` (integer, nullable)
  - `delivery_capability` (integer, nullable)
  - `investor_type` (integer, nullable)
  - `merged_at` (integer, nullable)
  - `merged_investor_name` (string, nullable)
  - `merged_province_name` (string, nullable)
  - `published_at` (integer, nullable)
  - `original_published_at` (integer, nullable)
  - `bid_close_at` (integer, nullable)
  - `bid_open_at` (integer, nullable)
  - `plan_decision_date` (string, nullable)
  - `created_at` (integer, nullable)
  - `updated_at` (integer, nullable)
  - `lots` (array) (default: [])
    - `@type` (string) (default: "VnepsLot")
    - `id` (string, nullable)
    - `lot_number` (string, nullable)
    - `name` (string, nullable)
    - `price` (number, nullable)
    - `estimate_price` (number, nullable)
    - `guarantee_value` (number, nullable)
    - `contract_period` (integer, nullable)
    - `contract_period_unit` (string, nullable)
    - `drug_name` (string, nullable)
    - `medicine_code` (string, nullable)
    - `concentration` (string, nullable)
    - `route` (string, nullable)
    - `dosage_form` (string, nullable)
    - `medicine_group` (string, nullable)
    - `quality_standards` (string, nullable)
    - `unit` (string, nullable)
    - `quantity` (number, nullable)
    - `planned_unit_price` (number, nullable)
    - `additional_quantity` (number, nullable)
    - `additional_value` (number, nullable)
    - `additional_percent` (number, nullable)
  - `versions` (array) (default: [])
    - `@type` (string) (default: "VnepsVersion")
    - `id` (string, nullable)
    - `version` (string, nullable)
    - `number` (string, nullable)
    - `status` (string, nullable)
    - `published_by` (string, nullable)
    - `published_at` (integer, nullable)
  - `delays` (array) (default: [])
    - `@type` (string) (default: "VnepsDelay")
    - `id` (string, nullable)
    - `bid_close_at` (integer, nullable)
    - `new_bid_close_at` (integer, nullable)
    - `bid_open_at` (integer, nullable)
    - `new_bid_open_at` (integer, nullable)
    - `reason` (string, nullable)
    - `created_at` (integer, nullable)
- `outcome_code` (string, nullable)
- `package` (object, nullable)
  - `@type` (string) (default: "VnepsPlanPackage")
  - `id` (string, nullable)
  - `plan_id` (string, nullable)
  - `plan_number` (string, nullable)
  - `plan_version` (string, nullable)
  - `package_number` (string, nullable)
  - `name` (string, nullable)
  - `bid_field` (string, nullable)
  - `price` (number, nullable)
  - `price_lines` (array) (default: [])
    - `@type` (string) (default: "VnepsPriceLine")
    - `amount` (number, nullable)
    - `currency` (string, nullable)
    - `exchange_rate` (number, nullable)
  - `estimate_price` (number, nullable)
  - `currency` (string, nullable)
  - `capital_detail` (string, nullable)
  - `capital_unit` (string, nullable)
  - `contract_type` (string, nullable)
  - `contract_period` (integer, nullable)
  - `contract_period_unit` (string, nullable)
  - `selection_duration` (string, nullable)
  - `start_year` (integer, nullable)
  - `start_quarter` (string, nullable)
  - `start_month` (integer, nullable)
  - `start_unit` (string, nullable)
  - `general_tasks` (string, nullable)
  - `supervisor` (string, nullable)
  - `investor_name` (string, nullable)
  - `purchasing_agency` (string, nullable)
  - `counterpart_capital` (number, nullable)
  - `price_ex` (number, nullable)
  - `additional_choice` (integer, nullable)
  - `is_concentrated_purchase` (boolean, nullable)
  - `is_online_purchase` (boolean, nullable)
  - `is_prequalification` (boolean, nullable)
  - `is_multi_lot` (boolean, nullable)
  - `is_domestic` (boolean, nullable)
  - `is_online` (boolean, nullable)
  - `plan_decision_date` (string, nullable)
  - `locations` (array) (default: [])
    - `@type` (string) (default: "VnepsLocation")
    - `province_code` (string, nullable)
    - `province_name` (string, nullable)
    - `district_code` (string, nullable)
    - `district_name` (string, nullable)
    - `ward_code` (string, nullable)
    - `ward_name` (string, nullable)
- `bid_status` (object, nullable)
  - `@type` (string) (default: "VnepsBidStatus")
  - `status` (string, nullable)
  - `previous_status` (string, nullable)
  - `bid_close_at` (integer, nullable)
  - `bid_open_at` (integer, nullable)
  - `opened_at` (integer, nullable)
  - `technical_opened_at` (integer, nullable)
  - `is_published` (boolean, nullable)
- `document_decision` (object, nullable)
  - `@type` (string) (default: "VnepsDocumentDecision")
  - `decision_number` (string, nullable)
  - `decision_number_en` (string, nullable)
  - `decision_date` (string, nullable)
  - `decision_agency` (string, nullable)
  - `decision_agency_en` (string, nullable)
  - `decision_file` (object, nullable)
    - `@type` (string) (default: "VnepsFile")
    - `id` (string, nullable)
    - `name` (string, nullable)
    - `kind` (string, nullable)
  - `decision_file_en` (object, nullable)
    - `@type` (string) (default: "VnepsFile")
    - `id` (string, nullable)
    - `name` (string, nullable)
    - `kind` (string, nullable)
  - `brief_file` (object, nullable)
    - `@type` (string) (default: "VnepsFile")
    - `id` (string, nullable)
    - `name` (string, nullable)
    - `kind` (string, nullable)
  - `brief_file_en` (object, nullable)
    - `@type` (string) (default: "VnepsFile")
    - `id` (string, nullable)
    - `name` (string, nullable)
    - `kind` (string, nullable)
  - `document_file` (object, nullable)
    - `@type` (string) (default: "VnepsFile")
    - `id` (string, nullable)
    - `name` (string, nullable)
    - `kind` (string, nullable)
  - `document_file_en` (object, nullable)
    - `@type` (string) (default: "VnepsFile")
    - `id` (string, nullable)
    - `name` (string, nullable)
    - `kind` (string, nullable)
  - `other_files` (array) (default: [])
    - `@type` (string) (default: "VnepsFile")
    - `id` (string, nullable)
    - `name` (string, nullable)
    - `kind` (string, nullable)
  - `other_files_en` (array) (default: [])
    - `@type` (string) (default: "VnepsFile")
    - `id` (string, nullable)
    - `name` (string, nullable)
    - `kind` (string, nullable)
  - `created_at` (integer, nullable)
- `cancellation` (object, nullable)
  - `@type` (string) (default: "VnepsCancellation")
  - `cancel_type` (string, nullable)
  - `reason` (string, nullable)
  - `decision_number` (string, nullable)
  - `decision_date` (string, nullable)
  - `decision_agency` (string, nullable)
  - `cancelled_at` (integer, nullable)
  - `cancelled_by` (string, nullable)
  - `decision_file` (object, nullable)
    - `@type` (string) (default: "VnepsFile")
    - `id` (string, nullable)
    - `name` (string, nullable)
    - `kind` (string, nullable)
  - `report_file` (object, nullable)
    - `@type` (string) (default: "VnepsFile")
    - `id` (string, nullable)
    - `name` (string, nullable)
    - `kind` (string, nullable)
  - `appraisal_file` (object, nullable)
    - `@type` (string) (default: "VnepsFile")
    - `id` (string, nullable)
    - `name` (string, nullable)
    - `kind` (string, nullable)
  - `bid_status` (string, nullable)
  - `status` (string, nullable)
- `shortlist` (object, nullable)
  - `@type` (string) (default: "VnepsShortlist")
  - `id` (string, nullable)
  - `shortlist_number` (string, nullable)
  - `shortlist_version` (string, nullable)
  - `status` (string, nullable)
  - `decision_number` (string, nullable)
  - `decision_date` (string, nullable)
  - `decision_agency` (string, nullable)
  - `decision_file` (object, nullable)
    - `@type` (string) (default: "VnepsFile")
    - `id` (string, nullable)
    - `name` (string, nullable)
    - `kind` (string, nullable)
  - `published_at` (integer, nullable)
  - `contractors` (array) (default: [])
    - `@type` (string) (default: "VnepsShortlistedContractor")
    - `code` (string, nullable)
    - `name` (string, nullable)
    - `tax_code` (string, nullable)
    - `tax_country` (string, nullable)
    - `address` (string, nullable)
  - `versions` (array) (default: [])
    - `@type` (string) (default: "VnepsVersion")
    - `id` (string, nullable)
    - `version` (string, nullable)
    - `number` (string, nullable)
    - `status` (string, nullable)
    - `published_by` (string, nullable)
    - `published_at` (integer, nullable)
- `reoffer` (object, nullable)
  - `@type` (string) (default: "VnepsReoffer")
  - `id` (string, nullable)
  - `reoffer_number` (string, nullable)
  - `reoffer_version` (string, nullable)
  - `reoffer_status` (string, nullable)
  - `status` (string, nullable)
  - `open_at` (integer, nullable)
  - `close_at` (integer, nullable)
  - `start_price` (number, nullable)
  - `price_step` (number, nullable)
  - `bid_validity_period` (integer, nullable)
  - `contract_type` (string, nullable)
  - `decision_number` (string, nullable)
  - `decision_date` (string, nullable)
  - `decision_agency` (string, nullable)
  - `decision_file` (object, nullable)
    - `@type` (string) (default: "VnepsFile")
    - `id` (string, nullable)
    - `name` (string, nullable)
    - `kind` (string, nullable)
  - `pass_decision_number` (string, nullable)
  - `pass_decision_date` (string, nullable)
  - `pass_decision_agency` (string, nullable)
  - `pass_decision_file` (object, nullable)
    - `@type` (string) (default: "VnepsFile")
    - `id` (string, nullable)
    - `name` (string, nullable)
    - `kind` (string, nullable)
  - `published_at` (integer, nullable)
  - `original_published_at` (integer, nullable)
  - `passed` (array) (default: [])
    - `@type` (string) (default: "VnepsReofferPassed")
    - `id` (string, nullable)
    - `contractor` (object, nullable)
      - `@type` (string) (default: "VnepsParty")
      - `code` (string, nullable)
      - `name` (string, nullable)
    - `joint_venture` (object, nullable)
      - `@type` (string) (default: "VnepsParty")
      - `code` (string, nullable)
      - `name` (string, nullable)
    - `lot_number` (string, nullable)
    - `lot_name` (string, nullable)
    - `price` (number, nullable)
    - `final_price` (number, nullable)
    - `start_price` (number, nullable)
    - `price_step` (number, nullable)
  - `rounds` (array) (default: [])
    - `@type` (string) (default: "VnepsReofferRound")
    - `id` (string, nullable)
    - `contractor` (object, nullable)
      - `@type` (string) (default: "VnepsParty")
      - `code` (string, nullable)
      - `name` (string, nullable)
    - `joint_venture` (object, nullable)
      - `@type` (string) (default: "VnepsParty")
      - `code` (string, nullable)
      - `name` (string, nullable)
    - `lot_number` (string, nullable)
    - `lot_name` (string, nullable)
    - `price` (number, nullable)
    - `final_price` (number, nullable)
    - `round` (integer, nullable)
    - `is_latest` (boolean, nullable)
    - `submitted_at` (integer, nullable)
  - `plan` (object, nullable)
    - `@type` (string) (default: "VnepsPlan")
    - `id` (string, nullable)
    - `plan_number` (string, nullable)
    - `plan_version` (string, nullable)
    - `name` (string, nullable)
    - `project_name` (string, nullable)
    - `plan_type` (string, nullable)
    - `description` (string, nullable)
    - `status` (string, nullable)
    - `approval_status` (string, nullable)
    - `package_count` (integer, nullable)
    - `total_investment` (number, nullable)
    - `total_investment_currency` (string, nullable)
    - `investor` (object, nullable)
      - `@type` (string) (default: "VnepsParty")
      - `code` (string, nullable)
      - `name` (string, nullable)
    - `decision_number` (string, nullable)
    - `decision_date` (string, nullable)
    - `decision_agency` (string, nullable)
    - `decision_file` (object, nullable)
      - `@type` (string) (default: "VnepsFile")
      - `id` (string, nullable)
      - `name` (string, nullable)
      - `kind` (string, nullable)
    - `published_at` (integer, nullable)
  - `package` (object, nullable)
    - `@type` (string) (default: "VnepsPlanPackage")
    - `id` (string, nullable)
    - `plan_id` (string, nullable)
    - `plan_number` (string, nullable)
    - `plan_version` (string, nullable)
    - `package_number` (string, nullable)
    - `name` (string, nullable)
    - `bid_field` (string, nullable)
    - `price` (number, nullable)
    - `price_lines` (array) (default: [])
      - `@type` (string) (default: "VnepsPriceLine")
      - `amount` (number, nullable)
      - `currency` (string, nullable)
      - `exchange_rate` (number, nullable)
    - `estimate_price` (number, nullable)
    - `currency` (string, nullable)
    - `capital_detail` (string, nullable)
    - `capital_unit` (string, nullable)
    - `contract_type` (string, nullable)
    - `contract_period` (integer, nullable)
    - `contract_period_unit` (string, nullable)
    - `selection_duration` (string, nullable)
    - `start_year` (integer, nullable)
    - `start_quarter` (string, nullable)
    - `start_month` (integer, nullable)
    - `start_unit` (string, nullable)
    - `general_tasks` (string, nullable)
    - `supervisor` (string, nullable)
    - `investor_name` (string, nullable)
    - `purchasing_agency` (string, nullable)
    - `counterpart_capital` (number, nullable)
    - `price_ex` (number, nullable)
    - `additional_choice` (integer, nullable)
    - `is_concentrated_purchase` (boolean, nullable)
    - `is_online_purchase` (boolean, nullable)
    - `is_prequalification` (boolean, nullable)
    - `is_multi_lot` (boolean, nullable)
    - `is_domestic` (boolean, nullable)
    - `is_online` (boolean, nullable)
    - `plan_decision_date` (string, nullable)
    - `locations` (array) (default: [])
      - `@type` (string) (default: "VnepsLocation")
      - `province_code` (string, nullable)
      - `province_name` (string, nullable)
      - `district_code` (string, nullable)
      - `district_name` (string, nullable)
      - `ward_code` (string, nullable)
      - `ward_name` (string, nullable)
  - `versions` (array) (default: [])
    - `@type` (string) (default: "VnepsVersion")
    - `id` (string, nullable)
    - `version` (string, nullable)
    - `number` (string, nullable)
    - `status` (string, nullable)
    - `published_by` (string, nullable)
    - `published_at` (integer, nullable)
- `bid_submissions` (array) (default: [])
  - `@type` (string) (default: "VnepsBidSubmission")
  - `id` (string, nullable)
  - `contractor` (object, nullable)
    - `@type` (string) (default: "VnepsParty")
    - `code` (string, nullable)
    - `name` (string, nullable)
  - `joint_venture` (object, nullable)
    - `@type` (string) (default: "VnepsParty")
    - `code` (string, nullable)
    - `name` (string, nullable)
  - `price` (number, nullable)
  - `final_price` (number, nullable)
  - `currency` (string, nullable)
  - `discount_percent` (number, nullable)
  - `guarantee_value` (number, nullable)
  - `total_guarantee_value` (number, nullable)
  - `guarantee_validity_days` (integer, nullable)
  - `bid_validity_days` (integer, nullable)
  - `contract_period` (integer, nullable)
  - `contract_period_unit` (string, nullable)
  - `has_alternative_offer` (boolean, nullable)
  - `technical_result` (integer, nullable)
  - `technical_score` (number, nullable)
  - `opened_at` (integer, nullable)
- `award` (object, nullable)
  - `@type` (string) (default: "VnepsAward")
  - `id` (string, nullable)
  - `result_version` (string, nullable)
  - `status` (string, nullable)
  - `result_type` (integer, nullable)
  - `input_method` (string, nullable)
  - `decision_number` (string, nullable)
  - `decision_number_en` (string, nullable)
  - `decision_date` (string, nullable)
  - `decision_agency` (string, nullable)
  - `decision_agency_en` (string, nullable)
  - `decision_file` (object, nullable)
    - `@type` (string) (default: "VnepsFile")
    - `id` (string, nullable)
    - `name` (string, nullable)
    - `kind` (string, nullable)
  - `decision_file_en` (object, nullable)
    - `@type` (string) (default: "VnepsFile")
    - `id` (string, nullable)
    - `name` (string, nullable)
    - `kind` (string, nullable)
  - `report_file` (object, nullable)
    - `@type` (string) (default: "VnepsFile")
    - `id` (string, nullable)
    - `name` (string, nullable)
    - `kind` (string, nullable)
  - `report_file_en` (object, nullable)
    - `@type` (string) (default: "VnepsFile")
    - `id` (string, nullable)
    - `name` (string, nullable)
    - `kind` (string, nullable)
  - `bid_opening_file` (object, nullable)
    - `@type` (string) (default: "VnepsFile")
    - `id` (string, nullable)
    - `name` (string, nullable)
    - `kind` (string, nullable)
  - `evaluation_report_files` (array) (default: [])
    - `@type` (string) (default: "VnepsFile")
    - `id` (string, nullable)
    - `name` (string, nullable)
    - `kind` (string, nullable)
  - `opened_at` (integer, nullable)
  - `published_at` (integer, nullable)
  - `original_published_at` (integer, nullable)
  - `created_at` (integer, nullable)
  - `updated_at` (integer, nullable)
  - `estimate_price` (number, nullable)
  - `estimate_price_currency` (string, nullable)
  - `lot_results` (array) (default: [])
    - `@type` (string) (default: "VnepsLotResult")
    - `id` (string, nullable)
    - `lot_number` (string, nullable)
    - `lot_name` (string, nullable)
    - `price` (number, nullable)
    - `estimate_price` (number, nullable)
    - `currency` (string, nullable)
    - `contract_period` (integer, nullable)
    - `contract_period_unit` (string, nullable)
    - `status` (integer, nullable)
    - `winning_code` (string, nullable)
    - `is_personal_contractor` (boolean, nullable)
    - `contractors` (array) (default: [])
    - `goods` (array) (default: [])
    - `services` (array) (default: [])
    - `related_services` (array) (default: [])
    - `related_services_en` (string, nullable)
    - `goods_en` (string, nullable)
  - `lot_openings` (array) (default: [])
    - `@type` (string) (default: "VnepsLotOpening")
    - `id` (string, nullable)
    - `contractor` (object, nullable)
      - `@type` (string) (default: "VnepsParty")
      - `code` (string, nullable)
      - `name` (string, nullable)
    - `joint_venture` (object, nullable)
      - `@type` (string) (default: "VnepsParty")
      - `code` (string, nullable)
      - `name` (string, nullable)
    - `lot_number` (string, nullable)
    - `lot_name` (string, nullable)
    - `price` (number, nullable)
    - `final_price` (number, nullable)
    - `guarantee_value` (number, nullable)
    - `guarantee_validity_days` (integer, nullable)
    - `is_winner` (boolean, nullable)
    - `winner_price` (number, nullable)
    - `not_winner_reason` (string, nullable)
  - `lot_evaluations` (array) (default: [])
    - `@type` (string) (default: "VnepsLotEvaluation")
    - `id` (string, nullable)
    - `contractor` (object, nullable)
      - `@type` (string) (default: "VnepsParty")
      - `code` (string, nullable)
      - `name` (string, nullable)
    - `joint_venture` (object, nullable)
      - `@type` (string) (default: "VnepsParty")
      - `code` (string, nullable)
      - `name` (string, nullable)
    - `lot_number` (string, nullable)
    - `lot_name` (string, nullable)
    - `evaluation_type` (integer, nullable)
    - `content` (string, nullable)
    - `evaluation` (string, nullable)
    - `result` (string, nullable)
    - `contract_period` (string, nullable)
    - `contract_period_unit` (string, nullable)
  - `estimate_prices` (array) (default: [])
  - `winner_goods` (array) (default: [])
    - `@type` (string) (default: "VnepsGoodsItem")
    - `name` (string, nullable)
    - `code` (string, nullable)
    - `brand` (string, nullable)
    - `manufacturer` (string, nullable)
    - `origin` (string, nullable)
    - `manufacture_year` (string, nullable)
    - `hs_code` (string, nullable)
    - `unit` (string, nullable)
    - `quantity` (number, nullable)
    - `unit_price` (number, nullable)
    - `amount` (number, nullable)
    - `specification` (string, nullable)
    - `delivery_place` (string, nullable)
    - `delivery_period` (string, nullable)
    - `note` (string, nullable)
    - `lot_number` (string, nullable)
    - `lot_name` (string, nullable)
    - `contractor_code` (string, nullable)
  - `plan_lots` (array) (default: [])
    - `@type` (string) (default: "VnepsLot")
    - `id` (string, nullable)
    - `lot_number` (string, nullable)
    - `name` (string, nullable)
    - `price` (number, nullable)
    - `estimate_price` (number, nullable)
    - `guarantee_value` (number, nullable)
    - `contract_period` (integer, nullable)
    - `contract_period_unit` (string, nullable)
    - `drug_name` (string, nullable)
    - `medicine_code` (string, nullable)
    - `concentration` (string, nullable)
    - `route` (string, nullable)
    - `dosage_form` (string, nullable)
    - `medicine_group` (string, nullable)
    - `quality_standards` (string, nullable)
    - `unit` (string, nullable)
    - `quantity` (number, nullable)
    - `planned_unit_price` (number, nullable)
    - `additional_quantity` (number, nullable)
    - `additional_value` (number, nullable)
    - `additional_percent` (number, nullable)
  - `cancellation` (object, nullable)
    - `@type` (string) (default: "VnepsCancellation")
    - `cancel_type` (string, nullable)
    - `reason` (string, nullable)
    - `decision_number` (string, nullable)
    - `decision_date` (string, nullable)
    - `decision_agency` (string, nullable)
    - `cancelled_at` (integer, nullable)
    - `cancelled_by` (string, nullable)
    - `decision_file` (object, nullable)
      - `@type` (string) (default: "VnepsFile")
      - `id` (string, nullable)
      - `name` (string, nullable)
      - `kind` (string, nullable)
    - `report_file` (object, nullable)
      - `@type` (string) (default: "VnepsFile")
      - `id` (string, nullable)
      - `name` (string, nullable)
      - `kind` (string, nullable)
    - `appraisal_file` (object, nullable)
      - `@type` (string) (default: "VnepsFile")
      - `id` (string, nullable)
      - `name` (string, nullable)
      - `kind` (string, nullable)
    - `bid_status` (string, nullable)
    - `status` (string, nullable)
  - `cancellation_history` (array) (default: [])
    - `@type` (string) (default: "VnepsCancellation")
    - `cancel_type` (string, nullable)
    - `reason` (string, nullable)
    - `decision_number` (string, nullable)
    - `decision_date` (string, nullable)
    - `decision_agency` (string, nullable)
    - `cancelled_at` (integer, nullable)
    - `cancelled_by` (string, nullable)
    - `decision_file` (object, nullable)
      - `@type` (string) (default: "VnepsFile")
      - `id` (string, nullable)
      - `name` (string, nullable)
      - `kind` (string, nullable)
    - `report_file` (object, nullable)
      - `@type` (string) (default: "VnepsFile")
      - `id` (string, nullable)
      - `name` (string, nullable)
      - `kind` (string, nullable)
    - `appraisal_file` (object, nullable)
      - `@type` (string) (default: "VnepsFile")
      - `id` (string, nullable)
      - `name` (string, nullable)
      - `kind` (string, nullable)
    - `bid_status` (string, nullable)
    - `status` (string, nullable)
  - `versions` (array) (default: [])
    - `@type` (string) (default: "VnepsVersion")
    - `id` (string, nullable)
    - `version` (string, nullable)
    - `number` (string, nullable)
    - `status` (string, nullable)
    - `published_by` (string, nullable)
    - `published_at` (integer, nullable)
  - `decision_versions` (array) (default: [])
    - `@type` (string) (default: "VnepsDecisionVersion")
    - `id` (string, nullable)
    - `result_version` (string, nullable)
    - `status` (string, nullable)
    - `decision_number` (string, nullable)
    - `decision_number_en` (string, nullable)
    - `decision_date` (string, nullable)
    - `decision_agency` (string, nullable)
    - `decision_agency_en` (string, nullable)
    - `decision_file` (object, nullable)
      - `@type` (string) (default: "VnepsFile")
      - `id` (string, nullable)
      - `name` (string, nullable)
      - `kind` (string, nullable)
    - `decision_file_en` (object, nullable)
      - `@type` (string) (default: "VnepsFile")
      - `id` (string, nullable)
      - `name` (string, nullable)
      - `kind` (string, nullable)
    - `report_file` (object, nullable)
      - `@type` (string) (default: "VnepsFile")
      - `id` (string, nullable)
      - `name` (string, nullable)
      - `kind` (string, nullable)
    - `evaluation_report_files` (array) (default: [])
    - `reason` (string, nullable)
    - `cancellation` (object, nullable)
      - `@type` (string) (default: "VnepsCancellation")
      - `cancel_type` (string, nullable)
      - `reason` (string, nullable)
      - `decision_number` (string, nullable)
      - `decision_date` (string, nullable)
      - `decision_agency` (string, nullable)
      - `cancelled_at` (integer, nullable)
      - `cancelled_by` (string, nullable)
      - `decision_file` (object, nullable) (see schema VnepsFile)
      - `report_file` (object, nullable) (see schema VnepsFile)
      - `appraisal_file` (object, nullable) (see schema VnepsFile)
      - `bid_status` (string, nullable)
      - `status` (string, nullable)
    - `published_at` (integer, nullable)
    - `created_at` (integer, nullable)
    - `updated_at` (integer, nullable)

## Errors

### 422 — Validation Error

The value is not a notice number like IB2600554528 or DC2600017791, or a notice URL

What to do: Check the fields against this schema. A URN with the wrong prefix is the most common cause.

- `detail` (array)
  - `loc` (array, required)
  - `msg` (string, required)
  - `type` (string, required)
  - `input` (any)
  - `ctx` (object)

### 408

The request ran past its time limit

What to do: Raise `timeout` in the request body, up to the maximum this endpoint documents. Lowering `count` or turning off the `with_*` flags also helps, because less work finishes sooner.

### 412

No notice with that number

What to do: Retrying will not help: either the entity does not exist, or the input points at a different one.

### 429

Too many requests: a rate limit or a usage window is exhausted

What to do: When the response carries an X-Retry-After header, wait that many seconds and retry: the same number is in the body as `detail.retry_after`, and the limit clears once that window passes. The message in the body names the limit that was hit.

### 500

Something broke on our side

What to do: Retrying will not help. If it keeps happening, send us the X-Request-ID from the response headers.

### 529

Rate limit reached, or the endpoint is overloaded

What to do: Wait at least 30 seconds, then retry.

## Response envelope

Success: Array of objects (may be empty if no results)

Error: Error may coexist with partial results if it occurs mid-execution. Check X-Error header and status code.

Every response carries these headers:

- `X-Error` — Error message text (present only on error)
- `X-Request-ID` — Unique request identifier
- `X-Execution-Time` — Execution time in seconds
- `X-Result-Count` — How many records the body carries. 0 means an empty result, which is a normal answer and not by itself an error. A non-zero count can come back together with X-Error when the failure happened partway through — read this header and X-Error independently.
- `X-Total-Available-Results` — How many records exist for this query, when the endpoint can say. On a `dry_run` request this is the answer and the body is empty. It saturates: the endpoint's documented maximum means 'at least that many', any smaller number is exact.
- `X-Warning` — Present when the request body carried keys this endpoint does not document. They were ignored, so any filter you meant to apply through them did not apply. Check the spelling against this schema and retry.
- `X-Retry-After` — Seconds to wait before retrying. Present only on 429.

