SantéVet · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the SantéVet Reimbursement API

8 actions 8 updates documentation extends openapi/santevet-reimbursement-openapi.yml
Derived by API Evangelist Built from the contracts SantéVet publishes. SantéVet did not publish this file.
View Overlay File View on GitHub Overlay Specification

What the actions change

descriptionx-apievangelist-observed-apiKeyx-apievangelist-authx-apievangelist-error-envelopex-apievangelist-gapsx-apievangelist-server-notex-apievangelist-tlsx-apievangelist-dangling-references

Targets 3

$.info
$.components.securitySchemes
$.servers

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the SantéVet Reimbursement API
  version: 1.0.0
extends: openapi/santevet-reimbursement-openapi.yml
x-generated: '2026-08-17'
x-method: generated
x-source: >-
  Derived from live probes of https://reimbursement.api.santevet.com. The harvested
  specification is never mutated — openapi/_original/santevet-reimbursement-openapi-original.json
  is the verbatim fetch from https://reimbursement.api.santevet.com/api/doc.json.
actions:
- target: $.info
  description: >-
    The document has a real title, version and developer contact — the best-formed of SantéVet's
    three contracts. Adding the description it lacks.
  update:
    description: >-
      SantéVet's partner claims and reimbursement API. Creates and retrieves pet-insurance
      reimbursement claims, lists a client's or an animal's claims, and retrieves the
      third-party-payment (tiers payant) instalment schedule for a coverage — the API behind
      SantéVet's PayVet product, where the insurer settles directly with the veterinary clinic
      instead of reimbursing the owner afterwards. Six operations. Requires partner credentials.
- target: $.components.securitySchemes
  description: >-
    THE MOST IMPORTANT CORRECTION IN THIS OVERLAY. The document declares NO securitySchemes and
    NO security requirement, yet every operation returns 401 "User authentication required"
    anonymously. An agent reading this specification would conclude the API is open. Recording
    the observed scheme, matching the sibling toolkit API's declared apiKey scheme.
  update:
    x-apievangelist-observed-apiKey:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        OBSERVED, NOT DECLARED. Partner API key in the Authorization header, consistent with the
        apiKey scheme the SantéVet Toolkit API declares. Verified by
        GET https://reimbursement.api.santevet.com/api/v1/reimbursements/1 returning HTTP 401
        with body {"message":"User authentication required"}.
- target: $.info
  description: Recording the undeclared authentication and error contract at document level.
  update:
    x-apievangelist-auth:
      declared_in_spec: false
      observed: true
      scheme: apiKey
      location: header
      parameter: Authorization
      observed_status: 401
      observed_body: '{"message":"User authentication required"}'
      issuance: >-
        Not self-serve. Partner onboarding via https://www.santevet.com/partenaire-btob
    x-apievangelist-error-envelope:
      media_type: application/json
      shape:
        message: human-readable explanation
      note: >-
        A flat {"message"} envelope — not RFC 7807, and different from the problem+json / Hydra
        envelopes the sibling toolkit API returns. No error code, no type URI, no stable
        identifier.
- target: $.info
  description: >-
    Recording the operations that declare no failure response at all, so the gap is
    machine-visible.
  update:
    x-apievangelist-gaps:
      declared_401_responses: 0
      declared_403_responses: 0
      declared_429_responses: 0
      operations_with_no_4xx:
      - createReimbursement
      - updateReimbursement
      - findSchedule
      rate_limit_headers: none
      request_id_header: none
      idempotency: none
      pagination: none
      note: >-
        createReimbursement is a multipart/form-data write with no declared failure mode and no
        idempotency key — a retried claim submission has no published deduplication contract.
- target: $.servers
  description: >-
    The servers[] block is correct and complete and is NOT altered. Recording only the
    observation about the third entry.
  update:
    x-apievangelist-server-note: >-
      The Development server https://{user}.reimbursement-api.srv-dev-web-2021.santevet.lan
      enumerates four developer trigrams (xch, gle, mau, tpe) in a public document. Unreachable
      from outside SantéVet's network and harmless to callers, but it is internal topology and
      staff-adjacent initials published in a public contract — worth raising with the provider.
    x-apievangelist-tls:
      production_host: reimbursement.api.santevet.com
      tls_version: TLSv1.3
      hsts: false
      note: >-
        No HSTS header on the API host, unlike www.santevet.com which sets
        max-age=63072000. See security/santevet-domain-security.yml.
- target: $.info
  description: >-
    Recording the dangling identifier problem — the single biggest usability gap in this contract.
  update:
    x-apievangelist-dangling-references:
      note: >-
        These fields appear on reimbursement DTOs but resolve to no operation in any published
        SantéVet contract, so an agent handed a reimbursement cannot follow any of them.
      fields:
      - contract_id
      - clinic_id
      - veterinary_id
      - sinister_notification_id
      - correspondence_id
      - origin_id
      partially_resolvable:
      - field: coverage_id
        via: GET /api/v1/third-party-payments/{coverageId}/schedule
      - field: animal_id
        via: GET /api/v1/animals/{animalId}/reimbursements
      probable_cross_api_binding:
      - field: origin_id
        to: 'SantéVet Toolkit API OrigineCommerciale (/commercial-origins/{id})'
        confidence: medium
      detail: data-model/santevet-data-model.yml
- target: $.info
  description: >-
    Recording that the three near-duplicate reimbursement schemas are not distinguishable by name.
  update:
    x-apievangelist-schema-note:
      duplicates:
      - schema: ApiReimbursement
        properties: 25
        returned_by: findReimbursement
      - schema: ApiReimbursement2
        properties: 18
        returned_by: findAllReimbursementsByAnimal
      - schema: ApiReimbursement3
        properties: 19
        returned_by: findAllReimbursementsByClient
      note: >-
        Auto-numbered suffixes carry no meaning. The same applies to ApiClinic / ApiClinic2 /
        ApiClinic3. Naming them for their serialization context would make the contract
        self-explanatory.
- target: $.info
  description: API Evangelist profile cross-references.
  update:
    x-apievangelist-artifacts:
      authentication: authentication/santevet-authentication.yml
      conventions: conventions/santevet-conventions.yml
      errors: errors/santevet-problem-types.yml
      data_model: data-model/santevet-data-model.yml
      lifecycle: lifecycle/santevet-lifecycle.yml
      conformance: conformance/santevet-conformance.yml
      rate_limits: rate-limits/santevet-rate-limits.yml
      sandbox: sandbox/santevet-sandbox.yml
      skills: skills/_index.yml

Work with this as data

Every overlay here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for openapi overlays

4 MCP tools reach this
  • find_overlaysBrowse and filter every overlay in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/santevet-reimbursement-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.