{
  "openapi": "3.1.0",
  "info": {
    "title": "OrbiSportbook Aggregator API",
    "version": "1.0.0",
    "description": "Server-to-server delegated client provisioning. Bearer credentials never belong in a browser. All responses use no-store. Mutations require idempotency. Rate limit: 120 requests per minute per aggregator. Technical activation does not replace operator licensing or go-live obligations."
  },
  "servers": [
    {
      "url": "https://api.orbisportbook.com/api/v1/aggregator"
    }
  ],
  "security": [
    {
      "AggregatorBearer": []
    }
  ],
  "paths": {
    "/clients": {
      "post": {
        "operationId": "createClient",
        "summary": "createClient",
        "description": "Required scope: clients:create. JSON body limit: 64 KiB.",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9_.:-]{8,128}$"
            },
            "description": "Durable operation key. Same request and credential replay for 24h; reuse with changes or after expiry returns 409."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateClient"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful operation; keep credentials in a vault.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Idempotency-Replayed": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "true"
                  ]
                },
                "description": "Present for a replay of the original response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedClient"
                }
              }
            }
          },
          "400": {
            "description": "Invalid body, wallet validation, or configuration",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Invalid, expired or revoked credential; authorization unavailable",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Scope or authorization policy denied",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Client not found in this aggregator",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Quota, duplicate, stale configuration, or incompatible/expired idempotency request",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Aggregator limit reached; Retry-After is 60 seconds",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Retry-After": {
                "schema": {
                  "type": "string",
                  "const": "60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal error; retry with the same idempotency key",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "get": {
        "operationId": "listClients",
        "description": "Required scope: clients:read. Only owned clients are returned; no secrets.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string",
              "maxLength": 100
            }
          },
          {
            "name": "externalId",
            "in": "query",
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Owned clients ordered by ID.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "clients": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Client"
                      }
                    },
                    "nextCursor": {
                      "type": "string",
                      "description": "Empty string when there are no more results."
                    }
                  },
                  "required": [
                    "clients",
                    "nextCursor"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Invalid body, wallet validation, or configuration",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Invalid, expired or revoked credential; authorization unavailable",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Scope or authorization policy denied",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Client not found in this aggregator",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Quota, duplicate, stale configuration, or incompatible/expired idempotency request",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Aggregator limit reached; Retry-After is 60 seconds",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Retry-After": {
                "schema": {
                  "type": "string",
                  "const": "60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal error; retry with the same idempotency key",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/clients/{id}": {
      "get": {
        "operationId": "getClient",
        "description": "Required scope: clients:read. Does not return credentials.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Server-generated client ID owned by the authenticated aggregator."
          }
        ],
        "responses": {
          "200": {
            "description": "Owned client.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "client": {
                      "$ref": "#/components/schemas/Client"
                    }
                  },
                  "required": [
                    "client"
                  ],
                  "additionalProperties": false
                }
              }
            }
          },
          "400": {
            "description": "Invalid body, wallet validation, or configuration",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Invalid, expired or revoked credential; authorization unavailable",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Scope or authorization policy denied",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Client not found in this aggregator",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Quota, duplicate, stale configuration, or incompatible/expired idempotency request",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Aggregator limit reached; Retry-After is 60 seconds",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Retry-After": {
                "schema": {
                  "type": "string",
                  "const": "60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal error; retry with the same idempotency key",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/clients/{id}/activate": {
      "post": {
        "operationId": "activateClient",
        "summary": "activateClient",
        "description": "Required scope: clients:activate. JSON body limit: 64 KiB.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Server-generated client ID owned by the authenticated aggregator."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9_.:-]{8,128}$"
            },
            "description": "Durable operation key. Same request and credential replay for 24h; reuse with changes or after expiry returns 409."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ActivateClient"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful operation; keep credentials in a vault.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Idempotency-Replayed": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "true"
                  ]
                },
                "description": "Present for a replay of the original response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActivatedClient"
                }
              }
            }
          },
          "400": {
            "description": "Invalid body, wallet validation, or configuration",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Invalid, expired or revoked credential; authorization unavailable",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Scope or authorization policy denied",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Client not found in this aggregator",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Quota, duplicate, stale configuration, or incompatible/expired idempotency request",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Aggregator limit reached; Retry-After is 60 seconds",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Retry-After": {
                "schema": {
                  "type": "string",
                  "const": "60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal error; retry with the same idempotency key",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/clients/{id}/credentials/rotate": {
      "post": {
        "operationId": "rotateIntegrationCredentials",
        "summary": "rotateIntegrationCredentials",
        "description": "Required scope: credentials:rotate. JSON body limit: 64 KiB.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Server-generated client ID owned by the authenticated aggregator."
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9_.:-]{8,128}$"
            },
            "description": "Durable operation key. Same request and credential replay for 24h; reuse with changes or after expiry returns 409."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RotateCredentials"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful operation; keep credentials in a vault.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Idempotency-Replayed": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "true"
                  ]
                },
                "description": "Present for a replay of the original response."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IntegrationCredentials"
                }
              }
            }
          },
          "400": {
            "description": "Invalid body, wallet validation, or configuration",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Invalid, expired or revoked credential; authorization unavailable",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Scope or authorization policy denied",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Client not found in this aggregator",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Quota, duplicate, stale configuration, or incompatible/expired idempotency request",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Aggregator limit reached; Retry-After is 60 seconds",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              },
              "Retry-After": {
                "schema": {
                  "type": "string",
                  "const": "60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Internal error; retry with the same idempotency key",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string",
                  "const": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "AggregatorBearer": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "orb_agg_ opaque API key"
      }
    },
    "schemas": {
      "CreateClient": {
        "type": "object",
        "properties": {
          "externalId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "name": {
            "type": "string",
            "minLength": 2,
            "maxLength": 100
          },
          "legalName": {
            "type": "string",
            "minLength": 2,
            "maxLength": 200
          },
          "brandName": {
            "type": "string",
            "minLength": 2,
            "maxLength": 100
          },
          "currency": {
            "type": "string",
            "enum": [
              "BRL",
              "USD",
              "EUR",
              "PEN",
              "COP",
              "MXN",
              "KES",
              "ZAR",
              "PHP"
            ]
          },
          "jurisdiction": {
            "type": "string",
            "enum": [
              "BR",
              "ROW"
            ]
          },
          "locale": {
            "type": "string",
            "enum": [
              "en",
              "pt-BR",
              "es"
            ]
          },
          "territories": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^[A-Z]{2}$"
            },
            "minItems": 1,
            "maxItems": 30
          },
          "embedOrigins": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri"
            },
            "minItems": 1,
            "maxItems": 20
          },
          "productionWalletUrl": {
            "type": "string",
            "format": "uri",
            "maxLength": 2048,
            "description": "Approved public HTTPS origin, port 443, and an environment-specific path. No query, fragment or redirect."
          },
          "sandboxWalletUrl": {
            "type": "string",
            "format": "uri",
            "maxLength": 2048,
            "description": "Approved public HTTPS origin, port 443, and an environment-specific path. No query, fragment or redirect."
          },
          "reason": {
            "type": "string",
            "minLength": 3,
            "maxLength": 1000
          }
        },
        "required": [
          "externalId",
          "name",
          "legalName",
          "brandName",
          "currency",
          "jurisdiction",
          "locale",
          "territories",
          "embedOrigins",
          "productionWalletUrl",
          "sandboxWalletUrl",
          "reason"
        ],
        "additionalProperties": false
      },
      "ActivateClient": {
        "type": "object",
        "properties": {
          "productionPlayerId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "sandboxPlayerId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "reason": {
            "type": "string",
            "minLength": 3,
            "maxLength": 1000
          }
        },
        "required": [
          "productionPlayerId",
          "sandboxPlayerId",
          "reason"
        ],
        "additionalProperties": false
      },
      "RotateCredentials": {
        "type": "object",
        "properties": {
          "environment": {
            "type": "string",
            "enum": [
              "production",
              "sandbox"
            ]
          },
          "reason": {
            "type": "string",
            "minLength": 3,
            "maxLength": 1000
          }
        },
        "required": [
          "environment",
          "reason"
        ],
        "additionalProperties": false
      },
      "WalletCredentials": {
        "type": "object",
        "properties": {
          "tenantId": {
            "type": "string"
          },
          "walletSecret": {
            "type": "string",
            "writeOnly": false,
            "description": "Secret; store in the corresponding wallet vault. Never log."
          }
        },
        "required": [
          "tenantId",
          "walletSecret"
        ],
        "additionalProperties": false
      },
      "IntegrationCredentials": {
        "type": "object",
        "properties": {
          "tenantId": {
            "type": "string"
          },
          "environment": {
            "type": "string",
            "enum": [
              "production",
              "sandbox"
            ]
          },
          "keyId": {
            "type": "string"
          },
          "integrationApiKey": {
            "type": "string",
            "description": "Server-side key for integration sessions, never for the browser."
          }
        },
        "required": [
          "tenantId",
          "environment",
          "keyId",
          "integrationApiKey"
        ],
        "additionalProperties": false
      },
      "CreatedClient": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "externalId": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "const": "suspended"
          },
          "nextAction": {
            "type": "string",
            "const": "install_wallet_secrets_then_activate"
          },
          "credentialsReplaySeconds": {
            "type": "integer",
            "const": 86400
          },
          "production": {
            "$ref": "#/components/schemas/WalletCredentials"
          },
          "sandbox": {
            "$ref": "#/components/schemas/WalletCredentials"
          }
        },
        "required": [
          "id",
          "externalId",
          "status",
          "nextAction",
          "credentialsReplaySeconds",
          "production",
          "sandbox"
        ],
        "additionalProperties": false
      },
      "ActivatedClient": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "const": "active"
          },
          "credentialsReplaySeconds": {
            "type": "integer",
            "const": 86400
          },
          "production": {
            "$ref": "#/components/schemas/IntegrationCredentials"
          },
          "sandbox": {
            "$ref": "#/components/schemas/IntegrationCredentials"
          }
        },
        "required": [
          "id",
          "status",
          "credentialsReplaySeconds",
          "production",
          "sandbox"
        ],
        "additionalProperties": false
      },
      "Client": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "externalId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "operatorId": {
            "type": "string"
          },
          "productionId": {
            "type": "string"
          },
          "sandboxId": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "sandboxStatus": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "jurisdiction": {
            "type": "string"
          },
          "territories": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "embedOrigins": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "activatedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "externalId",
          "name",
          "operatorId",
          "productionId",
          "sandboxId",
          "status",
          "sandboxStatus",
          "currency",
          "jurisdiction",
          "territories",
          "embedOrigins",
          "createdAt",
          "activatedAt"
        ],
        "additionalProperties": false
      },
      "Error": {
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "required": [
              "code",
              "message"
            ],
            "properties": {
              "code": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "details": {
                "type": "object"
              }
            }
          }
        },
        "required": [
          "error"
        ],
        "additionalProperties": false
      }
    }
  }
}
