{"id":14986658,"url":"https://github.com/redocly/museum-openapi-example","last_synced_at":"2025-10-05T19:17:53.672Z","repository":{"id":205314357,"uuid":"713070411","full_name":"Redocly/museum-openapi-example","owner":"Redocly","description":"An example OpenAPI description for an imaginary Museum API. ","archived":false,"fork":false,"pushed_at":"2024-11-20T14:05:33.000Z","size":59,"stargazers_count":59,"open_issues_count":5,"forks_count":38,"subscribers_count":13,"default_branch":"main","last_synced_at":"2025-09-03T14:50:18.630Z","etag":null,"topics":["apis","example","oas-description","openapi","openapi-description","openapi-example","openapi-sp","openapi-spec","openapi3","rest"],"latest_commit_sha":null,"homepage":"https://redocly.com/docs/resources/learning-openapi/","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Redocly.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-11-01T19:22:54.000Z","updated_at":"2025-09-03T00:22:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"db2d6dc3-8c03-49c0-a97d-24531fd95041","html_url":"https://github.com/Redocly/museum-openapi-example","commit_stats":{"total_commits":20,"total_committers":7,"mean_commits":2.857142857142857,"dds":0.8,"last_synced_commit":"56d2e8f64cc05519a22e370a928bf6df8cd7ba67"},"previous_names":["redocly/museum-openapi-example"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/Redocly/museum-openapi-example","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Redocly%2Fmuseum-openapi-example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Redocly%2Fmuseum-openapi-example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Redocly%2Fmuseum-openapi-example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Redocly%2Fmuseum-openapi-example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Redocly","download_url":"https://codeload.github.com/Redocly/museum-openapi-example/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Redocly%2Fmuseum-openapi-example/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278505038,"owners_count":25998057,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-05T02:00:06.059Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apis","example","oas-description","openapi","openapi-description","openapi-example","openapi-sp","openapi-spec","openapi3","rest"],"created_at":"2024-09-24T14:13:17.877Z","updated_at":"2025-10-05T19:17:53.650Z","avatar_url":"https://github.com/Redocly.png","language":null,"readme":"# Redocly Museum API Example\n\nAn imaginary, but delightful Museum API for interacting with museum services and information.\nBuilt by Redocly for educational purposes.\n\n\u003e [!NOTE]  \n\u003e This OpenAPI description uses the [OpenAPI 3.1.0 specification](https://spec.openapis.org/oas/v3.1.0).\n\n## Overview\n\nIntroducing the \"Museum API\", which offers a set of endpoints to interact with a museum's services--such as retrieving museum hours, managing special events, and purchasing tickets.\n\nNew functionality may be added to the Museum API in the future.\nIs there an example you'd like to see? Please [open an issue](https://github.com/Redocly/museum-openapi-example/issues/new).\n\n## Features\n\n\u003e [!NOTE]  \n\u003e Reminder that these are fictional examples for learning purposes.\n\u003e The contents of this repository are illustrations to use with your OpenAPI study or tools exploration.\n\n### OpenAPI\n\n- `openapi.yaml` contains the Museum API. It is an OpenAPI 3.1.0 description.\n\nThe Museum API has the following core features (sorted by tags):\n- Operations\n  - Get museum operational hours\n- Special events\n  - Get special event data\n  - List special events\n  - Create and update a special event\n  - Delete a special event\n- Tickets\n  - Purchase museum tickets for general entry or special events\n  - Get scannable QR code for museum ticket\n\n### Arazzo\n\n- `arazzo/museum-tickets.arazzo.yaml` is an Arazzo 1.0.0 description of using the Museum OpenAPI source to describe an API sequence.\n- `arazzo/museum-api.arazzo.yaml` is an Arazzo 1.0.0 description using both the Museum API and another Arazzo file to describe a series of multi-step API workflows and passing the variables between them.\n\n## Getting started\n\n1. Clone this repo.\n2. Open the repo in your IDE.\n3. Run `npm install` to install the Redocly CLI.\n\n### Working with the OpenAPI description\n\nWe encourage you to explore the museum's OpenAPI description and make changes.\nTry experimenting with the following approaches:\n\n**Preview the Museum OpenAPI example's API docs and observe your changes visually.**\n\n- Run `npm run preview` to preview the documentation.\n- Navigate to the **List special events** operation in the preview.\n- With the preview running...\n  - Go to the _openapi.yaml_ file in your IDE.\n  - Search for `listSpecialEvents` to find the matching `operationId`.\n  - Replace the `description` field with the snippet below:\n\n```yaml\n    description: |-\n        Return a list of _upcoming_ special events at the museum.\n            \n        See one you like? Use this API to [buy a ticket](/#tag/Tickets/operation/buyMuseumTickets).  \n```\n\nSee the updated description? This is a great way to preview how end-users of your docs will experience your changes.\n\n**Lint your changes to the OpenAPI description using [Redocly CLI](https://redocly.com/docs/cli/).**\n\n- Open the museum's _openapi.yaml_ file in your IDE. \n- Add the following snippet to `paths` above the /museum-hours operation:\n\n```yaml\n  /example:\n    get: \n      summary: Example Summary\n      description: Example description\n      responses: \n        '200':\n          description: Success\n        '400': \n          description: Bad Request\n```\n\n- Run `npm run lint` in your terminal. See the errors? \n\nThe linting behavior is controlled by the _redocly.yaml_ configuration file.\nThe linter is configured to use Redocly's [recommended ruleset](https://redocly.com/docs/cli/rules/recommended/#recommended-ruleset), which are built into the CLI.\nHowever, we also added a [configurable rule](https://redocly.com/docs/cli/rules/configurable-rules/) for enforcing sentence casing on operation summaries.\n\n**Lint an Arazzo description using [Redocly CLI](https://redocly.com/docs/cli/).**\n\n- Redocly CLI can also lint formats other than OpenAPI, such as the Arazzo format.\n- Run `npm run lint arazzo/museum-api.arazzo.yaml` to lint an example Arazzo description.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredocly%2Fmuseum-openapi-example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fredocly%2Fmuseum-openapi-example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredocly%2Fmuseum-openapi-example/lists"}