{"components":{"examples":{"account_in_arrears":{"summary":"Negative balance blocks metered calls","value":{"charged":false,"code":"account_in_arrears","detail":"A negative balance blocks metered calls until it is settled.","instance":"urn:hippomundo:request:01J5AR8Q2K0000000000000006","request_id":"01J5AR8Q2K0000000000000006","retryable":false,"status":402,"title":"Account in arrears","type":"https://enterprise.hippomundo.com/docs/errors/account_in_arrears"}},"api_key_credit_cap_reached":{"summary":"The request would take the API key past its credit cap for the current period","value":{"charged":false,"code":"api_key_credit_cap_reached","detail":"This request would take the API key past the credit cap its owner set for the current period. A request that costs less may still succeed, and the full cap is available again when the next period starts.","instance":"urn:hippomundo:request:01J5AR8Q2K000000000000000M","request_id":"01J5AR8Q2K000000000000000M","retryable":true,"status":402,"title":"API key credit cap reached","type":"https://enterprise.hippomundo.com/docs/errors/api_key_credit_cap_reached"}},"dependency_error":{"summary":"A managed dependency returned an invalid or failing response","value":{"charged":false,"code":"dependency_error","detail":"A required internal dependency failed.","instance":"urn:hippomundo:request:01J5AR8Q2K000000000000000H","request_id":"01J5AR8Q2K000000000000000H","retryable":false,"status":502,"title":"Dependency error","type":"https://enterprise.hippomundo.com/docs/errors/dependency_error"}},"dependency_timeout":{"summary":"A dependency exceeded its deadline","value":{"charged":false,"code":"dependency_timeout","detail":"A required internal dependency timed out.","instance":"urn:hippomundo:request:01J5AR8Q2K000000000000000K","request_id":"01J5AR8Q2K000000000000000K","retryable":true,"status":504,"title":"Dependency timeout","type":"https://enterprise.hippomundo.com/docs/errors/dependency_timeout"}},"dressage_result_page":{"summary":"Completed dressage result with a typed percentage","value":{"data":[{"awarded_prize_money_eur_cents":225000,"class":{"date":"2026-06-06","format":{"code":"unknown","display":"Intermediate I"},"id":92002,"max_height_metres":null,"name":"Example Intermediate Test","prize_money_eur_cents":1800000,"star_level":3},"competition":{"country_iso_code":"DE","discipline":"dressage","id":4100,"international":true,"name":"CDI Example Park"},"discipline":"dressage","edition":{"date_from":"2026-06-04","date_to":"2026-06-07","id":5900,"international":true,"name":"CDI Example Park 2026","star_level":3},"horse":{"id":220002,"name":"MOONLIGHT SONATA","studbook":{"abbreviation":"KWPN","id":19}},"id":700005,"performance":{"percentage":75.9,"type":"dressage"},"place":1,"rider":{"id":45002,"name":"Sara Willems"}}],"has_more":false,"next_page_token":null,"total":1}},"dressage_status_result_page":{"summary":"Dressage result replaced by a normalized status","value":{"data":[{"awarded_prize_money_eur_cents":null,"class":{"date":"2026-06-07","format":{"code":"unknown","display":"Grand Prix Freestyle"},"id":92001,"max_height_metres":null,"name":"Example Grand Prix Freestyle","prize_money_eur_cents":1800000,"star_level":3},"competition":{"country_iso_code":"DE","discipline":"dressage","id":4100,"international":true,"name":"CDI Example Park"},"discipline":"dressage","edition":{"date_from":"2026-06-04","date_to":"2026-06-07","id":5900,"international":true,"name":"CDI Example Park 2026","star_level":3},"horse":{"id":220001,"name":"SILVER SONATA","studbook":{"abbreviation":"KWPN","id":19}},"id":700003,"performance":{"status":"eliminated","type":"dressage"},"place":null,"rider":{"id":45001,"name":"Noor Peeters"}}],"has_more":false,"next_page_token":null,"total":1}},"endpoint_not_entitled":{"summary":"Public endpoint not purchased","value":{"charged":false,"code":"endpoint_not_entitled","detail":"The account is not entitled to this endpoint.","instance":"urn:hippomundo:request:01J5AR8Q2K0000000000000007","request_id":"01J5AR8Q2K0000000000000007","retryable":false,"status":403,"title":"Endpoint not entitled","type":"https://enterprise.hippomundo.com/docs/errors/endpoint_not_entitled"}},"eventing_result_page":{"summary":"Completed eventing result with typed phase penalties","value":{"data":[{"awarded_prize_money_eur_cents":310000,"class":{"date":"2026-05-24","format":{"code":"unknown","display":"CCI4*-L"},"id":93001,"max_height_metres":null,"name":"Example CCI Four Star","prize_money_eur_cents":4000000,"star_level":4},"competition":{"country_iso_code":"FR","discipline":"eventing","id":5100,"international":true,"name":"CCI Example Fields"},"discipline":"eventing","edition":{"date_from":"2026-05-21","date_to":"2026-05-24","id":6900,"international":true,"name":"CCI Example Fields 2026","star_level":4},"horse":{"id":330002,"name":"WINTER ORBIT","studbook":null},"id":700006,"performance":{"phases":{"cross_country":{"obstacle_penalties":0,"time_penalties":0},"dressage":{"penalties":27.6},"show_jumping":{"obstacle_penalties":4,"time_penalties":0}},"total_penalties":31.6,"type":"eventing"},"place":3,"rider":{"id":56002,"name":"Mila de Boer"}}],"has_more":false,"next_page_token":null,"total":1}},"eventing_status_result_page":{"summary":"Eventing result with a phase-qualified status","value":{"data":[{"awarded_prize_money_eur_cents":null,"class":{"date":"2026-05-24","format":{"code":"unknown","display":"CCI4*-L"},"id":93001,"max_height_metres":null,"name":"Example CCI Four Star","prize_money_eur_cents":4000000,"star_level":4},"competition":{"country_iso_code":"FR","discipline":"eventing","id":5100,"international":true,"name":"CCI Example Fields"},"discipline":"eventing","edition":{"date_from":"2026-05-21","date_to":"2026-05-24","id":6900,"international":true,"name":"CCI Example Fields 2026","star_level":4},"horse":{"id":330001,"name":"AUTUMN ORBIT","studbook":null},"id":700004,"performance":{"status":{"code":"retired","phase":"cross_country"},"type":"eventing"},"place":null,"rider":{"id":56001,"name":"Lina Vermeer"}}],"has_more":false,"next_page_token":null,"total":1}},"idempotency_conflict":{"summary":"Idempotency key reused for a different request","value":{"charged":false,"code":"idempotency_conflict","detail":"This idempotency key was already used for a different request.","instance":"urn:hippomundo:request:01J5AR8Q2K000000000000000B","request_id":"01J5AR8Q2K000000000000000B","retryable":false,"status":409,"title":"Idempotency conflict","type":"https://enterprise.hippomundo.com/docs/errors/idempotency_conflict"}},"insufficient_credits":{"summary":"Spendable credits cannot cover the maximum authorized cost","value":{"charged":false,"code":"insufficient_credits","detail":"The account does not hold enough spendable credits for this request.","instance":"urn:hippomundo:request:01J5AR8Q2K0000000000000005","request_id":"01J5AR8Q2K0000000000000005","retryable":false,"status":402,"title":"Insufficient credits","type":"https://enterprise.hippomundo.com/docs/errors/insufficient_credits"}},"internal_error":{"summary":"Unexpected failure with no safer classification","value":{"charged":false,"code":"internal_error","detail":"An unexpected internal error occurred.","instance":"urn:hippomundo:request:01J5AR8Q2K000000000000000G","request_id":"01J5AR8Q2K000000000000000G","retryable":false,"status":500,"title":"Internal error","type":"https://enterprise.hippomundo.com/docs/errors/internal_error"}},"invalid_api_key":{"summary":"API key missing, invalid, revoked or otherwise unusable","value":{"charged":false,"code":"invalid_api_key","detail":"The request was not authenticated.","instance":"urn:hippomundo:request:01J5AR8Q2K0000000000000004","request_id":"01J5AR8Q2K0000000000000004","retryable":false,"status":401,"title":"Invalid API key","type":"https://enterprise.hippomundo.com/docs/errors/invalid_api_key"}},"invalid_page_token":{"summary":"Page token is malformed or mismatched","value":{"charged":false,"code":"invalid_page_token","detail":"The supplied page token is not valid for this query and API key.","instance":"urn:hippomundo:request:01J5AR8Q2K0000000000000001","request_id":"01J5AR8Q2K0000000000000001","retryable":false,"status":400,"title":"Invalid page token","type":"https://enterprise.hippomundo.com/docs/errors/invalid_page_token"}},"jumping_result_page":{"summary":"Completed jumping result with neutral rounds","value":{"data":[{"awarded_prize_money_eur_cents":125000,"class":{"date":"2026-07-19","format":{"code":"table_a_with_jump_off","display":"Table A with jump-off"},"id":91001,"max_height_metres":1.45,"name":"Example Grand Prix","prize_money_eur_cents":2500000,"star_level":2},"competition":{"country_iso_code":"BE","discipline":"jumping","id":3120,"international":true,"name":"CSI Grimbergen"},"discipline":"jumping","edition":{"date_from":"2026-07-16","date_to":"2026-07-19","id":4821,"international":true,"name":"CSI Grimbergen 2026","star_level":2},"horse":{"id":104233,"name":"NORTHWIND VAN HET ELSHOF","studbook":{"abbreviation":"BWP","id":4}},"id":700001,"performance":{"rounds":[{"is_clear":true,"score":0,"score_unit":"faults","sequence":1},{"is_clear":false,"score":4,"score_unit":"faults","sequence":2,"time_seconds":41.56}],"score_display":"0 / 4 / 41.56","type":"jumping"},"place":2,"rider":{"id":20441,"name":"Emma Janssens"}}],"has_more":false,"next_page_token":null,"total":1}},"jumping_unknown_format_result_page":{"summary":"Jumping result with an unrecognized class format","value":{"data":[{"awarded_prize_money_eur_cents":null,"class":{"date":"2026-08-08","format":{"code":"unknown","display":"Example custom table"},"id":91002,"max_height_metres":1.2,"name":"Example Special Class","prize_money_eur_cents":null,"star_level":null},"competition":{"country_iso_code":"NL","discipline":"jumping","id":3121,"international":false,"name":"Synthetic Summer Show"},"discipline":"jumping","edition":{"date_from":"2026-08-08","date_to":null,"id":4822,"international":false,"name":"Synthetic Summer Show 2026","star_level":null},"horse":{"id":118450,"name":"NORTHWIND B","studbook":null},"id":700002,"performance":{"rounds":[{"is_clear":true,"score":0,"sequence":1,"time_seconds":72.34}],"score_display":"0 / 72.34","type":"jumping"},"place":7,"rider":{"id":31877,"name":"E. Jansen"}}],"has_more":false,"next_page_token":null,"total":1}},"malformed_request":{"summary":"Request syntax cannot be parsed","value":{"charged":false,"code":"malformed_request","detail":"The request could not be parsed.","instance":"urn:hippomundo:request:01J5AR8Q2K0000000000000000","request_id":"01J5AR8Q2K0000000000000000","retryable":false,"status":400,"title":"Malformed request","type":"https://enterprise.hippomundo.com/docs/errors/malformed_request"}},"not_acceptable":{"summary":"Requested response media type unsupported","value":{"charged":false,"code":"not_acceptable","detail":"The requested response media type is not supported.","instance":"urn:hippomundo:request:01J5AR8Q2K000000000000000A","request_id":"01J5AR8Q2K000000000000000A","retryable":false,"status":406,"title":"Not acceptable","type":"https://enterprise.hippomundo.com/docs/errors/not_acceptable"}},"not_found":{"summary":"Route or resource absent, unavailable or concealed","value":{"charged":false,"code":"not_found","detail":"The requested resource does not exist.","instance":"urn:hippomundo:request:01J5AR8Q2K0000000000000008","request_id":"01J5AR8Q2K0000000000000008","retryable":false,"status":404,"title":"Not found","type":"https://enterprise.hippomundo.com/docs/errors/not_found"}},"page_token_expired":{"summary":"Page token past its public expiry","value":{"charged":false,"code":"page_token_expired","detail":"The traversal token has expired; restart from page one.","instance":"urn:hippomundo:request:01J5AR8Q2K0000000000000002","request_id":"01J5AR8Q2K0000000000000002","retryable":false,"status":400,"title":"Page token expired","type":"https://enterprise.hippomundo.com/docs/errors/page_token_expired"}},"rate_limit_exceeded":{"summary":"Rate policy rejected the request","value":{"charged":false,"code":"rate_limit_exceeded","detail":"The rate limit for this API key was exceeded.","instance":"urn:hippomundo:request:01J5AR8Q2K000000000000000F","request_id":"01J5AR8Q2K000000000000000F","retryable":true,"status":429,"title":"Rate limit exceeded","type":"https://enterprise.hippomundo.com/docs/errors/rate_limit_exceeded"}},"service_unavailable":{"summary":"Service temporarily unavailable","value":{"charged":false,"code":"service_unavailable","detail":"The service is temporarily unavailable.","instance":"urn:hippomundo:request:01J5AR8Q2K000000000000000J","request_id":"01J5AR8Q2K000000000000000J","retryable":true,"status":503,"title":"Service unavailable","type":"https://enterprise.hippomundo.com/docs/errors/service_unavailable"}},"unsupported_version":{"summary":"Hippomundo-Version is not supported","value":{"charged":false,"code":"unsupported_version","detail":"The requested API version is not supported.","instance":"urn:hippomundo:request:01J5AR8Q2K0000000000000003","request_id":"01J5AR8Q2K0000000000000003","retryable":false,"status":400,"title":"Unsupported version","type":"https://enterprise.hippomundo.com/docs/errors/unsupported_version"}},"validation_failed":{"summary":"Parsed public inputs fail the documented rules","value":{"charged":false,"code":"validation_failed","detail":"One or more request parameters are invalid.","errors":[{"code":"invalid_format","field":"date_from","location":"query"}],"instance":"urn:hippomundo:request:01J5AR8Q2K000000000000000E","request_id":"01J5AR8Q2K000000000000000E","retryable":false,"status":422,"title":"Request validation failed","type":"https://enterprise.hippomundo.com/docs/errors/validation_failed"}}},"headers":{"CacheControlNoStore":{"description":"Always `no-store` on error responses.","required":true,"schema":{"type":"string"}},"CacheControlPrivateNoStore":{"description":"Always `private, no-store` on successful responses: data can change\nat any time, so no cache may store or reuse them, and the API\nanswers no conditional requests.\n","required":true,"schema":{"type":"string"}},"HippomundoChargedMilliCredits":{"description":"The milli-credits this request debited from your balance, read from\nthe recorded charge; one credit is 1,000 milli-credits. `0` when the\nrequest debited nothing, for example on a free operation, under a free\nallowance, or on an idempotent replay. Error responses are never\ncharged and do not carry this header.\n","required":true,"schema":{"format":"int64","minimum":0,"type":"integer"}},"HippomundoDataGeneration":{"description":"Sandbox only. Names the copy of the sandbox data that answered this\nrequest. The weekly data refresh replaces that copy and publishes a\nnew value, so a client that keeps sandbox data can key it on this\nvalue. HTTP caches still may not store the response\n(`Cache-Control: private, no-store`). A `next_page_token` issued\nunder an earlier value answers `400 page_token_expired`. Absent in\nproduction, and in the sandbox until its first refresh.\n","schema":{"pattern":"^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$","type":"string"}},"HippomundoRequestId":{"description":"Compact server-generated request identifier carried on every\nresponse. On errors it equals the body `request_id`.\nQuote it in support requests; it contains no customer identity. An\ninbound customer-supplied value is never trusted as this identifier.\n","required":true,"schema":{"type":"string"}},"HippomundoResolvedFrom":{"description":"Present when the requested horse or rider identifier was superseded\nand transparently resolved to its canonical identifier. The value\nis the identifier as requested; the response body carries the\ncanonical identifier, which is authoritative. Clients that ignore\nthis header are unaffected. Resolution is transparent and never an\nHTTP redirect.\n","schema":{"type":"string"}},"IdempotentReplayed":{"description":"`true` when this response answers a repeat, within 24 hours and with\nthe same `Idempotency-Key`, of an earlier successful request that was\ncharged or used a free allowance. The repeat is not charged again, so\n`Hippomundo-Charged-Milli-Credits` is `0`. Absent otherwise,\nincluding on a repeat of a request that cost nothing for another\nreason.\n","schema":{"enum":["true"],"type":"string"}},"RateLimitLimit":{"description":"Request quota of the applied rate-limit window. The same rate-limit\nheaders appear on successful authenticated responses.\n","schema":{"type":"integer"}},"RateLimitRemaining":{"description":"Requests remaining in the applied rate-limit window.","schema":{"type":"integer"}},"RetryAfter":{"description":"Seconds to wait before retrying. Required on `429` and on\n`402 api_key_credit_cap_reached`, where it counts to the start of the\nnext UTC day or month; present on `503` when the service knows a\nmeaningful recovery interval.\n","schema":{"minimum":0,"type":"integer"}},"WwwAuthenticateApiKey":{"description":"Always `ApiKey`, without credential detail.","required":true,"schema":{"type":"string"}}},"parameters":{"FreshnessOverride":{"description":"Requests fresher data for this call. `live` bypasses the freshness\ncache; the override may only request fresher data and never affects\nprice. Any other value fails validation.\n","in":"header","name":"X-Hippomundo-Freshness","schema":{"enum":["cached","live"],"type":"string"}},"IdempotencyKey":{"description":"Optional idempotency key for billable requests. Reuse by the same API\nkey with the same normalized request within 24 hours never creates a\nsecond debit. A repeat within that window of a successful request\nthat was charged or used a free allowance is not charged again: it\nanswers with `Idempotent-Replayed: true` and\n`Hippomundo-Charged-Milli-Credits: 0`. Its response is read again, so\nit may carry current data and a new `next_page_token`. A success that\ncost nothing for another reason is not recorded under the key, so a\nrepeat of it is priced like a new request and carries no\n`Idempotent-Replayed`. A free page stays free. A free repeat of a\nrequest you paid for shortly before is charged once that free period\nhas passed. A repeat of an uncharged failure runs again. Reuse with a\ndifferent normalized request within 24 hours of a success that was\ncharged or used a free allowance returns an uncharged\n`409 idempotency_conflict`. A key with no such success, or whose\n24 hours have passed, takes a different request as a new one.\nWithout the header, each request is independent.\n","in":"header","name":"Idempotency-Key","schema":{"maxLength":255,"type":"string"}},"PageToken":{"description":"Opaque signed continuation token from `next_page_token` of the\nprevious page. It is bound to the originating query parameters, sort\nprofile, page size and API key, and expires. Callers never\ninterpret its contents.\n\nOnce a traversal has begun, per-request `sort` or `page_size`\noverrides are rejected. A malformed, signature-invalid\nor mismatched token returns `400 invalid_page_token`; an expired\ntoken returns `400 page_token_expired` and the traversal restarts\nfrom page one.\n","in":"query","name":"page_token","schema":{"type":"string"}},"ParentRole":{"description":"Whether the requested horse is matched as the offspring's sire or dam. Parentage is never inferred from the horse's sex. A role that does not match, for example `dam` for a stallion, returns an empty page, not an error.","in":"query","name":"parent_role","required":true,"schema":{"enum":["sire","dam"],"type":"string"}},"PopulationDateFrom":{"description":"Required inclusive lower bound on the effective class date. The range up to `date_to` may cover at most 30 days, counting both dates.","in":"query","name":"date_from","required":true,"schema":{"format":"date","type":"string"}},"PopulationDateTo":{"description":"Inclusive upper bound on the effective class date. Defaults to today, as a calendar date in Belgian time (Europe/Brussels). It must not precede `date_from`, and the range may cover at most 30 days, counting both dates.","in":"query","name":"date_to","schema":{"format":"date","type":"string"}},"ResultDateFrom":{"description":"Inclusive lower bound on the effective class date.","in":"query","name":"date_from","schema":{"format":"date","type":"string"}},"ResultDateTo":{"description":"Inclusive upper bound on the effective class date. When both date bounds are present, this date must not precede `date_from`.","in":"query","name":"date_to","schema":{"format":"date","type":"string"}},"ResultDiscipline":{"description":"One discipline to include. Omission includes all disciplines.","in":"query","name":"discipline","schema":{"enum":["jumping","dressage","eventing"],"type":"string"}},"ResultInternational":{"description":"Filter on international results. Omission includes both international and national results.","in":"query","name":"international","schema":{"type":"boolean"}},"ResultPageSize":{"description":"Page size, capped at 100. Bound to the traversal token; rejected as an override once a traversal has begun.","in":"query","name":"page_size","schema":{"default":100,"maximum":100,"minimum":1,"type":"integer"}},"ResultPlaceLte":{"description":"Maximum numbered placing to include. For example, `3` includes places one through three and excludes unplaced results.","in":"query","name":"place_lte","schema":{"minimum":1,"type":"integer"}},"VersionHeader":{"description":"Optional pin to the API version your integration was built against.\nThe only accepted value is `v1`, which today changes nothing. If a\nlater version of the API changes behaviour in a way that is not\nbackwards compatible, requests that send `v1` keep the v1 behaviour.\nAny other value returns `400 unsupported_version`.\n","in":"header","name":"Hippomundo-Version","schema":{"type":"string"}}},"responses":{"BadRequest":{"content":{"application/problem+json":{"examples":{"invalid_page_token":{"$ref":"#/components/examples/invalid_page_token"},"malformed_request":{"$ref":"#/components/examples/malformed_request"},"page_token_expired":{"$ref":"#/components/examples/page_token_expired"},"unsupported_version":{"$ref":"#/components/examples/unsupported_version"}},"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"`400` — one of the registered codes `malformed_request`, `invalid_page_token`, `page_token_expired` or `unsupported_version`; branch on the body `code`. Not retryable without changing the request. Uncharged.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"Hippomundo-Request-ID":{"$ref":"#/components/headers/HippomundoRequestId"}}},"DependencyError":{"content":{"application/problem+json":{"examples":{"dependency_error":{"$ref":"#/components/examples/dependency_error"}},"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"`502 dependency_error` — a required managed dependency returned an invalid or failing response. Retryability is occurrence-specific; honor the body `retryable` field. Uncharged.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"Hippomundo-Request-ID":{"$ref":"#/components/headers/HippomundoRequestId"}}},"DependencyTimeout":{"content":{"application/problem+json":{"examples":{"dependency_timeout":{"$ref":"#/components/examples/dependency_timeout"}},"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"`504 dependency_timeout` — a required dependency exceeded its deadline. Retryable with exponential backoff and jitter; preserve the idempotency key so a billable retry cannot double-charge. Uncharged.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"Hippomundo-Request-ID":{"$ref":"#/components/headers/HippomundoRequestId"}}},"EndpointNotEntitled":{"content":{"application/problem+json":{"examples":{"endpoint_not_entitled":{"$ref":"#/components/examples/endpoint_not_entitled"}},"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"`403 endpoint_not_entitled` — the authenticated Customer lacks a required entitlement for a discoverable public endpoint it has not purchased. Private endpoints never return `403`; they return `404 not_found`. Not retryable without purchasing the entitlement. Uncharged.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"Hippomundo-Request-ID":{"$ref":"#/components/headers/HippomundoRequestId"}}},"IdempotencyConflict":{"content":{"application/problem+json":{"examples":{"idempotency_conflict":{"$ref":"#/components/examples/idempotency_conflict"}},"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"`409 idempotency_conflict` — the same Customer or key reused an idempotency key for a different normalized request within 24 hours of a success under that key that was charged or used a free allowance. Not retryable with the same key; use a new idempotency key for a new request. Uncharged.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"Hippomundo-Request-ID":{"$ref":"#/components/headers/HippomundoRequestId"}}},"InternalError":{"content":{"application/problem+json":{"examples":{"internal_error":{"$ref":"#/components/examples/internal_error"}},"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"`500 internal_error` — an unexpected Hippomundo failure with no safer public classification. Retryability is occurrence-specific; honor the body `retryable` field, use exponential backoff with jitter, preserve the idempotency key and report persistent failures with the `request_id`. Uncharged.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"Hippomundo-Request-ID":{"$ref":"#/components/headers/HippomundoRequestId"}}},"InvalidApiKey":{"content":{"application/problem+json":{"examples":{"invalid_api_key":{"$ref":"#/components/examples/invalid_api_key"}},"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"`401 invalid_api_key` — the API key is missing, invalid, revoked or otherwise unusable; the states are deliberately indistinguishable. Not retryable without different credentials. Uncharged.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"Hippomundo-Request-ID":{"$ref":"#/components/headers/HippomundoRequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticateApiKey"}}},"NotAcceptable":{"content":{"application/problem+json":{"examples":{"not_acceptable":{"$ref":"#/components/examples/not_acceptable"}},"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"`406 not_acceptable` — the `Accept` header excludes `application/json`, the media type of every successful response. Omit the header or send one that admits `application/json`, for example `application/json`, `application/*` or `*/*`. Error responses are always `application/problem+json`. Not retryable without changing the `Accept` header. Uncharged.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"Hippomundo-Request-ID":{"$ref":"#/components/headers/HippomundoRequestId"}}},"NotFound":{"content":{"application/problem+json":{"examples":{"not_found":{"$ref":"#/components/examples/not_found"}},"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"`404 not_found` — the route or resource is absent, not public, or a private endpoint is intentionally concealed. Nonexistent, unavailable and unauthorized-private resources are deliberately indistinguishable; the response is never an existence oracle. Not retryable. Uncharged.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"Hippomundo-Request-ID":{"$ref":"#/components/headers/HippomundoRequestId"}}},"PaymentRequired":{"content":{"application/problem+json":{"examples":{"account_in_arrears":{"$ref":"#/components/examples/account_in_arrears"},"api_key_credit_cap_reached":{"$ref":"#/components/examples/api_key_credit_cap_reached"},"insufficient_credits":{"$ref":"#/components/examples/insufficient_credits"}},"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"`402` — one of the registered codes `insufficient_credits`, `account_in_arrears` or `api_key_credit_cap_reached`; branch on the body `code` because the remediation differs. Top up after `insufficient_credits` and settle the negative balance after `account_in_arrears`; neither is retryable until remediated. `api_key_credit_cap_reached` means the request would take this API key past the credit cap its owner set for each UTC day or UTC calendar month. A request that costs less may still succeed. It is retryable: `Retry-After` gives the seconds until the next period starts and the full cap is available again, and the owner can also raise or remove the cap in the portal. The body never states balances, caps or pricing internals; the portal and usage API are the authenticated source for financial detail. Uncharged.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"Hippomundo-Request-ID":{"$ref":"#/components/headers/HippomundoRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"RateLimitExceeded":{"content":{"application/problem+json":{"examples":{"rate_limit_exceeded":{"$ref":"#/components/examples/rate_limit_exceeded"}},"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"`429 rate_limit_exceeded` — the Customer or key rate policy rejected the request. Retryable after waiting at least `Retry-After`; preserve the same idempotency key for a billable retry. Carries the same rate-limit headers used on successful authenticated responses. Uncharged.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"Hippomundo-Request-ID":{"$ref":"#/components/headers/HippomundoRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}}},"ResolvedResultPageSuccess":{"content":{"application/json":{"examples":{"dressage":{"$ref":"#/components/examples/dressage_result_page"},"dressage_status":{"$ref":"#/components/examples/dressage_status_result_page"},"eventing":{"$ref":"#/components/examples/eventing_result_page"},"eventing_status":{"$ref":"#/components/examples/eventing_status_result_page"},"jumping":{"$ref":"#/components/examples/jumping_result_page"},"jumping_unknown_format":{"$ref":"#/components/examples/jumping_unknown_format_result_page"}},"schema":{"$ref":"#/components/schemas/ResultPage"}}},"description":"One page of results. Response rows carry canonical IDs; the optional resolution header reports a superseded requested horse or rider ID. Each named example demonstrates a discipline shape, including status and unknown-format behavior.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlPrivateNoStore"},"Hippomundo-Charged-Milli-Credits":{"$ref":"#/components/headers/HippomundoChargedMilliCredits"},"Hippomundo-Data-Generation":{"$ref":"#/components/headers/HippomundoDataGeneration"},"Hippomundo-Request-ID":{"$ref":"#/components/headers/HippomundoRequestId"},"Hippomundo-Resolved-From":{"$ref":"#/components/headers/HippomundoResolvedFrom"},"Idempotent-Replayed":{"$ref":"#/components/headers/IdempotentReplayed"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}}},"ResultPageSuccess":{"content":{"application/json":{"examples":{"dressage":{"$ref":"#/components/examples/dressage_result_page"},"dressage_status":{"$ref":"#/components/examples/dressage_status_result_page"},"eventing":{"$ref":"#/components/examples/eventing_result_page"},"eventing_status":{"$ref":"#/components/examples/eventing_status_result_page"},"jumping":{"$ref":"#/components/examples/jumping_result_page"},"jumping_unknown_format":{"$ref":"#/components/examples/jumping_unknown_format_result_page"}},"schema":{"$ref":"#/components/schemas/ResultPage"}}},"description":"One page of results. Each named example demonstrates a discipline shape; the unknown-format example shows the safe fallback.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlPrivateNoStore"},"Hippomundo-Charged-Milli-Credits":{"$ref":"#/components/headers/HippomundoChargedMilliCredits"},"Hippomundo-Data-Generation":{"$ref":"#/components/headers/HippomundoDataGeneration"},"Hippomundo-Request-ID":{"$ref":"#/components/headers/HippomundoRequestId"},"Idempotent-Replayed":{"$ref":"#/components/headers/IdempotentReplayed"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}}},"ServiceUnavailable":{"content":{"application/problem+json":{"examples":{"service_unavailable":{"$ref":"#/components/examples/service_unavailable"}},"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"`503 service_unavailable` — the service or a required ledger or dependency is temporarily unavailable. Retryable; honor `Retry-After` when present and use exponential backoff with jitter. Uncharged.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"Hippomundo-Request-ID":{"$ref":"#/components/headers/HippomundoRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"ValidationFailed":{"content":{"application/problem+json":{"examples":{"validation_failed":{"$ref":"#/components/examples/validation_failed"}},"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"`422 validation_failed` — parsed public inputs fail the documented schema or combination rules. `errors` lists up to 20 field-level items in request-field order, without messages or rejected values; `errors_truncated` may be `true` when more exist. Not retryable without correcting the request. Uncharged.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlNoStore"},"Hippomundo-Request-ID":{"$ref":"#/components/headers/HippomundoRequestId"}}}},"schemas":{"BirthYear":{"description":"Four-digit year derived from the recorded birth date. Null when no year is available; an exact month and day are never exposed.","format":"int32","maximum":9999,"minimum":1000,"nullable":true,"type":"integer"},"BlackTypePedigree":{"additionalProperties":false,"description":"Genealogy to great-grandparents and up to four dam families, each three offspring generations deep. The cap counts at most 500 full dam-line horse occurrences, including the dams. Tree nodes, sire offspring and compact sister references are outside the cap. Trimming removes deepest generations first, starting with the fourth dam family. The truncation flag reports omitted horses.","properties":{"dam_line":{"items":{"$ref":"#/components/schemas/SportDamLineEntry"},"maxItems":4,"type":"array"},"dam_line_truncated":{"type":"boolean"},"sire_best_offspring":{"items":{"$ref":"#/components/schemas/SportSireOffspring"},"maxItems":3,"type":"array"},"subject":{"additionalProperties":false,"properties":{"approved_for":{"items":{"$ref":"#/components/schemas/PedigreeStudbookRef"},"type":"array"},"birth_year":{"$ref":"#/components/schemas/BirthYear"},"colour":{"nullable":true,"type":"string"},"id":{"format":"int64","minimum":1,"type":"integer"},"name":{"minLength":1,"type":"string"},"sex":{"nullable":true,"type":"string"},"sport":{"$ref":"#/components/schemas/PedigreeSport"},"studbook":{"$ref":"#/components/schemas/NullablePedigreeStudbookRef"}},"required":["id","name","birth_year","sex","colour","studbook","approved_for","sport"],"type":"object"},"tree":{"$ref":"#/components/schemas/SportTree"}},"required":["subject","tree","dam_line","dam_line_truncated","sire_best_offspring"],"type":"object"},"BreedingDamHorse":{"additionalProperties":false,"properties":{"approved_for":{"items":{"$ref":"#/components/schemas/PedigreeStudbookRef"},"type":"array"},"birth_year":{"$ref":"#/components/schemas/BirthYear"},"colour":{"nullable":true,"type":"string"},"id":{"format":"int64","minimum":1,"type":"integer"},"name":{"minLength":1,"type":"string"},"sex":{"nullable":true,"type":"string"},"sire_name":{"description":"Recorded name of this horse's sire, or null when none is recorded. It is a name only, without a horse ID.","minLength":1,"nullable":true,"type":"string"},"studbook":{"$ref":"#/components/schemas/NullablePedigreeStudbookRef"}},"required":["id","name","birth_year","sex","colour","studbook","approved_for","sire_name"],"type":"object"},"BreedingDamLineEntry":{"additionalProperties":false,"properties":{"horse":{"$ref":"#/components/schemas/BreedingDamHorse"},"offspring":{"items":{"$ref":"#/components/schemas/BreedingOffspring"},"maxItems":499,"type":"array"},"position":{"maximum":4,"minimum":1,"type":"integer"}},"required":["position","horse","offspring"],"type":"object"},"BreedingOffspring":{"additionalProperties":false,"description":"Foal with at most three offspring generations below its dam. Repeated dams have no nested offspring.","properties":{"approved_for":{"items":{"$ref":"#/components/schemas/PedigreeStudbookRef"},"type":"array"},"birth_year":{"$ref":"#/components/schemas/BirthYear"},"colour":{"nullable":true,"type":"string"},"id":{"format":"int64","minimum":1,"type":"integer"},"is_subject":{"type":"boolean"},"name":{"minLength":1,"type":"string"},"offspring":{"items":{"$ref":"#/components/schemas/BreedingOffspring"},"maxItems":500,"type":"array"},"repeated_dam":{"type":"boolean"},"sex":{"nullable":true,"type":"string"},"sire_name":{"description":"Recorded name of this horse's sire, or null when none is recorded. It is a name only, without a horse ID.","minLength":1,"nullable":true,"type":"string"},"studbook":{"$ref":"#/components/schemas/NullablePedigreeStudbookRef"}},"required":["id","name","birth_year","sex","colour","studbook","approved_for","sire_name","is_subject","repeated_dam","offspring"],"type":"object"},"BreedingPedigree":{"additionalProperties":false,"description":"Genealogy to great-grandparents and up to four dam families, each three offspring generations deep. The cap counts at most 500 full dam-line horse occurrences, including the dams. Tree nodes, sire offspring and compact sister references are outside the cap. Trimming removes deepest generations first, starting with the fourth dam family. The truncation flag reports omitted horses.","properties":{"dam_line":{"items":{"$ref":"#/components/schemas/BreedingDamLineEntry"},"maxItems":4,"type":"array"},"dam_line_truncated":{"type":"boolean"},"subject":{"$ref":"#/components/schemas/BreedingSubject"},"tree":{"$ref":"#/components/schemas/BreedingTree"}},"required":["subject","tree","dam_line","dam_line_truncated"],"type":"object"},"BreedingSubject":{"additionalProperties":false,"properties":{"approved_for":{"items":{"$ref":"#/components/schemas/PedigreeStudbookRef"},"type":"array"},"birth_year":{"$ref":"#/components/schemas/BirthYear"},"breeder":{"$ref":"#/components/schemas/PedigreeParty"},"colour":{"nullable":true,"type":"string"},"id":{"format":"int64","minimum":1,"type":"integer"},"name":{"minLength":1,"type":"string"},"owner":{"$ref":"#/components/schemas/PedigreeParty"},"sex":{"nullable":true,"type":"string"},"studbook":{"$ref":"#/components/schemas/NullablePedigreeStudbookRef"}},"required":["id","name","birth_year","sex","colour","studbook","approved_for"],"type":"object"},"BreedingTree":{"additionalProperties":false,"properties":{"dam":{"$ref":"#/components/schemas/BreedingTreeNode"},"sire":{"$ref":"#/components/schemas/BreedingTreeNode"}},"required":["sire","dam"],"type":"object"},"BreedingTreeNode":{"additionalProperties":false,"description":"Ancestor node, at most three generations above the subject. Missing or cyclic parents and the parents of depth-limit leaves are null.","nullable":true,"properties":{"approved_for":{"items":{"$ref":"#/components/schemas/PedigreeStudbookRef"},"type":"array"},"birth_year":{"$ref":"#/components/schemas/BirthYear"},"colour":{"nullable":true,"type":"string"},"dam":{"$ref":"#/components/schemas/BreedingTreeNode"},"id":{"format":"int64","minimum":1,"type":"integer"},"name":{"minLength":1,"type":"string"},"sex":{"nullable":true,"type":"string"},"sire":{"$ref":"#/components/schemas/BreedingTreeNode"},"studbook":{"$ref":"#/components/schemas/NullablePedigreeStudbookRef"}},"required":["id","name","birth_year","sex","colour","studbook","approved_for","sire","dam"],"type":"object"},"Class":{"description":"Class of an edition belonging to an existing competition. The class carries the class purse; a result's awarded prize is a different field. `star_level` is the star designation applying to the class and `max_height_metres` is the jumping difficulty; see each field for the per-discipline meaning.","properties":{"date":{"description":"Effective class date, falling back to the edition date. Never null on a public class.","format":"date","type":"string"},"edition_id":{"description":"Public ID of the parent edition.","format":"int64","type":"integer"},"format":{"$ref":"#/components/schemas/ClassFormat"},"id":{"description":"Public class ID.","format":"int64","type":"integer"},"max_height_metres":{"description":"Maximum obstacle height as a decimal in metres. The difficulty indicator for jumping classes; null for other disciplines.","nullable":true,"type":"number"},"name":{"type":"string"},"prize_money_eur_cents":{"description":"Advertised class purse as an integer in euro cents, converted at the exchange rate on the class date and frozen; the value is stable and never recomputed. Distinct from a result's `awarded_prize_money_eur_cents`.","format":"int64","nullable":true,"type":"integer"},"star_level":{"description":"Star designation applying to this class, from one to five, using the same vocabulary as the edition's `star_level`. Eventing classes are individually starred and may differ from other classes of the same edition, so for eventing this filters by class difficulty. International dressage and jumping classes carry their event's designation, so for those disciplines it reflects the event's prestige, not the difficulty of the individual class — jumping difficulty is `max_height_metres`. Null for national dressage, youth dressage tests and when no designation is recorded.","nullable":true,"type":"integer","x-known-values":[1,2,3,4,5]}},"required":["id","edition_id","name","format","date","max_height_metres","star_level","prize_money_eur_cents"],"type":"object"},"ClassFormat":{"description":"Normalized class format. `code` is an open set: recognized source\nvalues receive a stable code and canonical `display` label; an\nunmapped value returns `code: unknown` with the original safe text\nas `display` and never receives invented semantics.\n","properties":{"code":{"description":"Stable open-set format code. Recognized codes are added centrally and documented in `x-known-values`; clients must still tolerate a future code that is not yet in their generated documentation.","type":"string","x-known-values":["unknown","table_a_against_the_clock","table_a_not_against_the_clock","table_a_with_jump_off","table_a_not_against_the_clock_with_jump_off","table_a_with_two_jump_offs","table_a_two_rounds_with_jump_off","table_c_speed_and_handiness","two_phases","two_phases_not_against_the_clock","two_phases_table_a_a","two_phases_table_a_a_not_against_the_clock","two_phases_table_a_c","two_phases_table_c_a","two_phases_special","two_phases_special_table_a_a","two_phases_special_with_winning_round","two_rounds","two_rounds_not_against_the_clock","two_rounds_table_a_c","two_rounds_with_jump_off","three_rounds","one_round","with_winning_round","style_against_the_clock","style_not_against_the_clock","style_not_against_the_clock_two_rounds","style_not_against_the_clock_with_jump_off","table_a_faults_and_style","accumulator","top_score","puissance","barrier_jumping","six_bar","clear_round","fault_and_out","hit_and_hurry","knock_out","relay","take_your_own_line","take_your_own_line_table_c","derby","speed_derby","pairs_two_rounds","groups_with_winning_round","team_competition","team_competition_two_rounds","team_competition_two_rounds_with_jump_off","team_competition_with_winning_round","relay_table_c_speed_and_handiness","jump_and_drive"]},"display":{"description":"Canonical display label for recognized codes; the original safe source text when `code` is `unknown`.","type":"string"}},"required":["code","display"],"type":"object"},"ClassPage":{"allOf":[{"$ref":"#/components/schemas/ListMeta"},{"properties":{"data":{"items":{"$ref":"#/components/schemas/Class"},"type":"array"}},"required":["data"],"type":"object"}]},"Competition":{"description":"Thin competition search result. Competitions carry no date; year and date filtering exists on editions.","properties":{"country_iso_code":{"description":"Competition country, ISO 3166-1 alpha-2.","nullable":true,"type":"string"},"discipline":{"description":"Open set; documented values are `jumping`, `dressage` and `eventing`.","type":"string","x-known-values":["jumping","dressage","eventing"]},"id":{"description":"Public competition ID.","format":"int64","type":"integer"},"international":{"description":"Whether the competition is international.","type":"boolean"},"name":{"type":"string"}},"required":["id","name","country_iso_code","international","discipline"],"type":"object"},"CompetitionSearchPage":{"allOf":[{"$ref":"#/components/schemas/ListMeta"},{"properties":{"data":{"items":{"$ref":"#/components/schemas/Competition"},"type":"array"}},"required":["data"],"type":"object"}]},"DressageCompletedPerformance":{"additionalProperties":false,"description":"Completed dressage performance with a typed percentage.","properties":{"percentage":{"description":"Typed percentage for a completed result.","maximum":100,"minimum":0,"type":"number"},"type":{"enum":["dressage"],"type":"string"}},"required":["type","percentage"],"type":"object"},"DressagePerformance":{"description":"Dressage performance is exactly one of a completed percentage or a normalized status; the two forms cannot be combined.","oneOf":[{"$ref":"#/components/schemas/DressageCompletedPerformance"},{"$ref":"#/components/schemas/DressageStatusPerformance"}]},"DressageStatusPerformance":{"additionalProperties":false,"description":"Dressage performance where a normalized status replaces the numeric percentage.","properties":{"status":{"$ref":"#/components/schemas/ResultStatus"},"type":{"enum":["dressage"],"type":"string"}},"required":["type","status"],"type":"object"},"Edition":{"description":"Edition of a competition. Only editions with a start date and at least one class are public hierarchy nodes.","properties":{"competition_id":{"description":"Public ID of the parent competition.","format":"int64","type":"integer"},"date_from":{"description":"Edition start date. Never null on a public edition.","format":"date","type":"string"},"date_to":{"description":"Edition end date.","format":"date","nullable":true,"type":"string"},"id":{"description":"Public edition ID.","format":"int64","type":"integer"},"international":{"type":"boolean"},"name":{"type":"string"},"star_level":{"description":"Star rating as a nullable integer; expected values are 1 through 5, and absence is null, never zero.","nullable":true,"type":"integer"}},"required":["id","competition_id","name","date_from","date_to","international","star_level"],"type":"object"},"EditionPage":{"allOf":[{"$ref":"#/components/schemas/ListMeta"},{"properties":{"data":{"items":{"$ref":"#/components/schemas/Edition"},"type":"array"}},"required":["data"],"type":"object"}]},"EventingCompletedPerformance":{"additionalProperties":false,"description":"Completed eventing performance with typed total and phase penalties.","properties":{"phases":{"$ref":"#/components/schemas/EventingPhasePenalties"},"total_penalties":{"description":"Typed total penalties for a completed result.","type":"number"},"type":{"enum":["eventing"],"type":"string"}},"required":["type","total_penalties","phases"],"type":"object"},"EventingPerformance":{"description":"Eventing performance is exactly one of completed penalties or a normalized status; the two forms cannot be combined.","oneOf":[{"$ref":"#/components/schemas/EventingCompletedPerformance"},{"$ref":"#/components/schemas/EventingStatusPerformance"}]},"EventingPhasePenalties":{"additionalProperties":false,"description":"Stored eventing penalty components. A zero is a penalty value only; it\ndoes not prove that the phase was present or completed.\n","properties":{"cross_country":{"additionalProperties":false,"properties":{"obstacle_penalties":{"type":"number"},"time_penalties":{"type":"number"}},"required":["obstacle_penalties","time_penalties"],"type":"object"},"dressage":{"additionalProperties":false,"properties":{"penalties":{"type":"number"}},"required":["penalties"],"type":"object"},"show_jumping":{"additionalProperties":false,"properties":{"obstacle_penalties":{"type":"number"},"time_penalties":{"type":"number"}},"required":["obstacle_penalties","time_penalties"],"type":"object"}},"required":["dressage","cross_country","show_jumping"],"type":"object"},"EventingStatus":{"additionalProperties":false,"properties":{"code":{"description":"Normalized open-set result status. Clients must tolerate future values.","type":"string","x-known-values":["eliminated","retired","withdrawn","did_not_start","disqualified","other"]},"phase":{"description":"Qualified eventing phase when the source status establishes one; otherwise null. Open set.","nullable":true,"type":"string","x-known-values":["dressage","cross_country","show_jumping"]}},"required":["code","phase"],"type":"object"},"EventingStatusPerformance":{"additionalProperties":false,"description":"Eventing performance where a normalized, optionally phase-qualified status replaces all numeric aggregates.","properties":{"status":{"$ref":"#/components/schemas/EventingStatus"},"type":{"enum":["eventing"],"type":"string"}},"required":["type","status"],"type":"object"},"FilteredOpenAPIDocument":{"additionalProperties":true,"description":"Valid OpenAPI document whose paths contain only operations currently available to the authenticated customer. Each operation carries an `x-credits` extension with its current price. Other standard OpenAPI fields may be present.","properties":{"components":{"additionalProperties":true,"type":"object"},"info":{"additionalProperties":true,"type":"object"},"openapi":{"description":"OpenAPI specification version used by the document.","type":"string"},"paths":{"additionalProperties":{"$ref":"#/components/schemas/FilteredPathItem"},"type":"object"}},"required":["openapi","info","paths"],"type":"object"},"FilteredOperation":{"additionalProperties":true,"description":"One available operation, as in the published reference, plus its current price in `x-credits`.","properties":{"x-credits":{"$ref":"#/components/schemas/OperationCredits"}},"type":"object"},"FilteredPathItem":{"description":"One path of the filtered document. Each available operation is keyed by its lowercase HTTP method.","properties":{"delete":{"$ref":"#/components/schemas/FilteredOperation"},"get":{"$ref":"#/components/schemas/FilteredOperation"},"patch":{"$ref":"#/components/schemas/FilteredOperation"},"post":{"$ref":"#/components/schemas/FilteredOperation"},"put":{"$ref":"#/components/schemas/FilteredOperation"}},"type":"object"},"FreeAllowance":{"additionalProperties":false,"description":"A free allowance that currently applies to these requests. Present only while one applies. The listed number of successful requests in each window costs no credits; later ones cost the price shown. Free uses are counted for your whole account, and several operations can share one allowance. Your remaining free uses are not shown here.","properties":{"ends_at":{"description":"When the allowance ends. Absent when no end is set.","format":"date-time","type":"string"},"quantity":{"description":"Number of free successful requests in each window.","format":"int64","minimum":1,"type":"integer"},"text":{"description":"The allowance formatted for people, for example `5 free in any 24 hours`.","type":"string"},"window_kind":{"description":"`rolling`: any period of `window_seconds` ending now. `fixed_utc`: consecutive periods of `window_seconds`, aligned to UTC.","type":"string","x-known-values":["rolling","fixed_utc"]},"window_seconds":{"description":"Length of the window in seconds.","format":"int64","minimum":1,"type":"integer"}},"required":["quantity","window_kind","window_seconds","text"],"type":"object"},"HorseSearchPage":{"allOf":[{"$ref":"#/components/schemas/ListMeta"},{"properties":{"data":{"items":{"$ref":"#/components/schemas/HorseSearchResult"},"type":"array"}},"required":["data"],"type":"object"}]},"HorseSearchResult":{"description":"Thin horse disambiguation result. The Hippomundo `id` is the\nauthoritative identifier and the only one returned. The other fields\nexist to tell similarly named horses apart, not to carry full record\ndata.\n","properties":{"birth_country_iso_code":{"description":"Birth country, ISO 3166-1 alpha-2.","nullable":true,"type":"string"},"birth_year":{"description":"Four-digit birth year derived from the source birth date; the exact date is not exposed.","nullable":true,"type":"integer"},"dam_name":{"description":"Recorded name of the horse's dam, or null when none is recorded. It is a name only, without a horse ID.","minLength":1,"nullable":true,"type":"string"},"id":{"description":"Public Hippomundo horse ID (authoritative, canonical).","format":"int64","type":"integer"},"name":{"type":"string"},"sex":{"description":"Open set; clients must tolerate unknown values.","nullable":true,"type":"string"},"sire_name":{"description":"Recorded name of the horse's sire, or null when none is recorded. It is a name only, without a horse ID.","minLength":1,"nullable":true,"type":"string"},"studbook":{"$ref":"#/components/schemas/StudbookRef"}},"required":["id","name","birth_year","sex","birth_country_iso_code","studbook","sire_name","dam_name"],"type":"object"},"JumpingPerformance":{"additionalProperties":false,"properties":{"rounds":{"description":"Ordered neutral rounds; source field names are absent.","items":{"$ref":"#/components/schemas/JumpingRound"},"type":"array"},"score_display":{"description":"Faithful unlabeled display assembled from safely recognized score, time and status values in source order.","type":"string"},"status":{"$ref":"#/components/schemas/ResultStatus"},"type":{"enum":["jumping"],"type":"string"}},"required":["type","score_display","rounds"],"type":"object"},"JumpingRound":{"additionalProperties":false,"description":"One populated score/time pair in source order. `sequence` is dense:\nempty pairs do not create gaps. A numeric score, optional unit and\noptional elapsed time are returned only when they can be parsed\nsafely. A status replaces incompatible numeric values. No jump-off or\nphase meaning is inferred from the sequence.\n","properties":{"is_clear":{"description":"True only when a typed numeric score is exactly zero and the round has no status.","type":"boolean"},"score":{"description":"Typed score when the source value is safely numeric.","type":"number"},"score_unit":{"description":"Open-set score unit, present only when the normalized class format establishes it. Clients must tolerate future values.","type":"string","x-known-values":["faults","seconds","style_points","points"]},"sequence":{"description":"One-based neutral ordering within this performance.","minimum":1,"type":"integer"},"status":{"$ref":"#/components/schemas/ResultStatus"},"time_seconds":{"description":"Typed elapsed time in seconds when safely numeric.","minimum":0,"type":"number"}},"required":["sequence","is_clear"],"type":"object"},"ListMeta":{"description":"Shared list-envelope fields. Every list response is an object\ncomposed (via `allOf`) of this schema plus an endpoint-specific\nrequired `data` array; list results are never a bare JSON array.\n`total` is the exact traversal-start count computed once on the\nfirst page and repeated unchanged on later pages of the same\ntraversal. There are no page numbers or offset parameters; the\ncount sizes the job, the token retrieves the next page.\n","properties":{"has_more":{"description":"Whether at least one further page exists.","type":"boolean"},"next_page_token":{"description":"Opaque signed token for the next page, supplied via the `page_token` query parameter. `null` exactly when `has_more` is `false`. Bound to the originating query, sort profile, page size and API key, with an expiry.","nullable":true,"type":"string"},"total":{"description":"Exact number of items matching the traversal at its start. Stable across the pages of one traversal.","format":"int64","minimum":0,"type":"integer"}},"required":["total","has_more","next_page_token"],"type":"object"},"NullablePedigreeJumpingCount":{"additionalProperties":false,"nullable":true,"properties":{"count":{"format":"int64","minimum":1,"type":"integer"},"height_metres":{"type":"number"}},"required":["height_metres","count"],"type":"object"},"NullablePedigreeRider":{"additionalProperties":false,"nullable":true,"properties":{"id":{"format":"int64","minimum":1,"type":"integer"},"name":{"minLength":1,"type":"string"},"nationality_iso_code":{"description":"Rider nationality, ISO 3166-1 alpha-2; null when not recorded.","nullable":true,"pattern":"^[A-Z]{2}$","type":"string"}},"required":["id","name","nationality_iso_code"],"type":"object"},"NullablePedigreeStudbookRef":{"additionalProperties":false,"nullable":true,"properties":{"abbreviation":{"type":"string"},"id":{"format":"int64","minimum":1,"type":"integer"}},"required":["id","abbreviation"],"type":"object"},"OperationCredits":{"additionalProperties":false,"description":"The operation's price under the current price list, read when the document is requested. The price is the same for every customer. It applies to each successful response; for an operation that accepts `page_token` it applies to each first page, sent without `page_token`, including an empty page. Errors are never charged. Operations that do not accept `Idempotency-Key` are always free and show 0. `milli_credits` uses the same unit as your account balance; one credit is 1,000 milli-credits.","example":{"credits_text":"370 credits","follow_on_page":{"credits_text":"370 credits","milli_credits":370000},"milli_credits":370000},"properties":{"credits_text":{"description":"The same price in credits, formatted for people, for example `370 credits` or `88.5 credits`.","type":"string"},"follow_on_page":{"$ref":"#/components/schemas/PagePrice"},"free_allowance":{"$ref":"#/components/schemas/FreeAllowance"},"milli_credits":{"description":"Price in milli-credits.","format":"int64","minimum":0,"type":"integer"}},"required":["milli_credits","credits_text"],"type":"object"},"PagePrice":{"additionalProperties":false,"description":"Price of each follow-on page, sent with `page_token`, including an empty page. Present only for operations that accept `page_token`.","properties":{"credits_text":{"description":"The same price in credits, formatted for people.","type":"string"},"free_allowance":{"$ref":"#/components/schemas/FreeAllowance"},"milli_credits":{"description":"Price in milli-credits.","format":"int64","minimum":0,"type":"integer"}},"required":["milli_credits","credits_text"],"type":"object"},"PedigreeBestResult":{"additionalProperties":false,"description":"Ranked result summary ordered by height descending (null last), place ascending, date descending, then stable source identity.","properties":{"awarded_prize_money_eur_cents":{"format":"int64","nullable":true,"type":"integer"},"class":{"$ref":"#/components/schemas/PedigreeHorseRef"},"competition":{"$ref":"#/components/schemas/PedigreeHorseRef"},"date":{"format":"date","type":"string"},"discipline":{"description":"Sport discipline. Known values: jumping, dressage, eventing.","type":"string","x-known-values":["jumping","dressage","eventing"]},"edition":{"$ref":"#/components/schemas/PedigreeHorseRef"},"height_metres":{"nullable":true,"type":"number"},"international":{"type":"boolean"},"place":{"format":"int64","minimum":1,"type":"integer"}},"required":["place","date","discipline","international","competition","edition","class","height_metres","awarded_prize_money_eur_cents"],"type":"object"},"PedigreeBestRiders":{"additionalProperties":false,"properties":{"dressage":{"$ref":"#/components/schemas/NullablePedigreeRider"},"eventing":{"$ref":"#/components/schemas/NullablePedigreeRider"},"jumping":{"$ref":"#/components/schemas/NullablePedigreeRider"}},"required":["jumping","dressage","eventing"],"type":"object"},"PedigreeHorseRef":{"additionalProperties":false,"properties":{"id":{"format":"int64","minimum":1,"type":"integer"},"name":{"minLength":1,"type":"string"}},"required":["id","name"],"type":"object"},"PedigreeJumpingRecord":{"additionalProperties":false,"description":"Jumping wins and placings at the highest height that has a win and the highest height that has a placing, then at the next lower height of each kind. A count is null when the horse has no such height. Placings include wins: in an international class a result is a placing when it earned prize money, and in any other class when its place is in the best quarter of the class's finishing places, rounded up.","nullable":true,"properties":{"highest_placings":{"$ref":"#/components/schemas/NullablePedigreeJumpingCount"},"highest_wins":{"$ref":"#/components/schemas/NullablePedigreeJumpingCount"},"second_highest_placings":{"$ref":"#/components/schemas/NullablePedigreeJumpingCount"},"second_highest_wins":{"$ref":"#/components/schemas/NullablePedigreeJumpingCount"}},"required":["highest_wins","highest_placings","second_highest_wins","second_highest_placings"],"type":"object"},"PedigreeOffspringSummary":{"additionalProperties":false,"properties":{"black_type_offspring":{"format":"int64","minimum":0,"type":"integer"},"offspring":{"format":"int64","minimum":0,"type":"integer"},"sport_offspring":{"format":"int64","minimum":0,"type":"integer"}},"required":["offspring","sport_offspring","black_type_offspring"],"type":"object"},"PedigreeParty":{"additionalProperties":false,"description":"Optional consenting party on the breeding subject only. The entire property is absent when unavailable.","properties":{"country_iso_code":{"pattern":"^[A-Z]{2}$","type":"string"},"name":{"minLength":1,"type":"string"}},"required":["name","country_iso_code"],"type":"object"},"PedigreeSport":{"additionalProperties":false,"description":"Stored sport flags, current raw rating (null when zero or unavailable), and levels.","properties":{"black_type":{"type":"boolean"},"capitals":{"type":"boolean"},"levels":{"$ref":"#/components/schemas/SportLevels"},"rating":{"nullable":true,"type":"number"}},"required":["black_type","capitals","rating","levels"],"type":"object"},"PedigreeStudbookRef":{"additionalProperties":false,"properties":{"abbreviation":{"type":"string"},"id":{"format":"int64","minimum":1,"type":"integer"}},"required":["id","abbreviation"],"type":"object"},"PerformanceDamDetails":{"additionalProperties":false,"properties":{"best_results":{"items":{"$ref":"#/components/schemas/PedigreeBestResult"},"maxItems":5,"type":"array"},"best_riders":{"$ref":"#/components/schemas/PedigreeBestRiders"},"full_sisters":{"items":{"$ref":"#/components/schemas/PedigreeHorseRef"},"type":"array"},"international_prize_money_eur_cents":{"format":"int64","nullable":true,"type":"integer"},"jumping_record":{"$ref":"#/components/schemas/PedigreeJumpingRecord"},"offspring_summary":{"$ref":"#/components/schemas/PedigreeOffspringSummary"}},"required":["best_results","jumping_record","best_riders","international_prize_money_eur_cents","offspring_summary","full_sisters"],"type":"object"},"PerformanceDamHorse":{"additionalProperties":false,"properties":{"approved_for":{"items":{"$ref":"#/components/schemas/PedigreeStudbookRef"},"type":"array"},"birth_year":{"$ref":"#/components/schemas/BirthYear"},"colour":{"nullable":true,"type":"string"},"id":{"format":"int64","minimum":1,"type":"integer"},"name":{"minLength":1,"type":"string"},"performance":{"$ref":"#/components/schemas/PerformanceDamDetails"},"sex":{"nullable":true,"type":"string"},"sire_name":{"description":"Recorded name of this horse's sire, or null when none is recorded. It is a name only, without a horse ID.","minLength":1,"nullable":true,"type":"string"},"sport":{"$ref":"#/components/schemas/PedigreeSport"},"studbook":{"$ref":"#/components/schemas/NullablePedigreeStudbookRef"}},"required":["id","name","birth_year","sex","colour","studbook","approved_for","sire_name","sport","performance"],"type":"object"},"PerformanceDamLineEntry":{"additionalProperties":false,"properties":{"horse":{"$ref":"#/components/schemas/PerformanceDamHorse"},"offspring":{"items":{"$ref":"#/components/schemas/PerformanceOffspring"},"maxItems":499,"type":"array"},"position":{"maximum":4,"minimum":1,"type":"integer"}},"required":["position","horse","offspring"],"type":"object"},"PerformanceDetails":{"additionalProperties":false,"properties":{"best_results":{"items":{"$ref":"#/components/schemas/PedigreeBestResult"},"maxItems":5,"type":"array"},"best_riders":{"$ref":"#/components/schemas/PedigreeBestRiders"},"international_prize_money_eur_cents":{"format":"int64","nullable":true,"type":"integer"},"jumping_record":{"$ref":"#/components/schemas/PedigreeJumpingRecord"}},"required":["best_results","jumping_record","best_riders","international_prize_money_eur_cents"],"type":"object"},"PerformanceOffspring":{"additionalProperties":false,"description":"Foal with at most three offspring generations below its dam. Repeated dams have no nested offspring.","properties":{"approved_for":{"items":{"$ref":"#/components/schemas/PedigreeStudbookRef"},"type":"array"},"birth_year":{"$ref":"#/components/schemas/BirthYear"},"colour":{"nullable":true,"type":"string"},"id":{"format":"int64","minimum":1,"type":"integer"},"is_subject":{"type":"boolean"},"name":{"minLength":1,"type":"string"},"offspring":{"items":{"$ref":"#/components/schemas/PerformanceOffspring"},"maxItems":500,"type":"array"},"performance":{"$ref":"#/components/schemas/PerformanceDetails"},"repeated_dam":{"type":"boolean"},"sex":{"nullable":true,"type":"string"},"sire_name":{"description":"Recorded name of this horse's sire, or null when none is recorded. It is a name only, without a horse ID.","minLength":1,"nullable":true,"type":"string"},"sport":{"$ref":"#/components/schemas/PedigreeSport"},"studbook":{"$ref":"#/components/schemas/NullablePedigreeStudbookRef"}},"required":["id","name","birth_year","sex","colour","studbook","approved_for","sire_name","sport","is_subject","repeated_dam","performance","offspring"],"type":"object"},"PerformancePedigree":{"additionalProperties":false,"description":"Genealogy to great-grandparents and up to four dam families, each three offspring generations deep. The cap counts at most 500 full dam-line horse occurrences, including the dams. Tree nodes, sire offspring and compact sister references are outside the cap. Trimming removes deepest generations first, starting with the fourth dam family. The truncation flag reports omitted horses.","properties":{"dam_line":{"items":{"$ref":"#/components/schemas/PerformanceDamLineEntry"},"maxItems":4,"type":"array"},"dam_line_truncated":{"type":"boolean"},"sire_best_offspring":{"items":{"$ref":"#/components/schemas/PerformanceSireOffspring"},"maxItems":3,"type":"array"},"subject":{"additionalProperties":false,"properties":{"approved_for":{"items":{"$ref":"#/components/schemas/PedigreeStudbookRef"},"type":"array"},"birth_year":{"$ref":"#/components/schemas/BirthYear"},"colour":{"nullable":true,"type":"string"},"id":{"format":"int64","minimum":1,"type":"integer"},"name":{"minLength":1,"type":"string"},"sex":{"nullable":true,"type":"string"},"sport":{"$ref":"#/components/schemas/PedigreeSport"},"studbook":{"$ref":"#/components/schemas/NullablePedigreeStudbookRef"}},"required":["id","name","birth_year","sex","colour","studbook","approved_for","sport"],"type":"object"},"tree":{"$ref":"#/components/schemas/PerformanceTree"}},"required":["subject","tree","dam_line","dam_line_truncated","sire_best_offspring"],"type":"object"},"PerformanceSireOffspring":{"additionalProperties":false,"properties":{"approved_for":{"items":{"$ref":"#/components/schemas/PedigreeStudbookRef"},"type":"array"},"birth_year":{"$ref":"#/components/schemas/BirthYear"},"colour":{"nullable":true,"type":"string"},"id":{"format":"int64","minimum":1,"type":"integer"},"name":{"minLength":1,"type":"string"},"performance":{"$ref":"#/components/schemas/PerformanceDetails"},"sex":{"nullable":true,"type":"string"},"sport":{"$ref":"#/components/schemas/PedigreeSport"},"studbook":{"$ref":"#/components/schemas/NullablePedigreeStudbookRef"}},"required":["id","name","birth_year","sex","colour","studbook","approved_for","sport","performance"],"type":"object"},"PerformanceTree":{"additionalProperties":false,"properties":{"dam":{"$ref":"#/components/schemas/PerformanceTreeNode"},"sire":{"$ref":"#/components/schemas/PerformanceTreeNode"}},"required":["sire","dam"],"type":"object"},"PerformanceTreeNode":{"additionalProperties":false,"description":"Ancestor node, at most three generations above the subject. Missing or cyclic parents and the parents of depth-limit leaves are null.","nullable":true,"properties":{"approved_for":{"items":{"$ref":"#/components/schemas/PedigreeStudbookRef"},"type":"array"},"birth_year":{"$ref":"#/components/schemas/BirthYear"},"colour":{"nullable":true,"type":"string"},"dam":{"$ref":"#/components/schemas/PerformanceTreeNode"},"id":{"format":"int64","minimum":1,"type":"integer"},"name":{"minLength":1,"type":"string"},"sex":{"nullable":true,"type":"string"},"sire":{"$ref":"#/components/schemas/PerformanceTreeNode"},"sport":{"$ref":"#/components/schemas/PedigreeSport"},"studbook":{"$ref":"#/components/schemas/NullablePedigreeStudbookRef"}},"required":["id","name","birth_year","sex","colour","studbook","approved_for","sport","sire","dam"],"type":"object"},"Problem":{"description":"RFC 9457 problem document used by every managed error response\nunder `/v1`, regardless of which layer produced it. Content type is\nalways `application/problem+json`. Clients branch on `code`, retain\nan unknown-code fallback, use `status` only for broad handling and\nmust ignore unknown top-level fields. `title` and `detail` are\nhuman-readable English, may be clarified without versioning and are\nnever parsed.\n","properties":{"charged":{"description":"Whether credits were charged for this request. Always `false` on an error response in v1; no error creates a debit or hold.","type":"boolean"},"code":{"description":"Stable machine code from the registered matrix. Codes are only added, never changed, within v1; clients retain an unknown-code fallback.","pattern":"^[a-z][a-z0-9_]*$","type":"string"},"detail":{"description":"Safe occurrence-level explanation. Non-normative and never parsed by clients.","type":"string"},"errors":{"description":"Present only for field-level validation failures. Items use request-field order and contain at most 20 entries.","items":{"$ref":"#/components/schemas/ValidationError"},"maxItems":20,"type":"array"},"errors_truncated":{"description":"May be `true` when more validation failures exist than the 20-item bound allows.","type":"boolean"},"instance":{"description":"`urn:hippomundo:request:{request_id}`. Never the request URL or query string.","format":"uri","type":"string"},"request_id":{"description":"Server-generated request identifier, equal to the `Hippomundo-Request-ID` response header.","type":"string"},"retryable":{"description":"Whether retrying this occurrence without changing the business request may succeed. An occurrence-level recommendation, not permission for an unbounded loop; honor `Retry-After` and use exponential backoff with jitter on retryable server errors.","type":"boolean"},"status":{"description":"The HTTP status code repeated as an integer.","maximum":599,"minimum":100,"type":"integer"},"title":{"description":"Short stable English summary. Clients do not branch on it.","type":"string"},"type":{"description":"Stable HTTPS documentation URI derived from `code` (`https://enterprise.hippomundo.com/docs/errors/{code}`). Never contains request data.","format":"uri","type":"string"}},"required":["type","title","status","detail","instance","code","request_id","charged","retryable"],"type":"object"},"Result":{"additionalProperties":false,"description":"Competition result with self-contained horse, rider and hierarchy\nsummaries. Results require an existing class, edition, competition,\nhorse and rider. Results can appear while a class is still being\nentered. `discipline` and `performance.type` always agree.\n\nThe three documented variants are strict, while an explicit unknown\nvariant keeps clients forward-compatible with future disciplines.\n","oneOf":[{"properties":{"discipline":{"enum":["jumping"],"type":"string"},"performance":{"$ref":"#/components/schemas/JumpingPerformance"}},"required":["discipline","performance"]},{"properties":{"discipline":{"enum":["dressage"],"type":"string"},"performance":{"$ref":"#/components/schemas/DressagePerformance"}},"required":["discipline","performance"]},{"properties":{"discipline":{"enum":["eventing"],"type":"string"},"performance":{"$ref":"#/components/schemas/EventingPerformance"}},"required":["discipline","performance"]},{"properties":{"discipline":{"not":{"enum":["jumping","dressage","eventing"]},"type":"string"},"performance":{"$ref":"#/components/schemas/UnknownPerformance"}},"required":["discipline","performance"]}],"properties":{"awarded_prize_money_eur_cents":{"description":"Prize awarded to this result as integer euro cents, converted at the exchange rate on the class date and frozen. This stable value is not recomputed and is distinct from the class purse.","format":"int64","minimum":0,"nullable":true,"type":"integer"},"class":{"$ref":"#/components/schemas/ResultClass"},"competition":{"$ref":"#/components/schemas/Competition"},"discipline":{"description":"Open set; documented values are `jumping`, `dressage` and `eventing`.","type":"string","x-known-values":["jumping","dressage","eventing"]},"edition":{"$ref":"#/components/schemas/ResultEdition"},"horse":{"$ref":"#/components/schemas/ResultHorse"},"id":{"description":"Public result ID.","format":"int64","type":"integer"},"performance":{"additionalProperties":true,"description":"Discipline-tagged performance object, narrowed by the result variant above.","properties":{"type":{"type":"string"}},"required":["type"],"type":"object"},"place":{"description":"Numbered placing, or null when unplaced.","minimum":1,"nullable":true,"type":"integer"},"rider":{"$ref":"#/components/schemas/ResultRider"}},"required":["id","discipline","horse","rider","place","awarded_prize_money_eur_cents","competition","edition","class","performance"],"type":"object"},"ResultClass":{"additionalProperties":false,"properties":{"date":{"description":"Effective class date.","format":"date","type":"string"},"format":{"$ref":"#/components/schemas/ClassFormat"},"id":{"description":"Public class ID.","format":"int64","type":"integer"},"max_height_metres":{"description":"Maximum obstacle height as a decimal in metres.","nullable":true,"type":"number"},"name":{"type":"string"},"prize_money_eur_cents":{"description":"Advertised class purse as integer euro cents, converted at the exchange rate on the class date and frozen. This stable value is not recomputed and is distinct from the amount awarded to a result.","format":"int64","minimum":0,"nullable":true,"type":"integer"},"star_level":{"description":"Nullable star designation, normally one through five.","nullable":true,"type":"integer","x-known-values":[1,2,3,4,5]}},"required":["id","name","format","date","max_height_metres","star_level","prize_money_eur_cents"],"type":"object"},"ResultEdition":{"additionalProperties":false,"properties":{"date_from":{"format":"date","type":"string"},"date_to":{"format":"date","nullable":true,"type":"string"},"id":{"description":"Public edition ID.","format":"int64","type":"integer"},"international":{"type":"boolean"},"name":{"type":"string"},"star_level":{"description":"Nullable star designation, normally one through five.","nullable":true,"type":"integer","x-known-values":[1,2,3,4,5]}},"required":["id","name","date_from","date_to","international","star_level"],"type":"object"},"ResultHorse":{"additionalProperties":false,"properties":{"id":{"description":"Authoritative canonical public horse ID.","format":"int64","type":"integer"},"name":{"type":"string"},"studbook":{"$ref":"#/components/schemas/StudbookRef"}},"required":["id","name","studbook"],"type":"object"},"ResultPage":{"allOf":[{"$ref":"#/components/schemas/ListMeta"},{"properties":{"data":{"items":{"$ref":"#/components/schemas/Result"},"type":"array"}},"required":["data"],"type":"object"}]},"ResultRider":{"additionalProperties":false,"properties":{"id":{"description":"Authoritative canonical public rider ID.","format":"int64","type":"integer"},"name":{"type":"string"}},"required":["id","name"],"type":"object"},"ResultStatus":{"description":"Normalized open-set result status. Documented values are `eliminated`, `retired`, `withdrawn`, `did_not_start`, `disqualified` and `other`. Clients must tolerate future values.","type":"string","x-known-values":["eliminated","retired","withdrawn","did_not_start","disqualified","other"]},"RiderSearchPage":{"allOf":[{"$ref":"#/components/schemas/ListMeta"},{"properties":{"data":{"items":{"$ref":"#/components/schemas/RiderSearchResult"},"type":"array"}},"required":["data"],"type":"object"}]},"RiderSearchResult":{"description":"Thin rider disambiguation result. A rider without a public nationality has a null `nationality_iso_code`.","properties":{"id":{"description":"Public Hippomundo rider ID (authoritative, canonical).","format":"int64","type":"integer"},"name":{"type":"string"},"nationality_iso_code":{"description":"Rider nationality, ISO 3166-1 alpha-2.","nullable":true,"type":"string"}},"required":["id","name","nationality_iso_code"],"type":"object"},"SportDamDetails":{"additionalProperties":false,"properties":{"best_results":{"items":{"$ref":"#/components/schemas/PedigreeBestResult"},"maxItems":3,"type":"array"},"best_riders":{"$ref":"#/components/schemas/PedigreeBestRiders"},"full_sisters":{"items":{"$ref":"#/components/schemas/PedigreeHorseRef"},"type":"array"},"jumping_record":{"$ref":"#/components/schemas/PedigreeJumpingRecord"},"offspring_summary":{"$ref":"#/components/schemas/PedigreeOffspringSummary"}},"required":["best_results","jumping_record","best_riders","offspring_summary","full_sisters"],"type":"object"},"SportDamHorse":{"additionalProperties":false,"properties":{"approved_for":{"items":{"$ref":"#/components/schemas/PedigreeStudbookRef"},"type":"array"},"birth_year":{"$ref":"#/components/schemas/BirthYear"},"colour":{"nullable":true,"type":"string"},"id":{"format":"int64","minimum":1,"type":"integer"},"name":{"minLength":1,"type":"string"},"performance":{"$ref":"#/components/schemas/SportDamDetails"},"sex":{"nullable":true,"type":"string"},"sire_name":{"description":"Recorded name of this horse's sire, or null when none is recorded. It is a name only, without a horse ID.","minLength":1,"nullable":true,"type":"string"},"sport":{"$ref":"#/components/schemas/PedigreeSport"},"studbook":{"$ref":"#/components/schemas/NullablePedigreeStudbookRef"}},"required":["id","name","birth_year","sex","colour","studbook","approved_for","sire_name","sport","performance"],"type":"object"},"SportDamLineEntry":{"additionalProperties":false,"properties":{"horse":{"$ref":"#/components/schemas/SportDamHorse"},"offspring":{"items":{"$ref":"#/components/schemas/SportOffspring"},"maxItems":499,"type":"array"},"position":{"maximum":4,"minimum":1,"type":"integer"}},"required":["position","horse","offspring"],"type":"object"},"SportDetails":{"additionalProperties":false,"properties":{"best_results":{"items":{"$ref":"#/components/schemas/PedigreeBestResult"},"maxItems":3,"type":"array"},"best_riders":{"$ref":"#/components/schemas/PedigreeBestRiders"},"jumping_record":{"$ref":"#/components/schemas/PedigreeJumpingRecord"}},"required":["best_results","jumping_record","best_riders"],"type":"object"},"SportLevels":{"additionalProperties":false,"description":"The seven recorded sport levels; unavailable levels are null.","properties":{"idr_level":{"nullable":true,"type":"number"},"iev_level":{"nullable":true,"type":"number"},"max_isj_level":{"nullable":true,"type":"number"},"min_isj_level":{"nullable":true,"type":"number"},"ndr_level":{"nullable":true,"type":"number"},"nev_level":{"nullable":true,"type":"number"},"nsj_level":{"nullable":true,"type":"number"}},"required":["min_isj_level","max_isj_level","nsj_level","idr_level","ndr_level","iev_level","nev_level"],"type":"object"},"SportOffspring":{"additionalProperties":false,"description":"Foal with at most three offspring generations below its dam. Repeated dams have no nested offspring.","properties":{"approved_for":{"items":{"$ref":"#/components/schemas/PedigreeStudbookRef"},"type":"array"},"birth_year":{"$ref":"#/components/schemas/BirthYear"},"colour":{"nullable":true,"type":"string"},"id":{"format":"int64","minimum":1,"type":"integer"},"is_subject":{"type":"boolean"},"name":{"minLength":1,"type":"string"},"offspring":{"items":{"$ref":"#/components/schemas/SportOffspring"},"maxItems":500,"type":"array"},"performance":{"$ref":"#/components/schemas/SportDetails"},"repeated_dam":{"type":"boolean"},"sex":{"nullable":true,"type":"string"},"sire_name":{"description":"Recorded name of this horse's sire, or null when none is recorded. It is a name only, without a horse ID.","minLength":1,"nullable":true,"type":"string"},"sport":{"$ref":"#/components/schemas/PedigreeSport"},"studbook":{"$ref":"#/components/schemas/NullablePedigreeStudbookRef"}},"required":["id","name","birth_year","sex","colour","studbook","approved_for","sire_name","sport","is_subject","repeated_dam","performance","offspring"],"type":"object"},"SportPedigree":{"additionalProperties":false,"description":"Genealogy to great-grandparents and up to four dam families, each three offspring generations deep. The cap counts at most 500 full dam-line horse occurrences, including the dams. Tree nodes, sire offspring and compact sister references are outside the cap. Trimming removes deepest generations first, starting with the fourth dam family. The truncation flag reports omitted horses.","properties":{"dam_line":{"items":{"$ref":"#/components/schemas/SportDamLineEntry"},"maxItems":4,"type":"array"},"dam_line_truncated":{"type":"boolean"},"sire_best_offspring":{"items":{"$ref":"#/components/schemas/SportSireOffspring"},"maxItems":3,"type":"array"},"subject":{"additionalProperties":false,"properties":{"approved_for":{"items":{"$ref":"#/components/schemas/PedigreeStudbookRef"},"type":"array"},"birth_year":{"$ref":"#/components/schemas/BirthYear"},"colour":{"nullable":true,"type":"string"},"id":{"format":"int64","minimum":1,"type":"integer"},"name":{"minLength":1,"type":"string"},"sex":{"nullable":true,"type":"string"},"sport":{"$ref":"#/components/schemas/PedigreeSport"},"studbook":{"$ref":"#/components/schemas/NullablePedigreeStudbookRef"}},"required":["id","name","birth_year","sex","colour","studbook","approved_for","sport"],"type":"object"},"tree":{"$ref":"#/components/schemas/SportTree"}},"required":["subject","tree","dam_line","dam_line_truncated","sire_best_offspring"],"type":"object"},"SportSireOffspring":{"additionalProperties":false,"properties":{"approved_for":{"items":{"$ref":"#/components/schemas/PedigreeStudbookRef"},"type":"array"},"birth_year":{"$ref":"#/components/schemas/BirthYear"},"colour":{"nullable":true,"type":"string"},"id":{"format":"int64","minimum":1,"type":"integer"},"name":{"minLength":1,"type":"string"},"performance":{"$ref":"#/components/schemas/SportDetails"},"sex":{"nullable":true,"type":"string"},"sport":{"$ref":"#/components/schemas/PedigreeSport"},"studbook":{"$ref":"#/components/schemas/NullablePedigreeStudbookRef"}},"required":["id","name","birth_year","sex","colour","studbook","approved_for","sport","performance"],"type":"object"},"SportTree":{"additionalProperties":false,"properties":{"dam":{"$ref":"#/components/schemas/SportTreeNode"},"sire":{"$ref":"#/components/schemas/SportTreeNode"}},"required":["sire","dam"],"type":"object"},"SportTreeNode":{"additionalProperties":false,"description":"Ancestor node, at most three generations above the subject. Missing or cyclic parents and the parents of depth-limit leaves are null.","nullable":true,"properties":{"approved_for":{"items":{"$ref":"#/components/schemas/PedigreeStudbookRef"},"type":"array"},"birth_year":{"$ref":"#/components/schemas/BirthYear"},"colour":{"nullable":true,"type":"string"},"dam":{"$ref":"#/components/schemas/SportTreeNode"},"id":{"format":"int64","minimum":1,"type":"integer"},"name":{"minLength":1,"type":"string"},"sex":{"nullable":true,"type":"string"},"sire":{"$ref":"#/components/schemas/SportTreeNode"},"sport":{"$ref":"#/components/schemas/PedigreeSport"},"studbook":{"$ref":"#/components/schemas/NullablePedigreeStudbookRef"}},"required":["id","name","birth_year","sex","colour","studbook","approved_for","sport","sire","dam"],"type":"object"},"Studbook":{"description":"Slim studbook reference item.","properties":{"abbreviation":{"type":"string"},"country_iso_code":{"description":"Studbook country, ISO 3166-1 alpha-2.","nullable":true,"type":"string"},"id":{"description":"Public studbook ID, accepted by the studbook results feed.","format":"int64","type":"integer"},"name":{"type":"string"}},"required":["id","name","abbreviation","country_iso_code"],"type":"object"},"StudbookPage":{"allOf":[{"$ref":"#/components/schemas/ListMeta"},{"properties":{"data":{"items":{"$ref":"#/components/schemas/Studbook"},"type":"array"}},"required":["data"],"type":"object"}]},"StudbookRef":{"description":"Slim studbook reference on a horse; null when the horse has no recorded studbook.","nullable":true,"properties":{"abbreviation":{"type":"string"},"id":{"description":"Public studbook ID.","format":"int64","type":"integer"}},"required":["id","abbreviation"],"type":"object"},"UnknownPerformance":{"additionalProperties":true,"description":"Forward-compatible performance object for a discipline added after this document was generated. Clients retain an unknown-type fallback and ignore fields they do not understand.","properties":{"type":{"description":"Open discipline tag other than the three documented variants.","not":{"enum":["jumping","dressage","eventing"]},"type":"string"}},"required":["type"],"type":"object"},"Usage":{"additionalProperties":false,"description":"Current financial usage summary plus recent operational activity, ordered newest date first and then by endpoint. The current reporting period is the UTC calendar month; recent activity covers the most recent 30 UTC calendar dates, including today.","properties":{"balance_milli_credits":{"description":"Credits currently available for new billable requests.","format":"int64","type":"integer"},"current_period":{"$ref":"#/components/schemas/UsagePeriod"},"recent_activity":{"items":{"$ref":"#/components/schemas/UsageActivity"},"type":"array"}},"required":["balance_milli_credits","current_period","recent_activity"],"type":"object"},"UsageActivity":{"additionalProperties":false,"description":"Daily operational activity for one public endpoint.","properties":{"charged_milli_credits":{"description":"Observed charged amount; financial figures remain authoritative.","format":"int64","minimum":0,"type":"integer"},"date":{"format":"date","type":"string"},"denied_requests":{"format":"int64","minimum":0,"type":"integer"},"endpoint":{"description":"Stable public operation identifier.","type":"string"},"successful_requests":{"format":"int64","minimum":0,"type":"integer"}},"required":["date","endpoint","successful_requests","denied_requests","charged_milli_credits"],"type":"object"},"UsagePeriod":{"additionalProperties":false,"properties":{"ends_at":{"description":"Exclusive start of the next UTC calendar month.","format":"date-time","type":"string"},"spent_milli_credits":{"description":"Authoritative credits spent in this reporting period.","format":"int64","minimum":0,"type":"integer"},"starts_at":{"description":"Inclusive start of the current UTC calendar month.","format":"date-time","type":"string"}},"required":["starts_at","ends_at","spent_milli_credits"],"type":"object"},"ValidationError":{"description":"One field-level validation failure. Messages and rejected values are\ndeliberately absent: documentation for the field and validation code\nsupplies the human explanation.\n","properties":{"code":{"description":"Stable bounded reason. Open set; documented values are `required`, `unknown`, `invalid_format`, `out_of_range`, `unsupported_value` and `conflict`.","type":"string","x-known-values":["required","unknown","invalid_format","out_of_range","unsupported_value","conflict"]},"field":{"description":"Public field or parameter name, or a JSON pointer for body fields. Never an internal property name.","type":"string"},"location":{"description":"Where the failing input was supplied. Open set; documented values are `path`, `query`, `header` and `body`.","type":"string","x-known-values":["path","query","header","body"]}},"required":["location","field","code"],"type":"object"}},"securitySchemes":{"ApiKeyAuth":{"description":"Customer API key; every request is authenticated by API key.\n\nA missing, invalid, revoked or otherwise unusable key always returns\nthe same `401 invalid_api_key`; the states are deliberately\nindistinguishable. Keys never appear in URLs or query strings.\n","in":"header","name":"apikey","type":"apiKey"}}},"info":{"contact":{"name":"Hippomundo Enterprise API support","url":"https://enterprise.hippomundo.com/docs/support"},"description":"Commercial read API over the Hippomundo equestrian database, metered in\nprepaid credits. The wire version is carried in the path (`/v1`); this\n`info.version` tracks revisions of the contract document itself.\n\n## Conventions\n\n- Every error response is an RFC 9457 problem document\n  (`application/problem+json`) with a stable machine `code`. Every\n  error is uncharged (`charged: false`).\n- Response enumerations are open sets: documented values are stable, but\n  clients must tolerate unknown values (`x-known-values` lists the\n  documented set). Request enumerations are closed and validated.\n- List responses share one envelope: `data`, `total`, `has_more`,\n  `next_page_token`. Pagination uses opaque signed page tokens; there are\n  no page numbers or offsets.\n- Operations that accept `Idempotency-Key` are billable: the current\n  price list decides what each successful response costs. Each\n  operation in your OpenAPI document (`GET /v1/openapi.json`) shows its\n  current price in its `x-credits` extension. Other operations are\n  always free.\n","license":{"name":"Proprietary","url":"https://enterprise.hippomundo.com/terms"},"title":"Hippomundo Enterprise API","version":"0.5.0"},"openapi":"3.0.3","paths":{"/v1/classes/{class_id}/results":{"get":{"description":"Lists all results for one class. The class scope has no\nindependent filters in v1. Each row includes the horse, rider, competition,\nedition and class, with performance tagged by discipline.\nUnknown query parameters are rejected with `422 validation_failed`.\n\nThe page size is capped and defaulted at 100. Default sort is `place`;\nunplaced results follow placed results, and result ID is the final\ntiebreaker. A smaller page size becomes bound to the traversal token,\nafter which `page_size` and `sort` overrides are rejected.\n\nEach successful page, including an empty page (`data: []`,\n`total: 0`), is charged at this operation's current price, which your\nOpenAPI document (`GET /v1/openapi.json`) and your portal API\nreference show. Send\n`Idempotency-Key` to make a retry safe. Errors are never charged.\n","operationId":"listClassResults","parameters":[{"description":"Public class ID.","in":"path","name":"class_id","required":true,"schema":{"format":"int64","type":"integer"}},{"description":"Sort profile. Rejected as an override once a traversal has begun.","in":"query","name":"sort","schema":{"default":"place","enum":["place","id"],"type":"string"}},{"$ref":"#/components/parameters/ResultPageSize"},{"$ref":"#/components/parameters/PageToken"},{"$ref":"#/components/parameters/FreshnessOverride"},{"$ref":"#/components/parameters/VersionHeader"},{"$ref":"#/components/parameters/IdempotencyKey"}],"responses":{"200":{"$ref":"#/components/responses/ResultPageSuccess"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/InvalidApiKey"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/EndpointNotEntitled"},"404":{"$ref":"#/components/responses/NotFound"},"406":{"$ref":"#/components/responses/NotAcceptable"},"409":{"$ref":"#/components/responses/IdempotencyConflict"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimitExceeded"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/DependencyError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"},"504":{"$ref":"#/components/responses/DependencyTimeout"}},"summary":"List results for a class","tags":["results"]}},"/v1/competitions":{"get":{"description":"Searches competitions by name, country, `international` flag and\ndiscipline. Competitions carry no date; only editions do — year and\ndate filtering happens on the editions endpoint. `name` is trimmed, case-insensitive contains matching;\nuser input is matched literally. Only competitions with at least one\ndated edition containing a class are returned.\n\nUnknown query parameters are rejected with `422 validation_failed`.\nThe page size is capped and defaulted at 100; a smaller `page_size`\nis allowed and becomes bound to the traversal token, after which\n`page_size` and `sort` overrides are rejected. Default sort is\n`name`; use `id` for exhaustive traversal.\n\nEach successful page, including an empty page (`data: []`,\n`total: 0`), is charged at this operation's current price, which your\nOpenAPI document (`GET /v1/openapi.json`) and your portal API\nreference show. Errors are never\ncharged.\n","operationId":"searchCompetitions","parameters":[{"description":"Competition name, trimmed case-insensitive contains matching, minimum two characters.","in":"query","name":"name","schema":{"maxLength":100,"minLength":2,"type":"string"}},{"description":"Exact competition country, uppercase ISO 3166-1 alpha-2.","in":"query","name":"country_iso_code","schema":{"pattern":"^[A-Z]{2}$","type":"string"}},{"description":"Filter on international competitions. Omission means no filter.","in":"query","name":"international","schema":{"type":"boolean"}},{"description":"Discipline filter. Omission means all disciplines.","in":"query","name":"discipline","schema":{"enum":["jumping","dressage","eventing"],"type":"string"}},{"description":"Sort profile. `id` is recommended for exhaustive traversal. Rejected as an override once a traversal has begun.","in":"query","name":"sort","schema":{"default":"name","enum":["name","id"],"type":"string"}},{"description":"Page size, capped at 100. Bound to the traversal token; rejected as an override once a traversal has begun.","in":"query","name":"page_size","schema":{"default":100,"maximum":100,"minimum":1,"type":"integer"}},{"$ref":"#/components/parameters/PageToken"},{"$ref":"#/components/parameters/FreshnessOverride"},{"$ref":"#/components/parameters/VersionHeader"},{"$ref":"#/components/parameters/IdempotencyKey"}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"country_iso_code":"BE","discipline":"jumping","id":3120,"international":true,"name":"CSI Grimbergen"}],"has_more":false,"next_page_token":null,"total":1},"schema":{"$ref":"#/components/schemas/CompetitionSearchPage"}}},"description":"One page of competition search results.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlPrivateNoStore"},"Hippomundo-Charged-Milli-Credits":{"$ref":"#/components/headers/HippomundoChargedMilliCredits"},"Hippomundo-Data-Generation":{"$ref":"#/components/headers/HippomundoDataGeneration"},"Hippomundo-Request-ID":{"$ref":"#/components/headers/HippomundoRequestId"},"Idempotent-Replayed":{"$ref":"#/components/headers/IdempotentReplayed"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/InvalidApiKey"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/EndpointNotEntitled"},"406":{"$ref":"#/components/responses/NotAcceptable"},"409":{"$ref":"#/components/responses/IdempotencyConflict"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimitExceeded"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/DependencyError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"},"504":{"$ref":"#/components/responses/DependencyTimeout"}},"summary":"Search competitions","tags":["search"]}},"/v1/competitions/{competition_id}/editions":{"get":{"description":"Lists the dated editions of one competition that contain at least one\nclass. Editions are reachable only through their parent competition.\nThis endpoint is free (0 credits) and rate-limited; its counts size a results job\nbefore credits are spent.\n\nThe date range is inclusive; either bound may stand alone, and when\nboth are present `date_from` must not exceed `date_to`\n(`422 validation_failed` otherwise). Unknown query parameters are\nrejected with `422 validation_failed`. The page size is capped and\ndefaulted at 100; a smaller `page_size` is allowed and becomes bound\nto the traversal token, after which `page_size` and `sort`\noverrides are rejected. Default sort is `date_asc`; use `id` for\nexhaustive traversal.\n","operationId":"listCompetitionEditions","parameters":[{"description":"Public competition ID.","in":"path","name":"competition_id","required":true,"schema":{"format":"int64","type":"integer"}},{"description":"Inclusive lower bound on the edition start date.","in":"query","name":"date_from","schema":{"format":"date","type":"string"}},{"description":"Inclusive upper bound on the edition start date.","in":"query","name":"date_to","schema":{"format":"date","type":"string"}},{"description":"Filter on international editions. Omission means no filter.","in":"query","name":"international","schema":{"type":"boolean"}},{"description":"Sort profile. `id` is recommended for exhaustive traversal. Rejected as an override once a traversal has begun.","in":"query","name":"sort","schema":{"default":"date_asc","enum":["date_asc","date_desc","id"],"type":"string"}},{"description":"Page size, capped at 100. Bound to the traversal token; rejected as an override once a traversal has begun.","in":"query","name":"page_size","schema":{"default":100,"maximum":100,"minimum":1,"type":"integer"}},{"$ref":"#/components/parameters/PageToken"},{"$ref":"#/components/parameters/FreshnessOverride"},{"$ref":"#/components/parameters/VersionHeader"}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"competition_id":3120,"date_from":"2025-05-08","date_to":"2025-05-11","id":45021,"international":true,"name":"CSI Grimbergen 2025","star_level":3},{"competition_id":3120,"date_from":"2024-05-09","date_to":null,"id":41288,"international":true,"name":"CSI Grimbergen 2024","star_level":null}],"has_more":false,"next_page_token":null,"total":2},"schema":{"$ref":"#/components/schemas/EditionPage"}}},"description":"One page of editions of the competition.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlPrivateNoStore"},"Hippomundo-Charged-Milli-Credits":{"$ref":"#/components/headers/HippomundoChargedMilliCredits"},"Hippomundo-Data-Generation":{"$ref":"#/components/headers/HippomundoDataGeneration"},"Hippomundo-Request-ID":{"$ref":"#/components/headers/HippomundoRequestId"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/InvalidApiKey"},"403":{"$ref":"#/components/responses/EndpointNotEntitled"},"404":{"$ref":"#/components/responses/NotFound"},"406":{"$ref":"#/components/responses/NotAcceptable"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimitExceeded"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/DependencyError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"},"504":{"$ref":"#/components/responses/DependencyTimeout"}},"summary":"List editions of a competition","tags":["hierarchy"]}},"/v1/editions/{edition_id}/classes":{"get":{"description":"Lists the classes of one edition. Classes are reachable only through\ntheir parent edition. This endpoint is free\n(0 credits) and rate-limited. It accepts no independent filters in\nv1; a competition fixes the discipline.\n\n`format` is a normalized open-set class format: recognized source\nvalues receive a stable `code` and canonical `display`, and\nunmapped values return `code: unknown` with the original safe text\nas `display`. `date` is the effective class date, falling back to\nthe edition date.\n\nUnknown query parameters are rejected with `422 validation_failed`.\nThe page size is capped and defaulted at 50 (generous so that a\nsingle page normally covers an edition); a smaller\n`page_size` is allowed and becomes bound to the traversal token,\nafter which `page_size` and `sort` overrides are rejected. Default\nsort is `date_asc`; use `id` for exhaustive traversal.\n","operationId":"listEditionClasses","parameters":[{"description":"Public edition ID.","in":"path","name":"edition_id","required":true,"schema":{"format":"int64","type":"integer"}},{"description":"Sort profile. `id` is recommended for exhaustive traversal. Rejected as an override once a traversal has begun.","in":"query","name":"sort","schema":{"default":"date_asc","enum":["date_asc","date_desc","id"],"type":"string"}},{"description":"Page size, capped at 50. Bound to the traversal token; rejected as an override once a traversal has begun.","in":"query","name":"page_size","schema":{"default":50,"maximum":50,"minimum":1,"type":"integer"}},{"$ref":"#/components/parameters/PageToken"},{"$ref":"#/components/parameters/FreshnessOverride"},{"$ref":"#/components/parameters/VersionHeader"}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"date":"2025-05-11","edition_id":45021,"format":{"code":"table_a_with_jump_off","display":"Table A with jump-off"},"id":220417,"max_height_metres":1.5,"name":"Grand Prix","prize_money_eur_cents":2500000,"star_level":3},{"date":"2025-05-09","edition_id":45021,"format":{"code":"unknown","display":"bar. A o. verh. 2F"},"id":220401,"max_height_metres":null,"name":"Youngster Tour","prize_money_eur_cents":null,"star_level":3}],"has_more":false,"next_page_token":null,"total":2},"schema":{"$ref":"#/components/schemas/ClassPage"}}},"description":"One page of classes of the edition.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlPrivateNoStore"},"Hippomundo-Charged-Milli-Credits":{"$ref":"#/components/headers/HippomundoChargedMilliCredits"},"Hippomundo-Data-Generation":{"$ref":"#/components/headers/HippomundoDataGeneration"},"Hippomundo-Request-ID":{"$ref":"#/components/headers/HippomundoRequestId"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/InvalidApiKey"},"403":{"$ref":"#/components/responses/EndpointNotEntitled"},"404":{"$ref":"#/components/responses/NotFound"},"406":{"$ref":"#/components/responses/NotAcceptable"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimitExceeded"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/DependencyError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"},"504":{"$ref":"#/components/responses/DependencyTimeout"}},"summary":"List classes of an edition","tags":["hierarchy"]}},"/v1/horses/{horse_id}/offspring/results":{"get":{"description":"Lists results for a horse's offspring during a bounded,\ninclusive date range. `parent_role` explicitly chooses sire or dam\nparentage and is never inferred. A role that does not match the\nhorse's offspring, for example `dam` for a stallion, returns an empty\npage, not an error. `date_from` is required; `date_to`, discipline,\ninternational and maximum placing are optional. `place_lte=3`, for\nexample, includes places one through three and excludes unplaced\nrows.\n\nThe date range may cover at most 30 days, counting both `date_from`\nand `date_to`. Without `date_to`, the range ends today, as a calendar\ndate in Belgian time (Europe/Brussels). A longer range returns\n`422 validation_failed` with `out_of_range` on `date_from`; a\n`date_from` after today without `date_to` returns `conflict` on\n`date_from`.\n\nThe requested parent ID is transparently resolved before matching.\nEvery response row carries canonical IDs, and\n`Hippomundo-Resolved-From` carries the requested parent ID when it was\nsuperseded. Unknown query parameters are rejected with\n`422 validation_failed`.\n\nThe page size is capped and defaulted at 100. Default sort is\n`date_desc`; every sort is deterministic and ends in result ID. A\nsmaller page size becomes bound to the traversal token, after which\n`page_size` and `sort` overrides are rejected.\n\nEach successful page, including an empty page (`data: []`,\n`total: 0`), is charged at this operation's current price, which your\nOpenAPI document (`GET /v1/openapi.json`) and your portal API\nreference show. Send\n`Idempotency-Key` to make a retry safe. Errors are never charged.\n","operationId":"listHorseOffspringResults","parameters":[{"description":"Public parent horse ID; superseded IDs are resolved.","in":"path","name":"horse_id","required":true,"schema":{"format":"int64","type":"integer"}},{"$ref":"#/components/parameters/ParentRole"},{"$ref":"#/components/parameters/PopulationDateFrom"},{"$ref":"#/components/parameters/PopulationDateTo"},{"$ref":"#/components/parameters/ResultDiscipline"},{"$ref":"#/components/parameters/ResultInternational"},{"$ref":"#/components/parameters/ResultPlaceLte"},{"description":"Sort profile. Rejected as an override once a traversal has begun.","in":"query","name":"sort","schema":{"default":"date_desc","enum":["date_desc","id"],"type":"string"}},{"$ref":"#/components/parameters/ResultPageSize"},{"$ref":"#/components/parameters/PageToken"},{"$ref":"#/components/parameters/FreshnessOverride"},{"$ref":"#/components/parameters/VersionHeader"},{"$ref":"#/components/parameters/IdempotencyKey"}],"responses":{"200":{"$ref":"#/components/responses/ResolvedResultPageSuccess"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/InvalidApiKey"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/EndpointNotEntitled"},"404":{"$ref":"#/components/responses/NotFound"},"406":{"$ref":"#/components/responses/NotAcceptable"},"409":{"$ref":"#/components/responses/IdempotencyConflict"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimitExceeded"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/DependencyError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"},"504":{"$ref":"#/components/responses/DependencyTimeout"}},"summary":"List results for a horse's offspring","tags":["results"]}},"/v1/horses/{horse_id}/pedigree/black-type":{"get":{"description":"Returns the canonical subject, a sire/dam tree to great-grandparents and up to four dam families with three offspring generations. Missing parents are null. At most 500 full dam-line horse occurrences are returned; dam_line_truncated is true when horses were omitted. No depth or exclusion query parameters are accepted. Relatives use the black-type selection, with sport information and up to three ranked results. Black type means jumping at 1.45 m, CDI3* dressage, or eventing level 3 or higher. No breeder or owner is included. The subject.id is the authoritative canonical ID. Hippomundo-Resolved-From reports a superseded requested ID. Each successful response is charged at this operation's current price, which your OpenAPI document (`GET /v1/openapi.json`) and your portal API reference show. Send Idempotency-Key to make a retry safe. Errors are never charged.","operationId":"readBlackTypePedigree","parameters":[{"description":"Public horse ID; superseded IDs are resolved.","in":"path","name":"horse_id","required":true,"schema":{"format":"int64","minimum":1,"type":"integer"}},{"$ref":"#/components/parameters/FreshnessOverride"},{"$ref":"#/components/parameters/VersionHeader"},{"$ref":"#/components/parameters/IdempotencyKey"}],"responses":{"200":{"content":{"application/json":{"example":{"dam_line":[{"horse":{"approved_for":[],"birth_year":2006,"colour":"bay","id":900011,"name":"SYNTHETIC DAM","performance":{"best_results":[{"awarded_prize_money_eur_cents":450000,"class":{"id":900220,"name":"Synthetic Class"},"competition":{"id":900210,"name":"Synthetic Show"},"date":"2026-06-10","discipline":"jumping","edition":{"id":900211,"name":"Synthetic Edition"},"height_metres":1.55,"international":true,"place":2},{"awarded_prize_money_eur_cents":100000,"class":{"id":900221,"name":"Synthetic Lower Class"},"competition":{"id":900210,"name":"Synthetic Show"},"date":"2026-06-09","discipline":"jumping","edition":{"id":900211,"name":"Synthetic Edition"},"height_metres":1.45,"international":true,"place":1},{"awarded_prize_money_eur_cents":100000,"class":{"id":900222,"name":"Synthetic Lowest Class"},"competition":{"id":900210,"name":"Synthetic Show"},"date":"2026-06-08","discipline":"jumping","edition":{"id":900211,"name":"Synthetic Edition"},"height_metres":1.4,"international":true,"place":1}],"best_riders":{"dressage":null,"eventing":null,"jumping":{"id":900101,"name":"Synthetic Rider","nationality_iso_code":"IE"}},"full_sisters":[],"jumping_record":{"highest_placings":{"count":1,"height_metres":1.55},"highest_wins":{"count":1,"height_metres":1.45},"second_highest_placings":{"count":1,"height_metres":1.45},"second_highest_wins":{"count":1,"height_metres":1.4}},"offspring_summary":{"black_type_offspring":1,"offspring":1,"sport_offspring":1}},"sex":"mare","sire_name":"SYNTHETIC GRANDSIRE","sport":{"black_type":true,"capitals":false,"levels":{"idr_level":null,"iev_level":null,"max_isj_level":1.55,"min_isj_level":1.4,"ndr_level":null,"nev_level":null,"nsj_level":null},"rating":74},"studbook":{"abbreviation":"SYN","id":900500}},"offspring":[{"approved_for":[],"birth_year":2014,"colour":"bay","id":900001,"is_subject":true,"name":"SYNTHETIC NOVA","offspring":[],"performance":{"best_results":[{"awarded_prize_money_eur_cents":450000,"class":{"id":900220,"name":"Synthetic Class"},"competition":{"id":900210,"name":"Synthetic Show"},"date":"2026-06-10","discipline":"jumping","edition":{"id":900211,"name":"Synthetic Edition"},"height_metres":1.55,"international":true,"place":2}],"best_riders":{"dressage":null,"eventing":null,"jumping":{"id":900101,"name":"Synthetic Rider","nationality_iso_code":"IE"}},"jumping_record":{"highest_placings":{"count":1,"height_metres":1.55},"highest_wins":null,"second_highest_placings":null,"second_highest_wins":null}},"repeated_dam":false,"sex":"mare","sire_name":"SYNTHETIC SIRE","sport":{"black_type":true,"capitals":false,"levels":{"idr_level":null,"iev_level":null,"max_isj_level":1.55,"min_isj_level":1.4,"ndr_level":null,"nev_level":null,"nsj_level":null},"rating":74},"studbook":{"abbreviation":"SYN","id":900500}}],"position":1}],"dam_line_truncated":false,"sire_best_offspring":[{"approved_for":[],"birth_year":2014,"colour":"bay","id":900040,"name":"SYNTHETIC SIRE OFFSPRING","performance":{"best_results":[{"awarded_prize_money_eur_cents":450000,"class":{"id":900220,"name":"Synthetic Class"},"competition":{"id":900210,"name":"Synthetic Show"},"date":"2026-06-10","discipline":"jumping","edition":{"id":900211,"name":"Synthetic Edition"},"height_metres":1.55,"international":true,"place":2}],"best_riders":{"dressage":null,"eventing":null,"jumping":{"id":900101,"name":"Synthetic Rider","nationality_iso_code":"IE"}},"jumping_record":{"highest_placings":{"count":1,"height_metres":1.55},"highest_wins":null,"second_highest_placings":null,"second_highest_wins":null}},"sex":"mare","sport":{"black_type":true,"capitals":false,"levels":{"idr_level":null,"iev_level":null,"max_isj_level":1.55,"min_isj_level":1.4,"ndr_level":null,"nev_level":null,"nsj_level":null},"rating":74},"studbook":{"abbreviation":"SYN","id":900500}}],"subject":{"approved_for":[],"birth_year":2014,"colour":"bay","id":900001,"name":"SYNTHETIC NOVA","sex":"mare","sport":{"black_type":true,"capitals":false,"levels":{"idr_level":null,"iev_level":null,"max_isj_level":1.55,"min_isj_level":1.4,"ndr_level":null,"nev_level":null,"nsj_level":null},"rating":74},"studbook":{"abbreviation":"SYN","id":900500}},"tree":{"dam":{"approved_for":[],"birth_year":2006,"colour":"bay","dam":null,"id":900011,"name":"SYNTHETIC DAM","sex":"mare","sire":null,"sport":{"black_type":true,"capitals":false,"levels":{"idr_level":null,"iev_level":null,"max_isj_level":1.55,"min_isj_level":1.4,"ndr_level":null,"nev_level":null,"nsj_level":null},"rating":74},"studbook":{"abbreviation":"SYN","id":900500}},"sire":{"approved_for":[],"birth_year":2004,"colour":"bay","dam":null,"id":900010,"name":"SYNTHETIC SIRE","sex":"stallion","sire":null,"sport":{"black_type":true,"capitals":false,"levels":{"idr_level":null,"iev_level":null,"max_isj_level":1.55,"min_isj_level":1.4,"ndr_level":null,"nev_level":null,"nsj_level":null},"rating":74},"studbook":{"abbreviation":"SYN","id":900500}}}},"schema":{"$ref":"#/components/schemas/BlackTypePedigree"}}},"description":"The requested pedigree for the canonical horse.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlPrivateNoStore"},"Hippomundo-Charged-Milli-Credits":{"$ref":"#/components/headers/HippomundoChargedMilliCredits"},"Hippomundo-Data-Generation":{"$ref":"#/components/headers/HippomundoDataGeneration"},"Hippomundo-Request-ID":{"$ref":"#/components/headers/HippomundoRequestId"},"Hippomundo-Resolved-From":{"$ref":"#/components/headers/HippomundoResolvedFrom"},"Idempotent-Replayed":{"$ref":"#/components/headers/IdempotentReplayed"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/InvalidApiKey"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/EndpointNotEntitled"},"404":{"$ref":"#/components/responses/NotFound"},"406":{"$ref":"#/components/responses/NotAcceptable"},"409":{"$ref":"#/components/responses/IdempotencyConflict"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimitExceeded"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/DependencyError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"},"504":{"$ref":"#/components/responses/DependencyTimeout"}},"summary":"Get a black-type horse pedigree","tags":["pedigree"]}},"/v1/horses/{horse_id}/pedigree/breeding":{"get":{"description":"Returns the canonical subject, a sire/dam tree to great-grandparents and up to four dam families with three offspring generations. Missing parents are null. At most 500 full dam-line horse occurrences are returned; dam_line_truncated is true when horses were omitted. No depth or exclusion query parameters are accepted. Descriptive fields only. Only the subject may include consenting breeder or owner names and country codes. When parties are supplied, cached copies have a fixed non-sliding expiry of at most seven days; live requests do not extend it. The subject.id is the authoritative canonical ID. Hippomundo-Resolved-From reports a superseded requested ID. Each successful response is charged at this operation's current price, which your OpenAPI document (`GET /v1/openapi.json`) and your portal API reference show. Send Idempotency-Key to make a retry safe. Errors are never charged.","operationId":"readBreedingPedigree","parameters":[{"description":"Public horse ID; superseded IDs are resolved.","in":"path","name":"horse_id","required":true,"schema":{"format":"int64","minimum":1,"type":"integer"}},{"$ref":"#/components/parameters/FreshnessOverride"},{"$ref":"#/components/parameters/VersionHeader"},{"$ref":"#/components/parameters/IdempotencyKey"}],"responses":{"200":{"content":{"application/json":{"example":{"dam_line":[{"horse":{"approved_for":[],"birth_year":2006,"colour":"bay","id":900011,"name":"SYNTHETIC DAM","sex":"mare","sire_name":"SYNTHETIC GRANDSIRE","studbook":{"abbreviation":"SYN","id":900500}},"offspring":[{"approved_for":[],"birth_year":2014,"colour":"bay","id":900001,"is_subject":true,"name":"SYNTHETIC NOVA","offspring":[],"repeated_dam":false,"sex":"mare","sire_name":"SYNTHETIC SIRE","studbook":{"abbreviation":"SYN","id":900500}}],"position":1}],"dam_line_truncated":false,"subject":{"approved_for":[],"birth_year":2014,"colour":"bay","id":900001,"name":"SYNTHETIC NOVA","sex":"mare","studbook":{"abbreviation":"SYN","id":900500}},"tree":{"dam":{"approved_for":[],"birth_year":2006,"colour":"bay","dam":null,"id":900011,"name":"SYNTHETIC DAM","sex":"mare","sire":null,"studbook":{"abbreviation":"SYN","id":900500}},"sire":{"approved_for":[],"birth_year":2004,"colour":"bay","dam":null,"id":900010,"name":"SYNTHETIC SIRE","sex":"stallion","sire":null,"studbook":{"abbreviation":"SYN","id":900500}}}},"schema":{"$ref":"#/components/schemas/BreedingPedigree"}}},"description":"The requested pedigree for the canonical horse.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlPrivateNoStore"},"Hippomundo-Charged-Milli-Credits":{"$ref":"#/components/headers/HippomundoChargedMilliCredits"},"Hippomundo-Data-Generation":{"$ref":"#/components/headers/HippomundoDataGeneration"},"Hippomundo-Request-ID":{"$ref":"#/components/headers/HippomundoRequestId"},"Hippomundo-Resolved-From":{"$ref":"#/components/headers/HippomundoResolvedFrom"},"Idempotent-Replayed":{"$ref":"#/components/headers/IdempotentReplayed"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/InvalidApiKey"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/EndpointNotEntitled"},"404":{"$ref":"#/components/responses/NotFound"},"406":{"$ref":"#/components/responses/NotAcceptable"},"409":{"$ref":"#/components/responses/IdempotencyConflict"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimitExceeded"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/DependencyError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"},"504":{"$ref":"#/components/responses/DependencyTimeout"}},"summary":"Get a breeding horse pedigree","tags":["pedigree"]}},"/v1/horses/{horse_id}/pedigree/performance":{"get":{"description":"Returns the canonical subject, a sire/dam tree to great-grandparents and up to four dam families with three offspring generations. Missing parents are null. At most 500 full dam-line horse occurrences are returned; dam_line_truncated is true when horses were omitted. No depth or exclusion query parameters are accepted. Relatives carry current raw sport information, up to five ranked results and aggregate international prize money in integer EUR cents. No breeder or owner is included. The subject.id is the authoritative canonical ID. Hippomundo-Resolved-From reports a superseded requested ID. Each successful response is charged at this operation's current price, which your OpenAPI document (`GET /v1/openapi.json`) and your portal API reference show. Send Idempotency-Key to make a retry safe. Errors are never charged.","operationId":"readPerformancePedigree","parameters":[{"description":"Public horse ID; superseded IDs are resolved.","in":"path","name":"horse_id","required":true,"schema":{"format":"int64","minimum":1,"type":"integer"}},{"$ref":"#/components/parameters/FreshnessOverride"},{"$ref":"#/components/parameters/VersionHeader"},{"$ref":"#/components/parameters/IdempotencyKey"}],"responses":{"200":{"content":{"application/json":{"example":{"dam_line":[{"horse":{"approved_for":[],"birth_year":2006,"colour":"bay","id":900011,"name":"SYNTHETIC DAM","performance":{"best_results":[{"awarded_prize_money_eur_cents":450000,"class":{"id":900220,"name":"Synthetic Class"},"competition":{"id":900210,"name":"Synthetic Show"},"date":"2026-06-10","discipline":"jumping","edition":{"id":900211,"name":"Synthetic Edition"},"height_metres":1.55,"international":true,"place":2},{"awarded_prize_money_eur_cents":100000,"class":{"id":900221,"name":"Synthetic Lower Class"},"competition":{"id":900210,"name":"Synthetic Show"},"date":"2026-06-09","discipline":"jumping","edition":{"id":900211,"name":"Synthetic Edition"},"height_metres":1.45,"international":true,"place":1},{"awarded_prize_money_eur_cents":100000,"class":{"id":900222,"name":"Synthetic Lowest Class"},"competition":{"id":900210,"name":"Synthetic Show"},"date":"2026-06-08","discipline":"jumping","edition":{"id":900211,"name":"Synthetic Edition"},"height_metres":1.4,"international":true,"place":1}],"best_riders":{"dressage":null,"eventing":null,"jumping":{"id":900101,"name":"Synthetic Rider","nationality_iso_code":"IE"}},"full_sisters":[],"international_prize_money_eur_cents":650000,"jumping_record":{"highest_placings":{"count":1,"height_metres":1.55},"highest_wins":{"count":1,"height_metres":1.45},"second_highest_placings":{"count":1,"height_metres":1.45},"second_highest_wins":{"count":1,"height_metres":1.4}},"offspring_summary":{"black_type_offspring":1,"offspring":1,"sport_offspring":1}},"sex":"mare","sire_name":"SYNTHETIC GRANDSIRE","sport":{"black_type":true,"capitals":false,"levels":{"idr_level":null,"iev_level":null,"max_isj_level":1.55,"min_isj_level":1.4,"ndr_level":null,"nev_level":null,"nsj_level":null},"rating":74},"studbook":{"abbreviation":"SYN","id":900500}},"offspring":[{"approved_for":[],"birth_year":2014,"colour":"bay","id":900001,"is_subject":true,"name":"SYNTHETIC NOVA","offspring":[],"performance":{"best_results":[{"awarded_prize_money_eur_cents":450000,"class":{"id":900220,"name":"Synthetic Class"},"competition":{"id":900210,"name":"Synthetic Show"},"date":"2026-06-10","discipline":"jumping","edition":{"id":900211,"name":"Synthetic Edition"},"height_metres":1.55,"international":true,"place":2}],"best_riders":{"dressage":null,"eventing":null,"jumping":{"id":900101,"name":"Synthetic Rider","nationality_iso_code":"IE"}},"international_prize_money_eur_cents":450000,"jumping_record":{"highest_placings":{"count":1,"height_metres":1.55},"highest_wins":null,"second_highest_placings":null,"second_highest_wins":null}},"repeated_dam":false,"sex":"mare","sire_name":"SYNTHETIC SIRE","sport":{"black_type":true,"capitals":false,"levels":{"idr_level":null,"iev_level":null,"max_isj_level":1.55,"min_isj_level":1.4,"ndr_level":null,"nev_level":null,"nsj_level":null},"rating":74},"studbook":{"abbreviation":"SYN","id":900500}}],"position":1}],"dam_line_truncated":false,"sire_best_offspring":[{"approved_for":[],"birth_year":2014,"colour":"bay","id":900040,"name":"SYNTHETIC SIRE OFFSPRING","performance":{"best_results":[{"awarded_prize_money_eur_cents":450000,"class":{"id":900220,"name":"Synthetic Class"},"competition":{"id":900210,"name":"Synthetic Show"},"date":"2026-06-10","discipline":"jumping","edition":{"id":900211,"name":"Synthetic Edition"},"height_metres":1.55,"international":true,"place":2}],"best_riders":{"dressage":null,"eventing":null,"jumping":{"id":900101,"name":"Synthetic Rider","nationality_iso_code":"IE"}},"international_prize_money_eur_cents":450000,"jumping_record":{"highest_placings":{"count":1,"height_metres":1.55},"highest_wins":null,"second_highest_placings":null,"second_highest_wins":null}},"sex":"mare","sport":{"black_type":true,"capitals":false,"levels":{"idr_level":null,"iev_level":null,"max_isj_level":1.55,"min_isj_level":1.4,"ndr_level":null,"nev_level":null,"nsj_level":null},"rating":74},"studbook":{"abbreviation":"SYN","id":900500}}],"subject":{"approved_for":[],"birth_year":2014,"colour":"bay","id":900001,"name":"SYNTHETIC NOVA","sex":"mare","sport":{"black_type":true,"capitals":false,"levels":{"idr_level":null,"iev_level":null,"max_isj_level":1.55,"min_isj_level":1.4,"ndr_level":null,"nev_level":null,"nsj_level":null},"rating":74},"studbook":{"abbreviation":"SYN","id":900500}},"tree":{"dam":{"approved_for":[],"birth_year":2006,"colour":"bay","dam":null,"id":900011,"name":"SYNTHETIC DAM","sex":"mare","sire":null,"sport":{"black_type":true,"capitals":false,"levels":{"idr_level":null,"iev_level":null,"max_isj_level":1.55,"min_isj_level":1.4,"ndr_level":null,"nev_level":null,"nsj_level":null},"rating":74},"studbook":{"abbreviation":"SYN","id":900500}},"sire":{"approved_for":[],"birth_year":2004,"colour":"bay","dam":null,"id":900010,"name":"SYNTHETIC SIRE","sex":"stallion","sire":null,"sport":{"black_type":true,"capitals":false,"levels":{"idr_level":null,"iev_level":null,"max_isj_level":1.55,"min_isj_level":1.4,"ndr_level":null,"nev_level":null,"nsj_level":null},"rating":74},"studbook":{"abbreviation":"SYN","id":900500}}}},"schema":{"$ref":"#/components/schemas/PerformancePedigree"}}},"description":"The requested pedigree for the canonical horse.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlPrivateNoStore"},"Hippomundo-Charged-Milli-Credits":{"$ref":"#/components/headers/HippomundoChargedMilliCredits"},"Hippomundo-Data-Generation":{"$ref":"#/components/headers/HippomundoDataGeneration"},"Hippomundo-Request-ID":{"$ref":"#/components/headers/HippomundoRequestId"},"Hippomundo-Resolved-From":{"$ref":"#/components/headers/HippomundoResolvedFrom"},"Idempotent-Replayed":{"$ref":"#/components/headers/IdempotentReplayed"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/InvalidApiKey"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/EndpointNotEntitled"},"404":{"$ref":"#/components/responses/NotFound"},"406":{"$ref":"#/components/responses/NotAcceptable"},"409":{"$ref":"#/components/responses/IdempotencyConflict"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimitExceeded"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/DependencyError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"},"504":{"$ref":"#/components/responses/DependencyTimeout"}},"summary":"Get a performance horse pedigree","tags":["pedigree"]}},"/v1/horses/{horse_id}/pedigree/sport":{"get":{"description":"Returns the canonical subject, a sire/dam tree to great-grandparents and up to four dam families with three offspring generations. Missing parents are null. At most 500 full dam-line horse occurrences are returned; dam_line_truncated is true when horses were omitted. No depth or exclusion query parameters are accepted. Sport-selected relatives carry current raw sport information and ranked result summaries. No breeder or owner is included. The subject.id is the authoritative canonical ID. Hippomundo-Resolved-From reports a superseded requested ID. Each successful response is charged at this operation's current price, which your OpenAPI document (`GET /v1/openapi.json`) and your portal API reference show. Send Idempotency-Key to make a retry safe. Errors are never charged.","operationId":"readSportPedigree","parameters":[{"description":"Public horse ID; superseded IDs are resolved.","in":"path","name":"horse_id","required":true,"schema":{"format":"int64","minimum":1,"type":"integer"}},{"$ref":"#/components/parameters/FreshnessOverride"},{"$ref":"#/components/parameters/VersionHeader"},{"$ref":"#/components/parameters/IdempotencyKey"}],"responses":{"200":{"content":{"application/json":{"example":{"dam_line":[{"horse":{"approved_for":[],"birth_year":2006,"colour":"bay","id":900011,"name":"SYNTHETIC DAM","performance":{"best_results":[{"awarded_prize_money_eur_cents":450000,"class":{"id":900220,"name":"Synthetic Class"},"competition":{"id":900210,"name":"Synthetic Show"},"date":"2026-06-10","discipline":"jumping","edition":{"id":900211,"name":"Synthetic Edition"},"height_metres":1.55,"international":true,"place":2},{"awarded_prize_money_eur_cents":100000,"class":{"id":900221,"name":"Synthetic Lower Class"},"competition":{"id":900210,"name":"Synthetic Show"},"date":"2026-06-09","discipline":"jumping","edition":{"id":900211,"name":"Synthetic Edition"},"height_metres":1.45,"international":true,"place":1},{"awarded_prize_money_eur_cents":100000,"class":{"id":900222,"name":"Synthetic Lowest Class"},"competition":{"id":900210,"name":"Synthetic Show"},"date":"2026-06-08","discipline":"jumping","edition":{"id":900211,"name":"Synthetic Edition"},"height_metres":1.4,"international":true,"place":1}],"best_riders":{"dressage":null,"eventing":null,"jumping":{"id":900101,"name":"Synthetic Rider","nationality_iso_code":"IE"}},"full_sisters":[],"jumping_record":{"highest_placings":{"count":1,"height_metres":1.55},"highest_wins":{"count":1,"height_metres":1.45},"second_highest_placings":{"count":1,"height_metres":1.45},"second_highest_wins":{"count":1,"height_metres":1.4}},"offspring_summary":{"black_type_offspring":1,"offspring":1,"sport_offspring":1}},"sex":"mare","sire_name":"SYNTHETIC GRANDSIRE","sport":{"black_type":true,"capitals":false,"levels":{"idr_level":null,"iev_level":null,"max_isj_level":1.55,"min_isj_level":1.4,"ndr_level":null,"nev_level":null,"nsj_level":null},"rating":74},"studbook":{"abbreviation":"SYN","id":900500}},"offspring":[{"approved_for":[],"birth_year":2014,"colour":"bay","id":900001,"is_subject":true,"name":"SYNTHETIC NOVA","offspring":[],"performance":{"best_results":[{"awarded_prize_money_eur_cents":450000,"class":{"id":900220,"name":"Synthetic Class"},"competition":{"id":900210,"name":"Synthetic Show"},"date":"2026-06-10","discipline":"jumping","edition":{"id":900211,"name":"Synthetic Edition"},"height_metres":1.55,"international":true,"place":2}],"best_riders":{"dressage":null,"eventing":null,"jumping":{"id":900101,"name":"Synthetic Rider","nationality_iso_code":"IE"}},"jumping_record":{"highest_placings":{"count":1,"height_metres":1.55},"highest_wins":null,"second_highest_placings":null,"second_highest_wins":null}},"repeated_dam":false,"sex":"mare","sire_name":"SYNTHETIC SIRE","sport":{"black_type":true,"capitals":false,"levels":{"idr_level":null,"iev_level":null,"max_isj_level":1.55,"min_isj_level":1.4,"ndr_level":null,"nev_level":null,"nsj_level":null},"rating":74},"studbook":{"abbreviation":"SYN","id":900500}}],"position":1}],"dam_line_truncated":false,"sire_best_offspring":[{"approved_for":[],"birth_year":2014,"colour":"bay","id":900040,"name":"SYNTHETIC SIRE OFFSPRING","performance":{"best_results":[{"awarded_prize_money_eur_cents":450000,"class":{"id":900220,"name":"Synthetic Class"},"competition":{"id":900210,"name":"Synthetic Show"},"date":"2026-06-10","discipline":"jumping","edition":{"id":900211,"name":"Synthetic Edition"},"height_metres":1.55,"international":true,"place":2}],"best_riders":{"dressage":null,"eventing":null,"jumping":{"id":900101,"name":"Synthetic Rider","nationality_iso_code":"IE"}},"jumping_record":{"highest_placings":{"count":1,"height_metres":1.55},"highest_wins":null,"second_highest_placings":null,"second_highest_wins":null}},"sex":"mare","sport":{"black_type":true,"capitals":false,"levels":{"idr_level":null,"iev_level":null,"max_isj_level":1.55,"min_isj_level":1.4,"ndr_level":null,"nev_level":null,"nsj_level":null},"rating":74},"studbook":{"abbreviation":"SYN","id":900500}}],"subject":{"approved_for":[],"birth_year":2014,"colour":"bay","id":900001,"name":"SYNTHETIC NOVA","sex":"mare","sport":{"black_type":true,"capitals":false,"levels":{"idr_level":null,"iev_level":null,"max_isj_level":1.55,"min_isj_level":1.4,"ndr_level":null,"nev_level":null,"nsj_level":null},"rating":74},"studbook":{"abbreviation":"SYN","id":900500}},"tree":{"dam":{"approved_for":[],"birth_year":2006,"colour":"bay","dam":null,"id":900011,"name":"SYNTHETIC DAM","sex":"mare","sire":null,"sport":{"black_type":true,"capitals":false,"levels":{"idr_level":null,"iev_level":null,"max_isj_level":1.55,"min_isj_level":1.4,"ndr_level":null,"nev_level":null,"nsj_level":null},"rating":74},"studbook":{"abbreviation":"SYN","id":900500}},"sire":{"approved_for":[],"birth_year":2004,"colour":"bay","dam":null,"id":900010,"name":"SYNTHETIC SIRE","sex":"stallion","sire":null,"sport":{"black_type":true,"capitals":false,"levels":{"idr_level":null,"iev_level":null,"max_isj_level":1.55,"min_isj_level":1.4,"ndr_level":null,"nev_level":null,"nsj_level":null},"rating":74},"studbook":{"abbreviation":"SYN","id":900500}}}},"schema":{"$ref":"#/components/schemas/SportPedigree"}}},"description":"The requested pedigree for the canonical horse.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlPrivateNoStore"},"Hippomundo-Charged-Milli-Credits":{"$ref":"#/components/headers/HippomundoChargedMilliCredits"},"Hippomundo-Data-Generation":{"$ref":"#/components/headers/HippomundoDataGeneration"},"Hippomundo-Request-ID":{"$ref":"#/components/headers/HippomundoRequestId"},"Hippomundo-Resolved-From":{"$ref":"#/components/headers/HippomundoResolvedFrom"},"Idempotent-Replayed":{"$ref":"#/components/headers/IdempotentReplayed"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/InvalidApiKey"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/EndpointNotEntitled"},"404":{"$ref":"#/components/responses/NotFound"},"406":{"$ref":"#/components/responses/NotAcceptable"},"409":{"$ref":"#/components/responses/IdempotencyConflict"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimitExceeded"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/DependencyError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"},"504":{"$ref":"#/components/responses/DependencyTimeout"}},"summary":"Get a sport horse pedigree","tags":["pedigree"]}},"/v1/horses/{horse_id}/results":{"get":{"description":"Lists results for one horse. The inclusive date range,\ndiscipline and international filters are optional. The response uses\nthe canonical horse ID after transparent resolution; when that differs\nfrom the requested ID, `Hippomundo-Resolved-From` carries the requested\nvalue.\n\nEach result includes the horse, rider, competition, edition and class. Performance is tagged by discipline and never exposes\nsource score fields. Unknown query parameters are rejected with\n`422 validation_failed`.\n\nThe page size is capped and defaulted at 100. Default sort is\n`date_asc`; every sort is deterministic and ends in result ID. A\nsmaller page size becomes bound to the traversal token, after which\n`page_size` and `sort` overrides are rejected.\n\nEach successful page, including an empty page (`data: []`,\n`total: 0`), is charged at this operation's current price, which your\nOpenAPI document (`GET /v1/openapi.json`) and your portal API\nreference show. Send\n`Idempotency-Key` to make a retry safe. Errors are never charged.\n","operationId":"listHorseResults","parameters":[{"description":"Public horse ID; superseded IDs are resolved.","in":"path","name":"horse_id","required":true,"schema":{"format":"int64","type":"integer"}},{"$ref":"#/components/parameters/ResultDateFrom"},{"$ref":"#/components/parameters/ResultDateTo"},{"$ref":"#/components/parameters/ResultDiscipline"},{"$ref":"#/components/parameters/ResultInternational"},{"description":"Sort profile. Rejected as an override once a traversal has begun.","in":"query","name":"sort","schema":{"default":"date_asc","enum":["date_asc","date_desc","id"],"type":"string"}},{"$ref":"#/components/parameters/ResultPageSize"},{"$ref":"#/components/parameters/PageToken"},{"$ref":"#/components/parameters/FreshnessOverride"},{"$ref":"#/components/parameters/VersionHeader"},{"$ref":"#/components/parameters/IdempotencyKey"}],"responses":{"200":{"$ref":"#/components/responses/ResolvedResultPageSuccess"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/InvalidApiKey"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/EndpointNotEntitled"},"404":{"$ref":"#/components/responses/NotFound"},"406":{"$ref":"#/components/responses/NotAcceptable"},"409":{"$ref":"#/components/responses/IdempotencyConflict"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimitExceeded"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/DependencyError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"},"504":{"$ref":"#/components/responses/DependencyTimeout"}},"summary":"List results for a horse","tags":["results"]}},"/v1/openapi.json":{"get":{"description":"Returns an OpenAPI document containing exactly the operations currently\navailable to the authenticated customer. Unavailable operations are\nabsent rather than marked as disabled, including from any path that\nwould otherwise become empty. Grant changes are reflected without a\ndocumentation deployment. This endpoint is free (0 credits) and\nrate-limited.\n","operationId":"getEntitlementFilteredOpenAPI","parameters":[{"$ref":"#/components/parameters/FreshnessOverride"},{"$ref":"#/components/parameters/VersionHeader"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FilteredOpenAPIDocument"}}},"description":"OpenAPI document filtered to current entitlements.","headers":{"Hippomundo-Request-ID":{"$ref":"#/components/headers/HippomundoRequestId"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/InvalidApiKey"},"403":{"$ref":"#/components/responses/EndpointNotEntitled"},"406":{"$ref":"#/components/responses/NotAcceptable"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimitExceeded"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}},"summary":"Get the entitlement-filtered OpenAPI document","tags":["account"]}},"/v1/riders/{rider_id}/results":{"get":{"description":"Lists results for one rider. The inclusive date range,\ndiscipline and international filters are optional. The response uses\nthe canonical rider ID after transparent resolution; when that differs\nfrom the requested ID, `Hippomundo-Resolved-From` carries the requested\nvalue.\n\nEach result includes the horse, rider, competition, edition and class. Performance is tagged by discipline and never exposes\nsource score fields. Unknown query parameters are rejected with\n`422 validation_failed`.\n\nThe page size is capped and defaulted at 100. Default sort is\n`date_asc`; every sort is deterministic and ends in result ID. A\nsmaller page size becomes bound to the traversal token, after which\n`page_size` and `sort` overrides are rejected.\n\nEach successful page, including an empty page (`data: []`,\n`total: 0`), is charged at this operation's current price, which your\nOpenAPI document (`GET /v1/openapi.json`) and your portal API\nreference show. Send\n`Idempotency-Key` to make a retry safe. Errors are never charged.\n","operationId":"listRiderResults","parameters":[{"description":"Public rider ID; superseded IDs are resolved.","in":"path","name":"rider_id","required":true,"schema":{"format":"int64","type":"integer"}},{"$ref":"#/components/parameters/ResultDateFrom"},{"$ref":"#/components/parameters/ResultDateTo"},{"$ref":"#/components/parameters/ResultDiscipline"},{"$ref":"#/components/parameters/ResultInternational"},{"description":"Sort profile. Rejected as an override once a traversal has begun.","in":"query","name":"sort","schema":{"default":"date_asc","enum":["date_asc","date_desc","id"],"type":"string"}},{"$ref":"#/components/parameters/ResultPageSize"},{"$ref":"#/components/parameters/PageToken"},{"$ref":"#/components/parameters/FreshnessOverride"},{"$ref":"#/components/parameters/VersionHeader"},{"$ref":"#/components/parameters/IdempotencyKey"}],"responses":{"200":{"$ref":"#/components/responses/ResolvedResultPageSuccess"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/InvalidApiKey"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/EndpointNotEntitled"},"404":{"$ref":"#/components/responses/NotFound"},"406":{"$ref":"#/components/responses/NotAcceptable"},"409":{"$ref":"#/components/responses/IdempotencyConflict"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimitExceeded"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/DependencyError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"},"504":{"$ref":"#/components/responses/DependencyTimeout"}},"summary":"List results for a rider","tags":["results"]}},"/v1/search/horses":{"get":{"description":"Searches horses by name, parentage and registration identifiers.\nReturns thin disambiguation results; the Hippomundo `id` is the only\nhorse identifier returned. Each result names its sire and dam without\ntheir IDs; a pedigree returns the parents' IDs. FEI numbers and UELNs\nare accepted as filters but never returned.\n\nName filters match names that start with the text you send, ignoring\ncase: `NORTHW` finds `NORTHWIND VAN HET ELSHOF`, but `ELSHOF` does\nnot. Each name filter needs at least two characters after surrounding\nspaces are removed; a shorter value returns `422 validation_failed`\nwith `out_of_range` and is not charged.\n\nIdentifier matching is never fuzzy or phonetic: `fei` and `ueln`\nmatch the complete identifier exactly; there is no partial match.\nBoth accept letters and digits, ignore case, and ignore spaces,\nhyphens and other ASCII punctuation, so an identifier copied from a\npassport or another system works as written. Other characters, such\nas accented letters or typographic dashes, are rejected.\n\nSupplied `sire_id`/`dam_id` values are transparently resolved to\ncanonical identifiers before matching.\n\nUnknown query parameters are rejected with `422 validation_failed`.\nThe page size is capped and defaulted at 25; a smaller `page_size`\nis allowed and becomes bound to the traversal token, after which\n`page_size` and `sort` overrides are rejected. When `sort` is\nomitted, ordering is `relevance` when a text filter is present and\n`id` otherwise. Use `id` for exhaustive traversal.\n\nEach successful page, including an empty page (`data: []`,\n`total: 0`), is charged at this operation's current price, which your\nOpenAPI document (`GET /v1/openapi.json`) and your portal API\nreference show. Errors are never\ncharged.\n","operationId":"searchHorses","parameters":[{"description":"Horse name to search, covering current and birth name. Matches names that start with this text, ignoring case: `NORTHW` finds `NORTHWIND VAN HET ELSHOF`, but `ELSHOF` does not. At least two characters after trimming.","in":"query","name":"name","schema":{"minLength":2,"type":"string"}},{"description":"Sire name to search. Matches sire names that start with this text, ignoring case, like `name`. At least two characters after trimming.","in":"query","name":"sire_name","schema":{"minLength":2,"type":"string"}},{"description":"Dam name to search. Matches dam names that start with this text, ignoring case, like `name`. At least two characters after trimming.","in":"query","name":"dam_name","schema":{"minLength":2,"type":"string"}},{"description":"Exact public sire (father) horse ID.","in":"query","name":"sire_id","schema":{"format":"int64","type":"integer"}},{"description":"Exact public dam (mother) horse ID.","in":"query","name":"dam_id","schema":{"format":"int64","type":"integer"}},{"description":"FEI number to match exactly; the number is not returned in results. Letters and digits only; case, spaces, hyphens and other ASCII punctuation are ignored, so `104-xy55` matches `104XY55`. Any other character, such as an accented letter or a typographic dash, returns `422 validation_failed` with `invalid_format`. A value that more than 1,000 horses share, such as a placeholder, identifies no horse and returns `422 validation_failed` with `unsupported_value`.","in":"query","name":"fei","schema":{"type":"string"}},{"description":"UELN to match exactly; the UELN is not returned in results. Letters and digits only; case, spaces, hyphens and other ASCII punctuation are ignored, so `056 015 Z55123456` matches `056015Z55123456`. Any other character, such as an accented letter or a typographic dash, returns `422 validation_failed` with `invalid_format`. A value that more than 1,000 horses share identifies no horse and returns `422 validation_failed` with `unsupported_value`.","in":"query","name":"ueln","schema":{"type":"string"}},{"description":"Sort profile. Defaults to `relevance` when a text filter is present, otherwise `id`. Every profile is a deterministic total order ending in `id`. `id` is recommended for exhaustive traversal. Rejected as an override once a traversal has begun.","in":"query","name":"sort","schema":{"enum":["relevance","name","id"],"type":"string"}},{"description":"Page size, capped at 25. Bound to the traversal token; rejected as an override once a traversal has begun.","in":"query","name":"page_size","schema":{"default":25,"maximum":25,"minimum":1,"type":"integer"}},{"$ref":"#/components/parameters/PageToken"},{"$ref":"#/components/parameters/FreshnessOverride"},{"$ref":"#/components/parameters/VersionHeader"},{"$ref":"#/components/parameters/IdempotencyKey"}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"birth_country_iso_code":"BE","birth_year":2013,"dam_name":"WENDELINA","id":104233,"name":"NORTHWIND VAN HET ELSHOF","sex":"mare","sire_name":"EXAMPLE CORNET","studbook":{"abbreviation":"BWP","id":4}},{"birth_country_iso_code":null,"birth_year":null,"dam_name":null,"id":118450,"name":"NORTHWIND B","sex":null,"sire_name":null,"studbook":null}],"has_more":false,"next_page_token":null,"total":2},"schema":{"$ref":"#/components/schemas/HorseSearchPage"}}},"description":"One page of horse search results.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlPrivateNoStore"},"Hippomundo-Charged-Milli-Credits":{"$ref":"#/components/headers/HippomundoChargedMilliCredits"},"Hippomundo-Data-Generation":{"$ref":"#/components/headers/HippomundoDataGeneration"},"Hippomundo-Request-ID":{"$ref":"#/components/headers/HippomundoRequestId"},"Idempotent-Replayed":{"$ref":"#/components/headers/IdempotentReplayed"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/InvalidApiKey"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/EndpointNotEntitled"},"406":{"$ref":"#/components/responses/NotAcceptable"},"409":{"$ref":"#/components/responses/IdempotencyConflict"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimitExceeded"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/DependencyError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"},"504":{"$ref":"#/components/responses/DependencyTimeout"}},"summary":"Search horses","tags":["search"]}},"/v1/search/riders":{"get":{"description":"Searches riders by name and exact nationality. Returns thin\ndisambiguation results: identifier, name and nullable\nnationality. Internal placeholder nationalities serialize as null.\n\nUnknown query parameters are rejected with `422 validation_failed`.\nThe page size is capped and defaulted at 25; a smaller `page_size`\nis allowed and becomes bound to the traversal token, after which\n`page_size` and `sort` overrides are rejected. When `sort` is\nomitted, ordering is `relevance` when a text filter is present and\n`id` otherwise. Use `id` for exhaustive traversal.\n\nThe name filter matches names that start with the text you send,\nfirst name first, ignoring case. It needs at least two characters\nafter surrounding spaces are removed; a shorter value returns\n`422 validation_failed` with `out_of_range` and is not charged.\n\nEach successful page, including an empty page (`data: []`,\n`total: 0`), is charged at this operation's current price, which your\nOpenAPI document (`GET /v1/openapi.json`) and your portal API\nreference show. Errors are never\ncharged.\n","operationId":"searchRiders","parameters":[{"description":"Rider name to search, first name first. Matches names that start with this text, ignoring case: `Emma Jan` finds `Emma Janssens`, but `Janssens` does not. At least two characters after trimming.","in":"query","name":"name","schema":{"minLength":2,"type":"string"}},{"description":"Exact rider nationality, uppercase ISO 3166-1 alpha-2.","in":"query","name":"nationality_iso_code","schema":{"pattern":"^[A-Z]{2}$","type":"string"}},{"description":"Sort profile. Defaults to `relevance` when a text filter is present, otherwise `id`. `id` is recommended for exhaustive traversal. Rejected as an override once a traversal has begun.","in":"query","name":"sort","schema":{"enum":["relevance","name","id"],"type":"string"}},{"description":"Page size, capped at 25. Bound to the traversal token; rejected as an override once a traversal has begun.","in":"query","name":"page_size","schema":{"default":25,"maximum":25,"minimum":1,"type":"integer"}},{"$ref":"#/components/parameters/PageToken"},{"$ref":"#/components/parameters/FreshnessOverride"},{"$ref":"#/components/parameters/VersionHeader"},{"$ref":"#/components/parameters/IdempotencyKey"}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"id":20441,"name":"Emma Janssens","nationality_iso_code":"BE"},{"id":31877,"name":"E. Jansen","nationality_iso_code":null}],"has_more":false,"next_page_token":null,"total":2},"schema":{"$ref":"#/components/schemas/RiderSearchPage"}}},"description":"One page of rider search results.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlPrivateNoStore"},"Hippomundo-Charged-Milli-Credits":{"$ref":"#/components/headers/HippomundoChargedMilliCredits"},"Hippomundo-Data-Generation":{"$ref":"#/components/headers/HippomundoDataGeneration"},"Hippomundo-Request-ID":{"$ref":"#/components/headers/HippomundoRequestId"},"Idempotent-Replayed":{"$ref":"#/components/headers/IdempotentReplayed"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/InvalidApiKey"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/EndpointNotEntitled"},"406":{"$ref":"#/components/responses/NotAcceptable"},"409":{"$ref":"#/components/responses/IdempotencyConflict"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimitExceeded"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/DependencyError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"},"504":{"$ref":"#/components/responses/DependencyTimeout"}},"summary":"Search riders","tags":["search"]}},"/v1/studbooks":{"get":{"description":"Slim discoverable reference list of studbooks, used to\nfind the ID accepted by the studbook results feed. This endpoint is\nfree (0 credits) and rate-limited.\n\n`name` is trimmed, case-insensitive literal contains matching;\n`abbreviation` and `country_iso_code` are exact normalized matches.\nUnknown query parameters are rejected with `422 validation_failed`.\nThe page size is capped and defaulted at 100; a smaller `page_size`\nis allowed and becomes bound to the traversal token, after which\n`page_size` and `sort` overrides are rejected. Default sort is\n`name`; use `id` for exhaustive traversal.\n","operationId":"listStudbooks","parameters":[{"description":"Studbook name, trimmed case-insensitive literal contains.","in":"query","name":"name","schema":{"type":"string"}},{"description":"Exact normalized studbook abbreviation.","in":"query","name":"abbreviation","schema":{"type":"string"}},{"description":"Exact studbook country, uppercase ISO 3166-1 alpha-2.","in":"query","name":"country_iso_code","schema":{"pattern":"^[A-Z]{2}$","type":"string"}},{"description":"Sort profile. `id` is recommended for exhaustive traversal. Rejected as an override once a traversal has begun.","in":"query","name":"sort","schema":{"default":"name","enum":["name","id"],"type":"string"}},{"description":"Page size, capped at 100. Bound to the traversal token; rejected as an override once a traversal has begun.","in":"query","name":"page_size","schema":{"default":100,"maximum":100,"minimum":1,"type":"integer"}},{"$ref":"#/components/parameters/PageToken"},{"$ref":"#/components/parameters/FreshnessOverride"},{"$ref":"#/components/parameters/VersionHeader"}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"abbreviation":"BWP","country_iso_code":"BE","id":4,"name":"Belgisch Warmbloedpaard"},{"abbreviation":"Z","country_iso_code":null,"id":17,"name":"Zangersheide"}],"has_more":false,"next_page_token":null,"total":2},"schema":{"$ref":"#/components/schemas/StudbookPage"}}},"description":"One page of studbooks.","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControlPrivateNoStore"},"Hippomundo-Charged-Milli-Credits":{"$ref":"#/components/headers/HippomundoChargedMilliCredits"},"Hippomundo-Data-Generation":{"$ref":"#/components/headers/HippomundoDataGeneration"},"Hippomundo-Request-ID":{"$ref":"#/components/headers/HippomundoRequestId"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/InvalidApiKey"},"403":{"$ref":"#/components/responses/EndpointNotEntitled"},"406":{"$ref":"#/components/responses/NotAcceptable"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimitExceeded"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/DependencyError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"},"504":{"$ref":"#/components/responses/DependencyTimeout"}},"summary":"List studbooks","tags":["reference"]}},"/v1/studbooks/{studbook_id}/results":{"get":{"description":"Lists results for horses in one studbook during a bounded,\ninclusive date range. `date_from` is required; `date_to`, discipline,\ninternational and maximum placing are optional. `place_lte=3`, for\nexample, includes places one through three and excludes unplaced rows.\nOmitted discipline and international filters include all values.\n\nThe date range may cover at most 30 days, counting both `date_from`\nand `date_to`. Without `date_to`, the range ends today, as a calendar\ndate in Belgian time (Europe/Brussels). A longer range returns\n`422 validation_failed` with `out_of_range` on `date_from`; a\n`date_from` after today without `date_to` returns `conflict` on\n`date_from`.\n\nEach row uses the same result projection as the horse, rider and class\nresult routes. Unknown query parameters are rejected with\n`422 validation_failed`.\n\nThe page size is capped and defaulted at 100. Default sort is\n`date_desc`; every sort is deterministic and ends in result ID. A\nsmaller page size becomes bound to the traversal token, after which\n`page_size` and `sort` overrides are rejected.\n\nEach successful page, including an empty page (`data: []`,\n`total: 0`), is charged at this operation's current price, which your\nOpenAPI document (`GET /v1/openapi.json`) and your portal API\nreference show. Send\n`Idempotency-Key` to make a retry safe. Errors are never charged.\n","operationId":"listStudbookResults","parameters":[{"description":"Public studbook ID.","in":"path","name":"studbook_id","required":true,"schema":{"format":"int64","type":"integer"}},{"$ref":"#/components/parameters/PopulationDateFrom"},{"$ref":"#/components/parameters/PopulationDateTo"},{"$ref":"#/components/parameters/ResultDiscipline"},{"$ref":"#/components/parameters/ResultInternational"},{"$ref":"#/components/parameters/ResultPlaceLte"},{"description":"Sort profile. Rejected as an override once a traversal has begun.","in":"query","name":"sort","schema":{"default":"date_desc","enum":["date_desc","id"],"type":"string"}},{"$ref":"#/components/parameters/ResultPageSize"},{"$ref":"#/components/parameters/PageToken"},{"$ref":"#/components/parameters/FreshnessOverride"},{"$ref":"#/components/parameters/VersionHeader"},{"$ref":"#/components/parameters/IdempotencyKey"}],"responses":{"200":{"$ref":"#/components/responses/ResultPageSuccess"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/InvalidApiKey"},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"$ref":"#/components/responses/EndpointNotEntitled"},"404":{"$ref":"#/components/responses/NotFound"},"406":{"$ref":"#/components/responses/NotAcceptable"},"409":{"$ref":"#/components/responses/IdempotencyConflict"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimitExceeded"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"$ref":"#/components/responses/DependencyError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"},"504":{"$ref":"#/components/responses/DependencyTimeout"}},"summary":"List results for horses in a studbook","tags":["results"]}},"/v1/usage":{"get":{"description":"Returns the authenticated customer's available balance, spend in the\ncurrent UTC calendar month and daily activity for the most recent 30\nUTC calendar dates by endpoint.\nBalance and spend are authoritative financial figures. Recent activity\nis operational reporting that is updated once an hour, so it can lag\nby up to an hour; it never changes a charge. This endpoint is free\n(0 credits) and rate-limited.\n","operationId":"getUsage","parameters":[{"$ref":"#/components/parameters/FreshnessOverride"},{"$ref":"#/components/parameters/VersionHeader"}],"responses":{"200":{"content":{"application/json":{"example":{"balance_milli_credits":187500,"current_period":{"ends_at":"2026-09-01T00:00:00Z","spent_milli_credits":12500,"starts_at":"2026-08-01T00:00:00Z"},"recent_activity":[{"charged_milli_credits":7000,"date":"2026-08-23","denied_requests":1,"endpoint":"searchHorses","successful_requests":7}]},"schema":{"$ref":"#/components/schemas/Usage"}}},"description":"Current balance, period spend and recent activity.","headers":{"Hippomundo-Request-ID":{"$ref":"#/components/headers/HippomundoRequestId"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/InvalidApiKey"},"403":{"$ref":"#/components/responses/EndpointNotEntitled"},"406":{"$ref":"#/components/responses/NotAcceptable"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimitExceeded"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}},"summary":"Get current usage","tags":["account"]}}},"security":[{"ApiKeyAuth":[]}],"servers":[{"description":"Production. The `/v1` prefix on every path carries the API major version.","url":"https://enterprise.hippomundo.com/api"},{"description":"Rate-limited sandbox with synthetic data and production prices, paid with free daily play credits that cannot be bought. The `/v1` prefix on every path carries the API major version.","url":"https://sandbox.enterprise.hippomundo.com/api"}],"tags":[{"description":"Billable searches for horses, riders and competitions. Your OpenAPI document shows each operation's current price; errors are never charged.","name":"search"},{"description":"Free hierarchy endpoints. Editions and classes are reachable only through their parent; the nested paths enforce the hierarchy. Concurrency is achieved by partitioning across the hierarchy, not by fetching pages of one list in parallel.","name":"hierarchy"},{"description":"Free reference data.","name":"reference"},{"description":"Billable competition results. Every successful page uses the same discipline-tagged result shape. Your OpenAPI document shows each operation's current price; errors are never charged.","name":"results"},{"description":"Four billable horse pedigrees share a family structure and return different descriptive and sport information. Your OpenAPI document shows each operation's current price; errors are never charged.","name":"pedigree"},{"description":"Authenticated account usage and developer metadata.","name":"account"}]}