{
  "openapi": "3.2.0",
  "info": {
    "title": "Reading Club International API",
    "version": "23.0.0",
    "description": "Reading Club International V23 API contract. V23 introduces a screenshot-free native visual experience while retaining the course, marketplace, platform and interoperability APIs."
  },
  "servers": [
    {
      "url": "https://www.readingclub-international.com"
    }
  ],
  "paths": {
    "/api/v5/health.php": {
      "get": {
        "summary": "Platform health",
        "responses": {
          "200": {
            "description": "Health state"
          }
        }
      }
    },
    "/api/v6/index.php": {
      "get": {
        "summary": "API lifecycle manifest",
        "responses": {
          "200": {
            "description": "API manifest"
          }
        }
      }
    },
    "/api/v3/marketplace.php": {
      "get": {
        "summary": "Approved marketplace providers/offers",
        "responses": {
          "200": {
            "description": "Marketplace data"
          }
        }
      }
    },
    "/api/v3/offline-pack.php": {
      "get": {
        "summary": "Authenticated learner offline pack",
        "security": [
          {
            "cookieAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Offline pack"
          },
          "401": {
            "description": "Authentication required"
          }
        }
      }
    },
    "/scim/v2/ServiceProviderConfig.php": {
      "get": {
        "summary": "SCIM starter service-provider configuration",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "SCIM configuration"
          },
          "401": {
            "description": "Bearer token required"
          }
        }
      }
    },
    "/scim/v2/Users.php": {
      "get": {
        "summary": "SCIM-style users listing/filter",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "List response"
          }
        }
      },
      "post": {
        "summary": "SCIM-style user provisioning",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "description": "User created"
          }
        }
      }
    },
    "/api/v20/course.php": {
      "get": {
        "summary": "Retrieve one V20 course by numeric ID",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 41160
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Complete course record"
          },
          "404": {
            "description": "Course not found"
          }
        }
      }
    },
    "/api/v20/catalog.php": {
      "get": {
        "summary": "Browse/filter the V20 course universe",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "topic",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "age",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "level",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated catalogue response"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "cookieAuth": {
        "type": "apiKey",
        "in": "cookie",
        "name": "PHPSESSID"
      },
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer"
      }
    }
  }
}