{"openapi": "3.1.0", "info": {"title": "Times Square", "description": "**Times Square is a Rubin Science Platform (RSP) service for displaying parameterized Jupyter Notebooks as websites.**\n\nExcellent applications for Times Square include:\n\n- Engineering dashboards\n- Quick-look data previewing\n- Reports that incorporate live data sources\n\nThe design and architecture of Times Square is described in [The Times Square service for publishing parameterized Jupyter Notebooks in the Rubin Science platform](https://sqr-062.lsst.io).\nTimes Square uses Noteburst ([GitHub](https://github.com/lsst-sqre/noteburst), [SQR-065](https://sqr-065.lsst.io)) to execute Jupyter Notebooks in Nublado (JupyterLab) instances, thereby mechanizing the RSP's notebook aspect.\n\nThis Times Square API service is developed at [https://github.com/lsst-sqre/times-square](https://github.com/lsst-sqre/times-square).\nThe user interface is developed separately at [https://github.com/lsst-sqre/times-square-ui](https://github.com/lsst-sqre/times-square-ui).\n", "version": "0.25.0"}, "paths": {"/healthcheck": {"get": {"summary": "Get Index", "description": "GET ``/`` (the app's internal root).\n\nBy convention, this endpoint returns only the application's metadata.\nIt is also exposed at ``/healthcheck`` so that Sentry tracing will ignore\nit: https://docs.sentry.io/concepts/data-management/filtering/#transactions-coming-from-health-check", "operationId": "get_index_healthcheck_get", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Metadata"}}}}}}}, "/times-square/": {"get": {"summary": "Application metadata", "description": "GET metadata about the application.", "operationId": "get_index_times_square__get", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/timessquare__handlers__external__models__Index"}}}}}}}, "/times-square/github/webhook": {"post": {"summary": "GitHub App webhook", "description": "This endpoint receives webhook events from GitHub", "operationId": "post_github_webhook_times_square_github_webhook_post", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}}}}, "/times-square/v1/": {"get": {"summary": "v1 API metadata", "description": "Get metadata about the v1 REST API, including links to documentation and\nendpoints.", "operationId": "get_index_times_square_v1__get", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/timessquare__handlers__v1__models__Index"}}}}}}}, "/times-square/v1/pages/{page}": {"get": {"tags": ["Pages"], "summary": "Page metadata", "description": "Get metadata about a page resource, which models a webpage that is\nrendered from a parameterized Jupyter Notebook.", "operationId": "get_page_times_square_v1_pages__page__get", "parameters": [{"name": "page", "in": "path", "required": true, "schema": {"type": "string", "title": "Page name", "description": "An opaque identifier for a page. This is often the 'name' field for a page's resource model.", "examples": ["3d5a140634c34e249b7531667469b816"]}, "description": "An opaque identifier for a page. This is often the 'name' field for a page's resource model."}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Page"}}}}, "404": {"description": "Page not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorModel"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/times-square/v1/pages": {"get": {"tags": ["Pages"], "summary": "List pages", "description": "List available pages.", "operationId": "get_pages_times_square_v1_pages_get", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"type": "array", "items": {"$ref": "#/components/schemas/PageSummary"}, "title": "Response Get Pages Times Square V1 Pages Get"}}}}}}, "post": {"tags": ["Pages"], "summary": "Create a new page", "description": "Register a new page with a Jinja-templated Jupyter Notebook.\n\n## Preparing the ipynb file\n\nThe `ipynb` property is a Jupyter Notebook file, either as a JSON-encoded\nstring or a parsed object. You can *parameterize* the notebook by\nadding Jinja template syntax. You can create Jinja variables that get\ntheir values from the URL query string of users viewing the notebook.\n\nFor example, a code cell:\n\n```\na = {{params.a}}\nb = {{params.b}}\na + b\n```\n\nA viewer can set these parameters by modifying URLs query string:\n\n```\n?a=4&b=2\n```\n\nTo declare these parameters, add a `times-square` field to the notebook's\nmetadata (top-level metadata, not per-cell metadata). This field should\ncontain a ``parameters`` field that contains an object keyed by parameter\nname and the value is a\n[JSON Schema](https://json-schema.org/understanding-json-schema/) object\ndescribing that parameter. For example, to declare that parameters\nmust be integers:\n\n```json\n{\n  \"times-square\": {\n    \"parameters\": {\n      \"a\": {\n        \"type\": \"integer\",\n        \"default\": 0,\n        \"description\": \"A demo value\"\n      },\n      \"b\": {\n        \"type\": \"integer\",\n        \"default\": 0,\n        \"description\": \"Another demo value\"\n      }\n    }\n  }\n}\n```\n\nThese JSON Schema parameters have special use by Times Square beyond\ndata validation:\n\n- ``default`` is used when the URL does not override a parameter value.\n- ``description`` is used for documentation.", "operationId": "post_page_times_square_v1_pages_post", "requestBody": {"required": true, "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PostPageRequest"}}}}, "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Page"}}}}, "422": {"description": "Invalid ipynb", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorModel"}}}}}}}, "/times-square/v1/pages/{page}/source": {"get": {"tags": ["Pages"], "summary": "Get the source parameterized notebook (ipynb)", "description": "Get the content of the source ipynb file, which is unexecuted and has\nJinja templating of parameterizations.", "operationId": "get_page_source_times_square_v1_pages__page__source_get", "parameters": [{"name": "page", "in": "path", "required": true, "schema": {"type": "string", "title": "Page name", "description": "An opaque identifier for a page. This is often the 'name' field for a page's resource model.", "examples": ["3d5a140634c34e249b7531667469b816"]}, "description": "An opaque identifier for a page. This is often the 'name' field for a page's resource model."}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "404": {"description": "Page not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorModel"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/times-square/v1/pages/{page}/rendered": {"get": {"tags": ["Pages"], "summary": "Get the unexecuted notebook source with rendered parameters", "description": "Get a Jupyter Notebook by page slug, with the parameter values filled\nin. The notebook is still unexecuted.", "operationId": "get_rendered_notebook_times_square_v1_pages__page__rendered_get", "parameters": [{"name": "page", "in": "path", "required": true, "schema": {"type": "string", "title": "Page name", "description": "An opaque identifier for a page. This is often the 'name' field for a page's resource model.", "examples": ["3d5a140634c34e249b7531667469b816"]}, "description": "An opaque identifier for a page. This is often the 'name' field for a page's resource model."}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "404": {"description": "Page not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorModel"}}}}, "422": {"description": "Invalid parameter", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorModel"}}}}}}}, "/times-square/v1/pages/{page}/html": {"get": {"tags": ["Pages"], "summary": "Get the HTML page of an computed notebook", "description": "Get the rendered HTML of a notebook.", "operationId": "get_page_html_times_square_v1_pages__page__html_get", "parameters": [{"name": "page", "in": "path", "required": true, "schema": {"type": "string", "title": "Page name", "description": "An opaque identifier for a page. This is often the 'name' field for a page's resource model.", "examples": ["3d5a140634c34e249b7531667469b816"]}, "description": "An opaque identifier for a page. This is often the 'name' field for a page's resource model."}], "responses": {"200": {"description": "HTML of the notebook", "content": {"application/json": {"schema": {}}, "text/html": {}}}, "404": {"description": "Page not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorModel"}}}}, "422": {"description": "Invalid parameter", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorModel"}}}}}}, "delete": {"tags": ["Pages"], "summary": "Delete the cached HTML of a notebook.", "description": "Delete the cached HTML of a notebook execution, causing it to be\nrecomputed in the background.\n\nBy default, the HTML is soft-deleted so that it remains available to\nexisting clients until the new HTML replaces it in the cache. This endpoint\ntriggers a background task that recomputes the notebook and replaces the\ncached HTML.", "operationId": "delete_page_html_times_square_v1_pages__page__html_delete", "parameters": [{"name": "page", "in": "path", "required": true, "schema": {"type": "string", "title": "Page name", "description": "An opaque identifier for a page. This is often the 'name' field for a page's resource model.", "examples": ["3d5a140634c34e249b7531667469b816"]}, "description": "An opaque identifier for a page. This is often the 'name' field for a page's resource model."}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/DeleteHtmlResponse"}}}}, "404": {"description": "Cached HTML not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorModel"}}}}, "422": {"description": "Invalid parameter", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorModel"}}}}}}}, "/times-square/v1/pages/{page}/htmlstatus": {"get": {"tags": ["Pages"], "summary": "Get the status of a page's HTML rendering", "operationId": "get_page_html_status_times_square_v1_pages__page__htmlstatus_get", "parameters": [{"name": "page", "in": "path", "required": true, "schema": {"type": "string", "title": "Page name", "description": "An opaque identifier for a page. This is often the 'name' field for a page's resource model.", "examples": ["3d5a140634c34e249b7531667469b816"]}, "description": "An opaque identifier for a page. This is often the 'name' field for a page's resource model."}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HtmlStatus"}}}}, "404": {"description": "Page not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorModel"}}}}, "422": {"description": "Invalid parameter", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorModel"}}}}}}}, "/times-square/v1/pages/{page}/html/events": {"get": {"tags": ["Pages"], "summary": "Subscribe to an event stream for a page's execution and rendering.", "description": "Subscribe to an event stream for a page's execution and rendering.", "operationId": "get_page_html_events_times_square_v1_pages__page__html_events_get", "parameters": [{"name": "page", "in": "path", "required": true, "schema": {"type": "string", "title": "Page name", "description": "An opaque identifier for a page. This is often the 'name' field for a page's resource model.", "examples": ["3d5a140634c34e249b7531667469b816"]}, "description": "An opaque identifier for a page. This is often the 'name' field for a page's resource model."}], "responses": {"200": {"description": "Event stream", "content": {"application/json": {"schema": {}}, "text/event-stream": {}}}, "404": {"description": "Page not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorModel"}}}}, "422": {"description": "Invalid parameter", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorModel"}}}}}}}, "/times-square/v1/github": {"get": {"tags": ["GitHub Notebooks"], "summary": "Get a tree of GitHub-backed pages", "description": "Get the tree of GitHub-backed pages.\n\nThis endpoint is primarily intended to be used by Squareone to power\nits navigational view of GitHub pages. Pages are included in the\nhierarchical structure of GitHub organization, repository, directories\n(as necessary) and finally the page itself.", "operationId": "get_github_tree_times_square_v1_github_get", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GitHubContentsRoot"}}}}}}}, "/times-square/v1/github/rendered/{display_path}": {"get": {"tags": ["GitHub Notebooks"], "summary": "Get the unexecuted notebook source with rendered parameters for a GitHub-based notebook.", "description": "Get a Jupyter Notebook by GitHub path, with the parameter values filled\nin. The notebook is still unexecuted.\n\nThis route provides the same functionality as ``get_rendered_notebook``,\nbut exposed at a different path so that different access controls can be\napplied upstream.", "operationId": "get_github_rendered_notebook_times_square_v1_github_rendered__display_path__get", "parameters": [{"name": "display_path", "in": "path", "required": true, "schema": {"type": "string", "title": "Page display path", "description": "A display path is a POSIX-like '/'-separated path consisting of components:\n\n- GitHub owner (organization or username)\n- Github repository\n- Directory name or names (as appropriate)\n- Page filename stem\n", "examples": ["lsst-sqre/times-square-demo/matplotlib/gaussian2d"]}, "description": "A display path is a POSIX-like '/'-separated path consisting of components:\n\n- GitHub owner (organization or username)\n- Github repository\n- Directory name or names (as appropriate)\n- Page filename stem\n"}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "404": {"description": "Page not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorModel"}}}}, "422": {"description": "Invalid parameter", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorModel"}}}}}}}, "/times-square/v1/github/{display_path}": {"get": {"tags": ["GitHub Notebooks"], "summary": "Metadata for GitHub-backed page", "description": "Get the metadata for a GitHub-backed page.\n\nThis endpoint provides the same data as ``GET /v1/pages/:page``, but\nis queried via the page's GitHub \"display path\" rather than the opaque\npage name.", "operationId": "get_github_page_times_square_v1_github__display_path__get", "parameters": [{"name": "display_path", "in": "path", "required": true, "schema": {"type": "string", "title": "Page display path", "description": "A display path is a POSIX-like '/'-separated path consisting of components:\n\n- GitHub owner (organization or username)\n- Github repository\n- Directory name or names (as appropriate)\n- Page filename stem\n", "examples": ["lsst-sqre/times-square-demo/matplotlib/gaussian2d"]}, "description": "A display path is a POSIX-like '/'-separated path consisting of components:\n\n- GitHub owner (organization or username)\n- Github repository\n- Directory name or names (as appropriate)\n- Page filename stem\n"}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Page"}}}}, "404": {"description": "Page not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorModel"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/times-square/v1/github-pr/{owner}/{repo}/{commit}": {"get": {"tags": ["Pull Requests"], "summary": "Get a tree of GitHub PR preview pages", "description": "Get the tree of GitHub-backed pages for a pull request.\n\nThis endpoint is primarily intended to be used by Squareone to power\nits navigational view of GitHub pages for a specific pull request\n(actually a commit SHA) of a repository.", "operationId": "get_github_pr_tree_times_square_v1_github_pr__owner___repo___commit__get", "parameters": [{"name": "owner", "in": "path", "required": true, "schema": {"type": "string", "title": "GitHub owner (organization or username)", "examples": ["lsst-sqre"]}}, {"name": "repo", "in": "path", "required": true, "schema": {"type": "string", "title": "GitHub repository", "examples": ["times-square-demo"]}}, {"name": "commit", "in": "path", "required": true, "schema": {"type": "string", "title": "Git commit for pull request check run", "examples": ["878092649b8bc1d8ef1436cc623bcecb923ece39"]}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GitHubPrContents"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/times-square/v1/github-pr/{owner}/{repo}/{commit}/{path}": {"get": {"tags": ["Pull Requests"], "summary": "Metadata for page in a pull request", "description": "Get the metadata for a pull request preview of a GitHub-backed page.", "operationId": "get_github_pr_page_times_square_v1_github_pr__owner___repo___commit___path__get", "parameters": [{"name": "owner", "in": "path", "required": true, "schema": {"type": "string", "title": "GitHub owner (organization or username)", "examples": ["lsst-sqre"]}}, {"name": "repo", "in": "path", "required": true, "schema": {"type": "string", "title": "GitHub repository", "examples": ["times-square-demo"]}}, {"name": "commit", "in": "path", "required": true, "schema": {"type": "string", "title": "Git commit for pull request check run", "examples": ["878092649b8bc1d8ef1436cc623bcecb923ece39"]}}, {"name": "path", "in": "path", "required": true, "schema": {"type": "string", "title": "Notebook path in repository (without extension)", "examples": ["matplotlib/gaussian2d"]}}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Page"}}}}, "404": {"description": "Page not found", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorModel"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}}, "components": {"schemas": {"DeleteHtmlResponse": {"properties": {"html_url": {"type": "string", "minLength": 1, "format": "uri", "title": "HTML view of computed notebook", "description": "The URL for the HTML-rendering of the notebook, computed with parameter values.", "examples": ["https://example.com/v1/pages/summit-weather/html"]}, "html_events_url": {"type": "string", "minLength": 1, "format": "uri", "title": "HTML events URL", "description": "The URL for the server-sent events stream that gives updates about the HTML rendering."}}, "type": "object", "required": ["html_url", "html_events_url"], "title": "DeleteHtmlResponse", "description": "Response for a successful HTML soft-deletion."}, "ErrorDetail": {"properties": {"loc": {"anyOf": [{"items": {"type": "string"}, "type": "array"}, {"type": "null"}], "title": "Location", "examples": [["area", "field"]]}, "msg": {"type": "string", "title": "Message", "examples": ["Some error messge"]}, "type": {"type": "string", "title": "Error type", "examples": ["some_code"]}}, "type": "object", "required": ["msg", "type"], "title": "ErrorDetail", "description": "The detail of the error message."}, "ErrorModel": {"properties": {"detail": {"items": {"$ref": "#/components/schemas/ErrorDetail"}, "type": "array", "title": "Detail"}}, "type": "object", "required": ["detail"], "title": "ErrorModel", "description": "A structured API error message."}, "FormattedText": {"properties": {"gfm": {"type": "string", "title": "The GitHub-flavored Markdown-formatted text."}, "html": {"type": "string", "title": "The HTML-formatted text."}}, "type": "object", "required": ["gfm", "html"], "title": "FormattedText", "description": "Text that is formatted in both markdown and HTML."}, "GitHubCheckRunConclusion": {"type": "string", "enum": ["success", "failure", "neutral", "cancelled", "timed_out", "action_required", "stale"], "title": "GitHubCheckRunConclusion", "description": "The check run conclusion state."}, "GitHubCheckRunStatus": {"type": "string", "enum": ["queued", "in_progress", "completed"], "title": "GitHubCheckRunStatus", "description": "The check run status."}, "GitHubCheckRunSummary": {"properties": {"status": {"$ref": "#/components/schemas/GitHubCheckRunStatus"}, "conclusion": {"anyOf": [{"$ref": "#/components/schemas/GitHubCheckRunConclusion"}, {"type": "null"}]}, "external_id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "External Id", "description": "Identifier set by the check runner."}, "head_sha": {"type": "string", "title": "Head sha", "description": "The SHA of the most recent commit for this check suite."}, "name": {"type": "string", "title": "Name", "description": "Name of the check run."}, "html_url": {"type": "string", "maxLength": 2083, "minLength": 1, "format": "uri", "title": "Html Url", "description": "URL of the check run webpage on GitHub."}, "report_title": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Report title"}, "report_summary": {"anyOf": [{"$ref": "#/components/schemas/FormattedText"}, {"type": "null"}], "title": "Report summary"}, "report_text": {"anyOf": [{"$ref": "#/components/schemas/FormattedText"}, {"type": "null"}], "title": "Report body text"}}, "type": "object", "required": ["status", "conclusion", "external_id", "head_sha", "name", "html_url"], "title": "GitHubCheckRunSummary", "description": "Summary info about a check run."}, "GitHubContentsNode": {"properties": {"node_type": {"$ref": "#/components/schemas/GitHubNodeType", "title": "Node type", "description": "Type of node in the GitHub contents tree.", "examples": ["page"]}, "path": {"type": "string", "title": "Path", "description": "Squareone URL path", "examples": ["lsst-sqre/times-square-demo/demo"]}, "title": {"type": "string", "title": "Title", "description": "Presentation title of the node.", "examples": ["Demo"]}, "contents": {"items": {"$ref": "#/components/schemas/GitHubContentsNode"}, "type": "array", "title": "Contents", "description": "Children of this node"}}, "type": "object", "required": ["node_type", "path", "title", "contents"], "title": "GitHubContentsNode", "description": "Information about a node in a GitHub contents tree."}, "GitHubContentsRoot": {"properties": {"contents": {"items": {"$ref": "#/components/schemas/GitHubContentsNode"}, "type": "array", "title": "Contents", "description": "Content nodes"}}, "type": "object", "required": ["contents"], "title": "GitHubContentsRoot", "description": "The tree of GitHub contents."}, "GitHubContributor": {"properties": {"username": {"type": "string", "title": "Username", "description": "GitHub username"}, "html_url": {"type": "string", "maxLength": 2083, "minLength": 1, "format": "uri", "title": "HTML URL", "description": "The user's homepage on GitHub."}, "avatar_url": {"type": "string", "maxLength": 2083, "minLength": 1, "format": "uri", "title": "Avatar image URL"}}, "type": "object", "required": ["username", "html_url", "avatar_url"], "title": "GitHubContributor", "description": "A GitHub contributor."}, "GitHubNodeType": {"type": "string", "enum": ["owner", "repo", "directory", "page"], "title": "GitHubNodeType", "description": "Node type enumeration."}, "GitHubPr": {"properties": {"number": {"type": "integer", "title": "PR number", "description": "The pull request number."}, "title": {"type": "string", "title": "Title of the pull request"}, "conversation_url": {"type": "string", "maxLength": 2083, "minLength": 1, "format": "uri", "title": "URL for the PR's conversation page on GitHub."}, "contributor": {"$ref": "#/components/schemas/GitHubContributor"}, "state": {"$ref": "#/components/schemas/GitHubPrState"}}, "type": "object", "required": ["number", "title", "conversation_url", "contributor", "state"], "title": "GitHubPr", "description": "Information about a pull request."}, "GitHubPrContents": {"properties": {"contents": {"items": {"$ref": "#/components/schemas/GitHubContentsNode"}, "type": "array", "title": "Contents", "description": "Content nodes"}, "owner": {"type": "string", "title": "GitHub owner", "description": "The GitHub owner for this tree, if this tree applies to a single GitHub owner."}, "repo": {"type": "string", "title": "GitHub repo", "description": "The GitHub repo for this tree, if this tree applies to a single GitHub repo."}, "commit": {"type": "string", "title": "GitHub commit", "description": "The GitHub commit for this tree, if this tree is specific to a commit, such as for a PR preview."}, "yaml_check": {"anyOf": [{"$ref": "#/components/schemas/GitHubCheckRunSummary"}, {"type": "null"}], "description": "Summary of notebook execution check run."}, "nbexec_check": {"anyOf": [{"$ref": "#/components/schemas/GitHubCheckRunSummary"}, {"type": "null"}], "description": "Summary of notebook execution check run."}, "pull_requests": {"items": {"$ref": "#/components/schemas/GitHubPr"}, "type": "array", "title": "Pull Requests"}}, "type": "object", "required": ["contents", "owner", "repo", "commit", "yaml_check", "nbexec_check", "pull_requests"], "title": "GitHubPrContents", "description": "The contents of a GitHub pull request, along with information\nabout the check run and pull request."}, "GitHubPrState": {"type": "string", "enum": ["draft", "open", "merged", "closed"], "title": "GitHubPrState", "description": "The state of a GitHub PR."}, "GitHubSourceMetadata": {"properties": {"owner": {"type": "string", "title": "GitHub owner name (organization or username)"}, "repository": {"type": "string", "title": "GitHub repository name"}, "source_path": {"type": "string", "title": "Repository path of the source notebook"}, "sidecar_path": {"type": "string", "title": "Repository path of the sidecar YAML file"}}, "type": "object", "required": ["owner", "repository", "source_path", "sidecar_path"], "title": "GitHubSourceMetadata", "description": "Information about a page's source on GitHub."}, "HTTPValidationError": {"properties": {"detail": {"items": {"$ref": "#/components/schemas/ValidationError"}, "type": "array", "title": "Detail"}}, "type": "object", "title": "HTTPValidationError"}, "HtmlExecutionError": {"properties": {"code": {"$ref": "#/components/schemas/NotebookExecutionErrorCode", "title": "Execution error code", "description": "A machine-readable code identifying the failure class."}, "title": {"type": "string", "title": "Execution error title", "description": "A short, human-readable title for the failure."}, "message": {"type": "string", "title": "Execution error message", "description": "A human-readable description of the failure."}}, "type": "object", "required": ["code", "title", "message"], "title": "HtmlExecutionError", "description": "A terminal notebook execution failure surfaced on the API.\n\nThis field is populated when a notebook could not be executed (an\ninfrastructure-level failure or an expired result), rather than when a\nnotebook cell raised an exception (which still yields a renderable\nnotebook)."}, "HtmlStatus": {"properties": {"available": {"type": "boolean", "title": "Html availability", "description": "If true, HTML is available in the cache for this set of parameters."}, "html_url": {"type": "string", "minLength": 1, "format": "uri", "title": "HTML view of computed notebook", "description": "The URL for the HTML-rendering of the notebook, computed with parameter values.", "examples": ["https://example.com/v1/pages/summit-weather/html"]}, "html_hash": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "HTML content hash", "description": "A SHA256 hash of the HTML content. Clients can use this hash to determine if they are showing the current version of the HTML rendering. This field is null if the HTML is not available."}, "execution_error": {"anyOf": [{"$ref": "#/components/schemas/HtmlExecutionError"}, {"type": "null"}], "title": "Execution error", "description": "A terminal notebook execution failure, or null if the notebook did not fail to execute. When non-null, the render is terminal (the client can stop polling) even though `available` is false. This field is additive and backward compatible."}}, "type": "object", "required": ["available", "html_url", "html_hash"], "title": "HtmlStatus", "description": "Information about the availability of an HTML rendering for a given\nset of parameters."}, "Metadata": {"properties": {"name": {"type": "string", "title": "Application name", "examples": ["myapp"]}, "version": {"type": "string", "title": "Version", "examples": ["1.0.0"]}, "description": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Description", "examples": ["Some package description"]}, "repository_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Repository URL", "examples": ["https://example.com/"]}, "documentation_url": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Documentation URL", "examples": ["https://example.com/"]}}, "type": "object", "required": ["name", "version"], "title": "Metadata", "description": "Metadata about a package."}, "NotebookExecutionErrorCode": {"type": "string", "enum": ["timeout", "jupyter_error", "unknown", "result_unavailable"], "title": "NotebookExecutionErrorCode", "description": "Machine-readable codes for a terminal notebook execution failure.\n\nThis is a Times Square-owned enum for the public API so that the API is\nnot directly coupled to Noteburst's internal `NoteburstErrorCodes`. The\nfirst three values mirror `NoteburstErrorCodes`; ``result_unavailable``\ncovers the arq result-expiry case where Noteburst no longer has a result."}, "Page": {"properties": {"name": {"type": "string", "title": "Page name", "description": "The name is used as the page's API URL slug.", "examples": ["summit-weather"]}, "title": {"type": "string", "title": "Page title", "description": "The display title (plain text).", "examples": ["Summit Weather"]}, "description": {"anyOf": [{"$ref": "#/components/schemas/FormattedText"}, {"type": "null"}], "title": "Page description", "description": "The description is available as both HTML and GitHub-flavored Markdown."}, "cache_ttl": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Page title", "description": "The display title (plain text).", "examples": [864000]}, "date_added": {"type": "string", "format": "date-time", "title": "Date added", "description": "Date when the page was originally added."}, "authors": {"items": {"$ref": "#/components/schemas/Person"}, "type": "array", "title": "Page authors", "description": "Authors of the page", "default": []}, "tags": {"items": {"type": "string"}, "type": "array", "title": "Tags (keywords)", "default": []}, "uploader_username": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Username of person that uploaded the page.", "description": "This field is only set for user uploads, not for GitHub-backed pages."}, "self_url": {"type": "string", "minLength": 1, "format": "uri", "title": "Page resource URL.", "description": "API URL for the page's metadata resource.", "examples": ["https://example.com/v1/pages/summit-weather"]}, "source_url": {"type": "string", "minLength": 1, "format": "uri", "title": "Source ipynb URL", "description": "The URL for the source ipynb file (JSON-formatted)", "examples": ["https://example.com/v1/pages/summit-weather/source"]}, "rendered_url": {"type": "string", "minLength": 1, "format": "uri", "title": "Rendered notebook template URL", "description": "The URL for the source notebook rendered with parameter values (JSON-formatted).", "examples": ["https://example.com/v1/pages/summit-weather/rendered"]}, "html_url": {"type": "string", "minLength": 1, "format": "uri", "title": "HTML view of computed notebook", "description": "The URL for the HTML-rendering of the notebook, computed with parameter values.", "examples": ["https://example.com/v1/pages/summit-weather/html"]}, "html_status_url": {"type": "string", "minLength": 1, "format": "uri", "title": "URL for the status of the HTML view of a notebook", "description": "The status URL for the HTML-rendering of the notebook, computed with parameter values.", "examples": ["https://example.com/v1/pages/summit-weather/htmlstatus"]}, "html_events_url": {"type": "string", "minLength": 1, "format": "uri", "title": "HTML events URL", "description": "The URL for the server-sent events stream that gives updates about the HTML rendering."}, "parameters": {"additionalProperties": {"additionalProperties": true, "type": "object"}, "type": "object", "title": "Parameters", "description": "Parameters and their JSON Schema descriptions.", "examples": [{"units": {"default": "metric", "enum": ["metric", "imperial"]}}]}, "github": {"anyOf": [{"$ref": "#/components/schemas/GitHubSourceMetadata"}, {"type": "null"}], "title": "Repository source metadata for GitHub-backed pages", "description": "This field is only set for GitHub-backed pages, not user/API uploads."}}, "type": "object", "required": ["name", "title", "description", "date_added", "uploader_username", "self_url", "source_url", "rendered_url", "html_url", "html_status_url", "html_events_url", "parameters", "github"], "title": "Page", "description": "A webpage that is rendered from a parameterized notebook."}, "PageSummary": {"properties": {"name": {"type": "string", "title": "Page name", "description": "The name is used as the page's API URL slug.", "examples": ["summit-weather"]}, "title": {"type": "string", "title": "Page title", "description": "The display title (plain text).", "examples": ["Summit Weather"]}, "self_url": {"type": "string", "minLength": 1, "format": "uri", "title": "Page resource URL.", "description": "API URL for the page's metadata resource.", "examples": ["https://example.com/v1/pages/summit-weather"]}}, "type": "object", "required": ["name", "title", "self_url"], "title": "PageSummary", "description": "Summary information about a Page."}, "Person": {"properties": {"name": {"type": "string", "title": "Display name", "examples": ["Vera Rubin"]}, "username": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "RSP username", "examples": ["vera"]}, "affiliation_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Affiliation Name", "examples": ["Rubin/AURA"]}, "email": {"anyOf": [{"type": "string", "format": "email"}, {"type": "null"}], "title": "Email"}, "slack_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "LSSTC Slack username"}}, "type": "object", "required": ["name"], "title": "Person", "description": "A description of a person, such as an author."}, "PostPageRequest": {"properties": {"title": {"type": "string", "title": "Page title", "description": "The display title (plain text).", "examples": ["Summit Weather"]}, "ipynb": {"type": "string", "title": "ipynb", "description": "The JSON-encoded notebook content.", "examples": ["{...}"]}, "authors": {"items": {"$ref": "#/components/schemas/Person"}, "type": "array", "title": "Page authors", "description": "Authors of the page", "default": []}, "tags": {"items": {"type": "string"}, "type": "array", "title": "Tags (keywords)", "default": []}, "description": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Page description", "description": "The description can use Markdown formatting."}, "cache_ttl": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Page title", "description": "The display title (plain text).", "examples": [864000]}}, "type": "object", "required": ["title", "ipynb"], "title": "PostPageRequest", "description": "A payload for creating a new page."}, "ValidationError": {"properties": {"loc": {"items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, "type": "array", "title": "Location"}, "msg": {"type": "string", "title": "Message"}, "type": {"type": "string", "title": "Error Type"}, "input": {"title": "Input"}, "ctx": {"type": "object", "title": "Context"}}, "type": "object", "required": ["loc", "msg", "type"], "title": "ValidationError"}, "timessquare__handlers__external__models__Index": {"properties": {"metadata": {"$ref": "#/components/schemas/Metadata", "title": "Package metadata"}, "v1_api_base": {"type": "string", "minLength": 1, "format": "uri", "title": "Base URL for the v1 REST API"}, "api_docs": {"type": "string", "minLength": 1, "format": "uri", "title": "API documentation URL"}}, "type": "object", "required": ["metadata", "v1_api_base", "api_docs"], "title": "Index", "description": "Metadata returned by the external root URL of the application."}, "timessquare__handlers__v1__models__Index": {"properties": {"metadata": {"$ref": "#/components/schemas/Metadata", "title": "Package metadata"}, "api_docs": {"type": "string", "minLength": 1, "format": "uri", "title": "Browsable API documentation"}}, "type": "object", "required": ["metadata", "api_docs"], "title": "Index", "description": "Metadata returned by the external root URL of the application."}}}}