{"openapi":"3.1.0","info":{"title":"HALOWERK rohstoffwerk","version":"1.0.0","description":"HALOWERK rohstoffwerk — bezahlte Endpunkte nach x402. Preise in USDC auf Base Mainnet.","contact":{"url":"https://material.halowerk.com/"}},"servers":[{"url":"https://material.halowerk.com"}],"paths":{"/cable-mass":{"post":{"operationId":"cable_conductor_mass","summary":"Returns the exact conductor mass of a cable run and an estimated range for the total cable mass, so a scrap lot can be valued before it is weighed.","description":"Conductor mass is calculated from nominal cross-section, core count and length against the material density; for a nominal cross-section this is exact and independent of stranding. Total cable mass and the copper share are returned as a range derived from published manufacturer weight tables per cross-section band, not as a type-test value. Insulation, filler and armour are not modelled individually. Concentric conductors (NYCWY) are only included if concentric_conductor_mm2 is supplied; otherwise the field stays null and is named in unavailable_fields. No market price is applied here.","tags":["rohstoffwerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["cable_type","cores","cross_section_mm2"],"additionalProperties":false,"properties":{"cable_type":{"type":"string","description":"Cable designation, e.g. NYM-J, NYY-J, H07V-K, H05VV-F, H07RN-F, NYCWY."},"cores":{"type":"integer","minimum":1,"maximum":61,"description":"Number of load-carrying cores."},"cross_section_mm2":{"type":"number","minimum":0.05,"maximum":1000,"description":"Nominal cross-section of one core in mm2."},"length_m":{"type":"number","minimum":0.1,"maximum":100000,"default":1,"description":"Cable length in metres. Default 1."},"conductor":{"type":"string","enum":["copper","aluminium"],"default":"copper"},"concentric_conductor_mm2":{"type":"number","minimum":0,"maximum":500,"description":"Cross-section of the concentric conductor, if present."}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"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"}}}},"/scrap-margin":{"post":{"operationId":"scrap_purchase_margin","summary":"Calculates the margin of a scrap purchase after recovery yield, melting loss and handling cost, and returns the break-even purchase price per kilogram.","description":"Takes the gross lot weight, the purchase price paid per kilogram of gross weight and the sales price per kilogram of recovered metal, then applies recovery yield and melting loss for the scrap grade. Yield and loss default to practice values per grade and can be overridden. Handling, transport and disposal cost are optional flat amounts. The endpoint applies no market price and fetches none: sales_price_eur_per_kg is supplied by the caller. Currency is treated as a label only, no conversion is performed.","tags":["rohstoffwerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["grade","gross_weight_kg","purchase_price_eur_per_kg","sales_price_eur_per_kg"],"additionalProperties":false,"properties":{"grade":{"type":"string","description":"Scrap grade key, e.g. copper_millberry, cable_scrap_high, motor_scrap."},"gross_weight_kg":{"type":"number","minimum":0.1,"maximum":1000000},"purchase_price_eur_per_kg":{"type":"number","minimum":0,"maximum":10000,"description":"Price paid per kilogram of gross weight."},"sales_price_eur_per_kg":{"type":"number","minimum":0,"maximum":10000,"description":"Achievable price per kilogram of recovered metal."},"yield_percent":{"type":"number","minimum":1,"maximum":100,"description":"Overrides the recovery yield of the grade."},"melting_loss_percent":{"type":"number","minimum":0,"maximum":50,"description":"Overrides the melting loss of the grade."},"processing_cost_eur":{"type":"number","minimum":0,"maximum":1000000,"default":0},"transport_cost_eur":{"type":"number","minimum":0,"maximum":1000000,"default":0},"disposal_cost_eur_per_kg":{"type":"number","minimum":0,"maximum":1000,"default":0,"description":"Cost per kilogram of non-metal residue."}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"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"}}}},"/awg-metric":{"post":{"operationId":"awg_metric_convert","summary":"Converts an AWG size into diameter, cross-section, mass per metre and DC resistance, or maps a metric cross-section back to the nearest AWG size.","description":"Uses the geometric AWG definition, so results are exact for solid round conductors. Mass per metre and resistance follow from the material density and resistivity at 20 degrees Celsius; stranded conductors carry roughly two to five percent more mass and resistance per metre than the same nominal size and are not modelled separately. Supply either awg or cross_section_mm2, not both. Sizes 4/0 through 40 AWG are covered.","tags":["rohstoffwerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"awg":{"type":"string","description":"AWG size, e.g. \"12\", \"0\", \"2/0\", \"4/0\"."},"cross_section_mm2":{"type":"number","minimum":0.01,"maximum":1000,"description":"Metric cross-section for the reverse direction."},"material":{"type":"string","enum":["copper","aluminium"],"default":"copper"},"length_m":{"type":"number","minimum":0.1,"maximum":100000,"default":1}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"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"}}}},"/copper-co2":{"post":{"operationId":"copper_recycling_co2","summary":"Returns the greenhouse gas saving of a copper quantity taken through a secondary route instead of primary cathode production, as a range with the factors used.","description":"Multiplies the copper quantity by literature emission factors for the chosen secondary route and for primary cathode production, and reports the difference as low, typical and high. The factors are published life cycle averages and are stated in the response; they are not a certified product carbon footprint and are not a valid basis for a carbon credit, a customer declaration or an audited claim. Transport of the scrap to the plant is excluded unless transport_km and transport_factor_kg_co2e_per_tkm are supplied. Both factors can be overridden with own verified values.","tags":["rohstoffwerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["copper_kg"],"additionalProperties":false,"properties":{"copper_kg":{"type":"number","minimum":0.01,"maximum":10000000},"route":{"type":"string","enum":["secondary_remelt","secondary_refined","cable_granulation"],"default":"secondary_refined"},"primary_factor_kg_co2e_per_kg":{"type":"number","minimum":0,"maximum":50,"description":"Overrides the primary cathode factor."},"secondary_factor_kg_co2e_per_kg":{"type":"number","minimum":0,"maximum":50,"description":"Overrides the secondary route factor."},"transport_km":{"type":"number","minimum":0,"maximum":40000,"default":0},"transport_factor_kg_co2e_per_tkm":{"type":"number","minimum":0,"maximum":5,"description":"Own transport factor per tonne-kilometre. Without it transport stays excluded."}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"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"}}}},"/pcb-precious-metals":{"post":{"operationId":"pcb_precious_metal_estimate","summary":"Estimates the gold, silver, palladium and copper content of a scrap board lot as a range per board class, optionally valued with prices supplied by the caller.","description":"Returns published content ranges per board class multiplied by the lot mass. The spread between low and high is wide and real: content depends on board generation, manufacturer and how much of the assembly is included. This is a planning estimate for sorting and pre-valuation, not an assay, not a settlement basis and not a substitute for a sampled analysis. Values are only calculated when price_eur_per_g is supplied by the caller; no metal price is retrieved or resold here. Recovery losses at the smelter are not deducted unless recovery_percent is given.","tags":["rohstoffwerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["board_class","mass_kg"],"additionalProperties":false,"properties":{"board_class":{"type":"string","description":"Board class key, e.g. mobile_phone_pcb, server_board, memory_module, cpu_ceramic."},"mass_kg":{"type":"number","minimum":0.01,"maximum":100000,"description":"Mass of the board lot, boards only, without housings or drives."},"price_eur_per_g":{"type":"object","additionalProperties":false,"description":"Own prices per gram. Only metals given here are valued.","properties":{"gold":{"type":"number","minimum":0,"maximum":100000},"silver":{"type":"number","minimum":0,"maximum":100000},"palladium":{"type":"number","minimum":0,"maximum":100000},"copper":{"type":"number","minimum":0,"maximum":100000}}},"recovery_percent":{"type":"number","minimum":1,"maximum":100,"description":"Share actually recovered at the smelter. Without it the gross content is reported."}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"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"}}}},"/parcel-bundling":{"post":{"operationId":"parcel_bundling_check","summary":"Decides whether shipping items bundled into fewer parcels is cheaper than shipping them singly, against the rate table the caller supplies.","description":"Packs items into parcels by descending weight, first fit, within a maximum parcel weight and an optional maximum girth, prices each parcel with the cheapest matching bracket of the supplied rate table and compares the total against single shipment. The rate table is caller data: no carrier tariff is stored or redistributed. First fit is a heuristic, not a proven optimum.","tags":["rohstoffwerk"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["items","rates"],"additionalProperties":false,"properties":{"items":{"type":"array","minItems":1,"maxItems":200,"description":"Items to ship. Girth limits apply only when every item carries all three dimensions.","items":{"type":"object","required":["weight_kg"],"additionalProperties":false,"properties":{"name":{"type":"string"},"weight_kg":{"type":"number","minimum":0.001,"maximum":1000},"length_cm":{"type":"number","minimum":0.1,"maximum":500},"width_cm":{"type":"number","minimum":0.1,"maximum":500},"height_cm":{"type":"number","minimum":0.1,"maximum":500},"quantity":{"type":"integer","minimum":1,"maximum":500,"default":1}}}},"rates":{"type":"array","minItems":1,"maxItems":40,"description":"Own rate brackets; the cheapest fitting bracket wins.","items":{"type":"object","required":["max_weight_kg","price_eur"],"additionalProperties":false,"properties":{"label":{"type":"string"},"max_weight_kg":{"type":"number","minimum":0.001,"maximum":1000},"max_girth_cm":{"type":"number","minimum":1,"maximum":1000},"price_eur":{"type":"number","minimum":0,"maximum":100000}}}},"max_parcel_weight_kg":{"type":"number","minimum":0.1,"maximum":1000,"description":"Limit per parcel; defaults to the heaviest bracket."},"packaging_cost_eur":{"type":"number","minimum":0,"maximum":10000,"default":0,"description":"Packaging cost per parcel."}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"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"}}}}