{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/insourcia-io/json-schema/insourcia-io-credits-block-schema.json",
  "title": "CreditsBlock",
  "description": "Solde de l'organisation qui paie l'appel (`GET /me`). Un énoncé\nd'état : ni prix, ni identifiant de portefeuille.\n",
  "x-generated": "2026-11-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/insourcia-io-openapi.yaml#/components/schemas/CreditsBlock",
  "type": "object",
  "properties": {
    "licence": {
      "type": "string",
      "enum": [
        "free",
        "topup",
        "subscription"
      ],
      "description": "`free` : crédits offerts seuls ; `topup` : recharge achetée ; `subscription` : abonnement."
    },
    "tier": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Palier de l'abonnement, null sans abonnement."
    },
    "grant_balance": {
      "type": "number",
      "description": "Reste des crédits offerts du mois."
    },
    "grant_expires_at": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time",
      "description": "Expiration des crédits offerts du mois, null s'il n'en reste pas."
    },
    "purchased_balance": {
      "type": "number",
      "description": "Crédits achetés (recharge ou abonnement) restants."
    },
    "total_balance": {
      "type": "number",
      "description": "Solde disponible, crédits offerts compris."
    },
    "grid_version": {
      "type": "string",
      "description": "Version de la grille de crédits en vigueur."
    },
    "watch": {
      "type": "object",
      "description": "Veille de l'organisation. Abonnement - état de facturation (0,1 crédit par société et par mois). Sans abonnement - companies et over_limit seulement, la veille n'étant pas facturée.",
      "properties": {
        "status": {
          "type": "string",
          "enum": [
            "active",
            "grace",
            "suspended"
          ]
        },
        "companies": {
          "type": "integer",
          "description": "Sociétés distinctes sous veille."
        },
        "over_limit": {
          "type": "integer",
          "description": "Sociétés au-delà du garde-fou technique au dernier passage (ni facturées ni surveillées)."
        },
        "unpaid_companies": {
          "type": "integer"
        },
        "unpaid_credits": {
          "type": "number"
        },
        "grace_ends_at": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "suspended_at": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        }
      }
    }
  }
}