{"openapi":"3.1.0","info":{"title":"SokoGrow API","version":"1.0.0","description":"Org-scoped access to listings, your members' orders and usage, plus signed webhooks. Authenticate with `X-Api-Key: fc_live_…` (production) or `fc_test_…` (the sandbox on staging). Money is always an integer string in minor units. Every key has scopes and a per-minute limit; every call is metered."},"servers":[{"url":""}],"components":{"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"X-Api-Key"}},"schemas":{"Order":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"publicId":{"type":"string"},"status":{"type":"string"},"side":{"type":"string","enum":["buyer","seller","both"]},"listingId":{"type":["string","null"],"format":"uuid"},"buyerId":{"type":"string","format":"uuid"},"sellerId":{"type":"string","format":"uuid"},"qtyMilli":{"type":"string","description":"Quantity in thousandths of the unit"},"unitPriceMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"subtotalMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"currency":{"type":"string","description":"ISO 4217"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"Listing":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"object","additionalProperties":{"type":"string"},"description":"By language code"},"category":{"type":"object"},"quantityMilli":{"type":"string"},"unit":{"type":"string"},"priceMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"currency":{"type":"string"},"priceType":{"type":"string"},"countryCode":{"type":"string"},"region":{"type":["string","null"]},"media":{"type":"array","items":{"type":"object"}},"seller":{"type":"object"}}},"Error":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}},"x-scopes":["listings:read","orders:read","usage:read","webhooks:manage","data:read"],"paths":{"/v1/api/listings":{"get":{"summary":"Search live listings","security":[{"apiKey":[]}],"x-scope":"listings:read","parameters":[{"name":"q","in":"query","required":false,"schema":{"default":"","type":"string","maxLength":120}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","enum":["en","ha","yo","ig","pcm","ff","kr","tiv","sw","fr","am","pt","ar","zu","xh","ak","ee","wo","bm","rw","rn","lg","om","ti","so","ln","sn","ny","tn","st","af","mg","tzm"]}},{"name":"pillar","in":"query","required":false,"schema":{"type":"string","enum":["livestock","crops_grains","horticulture_spices","agro_inputs_byproducts"]}},{"name":"categoryId","in":"query","required":false,"schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},{"name":"country","in":"query","required":false,"schema":{"type":"string","minLength":2,"maxLength":2}},{"name":"currency","in":"query","required":false,"schema":{"type":"string","enum":["USD","EUR","GBP","AOA","BIF","BWP","CDF","CVE","DJF","DZD","EGP","ERN","ETB","GHS","GMD","GNF","KES","KMF","LRD","LSL","LYD","MAD","MGA","MRU","MUR","MWK","MZN","NAD","NGN","RWF","SCR","SDG","SLE","SOS","SSP","STN","SZL","TND","TZS","UGX","XAF","XOF","ZAR","ZMW","ZWG"]}},{"name":"minPrice","in":"query","required":false,"schema":{"type":"string","pattern":"^-?\\d+$"}},{"name":"maxPrice","in":"query","required":false,"schema":{"type":"string","pattern":"^-?\\d+$"}},{"name":"practice","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z_]{2,40}$"}},{"name":"near","in":"query","required":false,"schema":{"type":"string","pattern":"^-?\\d{1,2}(\\.\\d+)?,-?\\d{1,3}(\\.\\d+)?$"}},{"name":"radiusKm","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":2000}},{"name":"verification","in":"query","required":false,"schema":{"type":"string","enum":["phone","id_verified","gps_farm_verified","exporter_verified","verified_land"]}},{"name":"sort","in":"query","required":false,"schema":{"default":"relevance","type":"string","enum":["relevance","newest","price_asc","price_desc","nearest"]}},{"name":"page","in":"query","required":false,"schema":{"default":1,"type":"integer","minimum":1,"maximum":100}},{"name":"perPage","in":"query","required":false,"schema":{"default":20,"type":"integer","minimum":1,"maximum":50}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"total":{"type":"integer"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"object","additionalProperties":{"type":"string"},"description":"By language code"},"category":{"type":"object"},"quantityMilli":{"type":"string"},"unit":{"type":"string"},"priceMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"currency":{"type":"string"},"priceType":{"type":"string"},"countryCode":{"type":"string"},"region":{"type":["string","null"]},"media":{"type":"array","items":{"type":"object"}},"seller":{"type":"object"}}}}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}},"403":{"description":"The key lacks the scope","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}},"429":{"description":"Rate limit exceeded (per key, per minute)","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}}}}},"/v1/api/listings/{id}":{"get":{"summary":"One live listing","security":[{"apiKey":[]}],"x-scope":"listings:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"object","additionalProperties":{"type":"string"},"description":"By language code"},"category":{"type":"object"},"quantityMilli":{"type":"string"},"unit":{"type":"string"},"priceMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"currency":{"type":"string"},"priceType":{"type":"string"},"countryCode":{"type":"string"},"region":{"type":["string","null"]},"media":{"type":"array","items":{"type":"object"}},"seller":{"type":"object"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}},"403":{"description":"The key lacks the scope","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}},"404":{"description":"Not found or not live","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}},"429":{"description":"Rate limit exceeded (per key, per minute)","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}}}}},"/v1/api/orders":{"get":{"summary":"Orders your organisation's members are party to","security":[{"apiKey":[]}],"x-scope":"orders:read","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","maxLength":40}},{"name":"since","in":"query","required":false,"schema":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"publicId":{"type":"string"},"status":{"type":"string"},"side":{"type":"string","enum":["buyer","seller","both"]},"listingId":{"type":["string","null"],"format":"uuid"},"buyerId":{"type":"string","format":"uuid"},"sellerId":{"type":"string","format":"uuid"},"qtyMilli":{"type":"string","description":"Quantity in thousandths of the unit"},"unitPriceMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"subtotalMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"currency":{"type":"string","description":"ISO 4217"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}},"403":{"description":"The key lacks the scope","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}},"429":{"description":"Rate limit exceeded (per key, per minute)","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}}}}},"/v1/api/orders/{id}":{"get":{"summary":"One order","security":[{"apiKey":[]}],"x-scope":"orders:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"publicId":{"type":"string"},"status":{"type":"string"},"side":{"type":"string","enum":["buyer","seller","both"]},"listingId":{"type":["string","null"],"format":"uuid"},"buyerId":{"type":"string","format":"uuid"},"sellerId":{"type":"string","format":"uuid"},"qtyMilli":{"type":"string","description":"Quantity in thousandths of the unit"},"unitPriceMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"subtotalMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"currency":{"type":"string","description":"ISO 4217"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}},"403":{"description":"The key lacks the scope","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}},"429":{"description":"Rate limit exceeded (per key, per minute)","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}}}}},"/v1/api/usage":{"get":{"summary":"This month's metered usage","security":[{"apiKey":[]}],"x-scope":"usage:read","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}$"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"period":{"type":"string"},"meters":{"type":"object","additionalProperties":{"type":"string"}}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}},"403":{"description":"The key lacks the scope","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}},"429":{"description":"Rate limit exceeded (per key, per minute)","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}}}}},"/v1/api/data/{code}":{"get":{"summary":"A data product (aggregates only; cells under 10 people or 10 deals are withheld)","security":[{"apiKey":[]}],"x-scope":"data:read","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","enum":["regional_price_index","supply_heatmap","seasonal_trends","demand_signals"]}},{"name":"country","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":2}},{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}},{"name":"category","in":"query","required":false,"schema":{"type":"string","pattern":"^[a-z0-9-]{2,60}$"}},{"name":"region","in":"query","required":false,"schema":{"type":"string","maxLength":80}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"product":{"type":"string"},"kMin":{"type":"integer"},"rows":{"type":"array","items":{"type":"object"}},"suppressedCells":{"type":"integer"}}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}},"403":{"description":"The key lacks the scope","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}},"422":{"description":"Only cells below the k-anonymity floor match (reason k_anonymity)","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}},"429":{"description":"Rate limit exceeded (per key, per minute)","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}}}}},"/v1/api/webhooks":{"get":{"summary":"List webhook endpoints","security":[{"apiKey":[]}],"x-scope":"webhooks:manage","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}},"403":{"description":"The key lacks the scope","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}},"429":{"description":"Rate limit exceeded (per key, per minute)","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}}}},"post":{"summary":"Add a webhook endpoint (the signing secret is returned once)","security":[{"apiKey":[]}],"x-scope":"webhooks:manage","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"url":{"type":"string","maxLength":500,"format":"uri"},"events":{"minItems":1,"type":"array","items":{"type":"string","enum":["order.created","order.accepted","order.funded","order.in_transit","order.delivered","order.completed","order.cancelled","order.refunded","order.disputed","listing.published","listing.updated","listing.deleted","ping"]}},"description":{"type":"string","maxLength":200}},"required":["url","events"]}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}},"403":{"description":"The key lacks the scope","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}},"429":{"description":"Rate limit exceeded (per key, per minute)","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}}}}},"/v1/api/webhooks/{id}":{"delete":{"summary":"Disable an endpoint","security":[{"apiKey":[]}],"x-scope":"webhooks:manage","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}},"403":{"description":"The key lacks the scope","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}},"429":{"description":"Rate limit exceeded (per key, per minute)","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}}}}},"/v1/api/webhooks/{id}/test":{"post":{"summary":"Send a signed `ping` now","security":[{"apiKey":[]}],"x-scope":"webhooks:manage","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}},"403":{"description":"The key lacks the scope","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}},"429":{"description":"Rate limit exceeded (per key, per minute)","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}}}}},"/v1/api/webhooks/{id}/deliveries":{"get":{"summary":"Delivery log (attempts, status codes, errors)","security":[{"apiKey":[]}],"x-scope":"webhooks:manage","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}},"403":{"description":"The key lacks the scope","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}},"429":{"description":"Rate limit exceeded (per key, per minute)","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string"},"message_key":{"type":"string"},"message":{"type":"string"},"details":{},"traceId":{"type":"string"}}}}}}}}}},"webhooks":{"order.created":{"post":{"summary":"Event order.created","description":"POSTed as JSON `{ id, type, createdAt, data }`. Verify `X-SokoGrow-Signature: t=<unix>,v1=<hex>` as HMAC-SHA256 of `<t>.<raw body>` with your endpoint secret, and reject timestamps older than 5 minutes. Answer 2xx within 10 s; failures are retried after 1 min, 5 min, 30 min, 2 h, 6 h, 12 h and 24 h. Deliveries can repeat: deduplicate by `id`. The same values are also sent under the legacy `X-FarmChat-*` header names for integrations built before the rename.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","const":"order.created"},"createdAt":{"type":"string","format":"date-time"},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"publicId":{"type":"string"},"status":{"type":"string"},"side":{"type":"string","enum":["buyer","seller","both"]},"listingId":{"type":["string","null"],"format":"uuid"},"buyerId":{"type":"string","format":"uuid"},"sellerId":{"type":"string","format":"uuid"},"qtyMilli":{"type":"string","description":"Quantity in thousandths of the unit"},"unitPriceMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"subtotalMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"currency":{"type":"string","description":"ISO 4217"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}}},"responses":{"200":{"description":"Received"}}}},"order.accepted":{"post":{"summary":"Event order.accepted","description":"POSTed as JSON `{ id, type, createdAt, data }`. Verify `X-SokoGrow-Signature: t=<unix>,v1=<hex>` as HMAC-SHA256 of `<t>.<raw body>` with your endpoint secret, and reject timestamps older than 5 minutes. Answer 2xx within 10 s; failures are retried after 1 min, 5 min, 30 min, 2 h, 6 h, 12 h and 24 h. Deliveries can repeat: deduplicate by `id`. The same values are also sent under the legacy `X-FarmChat-*` header names for integrations built before the rename.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","const":"order.accepted"},"createdAt":{"type":"string","format":"date-time"},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"publicId":{"type":"string"},"status":{"type":"string"},"side":{"type":"string","enum":["buyer","seller","both"]},"listingId":{"type":["string","null"],"format":"uuid"},"buyerId":{"type":"string","format":"uuid"},"sellerId":{"type":"string","format":"uuid"},"qtyMilli":{"type":"string","description":"Quantity in thousandths of the unit"},"unitPriceMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"subtotalMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"currency":{"type":"string","description":"ISO 4217"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}}},"responses":{"200":{"description":"Received"}}}},"order.funded":{"post":{"summary":"Event order.funded","description":"POSTed as JSON `{ id, type, createdAt, data }`. Verify `X-SokoGrow-Signature: t=<unix>,v1=<hex>` as HMAC-SHA256 of `<t>.<raw body>` with your endpoint secret, and reject timestamps older than 5 minutes. Answer 2xx within 10 s; failures are retried after 1 min, 5 min, 30 min, 2 h, 6 h, 12 h and 24 h. Deliveries can repeat: deduplicate by `id`. The same values are also sent under the legacy `X-FarmChat-*` header names for integrations built before the rename.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","const":"order.funded"},"createdAt":{"type":"string","format":"date-time"},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"publicId":{"type":"string"},"status":{"type":"string"},"side":{"type":"string","enum":["buyer","seller","both"]},"listingId":{"type":["string","null"],"format":"uuid"},"buyerId":{"type":"string","format":"uuid"},"sellerId":{"type":"string","format":"uuid"},"qtyMilli":{"type":"string","description":"Quantity in thousandths of the unit"},"unitPriceMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"subtotalMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"currency":{"type":"string","description":"ISO 4217"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}}},"responses":{"200":{"description":"Received"}}}},"order.in_transit":{"post":{"summary":"Event order.in_transit","description":"POSTed as JSON `{ id, type, createdAt, data }`. Verify `X-SokoGrow-Signature: t=<unix>,v1=<hex>` as HMAC-SHA256 of `<t>.<raw body>` with your endpoint secret, and reject timestamps older than 5 minutes. Answer 2xx within 10 s; failures are retried after 1 min, 5 min, 30 min, 2 h, 6 h, 12 h and 24 h. Deliveries can repeat: deduplicate by `id`. The same values are also sent under the legacy `X-FarmChat-*` header names for integrations built before the rename.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","const":"order.in_transit"},"createdAt":{"type":"string","format":"date-time"},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"publicId":{"type":"string"},"status":{"type":"string"},"side":{"type":"string","enum":["buyer","seller","both"]},"listingId":{"type":["string","null"],"format":"uuid"},"buyerId":{"type":"string","format":"uuid"},"sellerId":{"type":"string","format":"uuid"},"qtyMilli":{"type":"string","description":"Quantity in thousandths of the unit"},"unitPriceMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"subtotalMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"currency":{"type":"string","description":"ISO 4217"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}}},"responses":{"200":{"description":"Received"}}}},"order.delivered":{"post":{"summary":"Event order.delivered","description":"POSTed as JSON `{ id, type, createdAt, data }`. Verify `X-SokoGrow-Signature: t=<unix>,v1=<hex>` as HMAC-SHA256 of `<t>.<raw body>` with your endpoint secret, and reject timestamps older than 5 minutes. Answer 2xx within 10 s; failures are retried after 1 min, 5 min, 30 min, 2 h, 6 h, 12 h and 24 h. Deliveries can repeat: deduplicate by `id`. The same values are also sent under the legacy `X-FarmChat-*` header names for integrations built before the rename.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","const":"order.delivered"},"createdAt":{"type":"string","format":"date-time"},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"publicId":{"type":"string"},"status":{"type":"string"},"side":{"type":"string","enum":["buyer","seller","both"]},"listingId":{"type":["string","null"],"format":"uuid"},"buyerId":{"type":"string","format":"uuid"},"sellerId":{"type":"string","format":"uuid"},"qtyMilli":{"type":"string","description":"Quantity in thousandths of the unit"},"unitPriceMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"subtotalMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"currency":{"type":"string","description":"ISO 4217"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}}},"responses":{"200":{"description":"Received"}}}},"order.completed":{"post":{"summary":"Event order.completed","description":"POSTed as JSON `{ id, type, createdAt, data }`. Verify `X-SokoGrow-Signature: t=<unix>,v1=<hex>` as HMAC-SHA256 of `<t>.<raw body>` with your endpoint secret, and reject timestamps older than 5 minutes. Answer 2xx within 10 s; failures are retried after 1 min, 5 min, 30 min, 2 h, 6 h, 12 h and 24 h. Deliveries can repeat: deduplicate by `id`. The same values are also sent under the legacy `X-FarmChat-*` header names for integrations built before the rename.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","const":"order.completed"},"createdAt":{"type":"string","format":"date-time"},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"publicId":{"type":"string"},"status":{"type":"string"},"side":{"type":"string","enum":["buyer","seller","both"]},"listingId":{"type":["string","null"],"format":"uuid"},"buyerId":{"type":"string","format":"uuid"},"sellerId":{"type":"string","format":"uuid"},"qtyMilli":{"type":"string","description":"Quantity in thousandths of the unit"},"unitPriceMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"subtotalMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"currency":{"type":"string","description":"ISO 4217"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}}},"responses":{"200":{"description":"Received"}}}},"order.cancelled":{"post":{"summary":"Event order.cancelled","description":"POSTed as JSON `{ id, type, createdAt, data }`. Verify `X-SokoGrow-Signature: t=<unix>,v1=<hex>` as HMAC-SHA256 of `<t>.<raw body>` with your endpoint secret, and reject timestamps older than 5 minutes. Answer 2xx within 10 s; failures are retried after 1 min, 5 min, 30 min, 2 h, 6 h, 12 h and 24 h. Deliveries can repeat: deduplicate by `id`. The same values are also sent under the legacy `X-FarmChat-*` header names for integrations built before the rename.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","const":"order.cancelled"},"createdAt":{"type":"string","format":"date-time"},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"publicId":{"type":"string"},"status":{"type":"string"},"side":{"type":"string","enum":["buyer","seller","both"]},"listingId":{"type":["string","null"],"format":"uuid"},"buyerId":{"type":"string","format":"uuid"},"sellerId":{"type":"string","format":"uuid"},"qtyMilli":{"type":"string","description":"Quantity in thousandths of the unit"},"unitPriceMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"subtotalMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"currency":{"type":"string","description":"ISO 4217"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}}},"responses":{"200":{"description":"Received"}}}},"order.refunded":{"post":{"summary":"Event order.refunded","description":"POSTed as JSON `{ id, type, createdAt, data }`. Verify `X-SokoGrow-Signature: t=<unix>,v1=<hex>` as HMAC-SHA256 of `<t>.<raw body>` with your endpoint secret, and reject timestamps older than 5 minutes. Answer 2xx within 10 s; failures are retried after 1 min, 5 min, 30 min, 2 h, 6 h, 12 h and 24 h. Deliveries can repeat: deduplicate by `id`. The same values are also sent under the legacy `X-FarmChat-*` header names for integrations built before the rename.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","const":"order.refunded"},"createdAt":{"type":"string","format":"date-time"},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"publicId":{"type":"string"},"status":{"type":"string"},"side":{"type":"string","enum":["buyer","seller","both"]},"listingId":{"type":["string","null"],"format":"uuid"},"buyerId":{"type":"string","format":"uuid"},"sellerId":{"type":"string","format":"uuid"},"qtyMilli":{"type":"string","description":"Quantity in thousandths of the unit"},"unitPriceMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"subtotalMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"currency":{"type":"string","description":"ISO 4217"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}}},"responses":{"200":{"description":"Received"}}}},"order.disputed":{"post":{"summary":"Event order.disputed","description":"POSTed as JSON `{ id, type, createdAt, data }`. Verify `X-SokoGrow-Signature: t=<unix>,v1=<hex>` as HMAC-SHA256 of `<t>.<raw body>` with your endpoint secret, and reject timestamps older than 5 minutes. Answer 2xx within 10 s; failures are retried after 1 min, 5 min, 30 min, 2 h, 6 h, 12 h and 24 h. Deliveries can repeat: deduplicate by `id`. The same values are also sent under the legacy `X-FarmChat-*` header names for integrations built before the rename.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","const":"order.disputed"},"createdAt":{"type":"string","format":"date-time"},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"publicId":{"type":"string"},"status":{"type":"string"},"side":{"type":"string","enum":["buyer","seller","both"]},"listingId":{"type":["string","null"],"format":"uuid"},"buyerId":{"type":"string","format":"uuid"},"sellerId":{"type":"string","format":"uuid"},"qtyMilli":{"type":"string","description":"Quantity in thousandths of the unit"},"unitPriceMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"subtotalMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"currency":{"type":"string","description":"ISO 4217"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}}}}}}},"responses":{"200":{"description":"Received"}}}},"listing.published":{"post":{"summary":"Event listing.published","description":"POSTed as JSON `{ id, type, createdAt, data }`. Verify `X-SokoGrow-Signature: t=<unix>,v1=<hex>` as HMAC-SHA256 of `<t>.<raw body>` with your endpoint secret, and reject timestamps older than 5 minutes. Answer 2xx within 10 s; failures are retried after 1 min, 5 min, 30 min, 2 h, 6 h, 12 h and 24 h. Deliveries can repeat: deduplicate by `id`. The same values are also sent under the legacy `X-FarmChat-*` header names for integrations built before the rename.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","const":"listing.published"},"createdAt":{"type":"string","format":"date-time"},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"object","additionalProperties":{"type":"string"},"description":"By language code"},"category":{"type":"object"},"quantityMilli":{"type":"string"},"unit":{"type":"string"},"priceMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"currency":{"type":"string"},"priceType":{"type":"string"},"countryCode":{"type":"string"},"region":{"type":["string","null"]},"media":{"type":"array","items":{"type":"object"}},"seller":{"type":"object"}}}}}}}},"responses":{"200":{"description":"Received"}}}},"listing.updated":{"post":{"summary":"Event listing.updated","description":"POSTed as JSON `{ id, type, createdAt, data }`. Verify `X-SokoGrow-Signature: t=<unix>,v1=<hex>` as HMAC-SHA256 of `<t>.<raw body>` with your endpoint secret, and reject timestamps older than 5 minutes. Answer 2xx within 10 s; failures are retried after 1 min, 5 min, 30 min, 2 h, 6 h, 12 h and 24 h. Deliveries can repeat: deduplicate by `id`. The same values are also sent under the legacy `X-FarmChat-*` header names for integrations built before the rename.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","const":"listing.updated"},"createdAt":{"type":"string","format":"date-time"},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"object","additionalProperties":{"type":"string"},"description":"By language code"},"category":{"type":"object"},"quantityMilli":{"type":"string"},"unit":{"type":"string"},"priceMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"currency":{"type":"string"},"priceType":{"type":"string"},"countryCode":{"type":"string"},"region":{"type":["string","null"]},"media":{"type":"array","items":{"type":"object"}},"seller":{"type":"object"}}}}}}}},"responses":{"200":{"description":"Received"}}}},"listing.deleted":{"post":{"summary":"Event listing.deleted","description":"POSTed as JSON `{ id, type, createdAt, data }`. Verify `X-SokoGrow-Signature: t=<unix>,v1=<hex>` as HMAC-SHA256 of `<t>.<raw body>` with your endpoint secret, and reject timestamps older than 5 minutes. Answer 2xx within 10 s; failures are retried after 1 min, 5 min, 30 min, 2 h, 6 h, 12 h and 24 h. Deliveries can repeat: deduplicate by `id`. The same values are also sent under the legacy `X-FarmChat-*` header names for integrations built before the rename.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","const":"listing.deleted"},"createdAt":{"type":"string","format":"date-time"},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"object","additionalProperties":{"type":"string"},"description":"By language code"},"category":{"type":"object"},"quantityMilli":{"type":"string"},"unit":{"type":"string"},"priceMinor":{"type":"string","pattern":"^-?\\d+$","description":"Integer amount in minor units (bigint as string)"},"currency":{"type":"string"},"priceType":{"type":"string"},"countryCode":{"type":"string"},"region":{"type":["string","null"]},"media":{"type":"array","items":{"type":"object"}},"seller":{"type":"object"}}}}}}}},"responses":{"200":{"description":"Received"}}}},"ping":{"post":{"summary":"Event ping","description":"POSTed as JSON `{ id, type, createdAt, data }`. Verify `X-SokoGrow-Signature: t=<unix>,v1=<hex>` as HMAC-SHA256 of `<t>.<raw body>` with your endpoint secret, and reject timestamps older than 5 minutes. Answer 2xx within 10 s; failures are retried after 1 min, 5 min, 30 min, 2 h, 6 h, 12 h and 24 h. Deliveries can repeat: deduplicate by `id`. The same values are also sent under the legacy `X-FarmChat-*` header names for integrations built before the rename.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","const":"ping"},"createdAt":{"type":"string","format":"date-time"},"data":{"type":"object"}}}}}},"responses":{"200":{"description":"Received"}}}}}}