{"openapi":"3.1.0","info":{"title":"HALOWERK frachtwerk","version":"1.0.0","description":"HALOWERK frachtwerk — bezahlte Endpunkte nach x402. Preise in USDC auf Base Mainnet.","contact":{"url":"https://fracht.halowerk.com/"}},"servers":[{"url":"https://fracht.halowerk.com"}],"paths":{"/v1/locode-resolve":{"post":{"operationId":"frachtwerk_locode_resolve","summary":"Resolves a UN/LOCODE against a supplied official code-list record.","description":"Resolves a UN/LOCODE against a supplied official code-list record. Missing facts are returned as null and named in unavailable_fields where applicable. Derived values disclose their method; source-backed values disclose source, time window and age. ","tags":["frachtwerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["locode","records","source"],"additionalProperties":false,"properties":{"locode":{"type":"string","pattern":"^[A-Za-z]{2}[A-Za-z0-9]{3}$"},"records":{"type":"array","maxItems":10000,"items":{"type":"object","required":["locode","name","subdivision","functions","coordinates"],"additionalProperties":false,"properties":{"locode":{"type":"string","minLength":5,"maxLength":5,"description":""},"name":{"type":"string","minLength":1,"maxLength":512,"description":""},"subdivision":{"type":"string","minLength":0,"maxLength":20,"description":""},"functions":{"type":"string","minLength":0,"maxLength":20,"description":""},"coordinates":{"type":"string","minLength":0,"maxLength":20,"description":""}}}},"source":{"type":"object","required":["url","published_at","title"],"additionalProperties":false,"properties":{"url":{"type":"string","format":"uri"},"published_at":{"type":"string","format":"date-time"},"title":{"type":"string","minLength":3,"maxLength":300,"description":""}}}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}},"/v1/container-check":{"post":{"operationId":"frachtwerk_container_check","summary":"Validates the ISO 6346 check digit and separates owner, category and serial components.","description":"Validates the ISO 6346 check digit and separates owner, category and serial components. Missing facts are returned as null and named in unavailable_fields where applicable. Derived values disclose their method; source-backed values disclose source, time window and age. ","tags":["frachtwerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["container_number"],"additionalProperties":false,"properties":{"container_number":{"type":"string","minLength":11,"maxLength":11,"description":""}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}},"/v1/vessel-identity":{"post":{"operationId":"frachtwerk_vessel_identity","summary":"Validates IMO/MMSI identifiers and returns supplied registry identity without inventing missing fields.","description":"Validates IMO/MMSI identifiers and returns supplied registry identity without inventing missing fields. Missing facts are returned as null and named in unavailable_fields where applicable. Derived values disclose their method; source-backed values disclose source, time window and age. ","tags":["frachtwerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["imo"],"additionalProperties":false,"properties":{"imo":{"type":"string","pattern":"^(IMO)?[0-9]{7}$"},"mmsi":{"type":"string","minLength":9,"maxLength":9,"description":""},"registry_record":{"type":"object","required":["name","flag","vessel_type"],"additionalProperties":false,"properties":{"name":{"type":"string","minLength":1,"maxLength":512,"description":""},"flag":{"type":"string","minLength":2,"maxLength":80,"description":""},"vessel_type":{"type":"string","minLength":1,"maxLength":120,"description":""}}},"source":{"type":"object","required":["url","published_at","title"],"additionalProperties":false,"properties":{"url":{"type":"string","format":"uri"},"published_at":{"type":"string","format":"date-time"},"title":{"type":"string","minLength":3,"maxLength":300,"description":""}}}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}},"/v1/tracking-parse":{"post":{"operationId":"frachtwerk_tracking_parse","summary":"Matches a shipment reference against caller-supplied carrier patterns.","description":"Matches a shipment reference against caller-supplied carrier patterns. Missing facts are returned as null and named in unavailable_fields where applicable. Derived values disclose their method; source-backed values disclose source, time window and age. ","tags":["frachtwerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["reference","patterns"],"additionalProperties":false,"properties":{"reference":{"type":"string","minLength":3,"maxLength":100,"description":""},"patterns":{"type":"array","maxItems":500,"items":{"type":"object","required":["carrier","pattern"],"additionalProperties":false,"properties":{"carrier":{"type":"string","minLength":1,"maxLength":512,"description":""},"pattern":{"type":"string","minLength":1,"maxLength":512,"description":""}}}}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}},"/v1/bl-parse":{"post":{"operationId":"frachtwerk_bl_parse","summary":"Separates common bill-of-lading and air-waybill reference components.","description":"Separates common bill-of-lading and air-waybill reference components. Missing facts are returned as null and named in unavailable_fields where applicable. Derived values disclose their method; source-backed values disclose source, time window and age. ","tags":["frachtwerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["reference"],"additionalProperties":false,"properties":{"reference":{"type":"string","minLength":3,"maxLength":100,"description":""},"kind":{"type":"string","enum":["auto","bl","awb"]}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}},"/v1/eta-normalize":{"post":{"operationId":"frachtwerk_eta_normalize","summary":"Normalizes ETA or ETD to UTC using an explicit IANA time zone.","description":"Normalizes ETA or ETD to UTC using an explicit IANA time zone. Missing facts are returned as null and named in unavailable_fields where applicable. Derived values disclose their method; source-backed values disclose source, time window and age. ","tags":["frachtwerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["local_datetime","timezone_offset_minutes","event"],"additionalProperties":false,"properties":{"local_datetime":{"type":"string","format":"date-time"},"timezone_offset_minutes":{"type":"integer","minimum":-840,"maximum":840,"description":""},"event":{"type":"string","enum":["ETA","ETD"]}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}},"/v1/leg-split":{"post":{"operationId":"frachtwerk_leg_split","summary":"Validates and orders caller-supplied multimodal shipment legs.","description":"Validates and orders caller-supplied multimodal shipment legs. Missing facts are returned as null and named in unavailable_fields where applicable. Derived values disclose their method; source-backed values disclose source, time window and age. ","tags":["frachtwerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["legs"],"additionalProperties":false,"properties":{"legs":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["sequence","from","to","mode","distance_km"],"additionalProperties":false,"properties":{"sequence":{"type":"integer","minimum":1,"maximum":1000,"description":""},"from":{"type":"string","minLength":1,"maxLength":512,"description":""},"to":{"type":"string","minLength":1,"maxLength":512,"description":""},"mode":{"type":"string","minLength":1,"maxLength":512,"description":""},"distance_km":{"type":"number","minimum":0,"maximum":1000000000000,"description":""}}}}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}},"/v1/package-dims":{"post":{"operationId":"frachtwerk_package_dims","summary":"Calculates volume, girth and chargeable weight from package dimensions.","description":"Calculates volume, girth and chargeable weight from package dimensions. Missing facts are returned as null and named in unavailable_fields where applicable. Derived values disclose their method; source-backed values disclose source, time window and age. ","tags":["frachtwerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["length_cm","width_cm","height_cm","actual_weight_kg","volumetric_divisor_cm3_per_kg"],"additionalProperties":false,"properties":{"length_cm":{"type":"number","minimum":0.01,"maximum":1000000000000,"description":""},"width_cm":{"type":"number","minimum":0.01,"maximum":1000000000000,"description":""},"height_cm":{"type":"number","minimum":0.01,"maximum":1000000000000,"description":""},"actual_weight_kg":{"type":"number","minimum":0,"maximum":1000000000000,"description":""},"volumetric_divisor_cm3_per_kg":{"type":"number","minimum":1,"maximum":1000000000000,"description":""}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}},"/v1/dangerous-goods":{"post":{"operationId":"frachtwerk_dangerous_goods","summary":"Returns a supplied published dangerous-goods record for a UN number and exposes missing fields.","description":"Returns a supplied published dangerous-goods record for a UN number and exposes missing fields. Missing facts are returned as null and named in unavailable_fields where applicable. Derived values disclose their method; source-backed values disclose source, time window and age. ","tags":["frachtwerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["un_number","records","source"],"additionalProperties":false,"properties":{"un_number":{"type":"string","pattern":"^UN[0-9]{4}$"},"records":{"type":"array","maxItems":5000,"items":{"type":"object","required":["un_number","proper_shipping_name","class","packing_group","provisions"],"additionalProperties":false,"properties":{"un_number":{"type":"string","minLength":6,"maxLength":6,"description":""},"proper_shipping_name":{"type":"string","minLength":1,"maxLength":512,"description":""},"class":{"type":"string","minLength":1,"maxLength":512,"description":""},"packing_group":{"type":"string","minLength":0,"maxLength":10,"description":""},"provisions":{"type":"array","maxItems":100,"items":{"type":"string","minLength":1,"maxLength":512,"description":""}}}}},"source":{"type":"object","required":["url","published_at","title"],"additionalProperties":false,"properties":{"url":{"type":"string","format":"uri"},"published_at":{"type":"string","format":"date-time"},"title":{"type":"string","minLength":3,"maxLength":300,"description":""}}}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}},"/v1/port-pair":{"post":{"operationId":"frachtwerk_port_pair","summary":"Estimates great-circle port distance and sailing time from supplied port coordinates and speed.","description":"Estimates great-circle port distance and sailing time from supplied port coordinates and speed. Missing facts are returned as null and named in unavailable_fields where applicable. Derived values disclose their method; source-backed values disclose source, time window and age. ","tags":["frachtwerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["origin","destination","speed_knots","detour_factor"],"additionalProperties":false,"properties":{"origin":{"type":"object","required":["lat","lon"],"additionalProperties":false,"properties":{"lat":{"type":"number","minimum":-90,"maximum":90,"description":""},"lon":{"type":"number","minimum":-180,"maximum":180,"description":""}}},"destination":{"type":"object","required":["lat","lon"],"additionalProperties":false,"properties":{"lat":{"type":"number","minimum":-90,"maximum":90,"description":""},"lon":{"type":"number","minimum":-180,"maximum":180,"description":""}}},"speed_knots":{"type":"number","minimum":0.1,"maximum":100,"description":""},"detour_factor":{"type":"number","minimum":1,"maximum":5,"description":""}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object","required":["method"],"properties":{"method":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Eingabe ungültig, charged=false"},"402":{"description":"Zahlung erforderlich. Die Antwort trägt accepts, description und inputSchema.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"429":{"description":"Zu viele unbezahlte Anfragen, charged=false"},"502":{"description":"Gegenstelle nicht erreichbar, charged=false"},"504":{"description":"Zeitbudget überschritten, charged=false"}}}}},"components":{"schemas":{"PaymentRequired":{"type":"object","properties":{"x402Version":{"type":"integer"},"error":{"type":"string"},"description":{"type":"string"},"inputSchema":{"type":"object"},"accepts":{"type":"array","items":{"type":"object"}}}}},"securitySchemes":{"x402":{"type":"apiKey","in":"header","name":"PAYMENT-SIGNATURE","description":"x402 Zahlungsnachweis"}}}}