{
  "openapi": "3.1.0",
  "info": {
    "title": "Gridex Website Integration API",
    "version": "2026-10-12.1",
    "description": "Production API for electricity retail websites and backend integrations. Gridex owns published offers, authoritative pricing and quotes, legal document versions, customer and contract lifecycle state, and downstream processing. Integrations provide verified customer input and use public references only."
  },
  "servers": [
    {
      "url": "https://app.gridex.se"
    }
  ],
  "security": [
    {
      "bearerAuth": []
    },
    {
      "legacyApiKeyAuth": []
    }
  ],
  "tags": [
    {
      "name": "Integration context"
    },
    {
      "name": "Website contracts"
    },
    {
      "name": "API contracts"
    },
    {
      "name": "Quotes"
    },
    {
      "name": "Customer applications"
    },
    {
      "name": "Webhooks"
    },
    {
      "name": "Energy area"
    },
    {
      "name": "Switch status"
    },
    {
      "name": "Market price"
    }
  ],
  "paths": {
    "/api/v1/integration/context": {
      "get": {
        "tags": [
          "Integration context"
        ],
        "summary": "Verify the authenticated API client and retrieve its public integration context",
        "description": "Verify the authenticated API client and retrieve its public integration context.",
        "responses": {
          "200": {
            "description": "organization context",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/IntegrationContext"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/IntegrationContext"
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Scope missing or organization access denied",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "410": {
            "$ref": "#/components/responses/OrganizationGone"
          },
          "423": {
            "$ref": "#/components/responses/OrganizationPaused"
          },
          "503": {
            "description": "The required service or configured credential response profile is unavailable. Profile configuration errors require an operator correction.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [
              "integration_context.read"
            ]
          },
          {
            "legacyApiKeyAuth": []
          }
        ],
        "x-required-scopes": [
          "integration_context.read"
        ],
        "operationId": "getApiV1IntegrationContext",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "no-store",
        "x-public-id-policy": "opaque-references"
      }
    },
    "/api/v1/website/public-contracts": {
      "get": {
        "tags": [
          "Website contracts"
        ],
        "summary": "Retrieve published electricity offers with complete pricing inputs and display rules",
        "description": "Retrieve published electricity offers with complete pricing inputs and display rules.",
        "parameters": [
          {
            "name": "customer_type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "private",
                "business",
                "company"
              ]
            },
            "description": "private or business. company is deprecated and normalized to business."
          },
          {
            "name": "If-None-Match",
            "in": "header",
            "schema": {
              "type": "string"
            },
            "description": "ETag from an earlier response of the same credential and customer_type. Evaluated only after authentication and scope checks (RFC 9110 weak comparison; a list or * is accepted). A match returns 304 without a body."
          },
          {
            "name": "diagnostics",
            "in": "query",
            "deprecated": true,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Website contract feed",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "Representation token bound to the organization, customer type, channel, contract profile and representation revision. Never reuse it across credentials or customer types."
              },
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "Vary": {
                "description": "Always Authorization: the representation depends on the credential, so shared caches must not reuse it across credentials.",
                "schema": {
                  "type": "string",
                  "const": "Authorization"
                }
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "contracts",
                    "meta",
                    "request_id"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicContract"
                      }
                    },
                    "contracts": {
                      "type": "array",
                      "deprecated": true,
                      "description": "Deprecated compatibility alias for data.",
                      "items": {
                        "$ref": "#/components/schemas/PublicContract"
                      }
                    },
                    "meta": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "organization_reference",
                        "api_version",
                        "channel",
                        "count",
                        "publication_revision",
                        "publication_updated_at",
                        "contract_schema_version",
                        "feed_state",
                        "empty_feed_authorization"
                      ],
                      "properties": {
                        "organization_reference": {
                          "type": "string",
                          "pattern": "^organization_[A-Za-z0-9_-]{20,64}$",
                          "description": "Stable opaque public reference for the organization associated with the authenticated API credential."
                        },
                        "api_version": {
                          "const": "v1"
                        },
                        "channel": {
                          "type": "string",
                          "enum": [
                            "website",
                            "api"
                          ]
                        },
                        "count": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "publication_revision": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "publication_updated_at": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "format": "date-time"
                        },
                        "contract_schema_version": {
                          "type": "string",
                          "const": "2026-10-09.1"
                        },
                        "feed_state": {
                          "type": "string",
                          "enum": [
                            "contracts_present",
                            "canonical_empty"
                          ]
                        },
                        "empty_feed_authorization": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "additionalProperties": false,
                          "required": [
                            "authorized",
                            "reason",
                            "publication_revision",
                            "canonical_source",
                            "affected_offer_references",
                            "blockers"
                          ],
                          "properties": {
                            "authorized": {
                              "type": "boolean",
                              "const": true
                            },
                            "reason": {
                              "type": "string",
                              "enum": [
                                "no_canonical_publications",
                                "canonical_unpublished_or_archived",
                                "publication_validity_ended",
                                "canonical_no_visible_contracts"
                              ]
                            },
                            "publication_revision": {
                              "type": "integer",
                              "minimum": 0
                            },
                            "canonical_source": {
                              "type": "string",
                              "const": "canonical_public_contract_delivery_readiness_v"
                            },
                            "affected_offer_references": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "blockers": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            }
                          }
                        },
                        "deprecated_aliases": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "customer_type": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "enum": [
                            "private",
                            "business",
                            null
                          ]
                        },
                        "deprecated_customer_type_alias": {
                          "type": "boolean"
                        }
                      }
                    },
                    "diagnostics": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "request_id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "Server-issued identifier correlating this response with its API request."
                    }
                  }
                },
                "example": {
                  "data": [
                    {
                      "id": "offer_variable_monthly_example",
                      "offer_reference": "offer_variable_monthly_example",
                      "contract_offer_id": "offer_variable_monthly_example",
                      "publication_reference": "offer_variable_monthly_example",
                      "product_code": "gridex_variable_monthly",
                      "name": "Gridex Rörligt månadspris",
                      "description": "Rörligt elavtal med månadsupplösning.",
                      "contract_type": "variable_monthly",
                      "energy_direction": "consumption",
                      "customer_type": "private",
                      "price_options": [
                        {
                          "price_option_reference": "variable_monthly_standard",
                          "option_code": "variable_monthly_standard",
                          "customer_name": "Standard",
                          "price_type": "variable_monthly",
                          "contract_type": "variable_monthly",
                          "customer_type": "private",
                          "resolution": "monthly",
                          "currency": "SEK",
                          "unit": "ore_per_kwh",
                          "fixed_price": null,
                          "markup": 10,
                          "monthly_fee": 49,
                          "binding_months": 0,
                          "notice_months": 1,
                          "auto_renew_enabled": false,
                          "renewal_term_months": null,
                          "is_default": true,
                          "default": true,
                          "selection_required": false,
                          "valid_from": "2026-08-01",
                          "valid_to": null,
                          "earliest_start_date": "2026-08-15",
                          "latest_start_date": null,
                          "area_prices": []
                        }
                      ],
                      "pricing": {
                        "visibility": {},
                        "calculation_components": [],
                        "display_components": [],
                        "calculation_contract": {
                          "includes_all_applicable_components": true,
                          "hidden_components_must_be_calculated": true,
                          "market_price_supplied_by_gridex": true
                        },
                        "summary_components": []
                      },
                      "legal": {
                        "legal_bundle_reference": "legal_bundle_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
                        "legal_bundle_version_id": "00000000-0000-4000-8000-000000000001",
                        "immutable": true,
                        "required_modules": [
                          "general_consumer_terms",
                          "price_terms"
                        ],
                        "module_versions": [
                          {
                            "id": "00000000-0000-4000-8000-000000000002",
                            "legal_bundle_version_id": "00000000-0000-4000-8000-000000000001",
                            "document_reference": "legal_document_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
                            "module_key": "general_consumer_terms",
                            "version": "2",
                            "title": "Allmänna konsumentvillkor",
                            "published_at": "2026-08-01T00:00:00.000Z",
                            "content_sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
                            "origin": "canonical_bundle_document",
                            "url": "https://app.gridex.se/legal/example/general-consumer-terms"
                          },
                          {
                            "id": "00000000-0000-4000-8000-000000000003",
                            "legal_bundle_version_id": "00000000-0000-4000-8000-000000000001",
                            "document_reference": "legal_document_yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy",
                            "module_key": "price_terms",
                            "version": "1",
                            "title": "Prisvillkor",
                            "published_at": "2026-08-01T00:00:00.000Z",
                            "content_sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
                            "origin": "canonical_bundle_document",
                            "url": "https://app.gridex.se/legal/example/price-terms"
                          }
                        ],
                        "power_of_attorney_version_id": null,
                        "customer_documents": [
                          {
                            "requirement_code": "agreement",
                            "document_type": "agreement",
                            "title": "Elhandelsavtal och fullständiga villkor",
                            "description": "Kundens elhandelsavtal, pris- och betalningsvillkor samt övriga tillämpliga avtalsvillkor i ett sammanhållet dokument.",
                            "required": true,
                            "acceptance_mode": "accept",
                            "document_reference": "legal_customer_document_fSFN3xRPWycXaPjYSPDiQqJopdbi9MWH",
                            "document_version": "legal_customer_version_GCWsbSNFeL-mkql25pIpHSs8QB6yqI0W",
                            "document_hash": "9001facf2aefea371fc4f15edd55d38b53873777da65901743d81a33fba586ef",
                            "document_url": null,
                            "legal_bundle_version_id": "00000000-0000-4000-8000-000000000001",
                            "module_keys": [
                              "general_consumer_terms",
                              "price_terms"
                            ],
                            "source_document_ids": [
                              "00000000-0000-4000-8000-000000000002",
                              "00000000-0000-4000-8000-000000000003"
                            ],
                            "primary_document_id": null,
                            "sort_order": 10
                          }
                        ]
                      },
                      "valid_from": "2026-08-01",
                      "valid_to": null,
                      "channel": "website"
                    }
                  ],
                  "contracts": [
                    {
                      "id": "offer_variable_monthly_example",
                      "offer_reference": "offer_variable_monthly_example",
                      "contract_offer_id": "offer_variable_monthly_example",
                      "publication_reference": "offer_variable_monthly_example",
                      "product_code": "gridex_variable_monthly",
                      "name": "Gridex Rörligt månadspris",
                      "description": "Rörligt elavtal med månadsupplösning.",
                      "contract_type": "variable_monthly",
                      "energy_direction": "consumption",
                      "customer_type": "private",
                      "price_options": [
                        {
                          "price_option_reference": "variable_monthly_standard",
                          "option_code": "variable_monthly_standard",
                          "customer_name": "Standard",
                          "price_type": "variable_monthly",
                          "contract_type": "variable_monthly",
                          "customer_type": "private",
                          "resolution": "monthly",
                          "currency": "SEK",
                          "unit": "ore_per_kwh",
                          "fixed_price": null,
                          "markup": 10,
                          "monthly_fee": 49,
                          "binding_months": 0,
                          "notice_months": 1,
                          "auto_renew_enabled": false,
                          "renewal_term_months": null,
                          "is_default": true,
                          "default": true,
                          "selection_required": false,
                          "valid_from": "2026-08-01",
                          "valid_to": null,
                          "earliest_start_date": "2026-08-15",
                          "latest_start_date": null,
                          "area_prices": []
                        }
                      ],
                      "pricing": {
                        "visibility": {},
                        "calculation_components": [],
                        "display_components": [],
                        "calculation_contract": {
                          "includes_all_applicable_components": true,
                          "hidden_components_must_be_calculated": true,
                          "market_price_supplied_by_gridex": true
                        },
                        "summary_components": []
                      },
                      "legal": {
                        "legal_bundle_reference": "legal_bundle_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
                        "legal_bundle_version_id": "00000000-0000-4000-8000-000000000001",
                        "immutable": true,
                        "required_modules": [
                          "general_consumer_terms",
                          "price_terms"
                        ],
                        "module_versions": [
                          {
                            "id": "00000000-0000-4000-8000-000000000002",
                            "legal_bundle_version_id": "00000000-0000-4000-8000-000000000001",
                            "document_reference": "legal_document_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
                            "module_key": "general_consumer_terms",
                            "version": "2",
                            "title": "Allmänna konsumentvillkor",
                            "published_at": "2026-08-01T00:00:00.000Z",
                            "content_sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
                            "origin": "canonical_bundle_document",
                            "url": "https://app.gridex.se/legal/example/general-consumer-terms"
                          },
                          {
                            "id": "00000000-0000-4000-8000-000000000003",
                            "legal_bundle_version_id": "00000000-0000-4000-8000-000000000001",
                            "document_reference": "legal_document_yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy",
                            "module_key": "price_terms",
                            "version": "1",
                            "title": "Prisvillkor",
                            "published_at": "2026-08-01T00:00:00.000Z",
                            "content_sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
                            "origin": "canonical_bundle_document",
                            "url": "https://app.gridex.se/legal/example/price-terms"
                          }
                        ],
                        "power_of_attorney_version_id": null,
                        "customer_documents": [
                          {
                            "requirement_code": "agreement",
                            "document_type": "agreement",
                            "title": "Elhandelsavtal och fullständiga villkor",
                            "description": "Kundens elhandelsavtal, pris- och betalningsvillkor samt övriga tillämpliga avtalsvillkor i ett sammanhållet dokument.",
                            "required": true,
                            "acceptance_mode": "accept",
                            "document_reference": "legal_customer_document_fSFN3xRPWycXaPjYSPDiQqJopdbi9MWH",
                            "document_version": "legal_customer_version_GCWsbSNFeL-mkql25pIpHSs8QB6yqI0W",
                            "document_hash": "9001facf2aefea371fc4f15edd55d38b53873777da65901743d81a33fba586ef",
                            "document_url": null,
                            "legal_bundle_version_id": "00000000-0000-4000-8000-000000000001",
                            "module_keys": [
                              "general_consumer_terms",
                              "price_terms"
                            ],
                            "source_document_ids": [
                              "00000000-0000-4000-8000-000000000002",
                              "00000000-0000-4000-8000-000000000003"
                            ],
                            "primary_document_id": null,
                            "sort_order": 10
                          }
                        ]
                      },
                      "valid_from": "2026-08-01",
                      "valid_to": null,
                      "channel": "website"
                    }
                  ],
                  "meta": {
                    "organization_reference": "organization_0123456789abcdef0123456789abcdef0123",
                    "api_version": "v1",
                    "channel": "website",
                    "count": 1,
                    "publication_revision": 42,
                    "publication_updated_at": "2026-08-01T00:00:00.000Z",
                    "contract_schema_version": "2026-10-09.1",
                    "deprecated_aliases": [
                      "contracts",
                      "contract_offer_id",
                      "publication_reference"
                    ],
                    "feed_state": "contracts_present",
                    "empty_feed_authorization": null
                  },
                  "request_id": "00000000-0000-4000-8000-000000000099"
                }
              }
            }
          },
          "304": {
            "description": "Publication revision has not changed",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "Representation token bound to the organization, customer type, channel, contract profile and representation revision. Never reuse it across credentials or customer types."
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Vary": {
                "description": "Always Authorization: the representation depends on the credential, so shared caches must not reuse it across credentials.",
                "schema": {
                  "type": "string",
                  "const": "Authorization"
                }
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            }
          },
          "400": {
            "description": "Invalid query or payload",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Expired, consumed or mismatched quote/idempotency state",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "410": {
            "$ref": "#/components/responses/OrganizationGone"
          },
          "423": {
            "$ref": "#/components/responses/OrganizationPaused"
          },
          "503": {
            "description": "The canonical API contract feed could not be built",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        },
        "x-required-scopes": [
          "website_contracts.read"
        ],
        "security": [
          {
            "bearerAuth": [
              "website_contracts.read"
            ]
          },
          {
            "legacyApiKeyAuth": []
          }
        ],
        "operationId": "getApiV1WebsitePublicContracts",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "no-store",
        "x-public-id-policy": "opaque-references"
      }
    },
    "/api/v1/website/public-contracts/diagnostics": {
      "get": {
        "tags": [
          "Website contracts"
        ],
        "summary": "Retrieve publication diagnostics for website offers",
        "description": "Retrieve publication diagnostics for website offers.",
        "parameters": [
          {
            "name": "customer_type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "private",
                "business",
                "company"
              ]
            },
            "description": "private or business. company is deprecated and normalized to business."
          }
        ],
        "responses": {
          "200": {
            "description": "Diagnostics",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PublicContract"
                      }
                    },
                    "diagnostics": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "meta": {
                      "$ref": "#/components/schemas/TenantMeta"
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            }
          },
          "400": {
            "description": "Invalid query or payload",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Scope missing or organization access denied",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Expired, consumed or mismatched quote/idempotency state",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "410": {
            "$ref": "#/components/responses/OrganizationGone"
          },
          "423": {
            "$ref": "#/components/responses/OrganizationPaused"
          },
          "503": {
            "description": "The canonical API contract feed could not be built",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        },
        "x-required-scopes": [
          "website_contracts.diagnostics"
        ],
        "security": [
          {
            "bearerAuth": [
              "website_contracts.diagnostics"
            ]
          },
          {
            "legacyApiKeyAuth": []
          }
        ],
        "operationId": "getApiV1WebsitePublicContractsDiagnostics",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "no-store",
        "x-public-id-policy": "opaque-references"
      }
    },
    "/api/v1/contracts": {
      "get": {
        "tags": [
          "API contracts"
        ],
        "summary": "Deprecated compatibility alias for the public contracts feed",
        "description": "Deprecated compatibility alias for the public contracts feed.",
        "x-required-scopes": [
          "api_contracts.read"
        ],
        "parameters": [
          {
            "name": "customer_type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "private",
                "business",
                "company"
              ]
            },
            "description": "private or business. company is deprecated and normalized to business."
          },
          {
            "name": "If-None-Match",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "API channel feed",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "organization- and channel-specific publication revision token."
              },
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "contracts",
                    "meta",
                    "request_id"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ApiPublicContract"
                      }
                    },
                    "contracts": {
                      "type": "array",
                      "deprecated": true,
                      "description": "Deprecated compatibility alias for data.",
                      "items": {
                        "$ref": "#/components/schemas/ApiPublicContract"
                      }
                    },
                    "meta": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "organization_reference",
                        "api_version",
                        "channel",
                        "count",
                        "publication_revision",
                        "publication_updated_at",
                        "contract_schema_version",
                        "feed_state",
                        "empty_feed_authorization"
                      ],
                      "properties": {
                        "organization_reference": {
                          "type": "string",
                          "pattern": "^organization_[A-Za-z0-9_-]{20,64}$",
                          "description": "Stable opaque public reference for the organization associated with the authenticated API credential."
                        },
                        "api_version": {
                          "const": "v1"
                        },
                        "channel": {
                          "type": "string",
                          "enum": [
                            "website",
                            "api"
                          ]
                        },
                        "count": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "publication_revision": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "publication_updated_at": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "format": "date-time"
                        },
                        "contract_schema_version": {
                          "type": "string",
                          "const": "2026-10-09.1"
                        },
                        "feed_state": {
                          "type": "string",
                          "enum": [
                            "contracts_present",
                            "canonical_empty"
                          ]
                        },
                        "empty_feed_authorization": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "additionalProperties": false,
                          "required": [
                            "authorized",
                            "reason",
                            "publication_revision",
                            "canonical_source",
                            "affected_offer_references",
                            "blockers"
                          ],
                          "properties": {
                            "authorized": {
                              "type": "boolean",
                              "const": true
                            },
                            "reason": {
                              "type": "string",
                              "enum": [
                                "no_canonical_publications",
                                "canonical_unpublished_or_archived",
                                "publication_validity_ended",
                                "canonical_no_visible_contracts"
                              ]
                            },
                            "publication_revision": {
                              "type": "integer",
                              "minimum": 0
                            },
                            "canonical_source": {
                              "type": "string",
                              "const": "canonical_public_contract_delivery_readiness_v"
                            },
                            "affected_offer_references": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "blockers": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            }
                          }
                        },
                        "deprecated_aliases": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "customer_type": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "enum": [
                            "private",
                            "business",
                            null
                          ]
                        },
                        "deprecated_customer_type_alias": {
                          "type": "boolean"
                        }
                      }
                    },
                    "diagnostics": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "request_id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "Server-issued identifier correlating this response with its API request."
                    }
                  }
                }
              }
            }
          },
          "304": {
            "description": "API publication revision has not changed",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "organization- and channel-specific publication revision token."
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            }
          },
          "400": {
            "description": "Invalid query or payload",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Scope missing or organization access denied",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "410": {
            "description": "organization is terminated and no longer serves external API traffic Organization access can also be refused (organization_closed, organization_inactive).",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "423": {
            "description": "organization is paused and external API traffic is temporarily locked Organization access can also be refused (organization_paused).",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "API client rate limit exceeded",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              },
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "The canonical API contract feed could not be built",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "The required service or configured credential response profile is unavailable. Profile configuration errors require an operator correction.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        },
        "deprecated": true,
        "security": [
          {
            "bearerAuth": [
              "api_contracts.read"
            ]
          },
          {
            "legacyApiKeyAuth": []
          }
        ],
        "operationId": "getApiV1Contracts",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "no-store",
        "x-public-id-policy": "opaque-references"
      }
    },
    "/api/v1/website/quote": {
      "post": {
        "tags": [
          "Website pricing"
        ],
        "summary": "Create an authoritative checkout quote from a published offer. Fixed products lock the...",
        "description": "Create an authoritative checkout quote from a published offer. Fixed products lock the energy price; market, portfolio and mixed products return indicative checkout evidence for the accepted pricing model.",
        "x-required-scopes": [
          "website_quotes.write"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebsiteQuoteRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Canonical quote created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebsiteQuoteResponse"
                },
                "example": {
                  "data": {
                    "quote_reference": "quote_example",
                    "offer_reference": "offer_example",
                    "valid_until": "2026-07-24T17:00:00Z",
                    "input": {
                      "resolution_id": "f8249704-7ce8-4885-93cb-fbb9922ed77d",
                      "price_area": "SE3"
                    },
                    "market_reference": {
                      "provider": "elprisetjustnu",
                      "price_area": "SE3",
                      "reference_type": "preview",
                      "reference_period": "rolling_30_days",
                      "price_sek_per_kwh": 0.655699,
                      "price_ore_per_kwh": 65.5699,
                      "price_ex_vat_sek_per_kwh": 0.655699,
                      "price_ex_vat_ore_per_kwh": 65.5699,
                      "requested_days": 30,
                      "included_days": 30,
                      "period_start": "2026-06-24",
                      "period_end": "2026-07-23",
                      "source_as_of": "2026-07-24T14:02:14Z",
                      "generated_at": "2026-07-24T14:05:00Z",
                      "stale_after": "2026-07-24T17:05:00Z",
                      "effective_stale_at": "2026-07-24T17:02:14Z",
                      "source_currency": "SEK",
                      "unit": "sek_per_kwh",
                      "includes_vat": false,
                      "includes_supplier_fees": false,
                      "includes_grid_fees": false,
                      "is_indicative": true,
                      "is_stale": false,
                      "fallback_used": false,
                      "fallback_reason": null,
                      "source_checksum": "sha256-example"
                    },
                    "estimate": {
                      "monthly_ex_vat": 1000,
                      "monthly_vat": 250,
                      "monthly_inc_vat": 1250
                    },
                    "lines": [],
                    "price_option_reference": "price_option_example",
                    "area_price_reference": null,
                    "invoice_delivery_method": "email",
                    "selected_component_references": [],
                    "mandatory_component_references": [],
                    "conditional_component_references": [],
                    "site_count": 1,
                    "offer": {
                      "offer_reference": "offer_example",
                      "energy_direction": "consumption"
                    }
                  },
                  "request_id": "0153b491-b4be-444d-b9a4-56573af449e8",
                  "contract_schema_version": "2026-10-09.1"
                }
              }
            },
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Idempotency-Replayed": {
                "description": "true when the response was replayed from the organization-scoped idempotency store; false for a newly executed quote.",
                "schema": {
                  "type": "boolean"
                }
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            }
          },
          "400": {
            "description": "Invalid request, missing Idempotency-Key or invalid idempotency key.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Idempotency-Replayed": {
                "description": "true when the response was replayed from the organization-scoped idempotency store; false for a newly executed quote.",
                "schema": {
                  "type": "boolean"
                }
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Idempotency-Replayed": {
                "description": "true when the response was replayed from the organization-scoped idempotency store; false for a newly executed quote.",
                "schema": {
                  "type": "boolean"
                }
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Published offer not found for organization",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Idempotency-Replayed": {
                "description": "true when the response was replayed from the organization-scoped idempotency store; false for a newly executed quote.",
                "schema": {
                  "type": "boolean"
                }
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Published version conflict, idempotency payload conflict, prior failed attempt or identical request already processing.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Idempotency-Replayed": {
                "description": "true when the response was replayed from the organization-scoped idempotency store; false for a newly executed quote.",
                "schema": {
                  "type": "boolean"
                }
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "410": {
            "$ref": "#/components/responses/OrganizationGone"
          },
          "413": {
            "description": "Payload too large",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Idempotency-Replayed": {
                "description": "true when the response was replayed from the organization-scoped idempotency store; false for a newly executed quote.",
                "schema": {
                  "type": "boolean"
                }
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Area price or quote input cannot be used",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Idempotency-Replayed": {
                "description": "true when the response was replayed from the organization-scoped idempotency store; false for a newly executed quote.",
                "schema": {
                  "type": "boolean"
                }
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "423": {
            "$ref": "#/components/responses/OrganizationPaused"
          },
          "500": {
            "description": "Quote creation failed",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Idempotency-Replayed": {
                "description": "true when the response was replayed from the organization-scoped idempotency store; false for a newly executed quote.",
                "schema": {
                  "type": "boolean"
                }
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "organization-scoped idempotency store unavailable. No new quote execution was started.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Idempotency-Replayed": {
                "description": "true when the response was replayed from the organization-scoped idempotency store; false for a newly executed quote.",
                "schema": {
                  "type": "boolean"
                }
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [
              "website_quotes.write"
            ]
          },
          {
            "legacyApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "Required organization-safe write key. Scope is company, API client and route. Reusing the same key with the same normalized payload replays the stored response; a different payload returns 409 idempotency_conflict.",
            "schema": {
              "type": "string",
              "minLength": 8,
              "maxLength": 200
            }
          }
        ],
        "x-idempotency-required": true,
        "x-idempotency-scope": [
          "internal organization identifier",
          "api_client_id",
          "route",
          "idempotency_key"
        ],
        "operationId": "postApiV1WebsiteQuote",
        "x-scope-mode": "all",
        "x-rate-limit-class": "expensive",
        "x-cache-policy": "no-store",
        "x-public-id-policy": "opaque-references"
      }
    },
    "/api/v1/website/quote/validate": {
      "post": {
        "tags": [
          "Website pricing"
        ],
        "summary": "Validate the immutable accepted quote and commercial identity. Elapsed wall-clock time...",
        "description": "Validate the immutable accepted quote and commercial identity. Elapsed wall-clock time alone does not invalidate an issued website quote.",
        "x-required-scopes": [
          "website_quotes.validate"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebsiteQuoteValidationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Quote valid",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "request_id",
                    "contract_schema_version"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WebsiteQuoteValidationData"
                    },
                    "request_id": {
                      "type": "string"
                    },
                    "correlation_id": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "contract_schema_version": {
                      "type": "string",
                      "const": "2026-10-09.1"
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Quote or offer not found",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Quote already consumed or binding mismatch",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "410": {
            "$ref": "#/components/responses/OrganizationGone"
          },
          "413": {
            "description": "Payload too large",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Quote expired or no longer valid",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "423": {
            "$ref": "#/components/responses/OrganizationPaused"
          },
          "500": {
            "description": "Validation failed",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "The required service or configured credential response profile is unavailable. Profile configuration errors require an operator correction.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [
              "website_quotes.validate"
            ]
          },
          {
            "legacyApiKeyAuth": []
          }
        ],
        "operationId": "postApiV1WebsiteQuoteValidate",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "no-store",
        "x-public-id-policy": "opaque-references"
      }
    },
    "/api/v1/website/customer-applications": {
      "post": {
        "tags": [
          "Customer applications"
        ],
        "summary": "Submit a customer application with the exact accepted offer, quote, legal evidence and...",
        "description": "Submit a customer application with the exact accepted offer, quote, legal evidence and customer data.",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerApplicationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Canonical graph and quote committed; all required idempotent post-commit evidence/workflow steps also completed and durable automatic processing queued",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebsiteCustomerApplicationResponse"
                }
              }
            },
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            }
          },
          "400": {
            "description": "Invalid query or payload",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "API-nyckel saknas eller är ogiltig",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Scope eller tenantbehörighet saknas",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Refererad resurs finns inte inom verifierad organization",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Expired, consumed or mismatched quote/idempotency state power_of_attorney_offer_version_mismatch: powerOfAttorney.textVersionId is not the power-of-attorney document of the accepted legal bundle; nothing is stored.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "410": {
            "$ref": "#/components/responses/OrganizationGone"
          },
          "422": {
            "description": "Application validation error",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "423": {
            "$ref": "#/components/responses/OrganizationPaused"
          },
          "503": {
            "description": "Temporärt beroendefel eller canonical resolution/workflow är inte tillgänglig",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        },
        "x-required-scopes": [
          "website_applications.write"
        ],
        "x-automatic-domain-events": [
          "customer_application.accepted",
          "customer_application.needs_information",
          "customer_application.failed",
          "facility_information.requested",
          "facility_information.received",
          "supplier_switch.requested",
          "supplier_switch.dispatched",
          "supplier_switch.confirmed",
          "supplier_switch.rejected",
          "supply_period.activated",
          "contract.activated"
        ],
        "security": [
          {
            "bearerAuth": [
              "website_applications.write"
            ]
          },
          {
            "legacyApiKeyAuth": []
          }
        ],
        "operationId": "postApiV1WebsiteCustomerApplications",
        "x-scope-mode": "all",
        "x-rate-limit-class": "write",
        "x-idempotency-required": true,
        "x-cache-policy": "no-store",
        "x-public-id-policy": "opaque-references"
      }
    },
    "/api/v1/website/energy-area/resolve": {
      "post": {
        "tags": [
          "Website energy area"
        ],
        "summary": "Resolve the Swedish price area (SE1-SE4) for the supplied address or postal code",
        "description": "Resolve the Swedish price area (SE1-SE4) for the supplied address or postal code. Send a full address (street and city), a postal_code or a grid_area_code; facility_id and metering_point_id are stored references only and never resolve an area on their own. A price area derived only from a postal-code centroid is provisional: it is not facility-level evidence, and a centroid near a price-area boundary or behind stale geodata is never returned as price-ready (send a full address).",
        "x-required-scopes": [
          "website_energy_area.resolve"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebsiteEnergyAreaResolveRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Resolution completed or requires a next action",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebsiteEnergyAreaResolveResponse"
                },
                "examples": {
                  "postal_single_area_pricing_ready": {
                    "summary": "Postal/city consensus resolves SE3 for pricing but not EDIFACT",
                    "value": {
                      "data": {
                        "resolution_id": "b5f0d364-ad29-46a6-b6bc-7f7e81340932",
                        "price_area": "SE3",
                        "grid_area_code": null,
                        "grid_area_name": null,
                        "grid_owner_name": "Föreslagen nätägare",
                        "resolution_status": "postal_suggested",
                        "confidence": 0.85,
                        "price_area_assurance": {
                          "status": "estimated",
                          "price_area": "SE3",
                          "confidence": 0.85,
                          "source": "postal_city_consensus",
                          "candidate_count": 2,
                          "unique_price_area_count": 1,
                          "source_version": "2026-08-04T15:00:00.000Z",
                          "evidence": {
                            "city_scope": "exact_city",
                            "price_areas": [
                              "SE3"
                            ]
                          }
                        },
                        "next_required_action": "Verifiera föreslagen nätägare innan EDIFACT skickas.",
                        "warnings": [
                          "postal_code_multiple_grid_area_candidates"
                        ],
                        "resolved_at": "2026-08-04T15:28:00.000Z",
                        "expires_at": "2026-08-05T15:28:00.000Z",
                        "resolver_version": "energy-resolver-v2",
                        "geodata_version": null,
                        "source": {
                          "chain": [
                            "postal_code",
                            "platform_postal_code_grid_mappings",
                            "postal_price_area_consensus"
                          ],
                          "resolver_version": "energy-resolver-v2",
                          "geodata_version": null
                        },
                        "capabilities": {
                          "pricing_ready": true,
                          "quote_ready": true,
                          "facility_lookup_ready": false,
                          "switch_request_creatable": false,
                          "switch_dispatch_ready": false
                        },
                        "blockers": {
                          "pricing": [],
                          "quote": [],
                          "facility_lookup": [
                            {
                              "code": "grid_area_missing",
                              "message": "Verifierat nätområde saknas.",
                              "retryable": false
                            },
                            {
                              "code": "grid_owner_missing",
                              "message": "Verifierad nätägare saknas.",
                              "retryable": false
                            }
                          ],
                          "switch_creation": [
                            {
                              "code": "grid_area_missing",
                              "message": "Verifierat nätområde saknas.",
                              "retryable": false
                            },
                            {
                              "code": "grid_owner_missing",
                              "message": "Verifierad nätägare saknas.",
                              "retryable": false
                            }
                          ],
                          "switch_dispatch": [
                            {
                              "code": "grid_area_missing",
                              "message": "Verifierat nätområde saknas.",
                              "retryable": false
                            },
                            {
                              "code": "grid_owner_missing",
                              "message": "Verifierad nätägare saknas.",
                              "retryable": false
                            },
                            {
                              "code": "switch_context_required",
                              "message": "Fullmakt, anläggning, aktuell leverantör, PRODAT-route och transportberedskap måste verifieras i kundflödet.",
                              "retryable": false
                            }
                          ]
                        },
                        "conflict_code": null,
                        "error_code": null,
                        "retryable": false
                      },
                      "request_id": "ec75aee9-cc8d-45be-afa1-027ba7258a45",
                      "correlation_id": "ec75aee9-cc8d-45be-afa1-027ba7258a45",
                      "retryable": false,
                      "contract_schema_version": "2026-10-09.1"
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "410": {
            "$ref": "#/components/responses/OrganizationGone"
          },
          "413": {
            "description": "Payload too large",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "422": {
            "description": "Resolution failed energy_area_address_required: the request contained only facility_id/metering_point_id; error.details.required_fields lists the accepted inputs.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "423": {
            "$ref": "#/components/responses/OrganizationPaused"
          },
          "500": {
            "description": "Resolver failed",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "The required service or configured credential response profile is unavailable. Profile configuration errors require an operator correction.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [
              "website_energy_area.resolve"
            ]
          },
          {
            "legacyApiKeyAuth": []
          }
        ],
        "operationId": "postApiV1WebsiteEnergyAreaResolve",
        "x-scope-mode": "all",
        "x-rate-limit-class": "expensive",
        "x-idempotency-required": false,
        "x-cache-policy": "no-store",
        "x-public-id-policy": "opaque-references"
      }
    },
    "/api/v1/website/switch-status": {
      "get": {
        "tags": [
          "Switch status"
        ],
        "summary": "Retrieve the current supplier-switch status using the public application number",
        "description": "Retrieve the current supplier-switch status using the public application number.",
        "parameters": [
          {
            "in": "query",
            "name": "application_number",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Current application and supplier-switch status",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/SwitchStatus"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/TenantMeta"
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            }
          },
          "400": {
            "description": "Invalid query or payload",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Application not found in organization",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "410": {
            "$ref": "#/components/responses/OrganizationGone"
          },
          "423": {
            "$ref": "#/components/responses/OrganizationPaused"
          },
          "500": {
            "description": "Status unavailable",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "The required service or configured credential response profile is unavailable. Profile configuration errors require an operator correction.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [
              "website_switch_status.read"
            ]
          },
          {
            "legacyApiKeyAuth": []
          }
        ],
        "x-required-scopes": [
          "website_switch_status.read"
        ],
        "operationId": "getApiV1WebsiteSwitchStatus",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "no-store",
        "x-public-id-policy": "opaque-references"
      }
    },
    "/api/v1/openapi/website-integration-v1.json": {
      "get": {
        "summary": "Current OpenAPI specification for website integrations",
        "description": "Current OpenAPI specification for website integrations.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-12.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-12.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1OpenapiWebsiteIntegrationV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "private-revalidate",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/customer-portal-v1.json": {
      "get": {
        "summary": "Current OpenAPI specification for customer portal integrations",
        "description": "Current OpenAPI specification for customer portal integrations.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-12.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-12.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1OpenapiCustomerPortalV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "private-revalidate",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/website/market-price/current": {
      "post": {
        "tags": [
          "Market price"
        ],
        "summary": "Retrieve the current normalized market price for a Swedish price area",
        "description": "Retrieve the current normalized market price for a Swedish price area.",
        "x-required-scopes": [
          "website_market_prices.read"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CurrentMarketPriceRequest"
              },
              "example": {
                "resolution_id": "f8249704-7ce8-4885-93cb-fbb9922ed77d"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Current market interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CurrentMarketPriceResponse"
                },
                "example": {
                  "data": {
                    "provider": "elprisetjustnu",
                    "resolution_id": "f8249704-7ce8-4885-93cb-fbb9922ed77d",
                    "price_area": "SE3",
                    "reference_type": "current_interval",
                    "resolution": "quarterly",
                    "selected_resolution": "quarterly",
                    "available_resolutions": [
                      "hourly",
                      "quarterly"
                    ],
                    "time_start": "2026-07-24T16:00:00+02:00",
                    "time_end": "2026-07-24T16:15:00+02:00",
                    "price_sek_per_kwh": 0.655699,
                    "price_ore_per_kwh": 65.5699,
                    "price_ex_vat_sek_per_kwh": 0.655699,
                    "price_ex_vat_ore_per_kwh": 65.5699,
                    "includes_vat": false,
                    "includes_supplier_fees": false,
                    "includes_grid_fees": false,
                    "is_indicative": false,
                    "is_stale": false,
                    "fallback_used": false,
                    "source_as_of": "2026-07-24T14:02:14Z",
                    "next_update_at": "2026-07-24T16:15:00+02:00"
                  },
                  "request_id": "0153b491-b4be-444d-b9a4-56573af449e8",
                  "contract_schema_version": "2026-10-09.1"
                }
              }
            },
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Missing scope or resolution organization mismatch",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Resolution not found",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Resolution expired, price-area mismatch or stale price",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "410": {
            "$ref": "#/components/responses/OrganizationGone"
          },
          "413": {
            "description": "Payload too large",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "423": {
            "$ref": "#/components/responses/OrganizationPaused"
          },
          "429": {
            "description": "Rate limited",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected provider or runtime failure",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "Current market price unavailable",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [
              "website_market_prices.read"
            ]
          },
          {
            "legacyApiKeyAuth": []
          }
        ],
        "operationId": "postApiV1WebsiteMarketPriceCurrent",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "no-store",
        "x-public-id-policy": "opaque-references"
      }
    },
    "/api/v1/website/portfolio-prices": {
      "get": {
        "tags": [
          "Website contracts"
        ],
        "summary": "Retrieve the public pricing method and sanitized historical final settlements for a pub...",
        "description": "Retrieve the public pricing method and sanitized historical final settlements for a published portfolio offer.",
        "x-required-scopes": [
          "website_contracts.read"
        ],
        "parameters": [
          {
            "name": "offer_reference",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "price_area",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "SE1",
                "SE2",
                "SE3",
                "SE4"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Public method and final history",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "request_id",
                    "contract_schema_version"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WebsitePortfolioPriceData"
                    },
                    "request_id": {
                      "type": "string"
                    },
                    "correlation_id": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "contract_schema_version": {
                      "type": "string",
                      "const": "2026-10-09.1"
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Missing scope",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "Offer not found",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "410": {
            "$ref": "#/components/responses/OrganizationGone"
          },
          "422": {
            "description": "Offer cannot be used",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "423": {
            "$ref": "#/components/responses/OrganizationPaused"
          },
          "503": {
            "description": "The required service or configured credential response profile is unavailable. Profile configuration errors require an operator correction.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [
              "website_contracts.read"
            ]
          },
          {
            "legacyApiKeyAuth": []
          }
        ],
        "operationId": "getApiV1WebsitePortfolioPrices",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "no-store",
        "x-public-id-policy": "opaque-references"
      }
    },
    "/api/v1/website/legal-bundle": {
      "get": {
        "tags": [
          "Customer applications"
        ],
        "summary": "Retrieve the exact published legal documents and versions required for customer acceptance",
        "description": "Retrieve the exact published legal documents and versions required for customer acceptance.",
        "x-required-scopes": [
          "website_legal.read",
          "website_contracts.read"
        ],
        "parameters": [
          {
            "name": "offer_reference",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1
            },
            "description": "Opaque canonical offer_reference returned by the public-contract feed."
          }
        ],
        "responses": {
          "200": {
            "description": "Published legal bundle",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebsiteLegalBundleResponse"
                }
              }
            },
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            }
          },
          "400": {
            "description": "offer_reference is missing",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Missing scope",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404": {
            "description": "The offer_reference is not published for this organization",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "410": {
            "$ref": "#/components/responses/OrganizationGone"
          },
          "422": {
            "description": "The exact offer legal bundle is incomplete",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "423": {
            "$ref": "#/components/responses/OrganizationPaused"
          },
          "503": {
            "description": "Legal bundle storage is temporarily unavailable",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [
              "website_legal.read"
            ]
          },
          {
            "bearerAuth": [
              "website_contracts.read"
            ]
          },
          {
            "legacyApiKeyAuth": []
          }
        ],
        "x-scope-mode": "any",
        "x-scope-requirement": {
          "anyOf": [
            "website_legal.read",
            "website_contracts.read"
          ]
        },
        "operationId": "getApiV1WebsiteLegalBundle",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "no-store",
        "x-public-id-policy": "opaque-references"
      }
    },
    "/api/v1/website/customer-events": {
      "post": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Submit a customer event from a website or customer portal",
        "description": "Submit a customer event from a website or customer portal.",
        "x-required-scopes": [
          "website_events.write"
        ],
        "x-idempotency-required": true,
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebsiteCustomerEventRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Event accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "request_id",
                    "contract_schema_version"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WebsiteCustomerEventData"
                    },
                    "request_id": {
                      "type": "string"
                    },
                    "correlation_id": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "contract_schema_version": {
                      "type": "string",
                      "const": "2026-10-09.1"
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Missing scope",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Idempotency conflict",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "410": {
            "$ref": "#/components/responses/OrganizationGone"
          },
          "423": {
            "$ref": "#/components/responses/OrganizationPaused"
          },
          "503": {
            "description": "The required service or configured credential response profile is unavailable. Profile configuration errors require an operator correction.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "$ref": "#/components/parameters/IdempotencyKey"
          }
        ],
        "security": [
          {
            "bearerAuth": [
              "website_events.write"
            ]
          },
          {
            "legacyApiKeyAuth": []
          }
        ],
        "operationId": "postApiV1WebsiteCustomerEvents",
        "x-scope-mode": "all",
        "x-rate-limit-class": "write",
        "x-cache-policy": "no-store",
        "x-public-id-policy": "opaque-references"
      }
    },
    "/api/v1/openapi/release-manifest.json": {
      "get": {
        "operationId": "getApiV1OpenapiReleaseManifestJson",
        "summary": "Machine-readable release manifest containing versions and SHA-256 digests for the publi...",
        "x-required-scopes": [],
        "responses": {
          "200": {
            "description": "Aktuell kontraktsrelease.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenApiReleaseManifest"
                }
              }
            },
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "security": [],
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "private-revalidate",
        "x-public-id-policy": "none",
        "description": "Machine-readable release manifest containing versions and SHA-256 digests for the public OpenAPI contracts."
      }
    },
    "/api/v1/public-contracts": {
      "get": {
        "tags": [
          "API contracts"
        ],
        "summary": "Retrieve contracts published to the general API channel",
        "description": "Retrieve contracts published to the general API channel.",
        "x-required-scopes": [
          "api_contracts.read"
        ],
        "parameters": [
          {
            "name": "customer_type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "private",
                "business",
                "company"
              ]
            },
            "description": "private or business. company is deprecated and normalized to business."
          },
          {
            "name": "If-None-Match",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "API channel feed",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "organization- and channel-specific publication revision token."
              },
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "contracts",
                    "meta",
                    "request_id"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ApiPublicContract"
                      }
                    },
                    "contracts": {
                      "type": "array",
                      "deprecated": true,
                      "description": "Deprecated compatibility alias for data.",
                      "items": {
                        "$ref": "#/components/schemas/ApiPublicContract"
                      }
                    },
                    "meta": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "organization_reference",
                        "api_version",
                        "channel",
                        "count",
                        "publication_revision",
                        "publication_updated_at",
                        "contract_schema_version",
                        "feed_state",
                        "empty_feed_authorization"
                      ],
                      "properties": {
                        "organization_reference": {
                          "type": "string",
                          "pattern": "^organization_[A-Za-z0-9_-]{20,64}$",
                          "description": "Stable opaque public reference for the organization associated with the authenticated API credential."
                        },
                        "api_version": {
                          "const": "v1"
                        },
                        "channel": {
                          "type": "string",
                          "enum": [
                            "website",
                            "api"
                          ]
                        },
                        "count": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "publication_revision": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "publication_updated_at": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "format": "date-time"
                        },
                        "contract_schema_version": {
                          "type": "string",
                          "const": "2026-10-09.1"
                        },
                        "feed_state": {
                          "type": "string",
                          "enum": [
                            "contracts_present",
                            "canonical_empty"
                          ]
                        },
                        "empty_feed_authorization": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "additionalProperties": false,
                          "required": [
                            "authorized",
                            "reason",
                            "publication_revision",
                            "canonical_source",
                            "affected_offer_references",
                            "blockers"
                          ],
                          "properties": {
                            "authorized": {
                              "type": "boolean",
                              "const": true
                            },
                            "reason": {
                              "type": "string",
                              "enum": [
                                "no_canonical_publications",
                                "canonical_unpublished_or_archived",
                                "publication_validity_ended",
                                "canonical_no_visible_contracts"
                              ]
                            },
                            "publication_revision": {
                              "type": "integer",
                              "minimum": 0
                            },
                            "canonical_source": {
                              "type": "string",
                              "const": "canonical_public_contract_delivery_readiness_v"
                            },
                            "affected_offer_references": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "blockers": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            }
                          }
                        },
                        "deprecated_aliases": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "customer_type": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "enum": [
                            "private",
                            "business",
                            null
                          ]
                        },
                        "deprecated_customer_type_alias": {
                          "type": "boolean"
                        }
                      }
                    },
                    "diagnostics": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "request_id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "Server-issued identifier correlating this response with its API request."
                    }
                  }
                }
              }
            }
          },
          "304": {
            "description": "API publication revision has not changed",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "organization- and channel-specific publication revision token."
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            }
          },
          "400": {
            "description": "Invalid query or payload",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Scope missing or organization access denied",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Expired, consumed or mismatched quote/idempotency state",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "410": {
            "description": "organization is terminated and no longer serves external API traffic Organization access can also be refused (organization_closed, organization_inactive).",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "423": {
            "description": "organization is paused and external API traffic is temporarily locked Organization access can also be refused (organization_paused).",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429": {
            "description": "API client rate limit exceeded",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              },
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500": {
            "description": "The canonical API contract feed could not be built",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "503": {
            "description": "The canonical API contract feed could not be built",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [
              "api_contracts.read"
            ]
          },
          {
            "legacyApiKeyAuth": []
          }
        ],
        "operationId": "getApiV1PublicContracts",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "no-store",
        "x-public-id-policy": "opaque-references"
      }
    },
    "/api/v1/public-contracts/diagnostics": {
      "get": {
        "tags": [
          "API contracts"
        ],
        "summary": "Retrieve publication diagnostics for the authenticated organization",
        "description": "Retrieve publication diagnostics for the authenticated organization.",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Diagnostics",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      }
                    },
                    "diagnostics": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "meta": {
                      "$ref": "#/components/schemas/TenantMeta"
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            }
          },
          "400": {
            "description": "Invalid query or payload",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403": {
            "description": "Scope missing or organization access denied",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "409": {
            "description": "Expired, consumed or mismatched quote/idempotency state",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "410": {
            "$ref": "#/components/responses/OrganizationGone"
          },
          "423": {
            "$ref": "#/components/responses/OrganizationPaused"
          },
          "503": {
            "description": "The canonical API contract feed could not be built",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        },
        "x-required-scopes": [
          "api_contracts.diagnostics"
        ],
        "security": [
          {
            "bearerAuth": [
              "api_contracts.diagnostics"
            ]
          },
          {
            "legacyApiKeyAuth": []
          }
        ],
        "operationId": "getApiV1PublicContractsDiagnostics",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "no-store",
        "x-public-id-policy": "opaque-references"
      }
    },
    "/api/v1/website/customer-applications/{application_number}": {
      "get": {
        "tags": [
          "Customer applications"
        ],
        "summary": "Retrieve the authoritative status of an accepted customer application and its downstrea...",
        "description": "Retrieve the authoritative status of an accepted customer application and its downstream processing.",
        "parameters": [
          {
            "name": "application_number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Current application status",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "data",
                    "request_id",
                    "contract_schema_version"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/WebsiteCustomerApplicationStatusData"
                    },
                    "request_id": {
                      "type": "string"
                    },
                    "correlation_id": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "contract_schema_version": {
                      "type": "string",
                      "const": "2026-10-09.1"
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            }
          },
          "404": {
            "description": "Application not found in authenticated organization",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "410": {
            "$ref": "#/components/responses/OrganizationGone"
          },
          "423": {
            "$ref": "#/components/responses/OrganizationPaused"
          },
          "503": {
            "description": "The required service or configured credential response profile is unavailable. Profile configuration errors require an operator correction.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "$ref": "#/components/headers/GridexContractVersion"
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-Gridex-Documentation-Version": {
                "$ref": "#/components/headers/GridexDocumentationVersion"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        },
        "x-required-scopes": [
          "website_switch_status.read"
        ],
        "security": [
          {
            "bearerAuth": [
              "website_switch_status.read"
            ]
          },
          {
            "legacyApiKeyAuth": []
          }
        ],
        "operationId": "getApiV1WebsiteCustomerApplicationsApplicationNumber",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "no-store",
        "x-public-id-policy": "opaque-references"
      }
    },
    "/api/v1/openapi/2026-08-03.1/website-integration-v1.json": {
      "get": {
        "summary": "Immutable Website Integration OpenAPI release 2026-08-03.1",
        "description": "Immutable Website Integration OpenAPI release 2026-08-03.1.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-03.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-03.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202608031WebsiteIntegrationV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-08-03.1/customer-portal-v1.json": {
      "get": {
        "summary": "Immutable Customer Portal OpenAPI release 2026-08-03.1",
        "description": "Immutable Customer Portal OpenAPI release 2026-08-03.1.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-03.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-03.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202608031CustomerPortalV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-08-02.1/website-integration-v1.json": {
      "get": {
        "summary": "Immutable Website Integration OpenAPI release 2026-08-02.1",
        "description": "Immutable Website Integration OpenAPI release 2026-08-02.1.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-02.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-02.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202608021WebsiteIntegrationV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-08-02.1/customer-portal-v1.json": {
      "get": {
        "summary": "Immutable Customer Portal OpenAPI release 2026-08-02.1",
        "description": "Immutable Customer Portal OpenAPI release 2026-08-02.1.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-02.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-02.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202608021CustomerPortalV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-08-04.1/website-integration-v1.json": {
      "get": {
        "summary": "Immutable Website Integration OpenAPI release 2026-08-04.1",
        "description": "Immutable Website Integration OpenAPI release 2026-08-04.1.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-04.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-04.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202608041WebsiteIntegrationV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-08-04.1/customer-portal-v1.json": {
      "get": {
        "summary": "Immutable Customer Portal OpenAPI release 2026-08-04.1",
        "description": "Immutable Customer Portal OpenAPI release 2026-08-04.1.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-04.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-04.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202608041CustomerPortalV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-08-04.2/website-integration-v1.json": {
      "get": {
        "summary": "Immutable Website Integration OpenAPI release 2026-08-04.2",
        "description": "Immutable Website Integration OpenAPI release 2026-08-04.2.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-04.2"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-04.2"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202608042WebsiteIntegrationV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-08-04.2/customer-portal-v1.json": {
      "get": {
        "summary": "Immutable Customer Portal OpenAPI release 2026-08-04.2",
        "description": "Immutable Customer Portal OpenAPI release 2026-08-04.2.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-04.2"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-04.2"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202608042CustomerPortalV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-08-04.3/website-integration-v1.json": {
      "get": {
        "summary": "Immutable Website Integration OpenAPI release 2026-08-04.3",
        "description": "Immutable Website Integration OpenAPI release 2026-08-04.3.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-04.3"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-04.3"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202608043WebsiteIntegrationV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-08-04.3/customer-portal-v1.json": {
      "get": {
        "summary": "Immutable Customer Portal OpenAPI release 2026-08-04.3",
        "description": "Immutable Customer Portal OpenAPI release 2026-08-04.3.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-04.3"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-04.3"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202608043CustomerPortalV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-08-05.1/website-integration-v1.json": {
      "get": {
        "summary": "Immutable Website Integration OpenAPI release 2026-08-05.1",
        "description": "Immutable Website Integration OpenAPI release 2026-08-05.1.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-05.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-05.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202608051WebsiteIntegrationV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-08-05.1/customer-portal-v1.json": {
      "get": {
        "summary": "Immutable Customer Portal OpenAPI release 2026-08-05.1",
        "description": "Immutable Customer Portal OpenAPI release 2026-08-05.1.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-05.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-05.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202608051CustomerPortalV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-08-05.2/website-integration-v1.json": {
      "get": {
        "summary": "Immutable Website Integration OpenAPI release 2026-08-05.2",
        "description": "Immutable Website Integration OpenAPI release 2026-08-05.2.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-05.2"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-05.2"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202608052WebsiteIntegrationV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-08-05.2/customer-portal-v1.json": {
      "get": {
        "summary": "Immutable Customer Portal OpenAPI release 2026-08-05.2",
        "description": "Immutable Customer Portal OpenAPI release 2026-08-05.2.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-05.2"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-05.2"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202608052CustomerPortalV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-08-10.1/website-integration-v1.json": {
      "get": {
        "summary": "Immutable Website Integration OpenAPI release 2026-08-10.1",
        "description": "Immutable Website Integration OpenAPI release 2026-08-10.1.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-10.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-10.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202608101WebsiteIntegrationV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-08-10.1/customer-portal-v1.json": {
      "get": {
        "summary": "Immutable Customer Portal OpenAPI release 2026-08-10.1",
        "description": "Immutable Customer Portal OpenAPI release 2026-08-10.1.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-10.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-10.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202608101CustomerPortalV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-08-14.1/website-integration-v1.json": {
      "get": {
        "summary": "Immutable Website Integration OpenAPI release 2026-08-14.1",
        "description": "Immutable Website Integration OpenAPI release 2026-08-14.1.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-14.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-14.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202608141WebsiteIntegrationV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-08-14.1/customer-portal-v1.json": {
      "get": {
        "summary": "Immutable Customer Portal OpenAPI release 2026-08-14.1",
        "description": "Immutable Customer Portal OpenAPI release 2026-08-14.1.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-14.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-14.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202608141CustomerPortalV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-08-19.1/website-integration-v1.json": {
      "get": {
        "summary": "Immutable Website Integration OpenAPI release 2026-08-19.1",
        "description": "Immutable Website Integration OpenAPI release 2026-08-19.1.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-19.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-19.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202608191WebsiteIntegrationV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-08-19.1/customer-portal-v1.json": {
      "get": {
        "summary": "Immutable Customer Portal OpenAPI release 2026-08-19.1",
        "description": "Immutable Customer Portal OpenAPI release 2026-08-19.1.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-19.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-19.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202608191CustomerPortalV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-08-19.2/website-integration-v1.json": {
      "get": {
        "summary": "Immutable Website Integration OpenAPI release 2026-08-19.2",
        "description": "Immutable Website Integration OpenAPI release 2026-08-19.2.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-19.2"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-19.2"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202608192WebsiteIntegrationV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-08-19.2/customer-portal-v1.json": {
      "get": {
        "summary": "Immutable Customer Portal OpenAPI release 2026-08-19.2",
        "description": "Immutable Customer Portal OpenAPI release 2026-08-19.2.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-19.2"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-19.2"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202608192CustomerPortalV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-08-20.1/website-integration-v1.json": {
      "get": {
        "summary": "Immutable Website Integration OpenAPI release 2026-08-20.1",
        "description": "Immutable Website Integration OpenAPI release 2026-08-20.1.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-20.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-20.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202608201WebsiteIntegrationV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-08-20.1/customer-portal-v1.json": {
      "get": {
        "summary": "Immutable Customer Portal OpenAPI release 2026-08-20.1",
        "description": "Immutable Customer Portal OpenAPI release 2026-08-20.1.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-20.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-20.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202608201CustomerPortalV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-08-20.2/website-integration-v1.json": {
      "get": {
        "summary": "Immutable Website Integration OpenAPI release 2026-08-20.2",
        "description": "Immutable Website Integration OpenAPI release 2026-08-20.2.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-20.2"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-20.2"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202608202WebsiteIntegrationV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-08-20.2/customer-portal-v1.json": {
      "get": {
        "summary": "Immutable Customer Portal OpenAPI release 2026-08-20.2",
        "description": "Immutable Customer Portal OpenAPI release 2026-08-20.2.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-20.2"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-20.2"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202608202CustomerPortalV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-08-22.2/website-integration-v1.json": {
      "get": {
        "summary": "Immutable Website Integration OpenAPI release 2026-08-22.2",
        "description": "Immutable Website Integration OpenAPI release 2026-08-22.2.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-22.2"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-22.2"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202608222WebsiteIntegrationV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-10-01.1/website-integration-v1.json": {
      "get": {
        "summary": "Immutable Website Integration OpenAPI release 2026-10-01.1",
        "description": "Immutable Website Integration OpenAPI release 2026-10-01.1.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-01.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-01.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202610011WebsiteIntegrationV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-10-02.1/website-integration-v1.json": {
      "get": {
        "summary": "Immutable Website Integration OpenAPI release 2026-10-02.1",
        "description": "Immutable Website Integration OpenAPI release 2026-10-02.1.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-02.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-02.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202610021WebsiteIntegrationV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-10-02.2/website-integration-v1.json": {
      "get": {
        "summary": "Immutable Website Integration OpenAPI release 2026-10-02.2",
        "description": "Immutable Website Integration OpenAPI release 2026-10-02.2.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-02.2"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-02.2"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202610022WebsiteIntegrationV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-10-02.3/website-integration-v1.json": {
      "get": {
        "summary": "Immutable Website Integration OpenAPI release 2026-10-02.3",
        "description": "Immutable Website Integration OpenAPI release 2026-10-02.3.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-02.3"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-02.3"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202610023WebsiteIntegrationV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-08-22.2/customer-portal-v1.json": {
      "get": {
        "summary": "Immutable Customer Portal OpenAPI release 2026-08-22.2",
        "description": "Immutable Customer Portal OpenAPI release 2026-08-22.2.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-22.2"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-08-22.2"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202608222CustomerPortalV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-10-01.1/customer-portal-v1.json": {
      "get": {
        "summary": "Immutable Customer Portal OpenAPI release 2026-10-01.1",
        "description": "Immutable Customer Portal OpenAPI release 2026-10-01.1.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-01.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-01.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202610011CustomerPortalV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-10-02.1/customer-portal-v1.json": {
      "get": {
        "summary": "Immutable Customer Portal OpenAPI release 2026-10-02.1",
        "description": "Immutable Customer Portal OpenAPI release 2026-10-02.1.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-02.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-02.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202610021CustomerPortalV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-10-02.2/customer-portal-v1.json": {
      "get": {
        "summary": "Immutable Customer Portal OpenAPI release 2026-10-02.2",
        "description": "Immutable Customer Portal OpenAPI release 2026-10-02.2.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-02.2"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-02.2"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202610022CustomerPortalV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-10-02.3/customer-portal-v1.json": {
      "get": {
        "summary": "Immutable Customer Portal OpenAPI release 2026-10-02.3",
        "description": "Immutable Customer Portal OpenAPI release 2026-10-02.3.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-02.3"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-02.3"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202610023CustomerPortalV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-10-02.4/website-integration-v1.json": {
      "get": {
        "summary": "Immutable Website Integration OpenAPI release 2026-10-02.4",
        "description": "Immutable Website Integration OpenAPI release 2026-10-02.4.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-02.4"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-02.4"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202610024WebsiteIntegrationV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-10-02.4/customer-portal-v1.json": {
      "get": {
        "summary": "Immutable Customer Portal OpenAPI release 2026-10-02.4",
        "description": "Immutable Customer Portal OpenAPI release 2026-10-02.4.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-02.4"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-02.4"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202610024CustomerPortalV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-10-04.1/website-integration-v1.json": {
      "get": {
        "summary": "Immutable Website Integration OpenAPI release 2026-10-04.1",
        "description": "Immutable Website Integration OpenAPI release 2026-10-04.1.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-04.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-04.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202610041WebsiteIntegrationV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-10-04.1/customer-portal-v1.json": {
      "get": {
        "summary": "Immutable Customer Portal OpenAPI release 2026-10-04.1",
        "description": "Immutable Customer Portal OpenAPI release 2026-10-04.1.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-04.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-04.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202610041CustomerPortalV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-10-09.1/website-integration-v1.json": {
      "get": {
        "summary": "Immutable Website Integration OpenAPI release 2026-10-09.1",
        "description": "Immutable Website Integration OpenAPI release 2026-10-09.1.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-09.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-09.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202610091WebsiteIntegrationV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-10-09.1/customer-portal-v1.json": {
      "get": {
        "summary": "Immutable Customer Portal OpenAPI release 2026-10-09.1",
        "description": "Immutable Customer Portal OpenAPI release 2026-10-09.1.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-09.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-09.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202610091CustomerPortalV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-10-12.1/website-integration-v1.json": {
      "get": {
        "summary": "Immutable Website Integration OpenAPI release 2026-10-12.1",
        "description": "Immutable Website Integration OpenAPI release 2026-10-12.1.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-12.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-12.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202610121WebsiteIntegrationV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    },
    "/api/v1/openapi/2026-10-12.1/customer-portal-v1.json": {
      "get": {
        "summary": "Immutable Customer Portal OpenAPI release 2026-10-12.1",
        "description": "Immutable Customer Portal OpenAPI release 2026-10-12.1.",
        "security": [],
        "responses": {
          "200": {
            "description": "Versionerad OpenAPI JSON",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-12.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "304": {
            "description": "Not Modified. The supplied If-None-Match value matches the current ETag.",
            "headers": {
              "X-Gridex-Contract-Version": {
                "description": "Revision of the OpenAPI document being fetched; business responses use x-contract-schema-version.",
                "schema": {
                  "type": "string",
                  "const": "2026-10-12.1"
                }
              },
              "X-Request-ID": {
                "$ref": "#/components/headers/RequestId"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "Vary": {
                "$ref": "#/components/headers/Vary"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Content-Type": {
                "$ref": "#/components/headers/ContentType"
              },
              "Content-Disposition": {
                "$ref": "#/components/headers/ContentDisposition"
              }
            }
          }
        },
        "x-required-scopes": [],
        "operationId": "getApiV1Openapi202610121CustomerPortalV1Json",
        "x-scope-mode": "all",
        "x-rate-limit-class": "read",
        "x-idempotency-required": false,
        "x-cache-policy": "public-immutable",
        "x-public-id-policy": "none"
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "Gridex API token"
      },
      "legacyApiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "x-api-key",
        "deprecated": true,
        "description": "Deprecated compatibility header. New integrations MUST use Authorization: Bearer <GRIDEX_API_KEY>. Sunset: 2026-10-31T23:59:59.000Z."
      }
    },
    "schemas": {
      "ErrorEnvelope": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "error",
          "request_id",
          "correlation_id",
          "contract_schema_version"
        ],
        "properties": {
          "error": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "code",
              "message",
              "retryable",
              "field",
              "blockers"
            ],
            "properties": {
              "code": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "stage": {
                "type": "string"
              },
              "field": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "hint": {
                "type": "string"
              },
              "retryable": {
                "type": "boolean"
              },
              "blockers": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ApiBlocker"
                }
              },
              "details": {
                "type": [
                  "object",
                  "array",
                  "string",
                  "number",
                  "boolean",
                  "null"
                ]
              }
            }
          },
          "request_id": {
            "type": "string"
          },
          "correlation_id": {
            "type": "string"
          },
          "contract_schema_version": {
            "type": "string",
            "const": "2026-10-09.1"
          }
        },
        "description": "Canonical error envelope. Business and provider failures use one nested error object; no parallel top-level aliases are emitted."
      },
      "TenantMeta": {
        "type": "object",
        "required": [
          "organization_reference",
          "api_version",
          "channel"
        ],
        "properties": {
          "organization_reference": {
            "type": "string",
            "pattern": "^organization_[A-Za-z0-9_-]{20,64}$",
            "description": "Stable opaque public reference for the organization associated with the authenticated API credential."
          },
          "api_version": {
            "const": "v1"
          },
          "channel": {
            "enum": [
              "website",
              "api"
            ]
          },
          "publication_revision": {
            "type": "integer",
            "minimum": 0
          },
          "publication_updated_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        }
      },
      "IntegrationContext": {
        "type": "object",
        "required": [
          "organization_reference",
          "api_client_reference",
          "api_version",
          "authoritative_identity",
          "contract_version",
          "configuration",
          "capabilities"
        ],
        "properties": {
          "organization_reference": {
            "type": "string",
            "pattern": "^organization_[A-Za-z0-9_-]{20,64}$",
            "description": "Stable opaque public reference for the organization associated with the authenticated API credential."
          },
          "api_client_reference": {
            "type": "string"
          },
          "api_version": {
            "const": "v1"
          },
          "authoritative_identity": {
            "const": "api_key"
          },
          "contract_version": {
            "const": "2026-10-09.1"
          },
          "configuration": {
            "type": "object",
            "required": [
              "required_environment_variables",
              "api_base_url",
              "authentication",
              "openapi_url",
              "application_reference_location"
            ],
            "properties": {
              "required_environment_variables": {
                "type": "array",
                "prefixItems": [
                  {
                    "const": "GRIDEX_API_KEY"
                  }
                ],
                "minItems": 1,
                "maxItems": 1
              },
              "api_base_url": {
                "const": "https://app.gridex.se/api/v1"
              },
              "authentication": {
                "type": "object",
                "required": [
                  "header",
                  "scheme",
                  "server_side_only"
                ],
                "properties": {
                  "header": {
                    "const": "Authorization"
                  },
                  "scheme": {
                    "const": "Bearer"
                  },
                  "server_side_only": {
                    "const": true
                  }
                }
              },
              "openapi_url": {
                "const": "https://app.gridex.se/api/v1/openapi/website-integration-v1.json"
              },
              "customer_portal_openapi_url": {
                "const": "https://app.gridex.se/api/v1/openapi/customer-portal-v1.json"
              },
              "application_reference_location": {
                "const": "top_level"
              }
            },
            "additionalProperties": false
          },
          "capabilities": {
            "type": "object",
            "required": [
              "website_checkout_ready",
              "customer_portal_ready",
              "complete_integration_ready",
              "missing_website_scopes",
              "missing_customer_portal_scopes",
              "missing_recommended_scopes"
            ],
            "properties": {
              "website_checkout_ready": {
                "type": "boolean"
              },
              "customer_portal_ready": {
                "type": "boolean"
              },
              "complete_integration_ready": {
                "type": "boolean",
                "description": "True when the configured website checkout and customer portal capabilities are ready for production use."
              },
              "required_website_scopes": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "missing_website_scopes": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "required_customer_portal_scopes": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "missing_customer_portal_scopes": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "recommended_scopes": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "missing_recommended_scopes": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "additionalProperties": false
          }
        }
      },
      "CustomerType": {
        "type": "string",
        "enum": [
          "private",
          "business"
        ],
        "description": "Canonical values. company is temporarily accepted as a deprecated alias for business until 2026-10-31."
      },
      "ApiPublicContract": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "offer_reference",
          "name",
          "description",
          "contract_type",
          "energy_direction",
          "customer_type",
          "price_options",
          "pricing",
          "legal",
          "valid_from",
          "valid_to",
          "channel"
        ],
        "properties": {
          "offer_reference": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "contract_type": {
            "type": "string",
            "enum": [
              "fixed",
              "variable_monthly",
              "variable_hourly",
              "variable_quarterly",
              "portfolio",
              "mixed"
            ]
          },
          "energy_direction": {
            "$ref": "#/components/schemas/EnergyDirection"
          },
          "customer_type": {
            "type": "string",
            "enum": [
              "private",
              "business",
              "both"
            ]
          },
          "price_options": {
            "type": "array",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/ContractPriceOption"
            }
          },
          "pricing": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "visibility",
              "calculation_components",
              "display_components",
              "calculation_contract",
              "summary_components"
            ],
            "properties": {
              "monthly_fee": {},
              "invoice_fee": {},
              "markup": {},
              "spot_markup": {},
              "variable_fee": {},
              "fixed_price": {},
              "area_pricing": {},
              "green_fee": {},
              "spot_share": {},
              "portfolio_share": {},
              "fixed_share": {},
              "public_price_text": {},
              "visibility": {},
              "price_areas": {},
              "vat_rate": {
                "description": "Decimal VAT fraction; 0.25 means 25%. Newly authored standard consumption prices use 0.25. Explicit production or exempt treatment and frozen historical values retain their recorded rate."
              },
              "market_price_responsibility": {},
              "calculation_contract": {},
              "interval_resolution": {},
              "energy_direction": {},
              "production_pricing": {},
              "base_components": {},
              "calculation_components": {},
              "components": {},
              "display_components": {},
              "summary_components": {},
              "electricity_certificate": {},
              "start_fee": {},
              "administration_fee": {},
              "break_fee": {},
              "portfolio_price": {},
              "portfolio_monthly_prices": {},
              "portfolio_method": {},
              "portfolio_indications": {},
              "portfolio_management_fee": {},
              "discount": {}
            }
          },
          "legal": {
            "$ref": "#/components/schemas/WebsiteLegalBlock"
          },
          "valid_from": {
            "type": [
              "string",
              "null"
            ]
          },
          "valid_to": {
            "type": [
              "string",
              "null"
            ]
          },
          "channel": {
            "type": "string",
            "enum": [
              "website",
              "api"
            ]
          }
        }
      },
      "PublicContract": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "offer_reference",
          "name",
          "contract_type",
          "energy_direction",
          "customer_type",
          "price_options",
          "pricing",
          "legal",
          "channel"
        ],
        "properties": {
          "id": {
            "type": "string",
            "deprecated": true,
            "description": "Deprecated compatibility alias. Contains the same stable external value as offer_reference and never a database UUID."
          },
          "offer_reference": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9_-]{2,99}$"
          },
          "contract_offer_id": {
            "type": "string",
            "deprecated": true,
            "description": "Deprecated compatibility alias. Contains the same stable external value as offer_reference and never a database UUID."
          },
          "publication_reference": {
            "type": "string",
            "deprecated": true,
            "description": "Deprecated compatibility alias. Contains the same stable external value as offer_reference and never a database UUID."
          },
          "offer_code": {},
          "code": {},
          "product_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": "string"
          },
          "public_name": {},
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "public_description": {},
          "contract_type": {
            "type": "string",
            "enum": [
              "fixed",
              "variable_monthly",
              "variable_hourly",
              "variable_quarterly",
              "portfolio",
              "mixed"
            ]
          },
          "energy_direction": {
            "$ref": "#/components/schemas/EnergyDirection"
          },
          "type": {},
          "billing_model": {},
          "area_pricing": {
            "type": "array",
            "deprecated": true,
            "description": "Deprecated presentation-only area pricing. Use top-level price_options[].area_prices for canonical commercial selection.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "price_area",
                "energy_price_ore_per_kwh",
                "unit",
                "vat_included",
                "vat_rate"
              ],
              "properties": {
                "price_area": {
                  "type": "string",
                  "enum": [
                    "SE1",
                    "SE2",
                    "SE3",
                    "SE4"
                  ]
                },
                "energy_price_ore_per_kwh": {
                  "type": "number"
                },
                "unit": {
                  "type": "string",
                  "const": "ore_per_kwh"
                },
                "vat_included": {
                  "type": "boolean"
                },
                "vat_rate": {
                  "type": "number",
                  "description": "Decimal VAT fraction; 0.25 means 25%. Newly authored standard consumption prices use 0.25. Explicit production or exempt treatment and frozen historical values retain their recorded rate."
                }
              }
            }
          },
          "customer_type": {
            "type": "string",
            "enum": [
              "private",
              "business",
              "both"
            ]
          },
          "customer_types": {},
          "production_pricing": {},
          "portfolio_price_ore_per_kwh": {},
          "portfolio_management_fee": {},
          "monthly_fee_sek": {},
          "invoice_fee_sek": {},
          "markup_ore_per_kwh": {},
          "spot_markup_ore_per_kwh": {},
          "variable_fee_ore_per_kwh": {},
          "fixed_price_ore_per_kwh": {},
          "green_fee_mode": {},
          "green_fee_value": {},
          "terms_version": {},
          "terms_url": {},
          "public_price_text": {},
          "binding_months": {},
          "notice_months": {},
          "website_cta_enabled": {},
          "price_areas": {},
          "automatic_renewal": {},
          "power_of_attorney_required": {},
          "vat_rate": {
            "description": "Decimal VAT fraction; 0.25 means 25%. Newly authored standard consumption prices use 0.25. Explicit production or exempt treatment and frozen historical values retain their recorded rate."
          },
          "mix": {},
          "withdrawal_version": {},
          "legal_versions": {
            "type": "array",
            "deprecated": true,
            "description": "Deprecated compatibility view of legal.module_versions. New clients must use legal.module_versions.",
            "items": {
              "$ref": "#/components/schemas/LegacyLegalVersion"
            }
          },
          "valid_from": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "valid_to": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "is_public": {},
          "is_active": {},
          "sort_order": {},
          "channel": {
            "type": "string",
            "const": "website"
          },
          "price_options": {
            "type": "array",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/ContractPriceOption"
            }
          },
          "pricing": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "visibility",
              "calculation_components",
              "display_components",
              "calculation_contract",
              "summary_components"
            ],
            "properties": {
              "monthly_fee": {},
              "invoice_fee": {},
              "markup": {},
              "spot_markup": {},
              "variable_fee": {},
              "fixed_price": {},
              "area_pricing": {},
              "green_fee": {},
              "spot_share": {},
              "portfolio_share": {},
              "fixed_share": {},
              "public_price_text": {},
              "visibility": {},
              "price_areas": {},
              "vat_rate": {
                "description": "Decimal VAT fraction; 0.25 means 25%. Newly authored standard consumption prices use 0.25. Explicit production or exempt treatment and frozen historical values retain their recorded rate."
              },
              "market_price_responsibility": {},
              "calculation_contract": {},
              "interval_resolution": {},
              "energy_direction": {},
              "production_pricing": {},
              "base_components": {},
              "calculation_components": {},
              "components": {},
              "display_components": {},
              "summary_components": {},
              "electricity_certificate": {},
              "start_fee": {},
              "administration_fee": {},
              "break_fee": {},
              "portfolio_price": {},
              "portfolio_monthly_prices": {},
              "portfolio_method": {},
              "portfolio_indications": {},
              "portfolio_management_fee": {},
              "discount": {}
            }
          },
          "pricing_snapshot": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "schema_version": {},
              "contract_type": {},
              "energy_direction": {},
              "customer_type": {},
              "price_areas": {},
              "valid_from": {},
              "valid_to": {},
              "binding_months": {},
              "notice_months": {},
              "automatic_renewal": {},
              "power_of_attorney_required": {},
              "base_components": {},
              "price_components": {},
              "display_price_components": {},
              "summary_price_components": {},
              "website_visibility": {},
              "market_price_responsibility": {},
              "calculation_contract": {},
              "portfolio_method": {},
              "portfolio_monthly_prices": {},
              "public_price_text": {},
              "vat_rate": {
                "description": "Decimal VAT fraction; 0.25 means 25%. Newly authored standard consumption prices use 0.25. Explicit production or exempt treatment and frozen historical values retain their recorded rate."
              },
              "vat_rate_percent": {
                "description": "VAT percentage; 25 means 25%, corresponding to vat_rate 0.25. Explicit production or exempt treatment and frozen historical values retain their recorded rate."
              },
              "interval_resolution": {},
              "production": {}
            }
          },
          "legal": {
            "$ref": "#/components/schemas/WebsiteLegalBlock"
          }
        }
      },
      "QuoteRequest": {
        "type": "object",
        "required": [
          "offer_reference",
          "customer_type",
          "price_area",
          "annual_consumption_kwh",
          "start_date"
        ],
        "properties": {
          "offer_reference": {
            "type": "string"
          },
          "customer_type": {
            "type": "string",
            "enum": [
              "private",
              "business",
              "company"
            ],
            "description": "company is a deprecated alias for business."
          },
          "price_area": {
            "type": "string",
            "enum": [
              "SE1",
              "SE2",
              "SE3",
              "SE4"
            ]
          },
          "annual_consumption_kwh": {
            "type": "number",
            "exclusiveMinimum": 0
          },
          "start_date": {
            "type": "string",
            "format": "date"
          },
          "grid_area_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "postal_code": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false
      },
      "Quote": {
        "type": "object",
        "required": [
          "quote_reference",
          "offer_reference",
          "valid_until",
          "input"
        ],
        "properties": {
          "quote_reference": {
            "type": "string"
          },
          "offer_reference": {
            "type": "string"
          },
          "valid_until": {
            "type": "string",
            "format": "date-time"
          },
          "status": {
            "type": "string"
          },
          "selected_area_price": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/FixedAreaPrice"
              },
              {
                "type": "null"
              }
            ]
          },
          "input": {
            "type": "object",
            "additionalProperties": true
          },
          "estimate": {
            "type": "object",
            "additionalProperties": true
          },
          "lines": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "pricing": {
            "type": "object",
            "additionalProperties": true
          }
        },
        "additionalProperties": true
      },
      "QuoteValidationRequest": {
        "type": "object",
        "required": [
          "quote_reference",
          "offer_reference",
          "customer_type",
          "resolution_id",
          "annual_consumption_kwh",
          "start_date",
          "price_option_reference",
          "invoice_delivery_method",
          "selected_component_references",
          "site_count"
        ],
        "properties": {
          "quote_reference": {
            "type": "string"
          },
          "offer_reference": {
            "type": "string"
          },
          "customer_type": {
            "$ref": "#/components/schemas/CustomerType"
          },
          "resolution_id": {
            "type": "string",
            "format": "uuid"
          },
          "annual_consumption_kwh": {
            "type": "number",
            "exclusiveMinimum": 0
          },
          "start_date": {
            "type": "string",
            "format": "date"
          },
          "price_area": {
            "enum": [
              "SE1",
              "SE2",
              "SE3",
              "SE4"
            ]
          },
          "grid_area_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "postal_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "price_option_reference": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9_-]{2,99}$"
          },
          "invoice_delivery_method": {
            "type": "string",
            "enum": [
              "email",
              "e_invoice",
              "paper",
              "direct_debit"
            ]
          },
          "selected_component_references": {
            "type": "array",
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          },
          "site_count": {
            "type": "integer",
            "minimum": 1
          },
          "application_number": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "LegalAcceptances": {
        "type": "array",
        "minItems": 1,
        "items": {
          "$ref": "#/components/schemas/LegalAcceptance"
        }
      },
      "CustomerApplicationRequest": {
        "type": "object",
        "required": [
          "offer_reference",
          "customer",
          "site",
          "annual_consumption_kwh",
          "legal_acceptances",
          "quote_reference",
          "resolution_id",
          "legal_bundle_version",
          "price_option_reference",
          "invoice_delivery_method",
          "selected_component_references",
          "site_count",
          "settlement"
        ],
        "properties": {
          "external_customer_id": {
            "type": "string",
            "minLength": 1,
            "description": "organization-stable external customer identity."
          },
          "offer_reference": {
            "type": "string",
            "description": "Canonical opak offer_reference. Måste skickas på top-level."
          },
          "quote_reference": {
            "type": "string",
            "description": "Obligatorisk canonical Gridex-quote. Fältet ligger alltid på top-level; inget konfigurerbart referensplaceringsläge finns eller behövs."
          },
          "annual_consumption_kwh": {
            "type": "number",
            "exclusiveMinimum": 0
          },
          "price_area": {
            "enum": [
              "SE1",
              "SE2",
              "SE3",
              "SE4"
            ],
            "description": "Deprecated klientpåstående. Gridex använder price_area från resolution_id och returnerar konflikt vid mismatch.",
            "deprecated": true
          },
          "grid_area": {
            "type": [
              "string",
              "null"
            ]
          },
          "postal_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "start_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "customer": {
            "type": "object",
            "required": [
              "customer_type",
              "email"
            ],
            "properties": {
              "customer_type": {
                "$ref": "#/components/schemas/CustomerType"
              },
              "email": {
                "type": "string",
                "format": "email"
              },
              "first_name": {
                "type": "string"
              },
              "last_name": {
                "type": "string"
              },
              "company_name": {
                "type": "string"
              },
              "personal_number": {
                "type": "string"
              },
              "org_number": {
                "type": "string"
              },
              "phone": {
                "type": "string"
              },
              "invoice_email": {
                "type": "string",
                "format": "email"
              },
              "billing_street": {
                "type": "string"
              },
              "billing_postal_code": {
                "type": "string"
              },
              "billing_city": {
                "type": "string"
              },
              "billing_country": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "site": {
            "type": "object",
            "properties": {
              "facility_id": {
                "type": "string"
              },
              "site_name": {
                "type": "string"
              },
              "site_type": {
                "type": "string"
              },
              "street": {
                "type": "string"
              },
              "postal_code": {
                "type": "string"
              },
              "city": {
                "type": "string"
              },
              "country": {
                "type": "string"
              },
              "price_area_code": {
                "enum": [
                  "SE1",
                  "SE2",
                  "SE3",
                  "SE4"
                ]
              },
              "grid_area_code": {
                "type": "string"
              },
              "grid_owner_id": {
                "type": "string",
                "format": "uuid"
              },
              "current_supplier_name": {
                "type": "string"
              },
              "current_supplier_org_number": {
                "type": "string"
              },
              "current_supplier_ediel_id": {
                "type": "string"
              },
              "current_supplier_unknown": {
                "type": "boolean"
              },
              "annual_consumption_kwh": {
                "type": "number"
              },
              "move_in_date": {
                "type": "string",
                "format": "date"
              }
            },
            "additionalProperties": false
          },
          "metering_point": {
            "type": "object",
            "properties": {
              "metering_point_id": {
                "type": "string"
              },
              "site_facility_id": {
                "type": "string"
              },
              "reading_frequency": {
                "type": "string"
              },
              "measurement_type": {
                "type": "string"
              },
              "price_area_code": {
                "enum": [
                  "SE1",
                  "SE2",
                  "SE3",
                  "SE4"
                ]
              },
              "grid_area_code": {
                "type": "string"
              },
              "grid_owner_id": {
                "type": "string",
                "format": "uuid"
              },
              "start_date": {
                "type": "string",
                "format": "date"
              },
              "installation_date": {
                "type": "string",
                "format": "date"
              }
            },
            "additionalProperties": false
          },
          "legal_acceptances": {
            "$ref": "#/components/schemas/LegalAcceptances"
          },
          "powerOfAttorney": {
            "$ref": "#/components/schemas/PowerOfAttorneyInput"
          },
          "external_customer_reference": {
            "type": "string",
            "minLength": 1,
            "description": "Alias for external_customer_id. Preserved while Gridex assigns or reuses the canonical customer_number."
          },
          "resolution_id": {
            "type": "string",
            "format": "uuid",
            "description": "Samma organization-scoped Gridex-resolution som användes när quote skapades. Fältet ligger alltid på top-level."
          },
          "contract": {
            "type": "object",
            "description": "Kompletterande start- och avtalsuppgifter. Lägg inte offer_reference, quote_reference eller resolution_id här.",
            "properties": {
              "requested_start_mode": {
                "enum": [
                  "earliest_possible",
                  "specific_date"
                ]
              },
              "requested_start_date": {
                "type": "string",
                "format": "date"
              }
            },
            "additionalProperties": false
          },
          "customer_portal_user_id": {
            "type": "string",
            "format": "uuid",
            "description": "Optional verified organization-portal user UUID. Must be supplied together with auth_user_id and must match it."
          },
          "auth_user_id": {
            "type": "string",
            "format": "uuid",
            "description": "Optional verified organization-portal user UUID. Must be supplied together with auth_user_id and must match it."
          },
          "legal_bundle_version": {
            "type": "string"
          },
          "price_option_reference": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9_-]{2,99}$"
          },
          "invoice_delivery_method": {
            "type": "string",
            "enum": [
              "email",
              "e_invoice",
              "paper",
              "direct_debit"
            ]
          },
          "selected_component_references": {
            "type": "array",
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^[a-z0-9][a-z0-9_-]{2,99}$"
            }
          },
          "site_count": {
            "type": "integer",
            "minimum": 1
          },
          "settlement": {
            "$ref": "#/components/schemas/WebsiteQuoteSettlement"
          }
        },
        "additionalProperties": false,
        "allOf": [
          {
            "anyOf": [
              {
                "required": [
                  "external_customer_id"
                ]
              },
              {
                "required": [
                  "external_customer_reference"
                ]
              }
            ]
          }
        ],
        "description": "Customer application for one authenticated organization API client. auth_user_id and customer_portal_user_id are optional as a pair when the organization policy is post_auth_allowed; when either is supplied both must be the same verified UUID.",
        "x-canonical-reference-location": "top_level",
        "dependentRequired": {
          "auth_user_id": [
            "customer_portal_user_id"
          ],
          "customer_portal_user_id": [
            "auth_user_id"
          ]
        }
      },
      "PublicResourceId": {
        "type": "string",
        "format": "uuid",
        "description": "Opaque, organization-bound public resource identifier. It has no business meaning and must not be used outside the authenticated organization context."
      },
      "WebsiteSupplierSwitchState": {
        "type": "object",
        "required": [
          "request_id",
          "status",
          "can_create_request",
          "can_dispatch",
          "blockers",
          "next_action"
        ],
        "properties": {
          "request_id": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/PublicResourceId"
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "not_created",
              "created"
            ]
          },
          "can_create_request": {
            "type": "boolean"
          },
          "can_dispatch": {
            "type": "boolean",
            "description": "Dispatch readiness is customer-specific and is never inferred from area resolution alone."
          },
          "blockers": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "next_action": {
            "type": "string",
            "enum": [
              "create_supplier_switch_request",
              "await_supplier_switch_processing",
              "resolve_switch_blockers"
            ]
          }
        },
        "additionalProperties": false
      },
      "WebsiteApplicationNextAction": {
        "type": "object",
        "properties": {
          "code": {
            "type": [
              "string",
              "null"
            ]
          },
          "message": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false
      },
      "WebsiteApplicationCommunicationItem": {
        "type": "object",
        "properties": {
          "event_type": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "occurred_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "WebsiteApplicationCommunication": {
        "type": "object",
        "required": [
          "pending",
          "source_of_truth",
          "triggered",
          "queued",
          "sent",
          "failed"
        ],
        "properties": {
          "pending": {
            "type": "boolean"
          },
          "source_of_truth": {
            "type": "string",
            "const": "communication_logs"
          },
          "triggered": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WebsiteApplicationCommunicationItem"
            }
          },
          "queued": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WebsiteApplicationCommunicationItem"
            }
          },
          "sent": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WebsiteApplicationCommunicationItem"
            }
          },
          "failed": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WebsiteApplicationCommunicationItem"
            }
          }
        },
        "additionalProperties": false
      },
      "WebsiteCustomerApplicationData": {
        "type": "object",
        "required": [
          "missing_fields",
          "blocking_reasons",
          "grid_owner_verification_issues",
          "warnings",
          "supplier_switch",
          "selected_component_references",
          "mandatory_component_references",
          "conditional_component_references",
          "application_number",
          "checkout"
        ],
        "properties": {
          "customer_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "application_number": {
            "type": "string"
          },
          "external_customer_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "external_customer_reference": {
            "type": [
              "string",
              "null"
            ]
          },
          "contract_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "contract_status": {
            "type": [
              "string",
              "null"
            ]
          },
          "offer_reference": {
            "type": [
              "string",
              "null"
            ]
          },
          "quote_reference": {
            "type": [
              "string",
              "null"
            ]
          },
          "quote_valid_until": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "quote_bound": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "status": {
            "type": [
              "string",
              "null"
            ]
          },
          "created_customer": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "next_step": {
            "type": [
              "string",
              "null"
            ]
          },
          "requested_start_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "confirmed_start_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "actual_start_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "requested_start_mode": {
            "type": [
              "string",
              "null"
            ]
          },
          "calculated_earliest_start_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "grid_area_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "price_area_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "resolution_status": {
            "type": [
              "string",
              "null"
            ]
          },
          "resolution_confidence": {
            "type": [
              "number",
              "null"
            ]
          },
          "grid_owner_verification_status": {
            "type": [
              "string",
              "null"
            ]
          },
          "can_request_grid_owner_information": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "can_send_agreement_confirmation": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "can_activate_customer": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "signed_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "withdrawal_deadline_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Stored withdrawal deadline. For newly signed qualifying private distance agreements, this is the end of the fourteenth calendar day after the acceptance date in Europe/Stockholm. Use the returned stored timestamp; previously frozen agreements retain their recorded deadline. Null means no deadline is applicable or recorded."
          },
          "signature_snapshot_sha256": {
            "type": [
              "string",
              "null"
            ]
          },
          "workflow_state": {
            "type": [
              "string",
              "null"
            ]
          },
          "missing_fields": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "blocking_reasons": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "grid_owner_verification_issues": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "next_action": {
            "$ref": "#/components/schemas/WebsiteApplicationNextAction"
          },
          "communication": {
            "$ref": "#/components/schemas/WebsiteApplicationCommunication"
          },
          "supplier_switch": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "request_reference",
              "status",
              "can_create_request",
              "can_dispatch",
              "blockers",
              "next_action"
            ],
            "properties": {
              "request_reference": {
                "type": [
                  "string",
                  "null"
                ],
                "pattern": "^[a-z][a-z0-9_]{1,31}_[A-Za-z0-9_-]{20,64}$"
              },
              "status": {
                "type": "string",
                "enum": [
                  "created",
                  "not_created"
                ]
              },
              "can_create_request": {
                "type": "boolean"
              },
              "can_dispatch": {
                "type": "boolean"
              },
              "blockers": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "next_action": {
                "type": "string"
              }
            }
          },
          "power_of_attorney": {
            "type": "object",
            "required": [
              "status"
            ],
            "properties": {
              "status": {
                "type": "string",
                "enum": [
                  "signed",
                  "missing"
                ]
              }
            },
            "additionalProperties": false
          },
          "energy_direction": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/EnergyDirection"
              },
              {
                "type": "null"
              }
            ]
          },
          "price_option_reference": {
            "type": [
              "string",
              "null"
            ]
          },
          "area_price_reference": {
            "type": [
              "string",
              "null"
            ]
          },
          "invoice_delivery_method": {
            "type": [
              "string",
              "null"
            ]
          },
          "site_count": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 1
          },
          "selected_component_references": {
            "type": "array",
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          },
          "mandatory_component_references": {
            "type": "array",
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          },
          "conditional_component_references": {
            "type": "array",
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          },
          "customer_reference": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^[a-z][a-z0-9_]{1,31}_[A-Za-z0-9_-]{20,64}$"
          },
          "application_reference": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^[a-z][a-z0-9_]{1,31}_[A-Za-z0-9_-]{20,64}$"
          },
          "facility_reference": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^[a-z][a-z0-9_]{1,31}_[A-Za-z0-9_-]{20,64}$"
          },
          "metering_point_reference": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^[a-z][a-z0-9_]{1,31}_[A-Za-z0-9_-]{20,64}$"
          },
          "contract_reference": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^[a-z][a-z0-9_]{1,31}_[A-Za-z0-9_-]{20,64}$"
          },
          "checkout": {
            "$ref": "#/components/schemas/WebsiteCheckoutResult"
          }
        },
        "additionalProperties": false,
        "description": "Explicit public DTO. Internal price-plan, publication, portal-identity, provider-connection and contract-price-snapshot identifiers are never exposed."
      },
      "WebsiteCustomerApplicationResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "request_id",
          "contract_schema_version"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/WebsiteCustomerApplicationData"
          },
          "request_id": {
            "type": "string"
          },
          "correlation_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "contract_schema_version": {
            "type": "string",
            "const": "2026-10-09.1"
          }
        }
      },
      "DiagnosticReadiness": {
        "type": "object",
        "required": [
          "canonical_graph_consistent",
          "forward_publication_link_valid",
          "reverse_legacy_link_valid",
          "company_chain_valid",
          "tenant_assignment_valid",
          "channel_valid",
          "source_offer_consistent",
          "pricing_ready",
          "legal_ready",
          "invoice_fee_ready",
          "publication_active",
          "application_acceptance_ready"
        ],
        "properties": {
          "canonical_graph_consistent": {
            "type": "boolean"
          },
          "forward_publication_link_valid": {
            "type": "boolean"
          },
          "reverse_legacy_link_valid": {
            "type": "boolean"
          },
          "company_chain_valid": {
            "type": "boolean"
          },
          "tenant_assignment_valid": {
            "type": "boolean"
          },
          "channel_valid": {
            "type": "boolean"
          },
          "source_offer_consistent": {
            "type": "boolean"
          },
          "pricing_ready": {
            "type": "boolean"
          },
          "legal_ready": {
            "type": "boolean"
          },
          "invoice_fee_ready": {
            "type": "boolean"
          },
          "publication_active": {
            "type": "boolean"
          },
          "application_acceptance_ready": {
            "type": "boolean"
          }
        }
      },
      "PublicationChangedWebhook": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "event_id",
          "delivery_id",
          "event_type",
          "created_at",
          "organization_reference",
          "aggregate",
          "data",
          "contract_schema_version"
        ],
        "properties": {
          "event_id": {
            "type": "string",
            "pattern": "^event_[a-f0-9]{32}$"
          },
          "delivery_id": {
            "type": "string",
            "pattern": "^delivery_[a-f0-9]{32}$"
          },
          "event_type": {
            "type": "string",
            "const": "contracts.publication.changed"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "organization_reference": {
            "type": "string",
            "pattern": "^organization_[A-Za-z0-9_-]{20,64}$",
            "description": "Stable opaque public reference for the organization associated with the authenticated API credential."
          },
          "environment": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "test",
              "production",
              null
            ]
          },
          "aggregate": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "type",
              "reference"
            ],
            "properties": {
              "type": {
                "type": "string",
                "const": "contract_publication"
              },
              "reference": {
                "type": "string"
              }
            }
          },
          "customer": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "customer_reference",
              "customer_number"
            ],
            "properties": {
              "customer_reference": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "customer_number": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "data": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "channel",
              "publication_revision",
              "revision_token",
              "reason",
              "timestamp"
            ],
            "properties": {
              "channel": {
                "type": "string",
                "enum": [
                  "website",
                  "api",
                  "internal",
                  "phone",
                  "partner"
                ]
              },
              "publication_revision": {
                "type": "integer",
                "minimum": 1
              },
              "revision_token": {
                "type": "string"
              },
              "reason": {
                "type": "string"
              },
              "timestamp": {
                "type": "string",
                "format": "date-time"
              }
            }
          },
          "contract_schema_version": {
            "type": "string",
            "const": "2026-10-09.1"
          }
        }
      },
      "EnergyAreaResolveRequest": {
        "type": "object",
        "properties": {
          "street": {
            "type": [
              "string",
              "null"
            ]
          },
          "street_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "postal_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ],
            "default": "SE"
          },
          "grid_area_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "facility_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "metering_point_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "requested_start_mode": {
            "type": [
              "string",
              "null"
            ]
          },
          "requested_start_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          }
        },
        "additionalProperties": false,
        "anyOf": [
          {
            "required": [
              "postal_code"
            ]
          },
          {
            "required": [
              "grid_area_code"
            ]
          },
          {
            "required": [
              "facility_id"
            ]
          },
          {
            "required": [
              "metering_point_id"
            ]
          }
        ]
      },
      "EnergyAreaResolution": {
        "$ref": "#/components/schemas/WebsiteEnergyAreaResolution",
        "deprecated": true,
        "description": "Compatibility schema name. Use WebsiteEnergyAreaResolution."
      },
      "SwitchStatus": {
        "type": "object",
        "required": [
          "application_number",
          "application_status",
          "switch",
          "next_step",
          "blocking_reasons",
          "requested_start_date",
          "confirmed_start_date",
          "actual_start_date"
        ],
        "properties": {
          "application_number": {
            "type": "string"
          },
          "application_status": {
            "type": "string"
          },
          "switch": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "object",
                "required": [
                  "switch_reference",
                  "status",
                  "lifecycle_blocked",
                  "events"
                ],
                "properties": {
                  "switch_reference": {
                    "type": "string",
                    "pattern": "^switch_"
                  },
                  "status": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "requested_start_date": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "format": "date"
                  },
                  "submitted_at": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "format": "date-time"
                  },
                  "completed_at": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "format": "date-time"
                  },
                  "failed_at": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "format": "date-time"
                  },
                  "failure_reason": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "paused_at": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "format": "date-time"
                  },
                  "pause_reason": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "lifecycle_blocked": {
                    "type": "boolean"
                  },
                  "lifecycle_block_source": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "updated_at": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "format": "date-time"
                  },
                  "events": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "event_type",
                        "event_status",
                        "message",
                        "created_at"
                      ],
                      "properties": {
                        "event_type": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "event_status": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "message": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "created_at": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "format": "date-time"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": false
              }
            ]
          },
          "next_step": {
            "type": [
              "string",
              "null"
            ]
          },
          "blocking_reasons": {
            "type": "array",
            "items": {}
          },
          "requested_start_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "confirmed_start_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "actual_start_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          }
        },
        "additionalProperties": false
      },
      "WebsiteVisibilityMode": {
        "type": "string",
        "enum": [
          "visible",
          "hidden",
          "summary_only"
        ],
        "description": "Presentation only. Hidden components remain available to the organization calculation engine."
      },
      "CalculationInclusion": {
        "type": "string",
        "enum": [
          "included",
          "excluded",
          "conditional"
        ],
        "description": "Whether the component participates in the calculation. Independent of website visibility."
      },
      "PricingComponent": {
        "type": "object",
        "required": [
          "component_code",
          "amount",
          "unit",
          "calculation_inclusion",
          "website_visibility"
        ],
        "properties": {
          "component_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "component_reference": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9_-]{2,99}$"
          },
          "selection_policy": {
            "type": "string",
            "enum": [
              "mandatory",
              "customer_optional",
              "admin_optional",
              "conditional"
            ]
          },
          "lifecycle": {
            "type": "string",
            "enum": [
              "recurring",
              "per_invoice",
              "per_site",
              "once_per_contract",
              "once_per_site",
              "annual",
              "consumption_based",
              "event_only"
            ]
          },
          "component_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "amount": {
            "type": "number"
          },
          "unit": {
            "type": "string"
          },
          "calculation_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "calculation_base": {
            "type": [
              "string",
              "null"
            ]
          },
          "vat_applicable": {
            "type": "boolean"
          },
          "calculation_inclusion": {
            "$ref": "#/components/schemas/CalculationInclusion"
          },
          "website_visibility": {
            "$ref": "#/components/schemas/WebsiteVisibilityMode"
          },
          "website_card_visible": {
            "type": "boolean",
            "deprecated": true,
            "description": "Compatibility boolean. Use website_visibility."
          }
        },
        "additionalProperties": true
      },
      "ContractPriceValue": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "amount": {
            "type": "number"
          },
          "unit": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "vat_included": {
            "type": "boolean"
          },
          "vat_rate": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal VAT fraction; 0.25 means 25%. Newly authored standard consumption prices use 0.25. Explicit production or exempt treatment and frozen historical values retain their recorded rate."
          },
          "calculation_inclusion": {
            "$ref": "#/components/schemas/CalculationInclusion"
          },
          "website_visibility": {
            "$ref": "#/components/schemas/WebsiteVisibilityMode"
          }
        },
        "additionalProperties": true
      },
      "FixedAreaPrice": {
        "type": "object",
        "required": [
          "price_area",
          "energy_price_ore_per_kwh",
          "unit"
        ],
        "properties": {
          "price_area": {
            "type": "string",
            "enum": [
              "SE1",
              "SE2",
              "SE3",
              "SE4"
            ]
          },
          "energy_price_ore_per_kwh": {
            "type": "number",
            "minimum": 0
          },
          "unit": {
            "const": "ore_per_kwh"
          },
          "vat_included": {
            "type": "boolean"
          },
          "vat_rate": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal VAT fraction; 0.25 means 25%. Newly authored standard consumption prices use 0.25. Explicit production or exempt treatment and frozen historical values retain their recorded rate."
          }
        },
        "additionalProperties": false
      },
      "ContractPriceOption": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "price_option_reference",
          "option_code",
          "customer_name",
          "contract_type",
          "customer_type",
          "binding_months",
          "notice_months",
          "auto_renew_enabled",
          "renewal_term_months",
          "price_type",
          "resolution",
          "currency",
          "unit",
          "fixed_price",
          "markup",
          "monthly_fee",
          "is_default",
          "default",
          "selection_required",
          "valid_from",
          "valid_to",
          "earliest_start_date",
          "latest_start_date",
          "area_prices"
        ],
        "properties": {
          "price_option_reference": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9_-]{2,99}$"
          },
          "option_code": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9_-]{2,99}$"
          },
          "customer_name": {
            "type": "string"
          },
          "contract_type": {
            "type": "string",
            "enum": [
              "fixed",
              "variable_monthly",
              "variable_hourly",
              "variable_quarterly",
              "portfolio",
              "mixed"
            ]
          },
          "customer_type": {
            "type": "string",
            "enum": [
              "private",
              "business",
              "both"
            ]
          },
          "binding_months": {
            "type": "integer",
            "minimum": 0
          },
          "notice_months": {
            "type": "integer",
            "minimum": 0
          },
          "auto_renew_enabled": {
            "type": "boolean"
          },
          "renewal_term_months": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 1
          },
          "price_type": {
            "type": "string",
            "enum": [
              "fixed",
              "variable_monthly",
              "variable_hourly",
              "variable_quarterly",
              "portfolio",
              "mixed"
            ]
          },
          "resolution": {
            "type": "string",
            "enum": [
              "monthly",
              "hourly",
              "quarterly"
            ]
          },
          "currency": {
            "type": "string",
            "const": "SEK"
          },
          "unit": {
            "type": "string",
            "const": "ore_per_kwh"
          },
          "fixed_price": {
            "type": [
              "number",
              "null"
            ]
          },
          "markup": {
            "type": [
              "number",
              "null"
            ]
          },
          "monthly_fee": {
            "type": [
              "number",
              "null"
            ]
          },
          "is_default": {
            "type": "boolean",
            "description": "Canonical source of truth for whether this price option is the default."
          },
          "default": {
            "type": "boolean",
            "deprecated": true,
            "description": "Deprecated compatibility alias for is_default. Always identical to is_default."
          },
          "selection_required": {
            "type": "boolean"
          },
          "valid_from": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "valid_to": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "earliest_start_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "latest_start_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "area_prices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContractPriceOptionAreaPrice"
            }
          }
        }
      },
      "WebsiteQuoteRequest": {
        "type": "object",
        "required": [
          "offer_reference",
          "customer_type",
          "resolution_id",
          "annual_consumption_kwh",
          "start_date",
          "invoice_delivery_method",
          "selected_component_references",
          "site_count"
        ],
        "properties": {
          "offer_reference": {
            "type": "string"
          },
          "customer_type": {
            "type": "string",
            "enum": [
              "private",
              "business",
              "company"
            ],
            "description": "company is a deprecated alias for business."
          },
          "annual_consumption_kwh": {
            "type": "number",
            "exclusiveMinimum": 0
          },
          "start_date": {
            "type": "string",
            "format": "date"
          },
          "resolution_id": {
            "type": "string",
            "format": "uuid",
            "description": "organization-scoped Gridex-resolution. Dess price_area och grid_area_code är canonical."
          },
          "price_option_reference": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9_-]{2,99}$"
          },
          "invoice_delivery_method": {
            "type": "string",
            "enum": [
              "email",
              "e_invoice",
              "paper",
              "direct_debit"
            ]
          },
          "selected_component_references": {
            "type": "array",
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          },
          "site_count": {
            "type": "integer",
            "minimum": 1
          }
        },
        "additionalProperties": false
      },
      "WebsiteQuoteData": {
        "type": "object",
        "required": [
          "quote_reference",
          "offer_reference",
          "valid_until",
          "input",
          "price_option_reference",
          "area_price_reference",
          "invoice_delivery_method",
          "selected_component_references",
          "mandatory_component_references",
          "conditional_component_references",
          "site_count",
          "offer"
        ],
        "properties": {
          "quote_reference": {
            "type": "string"
          },
          "offer_reference": {
            "type": "string"
          },
          "valid_until": {
            "type": "string",
            "format": "date-time",
            "description": "Compatibility and immutable audit metadata. An issued customer-visible website quote is not rejected merely because this timestamp passes."
          },
          "status": {
            "type": "string"
          },
          "selected_area_price": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/FixedAreaPrice"
              },
              {
                "type": "null"
              }
            ]
          },
          "input": {
            "type": "object",
            "additionalProperties": true
          },
          "estimate": {
            "type": "object",
            "additionalProperties": true
          },
          "lines": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "pricing": {
            "type": "object",
            "additionalProperties": true
          },
          "resolution": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": true
          },
          "market_reference": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/MarketReference"
              },
              {
                "type": "null"
              }
            ]
          },
          "is_binding": {
            "type": "boolean",
            "description": "True only when the energy price itself is fixed at signup. False for monthly market, hourly, quarter-hour, portfolio and mixed products."
          },
          "market_data_timestamp": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "energy_direction": {
            "$ref": "#/components/schemas/EnergyDirection"
          },
          "production_pricing": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ProductionPricing"
              },
              {
                "type": "null"
              }
            ]
          },
          "price_option_reference": {
            "type": [
              "string",
              "null"
            ]
          },
          "area_price_reference": {
            "type": [
              "string",
              "null"
            ]
          },
          "invoice_delivery_method": {
            "type": "string",
            "enum": [
              "email",
              "e_invoice",
              "paper",
              "direct_debit"
            ]
          },
          "selected_component_references": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "mandatory_component_references": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "conditional_component_references": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "resolved_base_components": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "resolved_price_components": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PricingComponent"
            }
          },
          "pricing_interval": {},
          "estimate_method": {},
          "source_period": {},
          "source_window": {},
          "market_sources": {},
          "warnings": {},
          "assumptions": {},
          "pricing_snapshot_schema_version": {},
          "snapshot_schema": {},
          "site_count": {},
          "pricing_snapshot": {},
          "offer": {
            "type": "object",
            "additionalProperties": true
          },
          "settlement": {
            "$ref": "#/components/schemas/WebsiteQuoteSettlement"
          }
        },
        "additionalProperties": false
      },
      "WebsiteQuoteResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "request_id",
          "contract_schema_version"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/WebsiteQuoteData"
          },
          "request_id": {
            "type": "string"
          },
          "correlation_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "contract_schema_version": {
            "type": "string",
            "const": "2026-10-09.1"
          }
        }
      },
      "WebsiteQuoteValidationRequest": {
        "$ref": "#/components/schemas/QuoteValidationRequest"
      },
      "WebsiteEnergyAreaResolveRequest": {
        "type": "object",
        "properties": {
          "street": {
            "type": [
              "string",
              "null"
            ]
          },
          "street_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "postal_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ],
            "default": "SE"
          },
          "grid_area_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "facility_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "metering_point_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "requested_start_mode": {
            "type": [
              "string",
              "null"
            ]
          },
          "requested_start_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          }
        },
        "additionalProperties": false,
        "anyOf": [
          {
            "required": [
              "postal_code"
            ]
          },
          {
            "required": [
              "grid_area_code"
            ]
          },
          {
            "required": [
              "facility_id"
            ]
          },
          {
            "required": [
              "metering_point_id"
            ]
          }
        ]
      },
      "LifecycleBlocker": {
        "type": "object",
        "required": [
          "code",
          "message",
          "retryable"
        ],
        "properties": {
          "code": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "retryable": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "EnergyResolutionCapabilities": {
        "type": "object",
        "required": [
          "pricing_ready",
          "quote_ready",
          "facility_lookup_ready",
          "switch_request_creatable",
          "switch_dispatch_ready"
        ],
        "properties": {
          "pricing_ready": {
            "type": "boolean"
          },
          "quote_ready": {
            "type": "boolean"
          },
          "facility_lookup_ready": {
            "type": "boolean"
          },
          "switch_request_creatable": {
            "type": "boolean"
          },
          "switch_dispatch_ready": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "EnergyResolutionBlockers": {
        "type": "object",
        "required": [
          "pricing",
          "quote",
          "facility_lookup",
          "switch_creation",
          "switch_dispatch"
        ],
        "properties": {
          "pricing": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LifecycleBlocker"
            }
          },
          "quote": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LifecycleBlocker"
            }
          },
          "facility_lookup": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LifecycleBlocker"
            }
          },
          "switch_creation": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LifecycleBlocker"
            }
          },
          "switch_dispatch": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LifecycleBlocker"
            }
          }
        },
        "additionalProperties": false
      },
      "WebsiteEnergyAreaResolution": {
        "type": "object",
        "required": [
          "resolution_id",
          "price_area",
          "resolution_status",
          "confidence",
          "capabilities",
          "blockers",
          "retryable",
          "warnings",
          "price_area_assurance"
        ],
        "properties": {
          "resolution_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "price_area": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "SE1",
              "SE2",
              "SE3",
              "SE4",
              null
            ]
          },
          "grid_area_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "grid_area_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "grid_owner_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "resolution_status": {
            "type": "string"
          },
          "confidence": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "next_required_action": {
            "type": [
              "string",
              "null"
            ]
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "resolved_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "expires_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "resolver_version": {
            "type": [
              "string",
              "null"
            ]
          },
          "geodata_version": {
            "type": [
              "string",
              "null"
            ]
          },
          "source": {
            "type": "object",
            "additionalProperties": true
          },
          "capabilities": {
            "$ref": "#/components/schemas/EnergyResolutionCapabilities"
          },
          "blockers": {
            "$ref": "#/components/schemas/EnergyResolutionBlockers"
          },
          "conflict_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "error_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "retryable": {
            "type": "boolean"
          },
          "price_area_assurance": {
            "$ref": "#/components/schemas/PriceAreaAssurance"
          }
        },
        "additionalProperties": false,
        "description": "organization-bound Gridex resolution with independent price-area assurance and readiness for pricing, quote, facility lookup, switch creation and switch dispatch. A single-area postal consensus may allow pricing/quote while facility and EDIFACT actions remain blocked."
      },
      "WebsiteEnergyAreaResolveResponse": {
        "type": "object",
        "required": [
          "data",
          "request_id",
          "correlation_id",
          "retryable",
          "contract_schema_version"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/WebsiteEnergyAreaResolution"
          },
          "request_id": {
            "type": "string"
          },
          "correlation_id": {
            "type": "string"
          },
          "retryable": {
            "type": "boolean"
          },
          "contract_schema_version": {
            "type": "string",
            "const": "2026-10-09.1"
          }
        },
        "additionalProperties": false
      },
      "MarketReference": {
        "type": "object",
        "required": [
          "provider",
          "price_area",
          "reference_type",
          "reference_period",
          "price_sek_per_kwh",
          "price_ore_per_kwh",
          "price_ex_vat_sek_per_kwh",
          "price_ex_vat_ore_per_kwh",
          "requested_days",
          "included_days",
          "source_as_of",
          "generated_at",
          "stale_after",
          "effective_stale_at",
          "unit",
          "includes_vat",
          "includes_supplier_fees",
          "includes_grid_fees",
          "is_indicative",
          "is_stale",
          "fallback_used"
        ],
        "properties": {
          "provider": {
            "type": "string"
          },
          "price_area": {
            "type": "string",
            "enum": [
              "SE1",
              "SE2",
              "SE3",
              "SE4"
            ]
          },
          "reference_type": {
            "type": "string",
            "const": "preview"
          },
          "reference_period": {
            "type": "string"
          },
          "period_start": {
            "type": [
              "string",
              "null"
            ]
          },
          "period_end": {
            "type": [
              "string",
              "null"
            ]
          },
          "as_of": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "source_currency": {
            "type": "string",
            "default": "SEK"
          },
          "unit": {
            "type": "string",
            "enum": [
              "sek_per_kwh"
            ]
          },
          "includes_vat": {
            "type": "boolean"
          },
          "includes_supplier_fees": {
            "type": "boolean"
          },
          "includes_grid_fees": {
            "type": "boolean"
          },
          "is_indicative": {
            "type": "boolean"
          },
          "is_stale": {
            "type": "boolean"
          },
          "fallback_used": {
            "type": "boolean"
          },
          "fallback_reason": {
            "type": [
              "string",
              "null"
            ]
          },
          "source_checksum": {
            "type": [
              "string",
              "null"
            ]
          },
          "price_sek_per_kwh": {
            "type": "number",
            "description": "Canonical market reference in SEK/kWh. May be negative."
          },
          "price_ore_per_kwh": {
            "type": "number",
            "description": "Canonical market reference in öre/kWh. Equals price_sek_per_kwh × 100 and may be negative."
          },
          "price_ex_vat_sek_per_kwh": {
            "type": "number"
          },
          "price_ex_vat_ore_per_kwh": {
            "type": "number"
          },
          "requested_days": {
            "type": "integer",
            "minimum": 1
          },
          "included_days": {
            "type": "integer",
            "minimum": 1
          },
          "source_as_of": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp derived from the newest underlying provider evidence."
          },
          "generated_at": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the preview calculation was generated."
          },
          "stale_after": {
            "type": "string",
            "format": "date-time"
          },
          "effective_stale_at": {
            "type": "string",
            "format": "date-time",
            "description": "Minimum of the global preview limit and organization max_age_minutes applied to source_as_of."
          },
          "source_resolution": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": true,
        "description": "Self-contained market reference used by the Gridex quote. preview is indicative and never final settlement evidence. requested_days and included_days expose window completeness. A partial fallback is returned only when organization policy allows it."
      },
      "PowerOfAttorneyInput": {
        "type": "object",
        "required": [
          "accepted",
          "scope",
          "signerName",
          "signerIdentityNumber",
          "method",
          "textVersionId"
        ],
        "properties": {
          "accepted": {
            "type": "boolean",
            "const": true
          },
          "scope": {
            "type": "array",
            "minItems": 1,
            "maxItems": 2,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "enum": [
                "supplier_switch",
                "facility_information_lookup"
              ]
            },
            "contains": {
              "const": "supplier_switch"
            },
            "minContains": 1,
            "description": "Exact customer-signed scopes. supplier_switch is mandatory; facility_information_lookup may be added. Gridex never widens the scope after acceptance."
          },
          "signerName": {
            "type": "string",
            "minLength": 1
          },
          "signerIdentityNumber": {
            "type": "string",
            "minLength": 6,
            "description": "Signerande persons identitet. Hanteras som skyddsvärd personuppgift."
          },
          "method": {
            "type": "string",
            "enum": [
              "website_acceptance",
              "bankid",
              "electronic_signature",
              "manual_signature"
            ]
          },
          "acceptedAt": {
            "type": "string",
            "format": "date-time"
          },
          "textVersionId": {
            "type": "string",
            "format": "uuid",
            "description": "Use primary_document_id from the power_of_attorney requirement in the exact accepted legal bundle of offer_reference. Any other document id returns 409 power_of_attorney_offer_version_mismatch and nothing is stored. This is the legal document version the customer accepted and must match exactly; it is unrelated to the API documentation revision."
          },
          "ipAddress": {
            "type": "string"
          },
          "userAgent": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "description": "Strukturerad fullmakt som krävs för externally_sendable nätägarkommunikation. Bare consents.power_of_attorney=true är endast juridisk acceptans och kan inte skickas externt."
      },
      "CustomerApplicationStatus": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "application_number",
          "status",
          "stage",
          "supplier_switch_status",
          "missing_customer_action",
          "automation",
          "communication",
          "checkout",
          "webhook"
        ],
        "properties": {
          "application_number": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "processing",
              "accepted",
              "needs_customer_information",
              "rejected",
              "failed",
              "completed"
            ]
          },
          "stage": {
            "type": "string"
          },
          "customer_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "contract_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "contract_status": {
            "type": [
              "string",
              "null"
            ]
          },
          "signed_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "withdrawal_deadline_at": {
            "type": [
              "string",
              "null"
            ],
            "description": "Stored withdrawal deadline. For newly signed qualifying private distance agreements, this is the end of the fourteenth calendar day after the acceptance date in Europe/Stockholm. Use the returned stored timestamp; previously frozen agreements retain their recorded deadline. Null means no deadline is applicable or recorded."
          },
          "signature_snapshot_sha256": {
            "type": [
              "string",
              "null"
            ]
          },
          "supplier_switch_status": {
            "type": "string"
          },
          "supply_status": {
            "type": [
              "string",
              "null"
            ]
          },
          "requested_start_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "confirmed_start_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "missing_customer_action": {
            "type": "boolean"
          },
          "next_step": {
            "type": [
              "string",
              "null"
            ]
          },
          "blocking_reason": {
            "type": [
              "string",
              "null"
            ]
          },
          "automation": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "status",
              "attempts",
              "max_attempts"
            ],
            "properties": {
              "status": {
                "type": "string"
              },
              "attempts": {
                "type": "integer",
                "minimum": 0
              },
              "max_attempts": {
                "type": "integer",
                "minimum": 0
              },
              "next_retry_at": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "completed_at": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "last_error": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "communication": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "pending",
              "source_of_truth",
              "triggered",
              "queued",
              "sent",
              "failed"
            ],
            "properties": {
              "pending": {
                "type": "boolean"
              },
              "source_of_truth": {
                "type": "string",
                "const": "tenant_email_outbox+communication_logs"
              },
              "triggered": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "event_type",
                    "status"
                  ],
                  "properties": {
                    "event_type": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "status": {
                      "type": "string"
                    },
                    "occurred_at": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "message": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                }
              },
              "queued": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "event_type",
                    "status"
                  ],
                  "properties": {
                    "event_type": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "status": {
                      "type": "string"
                    },
                    "occurred_at": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "message": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                }
              },
              "sent": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "event_type",
                    "status"
                  ],
                  "properties": {
                    "event_type": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "status": {
                      "type": "string"
                    },
                    "occurred_at": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "message": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                }
              },
              "failed": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "event_type",
                    "status"
                  ],
                  "properties": {
                    "event_type": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "status": {
                      "type": "string"
                    },
                    "occurred_at": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "message": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "checkout": {
            "$ref": "#/components/schemas/WebsiteCheckoutResult"
          },
          "webhook": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "status",
              "fanout_status",
              "queued",
              "sent",
              "failed",
              "attempts"
            ],
            "properties": {
              "status": {
                "type": "string",
                "enum": [
                  "not_triggered",
                  "not_configured",
                  "pending",
                  "sent",
                  "failed"
                ]
              },
              "fanout_status": {
                "type": "string",
                "enum": [
                  "not_started",
                  "pending",
                  "completed",
                  "failed"
                ]
              },
              "queued": {
                "type": "integer",
                "minimum": 0
              },
              "sent": {
                "type": "integer",
                "minimum": 0
              },
              "failed": {
                "type": "integer",
                "minimum": 0
              },
              "attempts": {
                "type": "integer",
                "minimum": 0
              },
              "next_retry_at": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "last_error": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "updated_at": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "CurrentMarketPriceRequest": {
        "type": "object",
        "required": [
          "resolution_id"
        ],
        "properties": {
          "resolution_id": {
            "type": "string",
            "format": "uuid"
          },
          "price_area": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "SE1",
              "SE2",
              "SE3",
              "SE4",
              null
            ],
            "description": "Optional assertion only. It cannot override the canonical area stored on resolution_id."
          }
        },
        "additionalProperties": false
      },
      "CurrentMarketPrice": {
        "type": "object",
        "required": [
          "provider",
          "resolution_id",
          "price_area",
          "reference_type",
          "resolution",
          "selected_resolution",
          "available_resolutions",
          "time_start",
          "time_end",
          "price_sek_per_kwh",
          "price_ore_per_kwh",
          "price_ex_vat_sek_per_kwh",
          "price_ex_vat_ore_per_kwh",
          "includes_vat",
          "includes_supplier_fees",
          "includes_grid_fees",
          "is_indicative",
          "is_stale",
          "fallback_used",
          "source_as_of",
          "next_update_at"
        ],
        "properties": {
          "provider": {
            "type": "string"
          },
          "resolution_id": {
            "type": "string",
            "format": "uuid"
          },
          "price_area": {
            "type": "string",
            "enum": [
              "SE1",
              "SE2",
              "SE3",
              "SE4"
            ]
          },
          "reference_type": {
            "type": "string",
            "const": "current_interval"
          },
          "resolution": {
            "type": "string",
            "enum": [
              "hourly",
              "quarterly"
            ],
            "deprecated": true,
            "description": "Compatibility alias. Use selected_resolution."
          },
          "selected_resolution": {
            "type": "string",
            "enum": [
              "hourly",
              "quarterly"
            ]
          },
          "available_resolutions": {
            "type": "array",
            "uniqueItems": true,
            "items": {
              "type": "string",
              "enum": [
                "hourly",
                "quarterly"
              ]
            }
          },
          "time_start": {
            "type": "string",
            "format": "date-time"
          },
          "time_end": {
            "type": "string",
            "format": "date-time"
          },
          "price_sek_per_kwh": {
            "type": "number",
            "description": "Current spot price in SEK/kWh, excluding VAT and all supplier/grid fees."
          },
          "price_ore_per_kwh": {
            "type": "number",
            "description": "Current spot price in öre/kWh. Equals price_sek_per_kwh × 100."
          },
          "price_ex_vat_sek_per_kwh": {
            "type": "number",
            "description": "May be negative. Decimal value is returned without local organization rounding."
          },
          "price_ex_vat_ore_per_kwh": {
            "type": "number",
            "description": "May be negative. Decimal value is returned without local organization rounding."
          },
          "includes_vat": {
            "type": "boolean",
            "const": false
          },
          "includes_supplier_fees": {
            "type": "boolean",
            "const": false
          },
          "includes_grid_fees": {
            "type": "boolean",
            "const": false
          },
          "is_indicative": {
            "type": "boolean",
            "const": false
          },
          "is_stale": {
            "type": "boolean"
          },
          "fallback_used": {
            "type": "boolean",
            "const": false,
            "description": "The current interval endpoint never substitutes a historical or cross-area fallback."
          },
          "source_as_of": {
            "type": "string",
            "format": "date-time"
          },
          "next_update_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "CurrentMarketPriceResponse": {
        "type": "object",
        "required": [
          "data",
          "request_id",
          "contract_schema_version"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CurrentMarketPrice"
          },
          "request_id": {
            "type": "string",
            "format": "uuid"
          },
          "contract_schema_version": {
            "type": "string",
            "const": "2026-10-09.1"
          }
        },
        "additionalProperties": false
      },
      "MarketPriceErrorEnvelope": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "error",
          "request_id",
          "correlation_id",
          "contract_schema_version"
        ],
        "properties": {
          "error": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "code",
              "message",
              "retryable",
              "field",
              "blockers"
            ],
            "properties": {
              "code": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "stage": {
                "type": "string"
              },
              "field": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "hint": {
                "type": "string"
              },
              "retryable": {
                "type": "boolean"
              },
              "blockers": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ApiBlocker"
                }
              },
              "details": {
                "type": [
                  "object",
                  "array",
                  "string",
                  "number",
                  "boolean",
                  "null"
                ]
              }
            }
          },
          "request_id": {
            "type": "string"
          },
          "correlation_id": {
            "type": "string"
          },
          "contract_schema_version": {
            "type": "string",
            "const": "2026-10-09.1"
          }
        },
        "description": "Canonical error envelope. Business and provider failures use one nested error object; no parallel top-level aliases are emitted."
      },
      "EnergyDirection": {
        "type": "string",
        "enum": [
          "consumption",
          "production"
        ],
        "description": "Canonical economic direction. Consumption creates ordinary supply/invoice flows; production creates compensation settlement flows."
      },
      "ProductionPricing": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "enabled",
          "compensation_model",
          "resolution",
          "settlement_mode",
          "billing_direction",
          "metering_point_role"
        ],
        "properties": {
          "enabled": {
            "type": "boolean",
            "const": true
          },
          "compensation_model": {
            "type": "string",
            "enum": [
              "fixed_compensation"
            ]
          },
          "resolution": {
            "type": "string",
            "enum": [
              "monthly",
              "hourly",
              "quarterly"
            ]
          },
          "deduction_ore_per_kwh": {
            "type": [
              "number",
              "null"
            ]
          },
          "premium_ore_per_kwh": {
            "type": [
              "number",
              "null"
            ]
          },
          "fixed_compensation_ore_per_kwh": {
            "type": [
              "number",
              "null"
            ]
          },
          "compensation_ore_per_kwh": {
            "type": [
              "number",
              "null"
            ]
          },
          "compensation_sek_per_kwh": {
            "type": [
              "number",
              "null"
            ]
          },
          "settlement_mode": {
            "type": "string",
            "enum": [
              "credit_invoice",
              "self_billing"
            ]
          },
          "billing_direction": {
            "type": "string",
            "enum": [
              "credit_invoice",
              "self_billing"
            ]
          },
          "vat_rate": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal VAT fraction; 0.25 means 25%. Newly authored standard consumption prices use 0.25. Explicit production or exempt treatment and frozen historical values retain their recorded rate."
          },
          "vat_rate_percent": {
            "type": [
              "number",
              "null"
            ],
            "description": "VAT percentage; 25 means 25%, corresponding to vat_rate 0.25. Explicit production or exempt treatment and frozen historical values retain their recorded rate."
          },
          "vat_treatment": {
            "type": [
              "string",
              "null"
            ]
          },
          "metering_point_role": {
            "type": "string",
            "const": "production"
          }
        },
        "description": "Explicit production compensation contract. Runtime currently supports fixed compensation; additional compensation models require a future contract-version bump."
      },
      "ApiBlocker": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "code",
          "message"
        ],
        "properties": {
          "code": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "field": {
            "type": [
              "string",
              "null"
            ]
          },
          "resource_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "resource_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "count": {
            "type": [
              "integer",
              "null"
            ]
          },
          "recommended_action": {
            "type": [
              "string",
              "null"
            ]
          },
          "metadata": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": true
          }
        }
      },
      "ApiError": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "error",
          "request_id",
          "correlation_id",
          "contract_schema_version"
        ],
        "properties": {
          "error": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "code",
              "message",
              "retryable",
              "field",
              "blockers"
            ],
            "properties": {
              "code": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "stage": {
                "type": "string"
              },
              "field": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "hint": {
                "type": "string"
              },
              "retryable": {
                "type": "boolean"
              },
              "blockers": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ApiBlocker"
                }
              },
              "details": {
                "type": [
                  "object",
                  "array",
                  "string",
                  "number",
                  "boolean",
                  "null"
                ]
              }
            }
          },
          "request_id": {
            "type": "string"
          },
          "correlation_id": {
            "type": "string"
          },
          "contract_schema_version": {
            "type": "string",
            "const": "2026-10-09.1"
          }
        },
        "description": "Canonical error envelope. Business and provider failures use one nested error object; no parallel top-level aliases are emitted."
      },
      "LegalBundleDocument": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "legal_bundle_version_id",
          "document_reference",
          "module_key",
          "version",
          "title",
          "published_at",
          "content_sha256",
          "origin",
          "url"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "legal_bundle_version_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "document_reference": {
            "type": "string"
          },
          "module_key": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "published_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "content_sha256": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^[a-fA-F0-9]{64}$"
          },
          "origin": {
            "type": "string"
          },
          "url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          }
        }
      },
      "WebsiteLegalBlock": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "required_modules",
          "module_versions",
          "immutable",
          "legal_bundle_reference",
          "legal_bundle_version_id",
          "power_of_attorney_version_id",
          "customer_documents"
        ],
        "properties": {
          "terms_version": {
            "type": [
              "string",
              "null"
            ]
          },
          "privacy_policy_version": {
            "type": [
              "string",
              "null"
            ]
          },
          "withdrawal_version": {
            "type": [
              "string",
              "null"
            ]
          },
          "power_of_attorney_version": {
            "type": [
              "string",
              "null"
            ]
          },
          "price_terms_version": {
            "type": [
              "string",
              "null"
            ]
          },
          "legal_bundle_version_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Immutable legal bundle version locked into the publication snapshot. The property is always present; historical explicitly approved exceptions may be null."
          },
          "terms_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          },
          "privacy_policy_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          },
          "withdrawal_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          },
          "price_terms_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          },
          "power_of_attorney_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          },
          "terms_required": {
            "type": "boolean"
          },
          "privacy_policy_required": {
            "type": "boolean"
          },
          "withdrawal_required": {
            "type": "boolean"
          },
          "price_terms_required": {
            "type": "boolean"
          },
          "power_of_attorney_required": {
            "type": "boolean"
          },
          "immutable": {
            "type": "boolean",
            "const": true,
            "description": "Published legal snapshots are immutable."
          },
          "required_modules": {
            "type": "array",
            "minItems": 1,
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          },
          "module_versions": {
            "type": "array",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/LegalBundleDocument"
            }
          },
          "terms_document_reference": {
            "type": [
              "string",
              "null"
            ]
          },
          "privacy_policy_document_reference": {
            "type": [
              "string",
              "null"
            ]
          },
          "withdrawal_document_reference": {
            "type": [
              "string",
              "null"
            ]
          },
          "price_terms_document_reference": {
            "type": [
              "string",
              "null"
            ]
          },
          "power_of_attorney_document_reference": {
            "type": [
              "string",
              "null"
            ]
          },
          "legal_bundle_reference": {
            "type": [
              "string",
              "null"
            ]
          },
          "customer_documents": {
            "type": "array",
            "minItems": 1,
            "maxItems": 3,
            "items": {
              "$ref": "#/components/schemas/CustomerLegalDocument"
            },
            "description": "Customer-facing grouped documents. Render these instead of one checkbox per module_version. module_versions remains the immutable evidence manifest."
          },
          "power_of_attorney_version_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          }
        }
      },
      "WebsiteLegalBundle": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "offer_reference",
          "bundle_version",
          "required_types",
          "present_types",
          "organization",
          "legal",
          "complete",
          "missing_types",
          "requirements"
        ],
        "properties": {
          "offer_reference": {
            "type": "string"
          },
          "bundle_version": {
            "type": "string",
            "description": "Opaque immutable legal bundle version."
          },
          "required_types": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "present_types": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "organization": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "name",
              "org_number",
              "brand_name",
              "slug"
            ],
            "properties": {
              "name": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "org_number": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "brand_name": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "slug": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "legal": {
            "$ref": "#/components/schemas/WebsiteLegalBlock"
          },
          "complete": {
            "type": "boolean"
          },
          "missing_types": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "requirements": {
            "type": "array",
            "minItems": 1,
            "maxItems": 3,
            "items": {
              "$ref": "#/components/schemas/WebsiteLegalRequirement"
            },
            "description": "Customer-facing acceptance surface. Private consumer offers normally contain agreement, power_of_attorney and withdrawal. Business offers omit withdrawal when no withdrawal modules are published."
          }
        }
      },
      "WebsiteLegalBundleResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "data",
          "request_id",
          "correlation_id",
          "contract_schema_version"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/WebsiteLegalBundle"
          },
          "request_id": {
            "type": "string"
          },
          "correlation_id": {
            "type": "string"
          },
          "contract_schema_version": {
            "type": "string",
            "const": "2026-10-09.1"
          }
        }
      },
      "LegalAcceptance": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "requirement_code",
          "document_reference",
          "document_version",
          "document_hash",
          "accepted",
          "accepted_at"
        ],
        "properties": {
          "requirement_code": {
            "type": "string",
            "description": "Use agreement, power_of_attorney or withdrawal from legal-bundle requirements. Exact module keys remain accepted only for backward compatibility."
          },
          "document_reference": {
            "type": "string"
          },
          "document_version": {
            "type": "string"
          },
          "document_hash": {
            "type": "string",
            "pattern": "^[a-fA-F0-9]{64}$"
          },
          "accepted": {
            "type": "boolean",
            "const": true
          },
          "accepted_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "WebsitePortfolioPriceData": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "offer_reference",
          "method",
          "historical_final_prices",
          "market_price_responsibility",
          "calculator_market_price_supplied_by_gridex",
          "final_billing_rule"
        ],
        "properties": {
          "offer_reference": {
            "type": "string"
          },
          "method": {
            "type": "string"
          },
          "historical_final_prices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PortfolioHistoricalFinalPrice"
            }
          },
          "market_price_responsibility": {
            "type": "string",
            "const": "gridex_quote"
          },
          "calculator_market_price_supplied_by_gridex": {
            "type": "boolean",
            "const": true
          },
          "final_billing_rule": {
            "type": "string",
            "const": "locked_settlement_only"
          }
        }
      },
      "PortfolioHistoricalFinalPrice": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "period_month",
          "price_area_code",
          "amount",
          "unit",
          "vat_included",
          "status"
        ],
        "properties": {
          "period_month": {
            "type": "string",
            "format": "date"
          },
          "price_area_code": {
            "type": "string",
            "enum": [
              "SE1",
              "SE2",
              "SE3",
              "SE4"
            ]
          },
          "amount": {
            "type": "number"
          },
          "unit": {
            "type": "string",
            "const": "ore_per_kwh"
          },
          "vat_included": {
            "type": "boolean"
          },
          "status": {
            "type": "string"
          }
        }
      },
      "WebsiteQuoteValidationData": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "valid",
          "quote_reference",
          "offer_reference",
          "valid_until",
          "status",
          "resolution_id",
          "resolver_version",
          "geodata_version",
          "market_reference",
          "energy_direction",
          "selected_area_price",
          "price_option_reference",
          "area_price_reference",
          "invoice_delivery_method",
          "selected_component_references",
          "mandatory_component_references",
          "conditional_component_references",
          "site_count"
        ],
        "properties": {
          "valid": {
            "type": "boolean"
          },
          "quote_reference": {
            "type": "string"
          },
          "offer_reference": {
            "type": "string"
          },
          "valid_until": {
            "type": "string",
            "format": "date-time"
          },
          "status": {
            "type": "string"
          },
          "resolution_id": {
            "type": "string",
            "format": "uuid",
            "description": "Server-issued customer-site energy and location resolution identifier scoped to the API credential organization. Identifies the price-area resolution used by market-price, quote and validation; it is unrelated to portal login identity and does not grant grid-owner dispatch authority."
          },
          "resolver_version": {
            "type": [
              "string",
              "null"
            ]
          },
          "geodata_version": {
            "type": [
              "string",
              "null"
            ]
          },
          "market_reference": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MarketReference"
              },
              {
                "type": "null"
              }
            ],
            "description": "Market reference for market-linked pricing; null for a fixed-price quote or pricing source without a market reference."
          },
          "energy_direction": {
            "$ref": "#/components/schemas/EnergyDirection"
          },
          "price_option_reference": {
            "type": [
              "string",
              "null"
            ]
          },
          "area_price_reference": {
            "type": [
              "string",
              "null"
            ]
          },
          "invoice_delivery_method": {
            "type": "string",
            "enum": [
              "email",
              "e_invoice",
              "paper",
              "direct_debit"
            ]
          },
          "selected_component_references": {
            "type": "array",
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          },
          "mandatory_component_references": {
            "type": "array",
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          },
          "conditional_component_references": {
            "type": "array",
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          },
          "site_count": {
            "type": "integer",
            "minimum": 1
          },
          "selected_area_price": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": false,
            "properties": {
              "price_area": {
                "type": [
                  "string",
                  "null"
                ],
                "enum": [
                  "SE1",
                  "SE2",
                  "SE3",
                  "SE4",
                  null
                ]
              },
              "energy_price_ore_per_kwh": {
                "type": "number"
              },
              "unit": {
                "type": "string",
                "const": "ore_per_kwh"
              },
              "price_option_reference": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "area_price_reference": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "price_area",
              "energy_price_ore_per_kwh",
              "unit",
              "price_option_reference",
              "area_price_reference"
            ]
          }
        }
      },
      "WebsiteCustomerEventIdentity": {
        "type": "object",
        "additionalProperties": false,
        "required": [],
        "properties": {
          "external_customer_id": {
            "type": "string"
          },
          "customer_number": {
            "type": "string"
          },
          "auth_user_id": {
            "type": "string",
            "format": "uuid",
            "description": "Optional verified organization-portal user UUID. Must be supplied together with auth_user_id and must match it."
          },
          "customer_portal_user_id": {
            "type": "string",
            "format": "uuid",
            "description": "Optional verified organization-portal user UUID. Must be supplied together with auth_user_id and must match it."
          },
          "email": {
            "type": "string",
            "format": "email"
          }
        }
      },
      "WebsiteCustomerEventRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "event_type",
          "event_reference",
          "occurred_at",
          "customer",
          "subject",
          "data"
        ],
        "properties": {
          "event_type": {
            "type": "string",
            "pattern": "^customer\\.[a-z0-9_]+$"
          },
          "event_reference": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "occurred_at": {
            "type": "string",
            "format": "date-time"
          },
          "customer": {
            "type": "object",
            "additionalProperties": false,
            "required": [],
            "properties": {
              "external_customer_id": {
                "type": "string"
              },
              "customer_number": {
                "type": "string"
              },
              "auth_user_id": {
                "type": "string",
                "format": "uuid",
                "description": "Optional verified organization-portal user UUID. Must be supplied together with auth_user_id and must match it."
              },
              "customer_portal_user_id": {
                "type": "string",
                "format": "uuid",
                "description": "Optional verified organization-portal user UUID. Must be supplied together with auth_user_id and must match it."
              },
              "email": {
                "type": "string",
                "format": "email"
              }
            }
          },
          "subject": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "type": "string"
              },
              "reference": {
                "type": "string"
              }
            }
          },
          "data": {
            "type": "object"
          },
          "metadata": {
            "type": "object"
          }
        }
      },
      "WebsiteCustomerEventData": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "event_reference",
          "event_resource_reference",
          "event_type",
          "customer_reference",
          "status",
          "occurred_at",
          "replayed"
        ],
        "properties": {
          "event_reference": {
            "type": "string"
          },
          "event_resource_reference": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^[a-z][a-z0-9_]{1,31}_[A-Za-z0-9_-]{20,64}$"
          },
          "event_type": {
            "type": "string"
          },
          "customer_reference": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "type": "string",
            "const": "accepted"
          },
          "occurred_at": {
            "type": "string",
            "format": "date-time"
          },
          "replayed": {
            "type": "boolean"
          }
        }
      },
      "OpsDomainWebhookEnvelope": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "event_id",
          "event_type",
          "occurred_at",
          "organization_reference",
          "data"
        ],
        "properties": {
          "event_id": {
            "type": "string",
            "format": "uuid"
          },
          "event_type": {
            "type": "string",
            "enum": [
              "invoice.paid",
              "invoice.disputed",
              "supply.started",
              "metering_values.updated",
              "facility_data.verified"
            ]
          },
          "occurred_at": {
            "type": "string",
            "format": "date-time"
          },
          "organization_reference": {
            "type": "string",
            "pattern": "^organization_[A-Za-z0-9_-]{20,64}$",
            "description": "Stable opaque public reference for the organization associated with the authenticated API credential."
          },
          "subject_reference": {
            "type": [
              "string",
              "null"
            ]
          },
          "data": {
            "type": "object"
          }
        }
      },
      "OpenApiReleaseManifest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "release_version",
          "website_openapi_version",
          "customer_portal_openapi_version",
          "staff_openapi_version",
          "runtime_contract_version",
          "guide_version",
          "released_at",
          "generated_at",
          "build_commit",
          "compatibility_classification",
          "deprecated_features",
          "minimum_tenant_integration_version",
          "specifications"
        ],
        "properties": {
          "release_version": {
            "type": "string",
            "const": "2026-10-12.1"
          },
          "website_openapi_version": {
            "type": "string",
            "const": "2026-10-12.1"
          },
          "customer_portal_openapi_version": {
            "type": "string",
            "const": "2026-10-12.1"
          },
          "staff_openapi_version": {
            "type": "string",
            "const": "2026-10-12.1"
          },
          "runtime_contract_version": {
            "type": "string",
            "const": "2026-10-09.1"
          },
          "guide_version": {
            "type": "string",
            "const": "2026-10-12.1"
          },
          "released_at": {
            "type": "string",
            "format": "date-time"
          },
          "generated_at": {
            "type": "string",
            "format": "date-time"
          },
          "build_commit": {
            "type": "string"
          },
          "compatibility_classification": {
            "type": "string",
            "enum": [
              "backward-compatible",
              "breaking-client-update-required",
              "breaking"
            ]
          },
          "deprecated_features": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "feature",
                "replacement",
                "sunset_at"
              ],
              "properties": {
                "feature": {
                  "type": "string"
                },
                "replacement": {
                  "type": "string"
                },
                "sunset_at": {
                  "type": "string",
                  "format": "date-time"
                }
              }
            }
          },
          "minimum_tenant_integration_version": {
            "type": "string",
            "const": "2026-10-02.3"
          },
          "specifications": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "website",
              "customer_portal",
              "staff"
            ],
            "properties": {
              "website": {
                "$ref": "#/components/schemas/OpenApiReleaseSpecification"
              },
              "customer_portal": {
                "$ref": "#/components/schemas/OpenApiReleaseSpecification"
              },
              "staff": {
                "$ref": "#/components/schemas/OpenApiReleaseSpecification"
              }
            }
          }
        }
      },
      "OpenApiReleaseSpecification": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "contract_name",
          "contract_version",
          "url",
          "immutable_url",
          "sha256",
          "compatibility"
        ],
        "properties": {
          "contract_name": {
            "type": "string"
          },
          "contract_version": {
            "type": "string",
            "const": "2026-10-12.1"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "immutable_url": {
            "type": "string",
            "format": "uri"
          },
          "sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "compatibility": {
            "type": "string",
            "enum": [
              "backward-compatible",
              "breaking-client-update-required",
              "breaking"
            ]
          }
        }
      },
      "WebsiteLegalRequirement": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "requirement_code",
          "document_type",
          "title",
          "description",
          "required",
          "acceptance_mode",
          "document_reference",
          "document_version",
          "document_hash",
          "document_url",
          "legal_bundle_version_id",
          "module_keys",
          "source_document_ids",
          "primary_document_id",
          "sort_order"
        ],
        "properties": {
          "requirement_code": {
            "type": "string",
            "enum": [
              "agreement",
              "power_of_attorney",
              "withdrawal"
            ]
          },
          "document_type": {
            "type": "string",
            "enum": [
              "agreement",
              "power_of_attorney",
              "withdrawal"
            ]
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "required": {
            "type": "boolean",
            "const": true
          },
          "acceptance_mode": {
            "type": "string",
            "enum": [
              "accept",
              "acknowledge"
            ]
          },
          "document_reference": {
            "type": "string"
          },
          "document_version": {
            "type": "string"
          },
          "document_hash": {
            "type": "string",
            "pattern": "^[a-fA-F0-9]{64}$"
          },
          "document_url": {
            "type": "string",
            "format": "uri"
          },
          "legal_bundle_version_id": {
            "type": "string",
            "format": "uuid"
          },
          "module_keys": {
            "type": "array",
            "minItems": 1,
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          },
          "source_document_ids": {
            "type": "array",
            "minItems": 1,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "primary_document_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "sort_order": {
            "type": "integer",
            "minimum": 0
          }
        },
        "description": "One of the three customer-facing documents. module_keys and source_document_ids bind the presentation document to every immutable canonical legal module it contains."
      },
      "ContractPriceOptionAreaPrice": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "area_price_reference",
          "price_area",
          "energy_price_ore_per_kwh",
          "unit",
          "valid_from",
          "valid_to"
        ],
        "properties": {
          "area_price_reference": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9_-]{2,99}$"
          },
          "price_area": {
            "type": "string",
            "enum": [
              "SE1",
              "SE2",
              "SE3",
              "SE4"
            ]
          },
          "energy_price_ore_per_kwh": {
            "type": "number",
            "exclusiveMinimum": 0
          },
          "unit": {
            "type": "string",
            "const": "ore_per_kwh"
          },
          "valid_from": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "valid_to": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          }
        }
      },
      "LegacyLegalVersion": {
        "type": "object",
        "additionalProperties": false,
        "deprecated": true,
        "required": [
          "id",
          "type",
          "version",
          "title",
          "published_at",
          "content_sha256",
          "legal_bundle_version_id",
          "document_reference",
          "origin",
          "url"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "type": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "published_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "content_sha256": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^[a-fA-F0-9]{64}$"
          },
          "legal_bundle_version_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "document_reference": {
            "type": "string"
          },
          "origin": {
            "type": "string"
          },
          "url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          }
        }
      },
      "ErrorResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "error",
          "request_id",
          "correlation_id",
          "contract_schema_version"
        ],
        "properties": {
          "error": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "code",
              "message",
              "retryable",
              "field",
              "blockers"
            ],
            "properties": {
              "code": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "stage": {
                "type": "string"
              },
              "field": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "hint": {
                "type": "string"
              },
              "retryable": {
                "type": "boolean"
              },
              "blockers": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ApiBlocker"
                }
              },
              "details": {
                "type": [
                  "object",
                  "array",
                  "string",
                  "number",
                  "boolean",
                  "null"
                ]
              }
            }
          },
          "request_id": {
            "type": "string"
          },
          "correlation_id": {
            "type": "string"
          },
          "contract_schema_version": {
            "type": "string",
            "const": "2026-10-09.1"
          }
        },
        "description": "Canonical error envelope. Business and provider failures use one nested error object; no parallel top-level aliases are emitted."
      },
      "WebsiteCustomerApplicationStatusData": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "application_number",
          "status",
          "stage",
          "supplier_switch_status",
          "missing_customer_action",
          "automation",
          "communication",
          "checkout",
          "webhook"
        ],
        "properties": {
          "application_number": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "processing",
              "accepted",
              "needs_customer_information",
              "rejected",
              "failed",
              "completed"
            ]
          },
          "stage": {
            "type": "string"
          },
          "customer_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "contract_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "contract_status": {
            "type": [
              "string",
              "null"
            ]
          },
          "signed_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "withdrawal_deadline_at": {
            "type": [
              "string",
              "null"
            ],
            "description": "Stored withdrawal deadline. For newly signed qualifying private distance agreements, this is the end of the fourteenth calendar day after the acceptance date in Europe/Stockholm. Use the returned stored timestamp; previously frozen agreements retain their recorded deadline. Null means no deadline is applicable or recorded."
          },
          "signature_snapshot_sha256": {
            "type": [
              "string",
              "null"
            ]
          },
          "supplier_switch_status": {
            "type": "string"
          },
          "supply_status": {
            "type": [
              "string",
              "null"
            ]
          },
          "requested_start_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "confirmed_start_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "missing_customer_action": {
            "type": "boolean"
          },
          "next_step": {
            "type": [
              "string",
              "null"
            ]
          },
          "blocking_reason": {
            "type": [
              "string",
              "null"
            ]
          },
          "automation": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "status",
              "attempts",
              "max_attempts"
            ],
            "properties": {
              "status": {
                "type": "string"
              },
              "attempts": {
                "type": "integer",
                "minimum": 0
              },
              "max_attempts": {
                "type": "integer",
                "minimum": 0
              },
              "next_retry_at": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "completed_at": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "last_error": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "communication": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "pending",
              "source_of_truth",
              "triggered",
              "queued",
              "sent",
              "failed"
            ],
            "properties": {
              "pending": {
                "type": "boolean"
              },
              "source_of_truth": {
                "type": "string",
                "const": "tenant_email_outbox+communication_logs"
              },
              "triggered": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "event_type",
                    "status"
                  ],
                  "properties": {
                    "event_type": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "status": {
                      "type": "string"
                    },
                    "occurred_at": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "message": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                }
              },
              "queued": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "event_type",
                    "status"
                  ],
                  "properties": {
                    "event_type": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "status": {
                      "type": "string"
                    },
                    "occurred_at": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "message": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                }
              },
              "sent": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "event_type",
                    "status"
                  ],
                  "properties": {
                    "event_type": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "status": {
                      "type": "string"
                    },
                    "occurred_at": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "message": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                }
              },
              "failed": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "event_type",
                    "status"
                  ],
                  "properties": {
                    "event_type": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "status": {
                      "type": "string"
                    },
                    "occurred_at": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "message": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "checkout": {
            "$ref": "#/components/schemas/WebsiteCheckoutResult"
          },
          "webhook": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "status",
              "fanout_status",
              "queued",
              "sent",
              "failed",
              "attempts"
            ],
            "properties": {
              "status": {
                "type": "string",
                "enum": [
                  "not_triggered",
                  "not_configured",
                  "pending",
                  "sent",
                  "failed"
                ]
              },
              "fanout_status": {
                "type": "string",
                "enum": [
                  "not_started",
                  "pending",
                  "completed",
                  "failed"
                ]
              },
              "queued": {
                "type": "integer",
                "minimum": 0
              },
              "sent": {
                "type": "integer",
                "minimum": 0
              },
              "failed": {
                "type": "integer",
                "minimum": 0
              },
              "attempts": {
                "type": "integer",
                "minimum": 0
              },
              "next_retry_at": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "last_error": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "updated_at": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "updated_at": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "CustomerApplicationStatusChangedWebhook": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "event_id",
          "event_type",
          "created_at",
          "organization_reference",
          "aggregate",
          "data",
          "contract_schema_version"
        ],
        "properties": {
          "event_id": {
            "type": "string",
            "pattern": "^event_[a-f0-9]{32}$"
          },
          "event_type": {
            "type": "string",
            "const": "customer_application.status_changed"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "organization_reference": {
            "type": "string",
            "pattern": "^organization_[A-Za-z0-9_-]{20,64}$",
            "description": "Stable opaque public reference for the organization associated with the authenticated API credential."
          },
          "environment": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "test",
              "production",
              null
            ]
          },
          "aggregate": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "type",
              "reference"
            ],
            "properties": {
              "type": {
                "type": "string",
                "const": "website_customer_application"
              },
              "reference": {
                "type": "string"
              }
            }
          },
          "customer": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "customer_reference",
              "customer_number"
            ],
            "properties": {
              "customer_reference": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "customer_number": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "data": {
            "type": "object",
            "additionalProperties": true,
            "required": [
              "application_number",
              "status",
              "workflow_state",
              "event_code"
            ],
            "properties": {
              "application_number": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "customer_number": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "customer_reference": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "contract_number": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "status": {
                "type": "string",
                "enum": [
                  "processing",
                  "needs_information",
                  "failed",
                  "completed"
                ]
              },
              "workflow_state": {
                "type": "string"
              },
              "next_step": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "reason_code": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "event_code": {
                "type": "string"
              }
            }
          },
          "contract_schema_version": {
            "type": "string",
            "const": "2026-10-09.1"
          }
        }
      },
      "SupplierSwitchUpdatedWebhook": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "event_id",
          "event_type",
          "created_at",
          "organization_reference",
          "aggregate",
          "data",
          "contract_schema_version"
        ],
        "properties": {
          "event_id": {
            "type": "string",
            "pattern": "^event_[a-f0-9]{32}$"
          },
          "event_type": {
            "type": "string",
            "const": "supplier_switch.updated"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "organization_reference": {
            "type": "string",
            "pattern": "^organization_[A-Za-z0-9_-]{20,64}$",
            "description": "Stable opaque public reference for the organization associated with the authenticated API credential."
          },
          "environment": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "test",
              "production",
              null
            ]
          },
          "aggregate": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "type",
              "reference"
            ],
            "properties": {
              "type": {
                "type": "string",
                "const": "website_customer_application"
              },
              "reference": {
                "type": "string"
              }
            }
          },
          "customer": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "customer_reference",
              "customer_number"
            ],
            "properties": {
              "customer_reference": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "customer_number": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "data": {
            "type": "object",
            "additionalProperties": true,
            "required": [
              "application_number",
              "status",
              "workflow_state",
              "event_code",
              "supplier_switch_status"
            ],
            "properties": {
              "application_number": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "customer_number": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "customer_reference": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "contract_number": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "status": {
                "type": "string",
                "enum": [
                  "processing",
                  "needs_information",
                  "failed",
                  "completed"
                ]
              },
              "workflow_state": {
                "type": "string"
              },
              "next_step": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "reason_code": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "event_code": {
                "type": "string"
              },
              "supplier_switch_status": {
                "type": "string"
              }
            }
          },
          "contract_schema_version": {
            "type": "string",
            "const": "2026-10-09.1"
          }
        }
      },
      "PriceAreaAssurance": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "status",
          "price_area",
          "confidence",
          "source",
          "candidate_count",
          "unique_price_area_count",
          "source_version",
          "evidence"
        ],
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "verified",
              "estimated",
              "ambiguous",
              "unresolved"
            ]
          },
          "price_area": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "SE1",
              "SE2",
              "SE3",
              "SE4",
              null
            ]
          },
          "confidence": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "source": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "facility_data",
              "grid_area_master",
              "address_polygon",
              "postal_city_consensus",
              "postal_consensus",
              null
            ]
          },
          "candidate_count": {
            "type": "integer",
            "minimum": 0
          },
          "unique_price_area_count": {
            "type": "integer",
            "minimum": 0
          },
          "source_version": {
            "type": [
              "string",
              "null"
            ]
          },
          "evidence": {
            "type": "object",
            "additionalProperties": true
          }
        },
        "description": "Canonical evidence used only to decide whether SE1-SE4 is safe for pricing and quote. This object never proves facility, grid-owner, PRODAT or EDIFACT readiness."
      },
      "CustomerLegalDocument": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "requirement_code",
          "document_type",
          "title",
          "description",
          "required",
          "acceptance_mode",
          "document_reference",
          "document_version",
          "document_hash",
          "document_url",
          "legal_bundle_version_id",
          "module_keys",
          "source_document_ids",
          "primary_document_id",
          "sort_order"
        ],
        "properties": {
          "requirement_code": {
            "type": "string",
            "enum": [
              "agreement",
              "power_of_attorney",
              "withdrawal"
            ]
          },
          "document_type": {
            "type": "string",
            "enum": [
              "agreement",
              "power_of_attorney",
              "withdrawal"
            ]
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "required": {
            "type": "boolean",
            "const": true
          },
          "acceptance_mode": {
            "type": "string",
            "enum": [
              "accept",
              "acknowledge"
            ]
          },
          "document_reference": {
            "type": "string"
          },
          "document_version": {
            "type": "string"
          },
          "document_hash": {
            "type": "string",
            "pattern": "^[a-fA-F0-9]{64}$"
          },
          "document_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          },
          "legal_bundle_version_id": {
            "type": "string",
            "format": "uuid"
          },
          "module_keys": {
            "type": "array",
            "minItems": 1,
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          },
          "source_document_ids": {
            "type": "array",
            "minItems": 1,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "primary_document_id": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "sort_order": {
            "type": "integer",
            "minimum": 0
          }
        },
        "description": "One of the three customer-facing documents. module_keys and source_document_ids bind the presentation document to every immutable canonical legal module it contains."
      },
      "WebsiteCheckoutResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "outcome",
          "thank_you_ready",
          "page_state",
          "customer_action_required",
          "application",
          "agreement",
          "confirmation_email",
          "status_path"
        ],
        "properties": {
          "outcome": {
            "type": "string",
            "enum": [
              "agreement_signed",
              "customer_action_required",
              "application_received"
            ]
          },
          "thank_you_ready": {
            "type": "boolean"
          },
          "page_state": {
            "type": "string",
            "enum": [
              "success",
              "success_action_required",
              "action_required",
              "processing"
            ]
          },
          "customer_action_required": {
            "type": "boolean"
          },
          "application": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "application_number",
              "status"
            ],
            "properties": {
              "application_number": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "status": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "agreement": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "status",
              "contract_number",
              "signed_at",
              "withdrawal_deadline_at",
              "signature_snapshot_sha256"
            ],
            "properties": {
              "status": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "contract_number": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "signed_at": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "withdrawal_deadline_at": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Stored withdrawal deadline. For newly signed qualifying private distance agreements, this is the end of the fourteenth calendar day after the acceptance date in Europe/Stockholm. Use the returned stored timestamp; previously frozen agreements retain their recorded deadline. Null means no deadline is applicable or recorded."
              },
              "signature_snapshot_sha256": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "confirmation_email": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "expected",
              "status"
            ],
            "properties": {
              "expected": {
                "type": "boolean"
              },
              "status": {
                "type": "string",
                "enum": [
                  "not_expected",
                  "pending",
                  "queued",
                  "sent",
                  "delivered",
                  "failed"
                ]
              }
            }
          },
          "status_path": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "WebsiteQuoteSettlement": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "model",
          "customer_accepts",
          "energy_price_locked_at_signup",
          "uses_actual_metered_consumption",
          "market_data_role",
          "settlement_resolution"
        ],
        "properties": {
          "model": {
            "type": "string",
            "enum": [
              "fixed_price",
              "market_monthly",
              "market_hourly",
              "market_quarter_hour",
              "portfolio",
              "mixed"
            ]
          },
          "customer_accepts": {
            "type": "string",
            "enum": [
              "fixed_energy_price",
              "pricing_model",
              "portfolio_pricing_model",
              "mixed_pricing_model"
            ]
          },
          "energy_price_locked_at_signup": {
            "type": "boolean",
            "description": "True only for a fixed-price product. Market, portfolio and mixed products do not freeze the future energy price at signup."
          },
          "uses_actual_metered_consumption": {
            "type": "boolean",
            "const": true
          },
          "market_data_role": {
            "type": "string",
            "enum": [
              "not_applicable",
              "indicative_preview_only"
            ]
          },
          "settlement_resolution": {
            "type": "string",
            "enum": [
              "fixed",
              "month",
              "hour",
              "quarter_hour",
              "portfolio_period",
              "mixed_components"
            ]
          }
        },
        "description": "How the accepted product is settled. The authenticated API credential determines the organization; no organization selector is accepted here."
      }
    },
    "responses": {
      "BadRequest": {
        "description": "Invalid query or payload",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            }
          }
        },
        "headers": {
          "X-Gridex-Contract-Version": {
            "$ref": "#/components/headers/GridexContractVersion"
          },
          "X-Request-ID": {
            "$ref": "#/components/headers/RequestId"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "X-Gridex-Documentation-Version": {
            "$ref": "#/components/headers/GridexDocumentationVersion"
          }
        }
      },
      "Unauthorized": {
        "description": "Missing or invalid API key",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            }
          }
        },
        "headers": {
          "X-Gridex-Contract-Version": {
            "$ref": "#/components/headers/GridexContractVersion"
          },
          "X-Request-ID": {
            "$ref": "#/components/headers/RequestId"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "X-Gridex-Documentation-Version": {
            "$ref": "#/components/headers/GridexDocumentationVersion"
          }
        }
      },
      "Forbidden": {
        "description": "Scope missing or organization access denied",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            }
          }
        },
        "headers": {
          "X-Gridex-Contract-Version": {
            "$ref": "#/components/headers/GridexContractVersion"
          },
          "X-Request-ID": {
            "$ref": "#/components/headers/RequestId"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "X-Gridex-Documentation-Version": {
            "$ref": "#/components/headers/GridexDocumentationVersion"
          }
        }
      },
      "TenantGone": {
        "description": "organization is terminated and no longer serves external API traffic",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            }
          }
        },
        "headers": {
          "X-Gridex-Contract-Version": {
            "$ref": "#/components/headers/GridexContractVersion"
          },
          "X-Request-ID": {
            "$ref": "#/components/headers/RequestId"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "X-Gridex-Documentation-Version": {
            "$ref": "#/components/headers/GridexDocumentationVersion"
          }
        }
      },
      "TenantPaused": {
        "description": "organization is paused and external API traffic is temporarily locked",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            }
          }
        },
        "headers": {
          "X-Gridex-Contract-Version": {
            "$ref": "#/components/headers/GridexContractVersion"
          },
          "X-Request-ID": {
            "$ref": "#/components/headers/RequestId"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "X-Gridex-Documentation-Version": {
            "$ref": "#/components/headers/GridexDocumentationVersion"
          }
        }
      },
      "RateLimited": {
        "description": "API client rate limit exceeded",
        "headers": {
          "Retry-After": {
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          "X-Gridex-Contract-Version": {
            "$ref": "#/components/headers/GridexContractVersion"
          },
          "X-Request-ID": {
            "$ref": "#/components/headers/RequestId"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "X-Gridex-Documentation-Version": {
            "$ref": "#/components/headers/GridexDocumentationVersion"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            }
          }
        }
      },
      "InternalError": {
        "description": "The canonical API contract feed could not be built",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            }
          }
        },
        "headers": {
          "X-Gridex-Contract-Version": {
            "$ref": "#/components/headers/GridexContractVersion"
          },
          "X-Request-ID": {
            "$ref": "#/components/headers/RequestId"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "X-Gridex-Documentation-Version": {
            "$ref": "#/components/headers/GridexDocumentationVersion"
          }
        }
      },
      "Conflict": {
        "description": "Expired, consumed or mismatched quote/idempotency state",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            }
          }
        },
        "headers": {
          "X-Gridex-Contract-Version": {
            "$ref": "#/components/headers/GridexContractVersion"
          },
          "X-Request-ID": {
            "$ref": "#/components/headers/RequestId"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/RateLimitLimit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/RateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/RateLimitReset"
          },
          "X-Gridex-Documentation-Version": {
            "$ref": "#/components/headers/GridexDocumentationVersion"
          }
        }
      },
      "OrganizationGone": {
        "description": "Organization is closed or inactive. Error codes: organization_closed, organization_inactive.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            }
          }
        },
        "headers": {
          "X-Gridex-Contract-Version": {
            "$ref": "#/components/headers/GridexContractVersion"
          },
          "X-Request-ID": {
            "$ref": "#/components/headers/RequestId"
          },
          "X-Gridex-Documentation-Version": {
            "$ref": "#/components/headers/GridexDocumentationVersion"
          }
        }
      },
      "OrganizationPaused": {
        "description": "Organization API access is paused. Error codes: organization_paused.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorEnvelope"
            }
          }
        },
        "headers": {
          "X-Gridex-Contract-Version": {
            "$ref": "#/components/headers/GridexContractVersion"
          },
          "X-Request-ID": {
            "$ref": "#/components/headers/RequestId"
          },
          "X-Gridex-Documentation-Version": {
            "$ref": "#/components/headers/GridexDocumentationVersion"
          }
        }
      }
    },
    "headers": {
      "GridexContractVersion": {
        "description": "Canonical contract version used for this response.",
        "schema": {
          "type": "string",
          "const": "2026-10-09.1"
        }
      },
      "RequestId": {
        "description": "Stable request identifier for support and audit.",
        "schema": {
          "type": "string"
        }
      },
      "RateLimitLimit": {
        "schema": {
          "type": "integer",
          "minimum": 1
        }
      },
      "RateLimitRemaining": {
        "schema": {
          "type": "integer",
          "minimum": 0
        }
      },
      "RateLimitReset": {
        "schema": {
          "type": "string",
          "format": "date-time"
        }
      },
      "RetryAfter": {
        "schema": {
          "type": "integer",
          "minimum": 1
        }
      },
      "ETag": {
        "description": "Strong entity tag for conditional retrieval.",
        "schema": {
          "type": "string"
        }
      },
      "CacheControl": {
        "description": "Caching policy for this document.",
        "schema": {
          "type": "string"
        }
      },
      "ContentType": {
        "description": "Response media type.",
        "schema": {
          "type": "string"
        }
      },
      "ContentDisposition": {
        "description": "Suggested inline filename.",
        "schema": {
          "type": "string"
        }
      },
      "Vary": {
        "description": "Request headers that affect cache validation.",
        "schema": {
          "type": "string"
        }
      },
      "GridexDocumentationVersion": {
        "description": "Optional documentation revision associated with this business response. It does not change contract_schema_version or the supported wire schema.",
        "schema": {
          "type": "string",
          "const": "2026-10-12.1"
        }
      }
    },
    "parameters": {
      "IdempotencyKey": {
        "name": "Idempotency-Key",
        "in": "header",
        "required": true,
        "schema": {
          "type": "string",
          "minLength": 8,
          "maxLength": 200,
          "pattern": "^[A-Za-z0-9._:+~-]+$"
        }
      }
    }
  },
  "x-contract-schema-version": "2026-10-09.1",
  "x-gridex-organization-setup": {
    "required_environment_variables": [
      "GRIDEX_API_KEY"
    ],
    "api_base_url": "https://app.gridex.se/api/v1",
    "authentication": "Authorization: Bearer <GRIDEX_API_KEY>",
    "tenant_identity_source": "api_key",
    "application_reference_location": "top_level",
    "website_openapi_url": "https://app.gridex.se/api/v1/openapi/website-integration-v1.json",
    "customer_portal_openapi_url": "https://app.gridex.se/api/v1/openapi/customer-portal-v1.json"
  },
  "x-gridex-release-version": "2026-10-12.1",
  "x-error-codes": [
    "missing_api_token",
    "invalid_api_token",
    "api_token_expired",
    "api_client_inactive",
    "api_scope_missing",
    "api_ip_not_allowed",
    "api_origin_not_allowed",
    "rate_limited",
    "api_rate_limit_invalid",
    "api_rate_limiter_unavailable",
    "api_auth_unavailable",
    "organization_status_unavailable",
    "organization_not_operationally_ready",
    "organization_paused",
    "organization_closed",
    "organization_suspended",
    "organization_inactive",
    "platform_schema_not_ready",
    "PUBLIC_CONTRACT_FEED_INCONSISTENT",
    "PUBLICATION_GRAPH_INCONSISTENT",
    "PUBLIC_CONTRACT_SCHEMA_INVALID",
    "PUBLIC_CONTRACT_SCHEMA_OUTDATED",
    "PUBLIC_CONTRACTS_TEMPORARILY_UNAVAILABLE",
    "offer_reference_mismatch",
    "api_contract_profile_unavailable"
  ],
  "x-scope-aliases": {
    "customer_portal.read": {
      "status": "deprecated_legacy_alias",
      "expands_to": [
        "customer_profile.read",
        "customer_sites.read",
        "customer_contracts.read",
        "customer_invoices.read",
        "customer_metering.read",
        "customer_legal.read",
        "customer_events.read",
        "customer_documents.read",
        "customer_notifications.read",
        "customer_power_of_attorney.read"
      ],
      "replacement": "Grant the granular read scopes required by the routes used."
    },
    "customer_portal.write": {
      "status": "deprecated_legacy_alias",
      "expands_to": [
        "customer_sync.write",
        "customer_contact.write",
        "customer_facility_data.write",
        "customer_power_of_attorney.write",
        "customer_notifications.write",
        "customer_documents.write"
      ],
      "replacement": "Grant the granular write scopes required by the routes used."
    }
  },
  "webhooks": {
    "contractsPublicationChanged": {
      "post": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Receive contracts.publication.changed from Gridex",
        "description": "This callback URL is hosted by the organization, not by app.gridex.se. Gridex signs the exact raw request body with HMAC-SHA256 over `${timestamp}.${rawBody}`. Verify timestamp freshness and X-Gridex-Signature, then deduplicate X-Gridex-Event-Id and X-Gridex-Delivery-Id before returning any 2xx response. Non-2xx responses enter the documented retry and dead-letter pipeline.",
        "parameters": [
          {
            "name": "X-Gridex-Event-Id",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^event_[a-f0-9]{32}$"
            }
          },
          {
            "name": "X-Gridex-Delivery-Id",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^delivery_[a-f0-9]{32}$"
            }
          },
          {
            "name": "X-Gridex-Timestamp",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Gridex-Signature",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^sha256=[a-f0-9]{64}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublicationChangedWebhook"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Event accepted and durably deduplicated by the organization receiver."
          }
        },
        "security": []
      }
    },
    "customerApplicationStatusChanged": {
      "post": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Receive customer_application.status_changed from Gridex",
        "description": "Sent after every durable customer-application workflow transition. The organization must verify the HMAC signature, deduplicate event and delivery headers, persist the event, and return 2xx. Non-2xx responses enter the retry and dead-letter pipeline.",
        "parameters": [
          {
            "name": "X-Gridex-Event-Id",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^event_[a-f0-9]{32}$"
            }
          },
          {
            "name": "X-Gridex-Delivery-Id",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^delivery_[a-f0-9]{32}$"
            }
          },
          {
            "name": "X-Gridex-Timestamp",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Gridex-Signature",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^sha256=[a-f0-9]{64}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerApplicationStatusChangedWebhook"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Event accepted and durably deduplicated by the organization receiver."
          }
        },
        "security": []
      }
    },
    "supplierSwitchUpdated": {
      "post": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Receive supplier_switch.updated from Gridex",
        "description": "Sent for every switch- or supply-related customer-application workflow transition. The event is organization-scoped, durably queued, idempotent, signed, retried, and dead-lettered on terminal delivery failure.",
        "parameters": [
          {
            "name": "X-Gridex-Event-Id",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^event_[a-f0-9]{32}$"
            }
          },
          {
            "name": "X-Gridex-Delivery-Id",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^delivery_[a-f0-9]{32}$"
            }
          },
          {
            "name": "X-Gridex-Timestamp",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Gridex-Signature",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^sha256=[a-f0-9]{64}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SupplierSwitchUpdatedWebhook"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Event accepted and durably deduplicated by the organization receiver."
          }
        },
        "security": []
      }
    }
  }
}
