{"success":true,"data":{"contract_version":1,"count":34,"commands":[{"name":"create_demand_bid","domain":"bids","verb":"create","description":"Submit a bid (teklif ver) on an open demand. amount_per_vehicle is the freight PER VEHICLE, not the total. Find the demand with list_open_demands first. If this company already has a pending bid on that demand the call is rejected \u2014 the existing bid must be revised in the UI instead. On acceptance one load credit per vehicle is charged.","parameters":{"type":"object","properties":{"demand_code":{"type":"string","description":"Demand code from list_open_demands."},"amount_per_vehicle":{"type":"number","description":"Freight per vehicle (not the total)."},"currency_code":{"type":"string","description":"3-letter currency code, e.g. EUR, USD, TRL."},"vehicle_count":{"type":"integer","description":"How many vehicles this bid covers (default 1)."},"customs_included":{"type":"boolean","description":"true if customs clearance is included in the price."},"note":{"type":"string","description":"Optional note to the customer (max 500 chars)."}},"required":["demand_code","amount_per_vehicle","currency_code"]},"read_only":false,"confirmation_needed":true,"irreversible":true},{"name":"list_my_bids","domain":"bids","verb":"list","description":"List the bids (teklif) THIS carrier company has submitted, newest first, with their outcome. Answers \"what did I bid on\", \"was my offer accepted\". status: pending=awaiting the customer, accepted=won, revised=superseded by a newer bid of yours, cancelled, price_too_high=rejected as expensive.","parameters":{"type":"object","properties":{"status":{"type":"string","enum":["pending","accepted","revised","cancelled","price_too_high"],"description":"Narrow to one outcome."},"demand_code":{"type":"string","description":"Only bids on this demand."},"limit":{"type":"integer","description":"Max rows, 1-20 (default 10)."}},"required":[]},"read_only":true,"confirmation_needed":false,"irreversible":false},{"name":"lookup_business_contact","domain":"contacts","verb":"search","description":"Resolve a business contact (customer\/partner\/recipient) by name, legal name or tax number to its contact_id. Required for invoice recipient and load participants. Does NOT create contacts \u2014 if none match, tell the user to add the contact first.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Contact display name, legal name, or tax number (partial allowed)."}},"required":["query"]},"read_only":true,"confirmation_needed":false,"irreversible":false},{"name":"lookup_country","domain":"countries","verb":"search","description":"Resolve a country by name or ISO code to its country_id for sending\/receiving country on a load.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Country name (TR or EN) or ISO code (e.g. \"Almanya\", \"Germany\", \"DE\")."}},"required":["query"]},"read_only":true,"confirmation_needed":false,"irreversible":false},{"name":"list_open_demands","domain":"demands","verb":"list","description":"List freight demands (talep) this carrier is allowed to bid on, newest first. Answers \"what work is available\", \"any loads from Turkey to Germany\". Only ACTIVE demands are returned. Country\/load-type filters take ids \u2014 resolve them with lookup_country \/ lookup_load_type first.","parameters":{"type":"object","properties":{"sending_country_id":{"type":"integer","description":"Pickup country id from lookup_country."},"receiving_country_id":{"type":"integer","description":"Delivery country id from lookup_country."},"load_type_id":{"type":"integer","description":"Load type id from lookup_load_type."},"date_from":{"type":"string","description":"Loading window start, YYYY-MM-DD."},"date_to":{"type":"string","description":"Loading window end, YYYY-MM-DD."},"only_without_my_bid":{"type":"boolean","description":"true = hide demands this company already bid on."},"limit":{"type":"integer","description":"Max rows, 1-20 (default 10)."}},"required":[]},"read_only":true,"confirmation_needed":false,"irreversible":false},{"name":"lookup_driver","domain":"drivers","verb":"search","description":"Resolve one of this company's drivers by name to its driver_id. Call before assign_driver_to_load \u2014 never guess a driver_id. Partial names are fine.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Driver name or part of it."}},"required":["query"]},"read_only":true,"confirmation_needed":false,"irreversible":false},{"name":"add_export_document_item","domain":"export-documents","verb":"add-item","description":"Append a line item to an export document. Only the columns that this document type actually prints are accepted; call get_export_document to see them. Never send prices on a packing list.","parameters":{"type":"object","properties":{"document_id":{"type":"integer"},"item":{"type":"object","description":"Column\/value map, e.g. {\"description\": \"Flan\u015f DN80\", \"quantity\": 120, \"unit\": \"pcs\", \"unit_price\": 18.4}.","additionalProperties":true}},"required":["document_id","item"]},"read_only":false,"confirmation_needed":false,"irreversible":false},{"name":"create_export_document_draft","domain":"export-documents","verb":"create","description":"Create a new export document draft. Creating a draft costs nothing; only generating the PDF costs a credit. A draft must already be structurally valid, so ASK THE USER for the minimum set first: buyer name, seller address and country, and at least one line item (documents that print prices also need a currency and each line needs quantity and unit price). The seller title and tax number are filled from the current company automatically. If the tool answers with required_to_create, ask the user for exactly those and call it again.","parameters":{"type":"object","properties":{"doc_type":{"type":"string","enum":["proforma-invoice","commercial-invoice","packing-list","shipping-instruction","delivery-note","certificate-of-origin-application","movement-certificate-application","exporter-declaration","insurance-request"],"description":"Which document to prepare."},"title":{"type":"string","description":"Short internal label shown in the list (not printed on the PDF)."},"currency_code":{"type":"string","description":"ISO 4217 code, e.g. EUR. Required for documents that carry prices."},"language":{"type":"string","enum":["tr","en","bilingual"],"description":"Printed language; defaults to bilingual."},"derived_from_document_id":{"type":"integer","description":"Optional: copy the shared blocks from an existing document of this company."},"fields":{"type":"object","description":"Initial fields as dot-paths, e.g. {\"parties.buyer.name\": \"Weber GmbH\", \"parties.seller.address\": \"Halkal\u0131, \u0130stanbul\", \"parties.seller.country_code\": \"TR\"}.","additionalProperties":true},"items":{"type":"array","description":"Initial line items; at least one is required by most document types.","items":{"type":"object","additionalProperties":true}}},"required":["doc_type"]},"read_only":false,"confirmation_needed":false,"irreversible":false},{"name":"extract_export_document_from_text","domain":"export-documents","verb":"extract","description":"Read a pasted order e-mail, offer or confirmation and fill an export document from it. Only fields that are still empty are filled \u2014 nothing the user already entered is overwritten. Costs no credit.","parameters":{"type":"object","properties":{"document_id":{"type":"integer","description":"Existing draft to fill."},"text":{"type":"string","description":"The raw source text, in any language."}},"required":["document_id","text"]},"read_only":false,"confirmation_needed":false,"irreversible":false},{"name":"generate_export_document","domain":"export-documents","verb":"generate","description":"Produce the final PDF of an export document. This spends 1 credit and finalises the document. Always make sure the document is complete first \u2014 call get_export_document and check empty_required_fields.","parameters":{"type":"object","properties":{"document_id":{"type":"integer"}},"required":["document_id"]},"read_only":false,"confirmation_needed":true,"irreversible":true},{"name":"get_export_document","domain":"export-documents","verb":"get","description":"Read one export document in full: every filled field as dot-paths, the line items with their 1-based positions, the server-computed totals and which required fields are still empty. ALWAYS call this before editing so you address the right line positions.","parameters":{"type":"object","properties":{"document_id":{"type":"integer","description":"Id of the document."}},"required":["document_id"]},"read_only":true,"confirmation_needed":false,"irreversible":false},{"name":"list_export_documents","domain":"export-documents","verb":"list","description":"List the export documents of the current company (proforma invoice, commercial invoice, packing list, shipping instruction, delivery note, certificate\/movement applications, exporter declaration, insurance request). Use this to find the document the user is talking about when no document_id is known.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Optional free text matched against document number and title."},"doc_type":{"type":"string","enum":["proforma-invoice","commercial-invoice","packing-list","shipping-instruction","delivery-note","certificate-of-origin-application","movement-certificate-application","exporter-declaration","insurance-request"],"description":"Optional filter by document type."},"status":{"type":"string","enum":["draft","generated"],"description":"Optional filter by status."}},"required":[]},"read_only":true,"confirmation_needed":false,"irreversible":false},{"name":"remove_export_document_item","domain":"export-documents","verb":"remove-item","description":"Delete one line item by its 1-based position. Always pass expect_description so the wrong row can never be deleted. After a deletion the positions of the following lines shift up by one \u2014 re-read the document before addressing another line.","parameters":{"type":"object","properties":{"document_id":{"type":"integer"},"position":{"type":"integer","description":"1-based position of the line to remove."},"expect_description":{"type":"string","description":"Part of the current description of that line; verified before deleting."}},"required":["document_id","position","expect_description"]},"read_only":false,"confirmation_needed":false,"irreversible":false},{"name":"set_export_document_fields","domain":"export-documents","verb":"set","description":"Set one or more fields on an export document draft. Use dot-paths exactly as returned by get_export_document, e.g. \"parties.buyer.name\", \"shipment.incoterm\", \"terms.payment_term\". Totals are computed by the server and can never be written. Valid fields are applied even if others are rejected; read the rejected list and correct yourself.","parameters":{"type":"object","properties":{"document_id":{"type":"integer"},"fields":{"type":"object","description":"Map of dot-path to value, e.g. {\"parties.buyer.name\": \"Weber GmbH\", \"shipment.incoterm\": \"FCA\"}. Use null to clear a field.","additionalProperties":true}},"required":["document_id","fields"]},"read_only":false,"confirmation_needed":false,"irreversible":false},{"name":"update_export_document_item","domain":"export-documents","verb":"update-item","description":"Change columns of one existing line item, addressed by its 1-based position from get_export_document. Always pass expect_description with a distinctive part of that line so the wrong row can never be edited.","parameters":{"type":"object","properties":{"document_id":{"type":"integer"},"position":{"type":"integer","description":"1-based position of the line."},"expect_description":{"type":"string","description":"Part of the current description of that line; verified before writing."},"changes":{"type":"object","description":"Column\/value map to apply.","additionalProperties":true}},"required":["document_id","position","changes"]},"read_only":false,"confirmation_needed":false,"irreversible":false},{"name":"list_expiring_documents","domain":"fleet-documents","verb":"list","description":"List fleet documents that expire soon (or already expired): vehicle papers (insurance, inspection, permits) and \u2014 for carriers \u2014 driver papers (passport, visa, licence, SRC). Use for \"what expires this month\", \"any expired documents\". Sorted by expiry date, soonest first. At most 20 rows come back: `count` is how many rows are in THIS reply and `total` how many matched the window \u2014 when total > count say \"showing the 20 soonest of N\" and never claim more rows than you were given.","parameters":{"type":"object","properties":{"days":{"type":"integer","description":"Look-ahead window in days, 1-180 (default 30)."},"scope":{"type":"string","enum":["driver","vehicle","both"],"description":"Default both. \"driver\" is only meaningful for carriers."},"include_expired":{"type":"boolean","description":"Default true \u2014 also list documents whose date has already passed."}},"required":[]},"read_only":true,"confirmation_needed":false,"irreversible":false},{"name":"add_invoice_line","domain":"invoices","verb":"add-line","description":"Add a line item to a DRAFT invoice and recompute totals (tax auto-resolved if tax_rate_id omitted). Use the invoice_id returned by create_invoice_draft.","parameters":{"type":"object","properties":{"invoice_id":{"type":"integer","description":"from create_invoice_draft"},"description":{"type":"string"},"quantity":{"type":"number"},"unit_price":{"type":"number"},"unit":{"type":"string","description":"optional, e.g. adet, hizmet, kg"},"discount_rate":{"type":"number","description":"optional 0-100"},"tax_rate_id":{"type":"integer","description":"optional; auto-resolved if omitted"}},"required":["invoice_id","description","quantity","unit_price"]},"read_only":false,"confirmation_needed":false,"irreversible":false},{"name":"create_invoice_draft","domain":"invoices","verb":"create","description":"Create a DRAFT invoice (reversible) issued by the current company to a recipient business contact. Resolve recipient_contact_id with lookup_business_contact FIRST. Then add lines with add_invoice_line, show the user preview_invoice, and only then finalize with issue_invoice. If the conversation is about a specific load, pass its load_code so the invoice is linked to that load.","parameters":{"type":"object","properties":{"recipient_contact_id":{"type":"integer","description":"from lookup_business_contact"},"currency_code":{"type":"string","description":"3-letter code, e.g. TRY, USD, EUR"},"load_code":{"type":"string","description":"optional load reference code (e.g. FSK2158) to attach this invoice to a load"},"issue_date":{"type":"string","description":"optional YYYY-MM-DD"},"due_date":{"type":"string","description":"optional YYYY-MM-DD"},"notes":{"type":"string"}},"required":["recipient_contact_id","currency_code"]},"read_only":false,"confirmation_needed":false,"irreversible":false},{"name":"issue_invoice","domain":"invoices","verb":"issue","description":"Issue (finalize) a DRAFT invoice: assigns a number, posts accounting entries, and emails the recipient. IRREVERSIBLE \u2014 only cancellable afterward. Call preview_invoice FIRST and let the user see the preview; only call this once they ask you to issue it.","parameters":{"type":"object","properties":{"invoice_id":{"type":"integer","description":"draft invoice id to issue"}},"required":["invoice_id"]},"read_only":false,"confirmation_needed":true,"irreversible":true},{"name":"preview_invoice","domain":"invoices","verb":"preview","description":"Show the user a full preview of a DRAFT invoice (recipient, line items, tax breakdown, totals) WITHOUT issuing it. Always call this after the lines are complete and let the user see it before calling issue_invoice.","parameters":{"type":"object","properties":{"invoice_id":{"type":"integer","description":"draft invoice id to preview"}},"required":["invoice_id"]},"read_only":true,"confirmation_needed":false,"irreversible":false},{"name":"lookup_load_type","domain":"load-types","verb":"search","description":"Resolve a load\/transport type (e.g. LTL, FTL) by name or slug to its load_type_id for creating a load.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Load type name, short name, or slug (e.g. \"LTL\", \"parsiyel\", \"FTL\")."}},"required":["query"]},"read_only":true,"confirmation_needed":false,"irreversible":false},{"name":"assign_driver_to_load","domain":"loads","verb":"assign-driver","description":"Assign one of this company's drivers to a load so the driver sees it in the mobile app and starts reporting position. Resolve driver_id with lookup_driver FIRST. Re-assigning replaces the previous driver. Delivered (done) loads and archived drivers are refused.","parameters":{"type":"object","properties":{"driver_id":{"type":"integer","description":"from lookup_driver"},"load_code":{"type":"string","description":"The load code (customer_code), exact."}},"required":["driver_id","load_code"]},"read_only":false,"confirmation_needed":true,"irreversible":false},{"name":"create_load","domain":"loads","verb":"create","description":"Open a freight load (y\u00fck). Resolve load_type_id (lookup_load_type) and sending\/receiving country ids (lookup_country) FIRST. Creates a pending load the user can finish in the UI. NOTE: consumes load credit(s) from the company package (irreversible).","parameters":{"type":"object","properties":{"load_type_id":{"type":"integer","description":"from lookup_load_type"},"sending_country_id":{"type":"integer","description":"origin country from lookup_country"},"receiving_country_id":{"type":"integer","description":"destination country from lookup_country"},"number_of_shipments_needed":{"type":"integer","description":"how many loads to open (default 1)"},"load_date":{"type":"string","description":"optional loading date YYYY-MM-DD"},"kilo":{"type":"number","description":"optional weight in kg"}},"required":["load_type_id","sending_country_id","receiving_country_id"]},"read_only":false,"confirmation_needed":true,"irreversible":true},{"name":"get_load","domain":"loads","verb":"get","description":"Read one load in full by its code: route, dates, weight, current status, parties (sender\/receiver\/carrier), latest reported position and any open AI document-consistency flag. Use after list_loads, or directly when the user names a code.","parameters":{"type":"object","properties":{"load_code":{"type":"string","description":"The load code (customer_code), exact."}},"required":["load_code"]},"read_only":true,"confirmation_needed":false,"irreversible":false},{"name":"list_loads","domain":"loads","verb":"list","description":"List the freight loads (y\u00fck) this company can see, newest first. Answers \"which loads do I have\", \"loads heading to Germany\", \"loads still waiting to load\". All filters are optional and combine with AND; resolve country ids with lookup_country first. Returns COMPACT rows \u2014 call get_load with a code for the full picture of one load. Archived loads are never returned.","parameters":{"type":"object","properties":{"status":{"type":"string","enum":["pending","in_transport","transit","done"],"description":"pending=waiting to load, in_transport=on the road, transit=in transit, done=delivered"},"code":{"type":"string","description":"Full or partial load code (customer_code), e.g. \"FSK2158\"."},"sending_country_id":{"type":"integer","description":"Origin country id from lookup_country."},"receiving_country_id":{"type":"integer","description":"Destination country id from lookup_country."},"date_from":{"type":"string","description":"Loading date lower bound, YYYY-MM-DD."},"date_to":{"type":"string","description":"Loading date upper bound, YYYY-MM-DD."},"limit":{"type":"integer","description":"Max rows, 1-20 (default 10)."}},"required":[]},"read_only":true,"confirmation_needed":false,"irreversible":false},{"name":"list_load_problem_flags","domain":"loads","verb":"list-problems","description":"List loads whose uploaded documents the AI consistency check found to CONTRADICT each other (e.g. invoice weight vs CMR weight). Use for \"are there any problem loads\", \"which files disagree\". Read-only: closing a flag is done by the user in the load screen.","parameters":{"type":"object","properties":{"load_code":{"type":"string","description":"Narrow to a single load code."},"only_open":{"type":"boolean","description":"Default true \u2014 only unresolved flags."},"limit":{"type":"integer","description":"Max rows, 1-20 (default 10)."}},"required":[]},"read_only":true,"confirmation_needed":false,"irreversible":false},{"name":"update_load_status","domain":"loads","verb":"set-status","description":"Move a load to a new transport status and append it to the load's status history (this is what the customer sees on the tracking screen). Statuses: pending (waiting to load), in_transport (picked up \/ on the road), transit, done (delivered). Marking a load done also releases the assigned driver and stops sea tracking, so it cannot be undone from here.","parameters":{"type":"object","properties":{"load_code":{"type":"string","description":"The load code (customer_code), exact."},"status":{"type":"string","enum":["pending","in_transport","transit","done"],"description":"Target status slug."},"date":{"type":"string","description":"Optional event date YYYY-MM-DD; defaults to today."}},"required":["load_code","status"]},"read_only":false,"confirmation_needed":true,"irreversible":true},{"name":"lookup_product","domain":"products","verb":"search","description":"Resolve a product to its product_id + on-hand quantity. TYPO-TOLERANT and accent-insensitive: handles misspellings, missing\/extra letters, Turkish diacritics, and partial words (e.g. \"fomemo\" finds \"Phomemo M10\", \"celik civata\" finds \"\u00c7elik C\u0131vata\"). Returns ranked matches; each carries match=\"exact\" (confident) or match=\"fuzzy\" (a close guess to confirm with the user). Call before any stock action \u2014 never guess a product_id.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Product name, SKU, barcode, or code (partial \/ misspelled \/ accent-free is fine)."}},"required":["query"]},"read_only":true,"confirmation_needed":false,"irreversible":false},{"name":"create_stock_adjustment","domain":"stock","verb":"adjust","description":"Record a stock count correction (say\u0131m d\u00fczeltme) or write-off (fire). mode=set sets the absolute on-hand at the slot; mode=delta applies a signed change (negative reduces). reason is required.","parameters":{"type":"object","properties":{"product_id":{"type":"integer","description":"from lookup_product"},"warehouse_id":{"type":"integer","description":"from lookup_warehouse"},"mode":{"type":"string","enum":["set","delta"],"description":"set=absolute target qty, delta=signed change"},"quantity":{"type":"number","description":"target qty (set, \u22650) or signed delta"},"reason":{"type":"string","description":"required reason for the correction"},"warehouse_area_id":{"type":"integer"},"pallet_id":{"type":"integer"},"lot_number":{"type":"string"},"expiry_date":{"type":"string"}},"required":["product_id","warehouse_id","mode","quantity","reason"]},"read_only":false,"confirmation_needed":true,"irreversible":true},{"name":"check_stock_level","domain":"stock","verb":"list","description":"Read current on-hand stock levels. Pass product_id (from lookup_product) for one product, warehouse_id (from lookup_warehouse) to LIST EVERY product stocked in that warehouse, or both to narrow to one product in one warehouse. At least one id is required. Use to answer \"what is in warehouse X?\" and to validate availability before an outbound\/transfer movement.","parameters":{"type":"object","properties":{"product_id":{"type":"integer","description":"Product id from lookup_product. Optional if warehouse_id is given."},"warehouse_id":{"type":"integer","description":"Warehouse id from lookup_warehouse. Alone, lists all products on hand in that warehouse."}},"required":[]},"read_only":true,"confirmation_needed":false,"irreversible":false},{"name":"create_stock_movement","domain":"stock","verb":"move","description":"Record a stock movement: inbound (giri\u015f), outbound (\u00e7\u0131k\u0131\u015f), or transfer between locations. Resolve product_id (lookup_product) and warehouse_id (lookup_warehouse) FIRST. For inbound\/outbound provide warehouse_id (+ warehouse_area_id when that warehouse has more than one area). For transfer provide source_warehouse_id and dest_warehouse_id \u2014 and, when either warehouse has more than one area, its side-specific source_warehouse_area_id \/ dest_warehouse_area_id (the plain warehouse_area_id is ignored on a transfer).","parameters":{"type":"object","properties":{"type":{"type":"string","enum":["inbound","outbound","transfer"],"description":"inbound=giri\u015f, outbound=\u00e7\u0131k\u0131\u015f, transfer=between locations"},"product_id":{"type":"integer","description":"from lookup_product"},"quantity":{"type":"number","description":"positive quantity"},"warehouse_id":{"type":"integer","description":"required for inbound\/outbound"},"warehouse_area_id":{"type":"integer","description":"inbound\/outbound only \u2014 area inside warehouse_id (from lookup_warehouse)"},"pallet_id":{"type":"integer","description":"inbound\/outbound only \u2014 pallet slot; its warehouse\/area are derived from the pallet"},"source_warehouse_id":{"type":"integer","description":"required for transfer (origin)"},"source_warehouse_area_id":{"type":"integer","description":"transfer only \u2014 area inside source_warehouse_id (required if that warehouse has >1 area)"},"source_pallet_id":{"type":"integer","description":"transfer only \u2014 take the goods off this pallet"},"dest_warehouse_id":{"type":"integer","description":"required for transfer (destination)"},"dest_warehouse_area_id":{"type":"integer","description":"transfer only \u2014 area inside dest_warehouse_id (required if that warehouse has >1 area)"},"dest_pallet_id":{"type":"integer","description":"transfer only \u2014 put the goods on this pallet"},"lot_number":{"type":"string"},"expiry_date":{"type":"string","description":"YYYY-MM-DD"},"reason":{"type":"string"}},"required":["type","product_id","quantity"]},"read_only":false,"confirmation_needed":true,"irreversible":true},{"name":"run_tariff_inquiry","domain":"tariffs","verb":"inquiry","description":"Start an official duty \/ anti-dumping inquiry for one GT\u0130P code and one counterpart country. direction=import means goods coming INTO Turkey from origin_country_id; direction=export means goods leaving Turkey to destination_country_id. The counterpart country can never be Turkey. Runs in the background and SPENDS one query credit \u2014 do NOT poll for the result here; tell the user it will appear on the Tariff screen.","parameters":{"type":"object","properties":{"direction":{"type":"string","enum":["import","export"],"description":"import = into Turkey, export = out of Turkey"},"tariff_code":{"type":"string","description":"6-12 digit GT\u0130P\/HS code from lookup_tariff_code."},"origin_country_id":{"type":"integer","description":"Required when direction=import (from lookup_country)."},"destination_country_id":{"type":"integer","description":"Required when direction=export (from lookup_country)."}},"required":["direction","tariff_code"]},"read_only":false,"confirmation_needed":true,"irreversible":true},{"name":"lookup_tariff_code","domain":"tariffs","verb":"search","description":"Search the Turkish customs nomenclature (GT\u0130P \/ HS) by goods description or by a partial code, and return matching codes with their official descriptions. Free \u2014 no credit is used. Always call this before run_tariff_inquiry and confirm the chosen code with the user, because duty rates differ line by line.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Goods description (TR or EN) or a partial\/whole GT\u0130P code."}},"required":["query"]},"read_only":true,"confirmation_needed":false,"irreversible":false},{"name":"lookup_warehouse","domain":"warehouses","verb":"search","description":"Resolve a warehouse by name to its warehouse_id, with its areas. Use before a stock movement. If a warehouse has areas, a stock movement there REQUIRES one of its area_ids (pass warehouse_area_id).","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Warehouse name (partial allowed)."}},"required":["query"]},"read_only":true,"confirmation_needed":false,"irreversible":false}]},"code":"FG-004","message":{"display_message":{"tr":"Kaynak ba\u015far\u0131yla getirildi.","en":"Resource get successfully."},"response_slug":"resource-get"}}