diff --git a/__tests__/smoke/pre-split/museum/openapi.yaml b/__tests__/smoke/pre-split/museum/openapi.yaml index 0907246998..6051c980cb 100644 --- a/__tests__/smoke/pre-split/museum/openapi.yaml +++ b/__tests__/smoke/pre-split/museum/openapi.yaml @@ -13,7 +13,7 @@ info: name: MIT url: https://opensource.org/license/mit/ servers: - - url: https://redocly.com/_mock/docs/openapi/museum-api + - url: https://redocly.com/_mock/demo/openapi/museum-api/ paths: /museum-hours: $ref: paths/museum-hours.yaml diff --git a/resources/arazzo.yaml b/resources/arazzo.yaml deleted file mode 100644 index 552664a741..0000000000 --- a/resources/arazzo.yaml +++ /dev/null @@ -1,121 +0,0 @@ -arazzo: 1.0.1 -info: - title: Redocly Museum API Test Workflow - description: >- - Use the Museum API with Arazzo as an example of describing multi-step workflows. - Built with love by Redocly. - version: 1.0.0 - -sourceDescriptions: - - name: museum-api - type: openapi - url: ../openapi.yaml - - name: tickets-from-museum-api - type: arazzo - url: museum-tickets.arazzo.yaml - -workflows: - - workflowId: get-museum-hours - description: >- - This workflow demonstrates how to get the museum opening hours and buy tickets. - parameters: - - in: header - name: Authorization - value: Basic Og== - steps: - - stepId: get-museum-hours - description: >- - Get museum hours by resolving request details with getMuseumHours operationId from openapi.yaml description. - operationId: museum-api.getMuseumHours - successCriteria: - - condition: $statusCode == 200 - outputs: - schedule: $response.body - - stepId: buy-ticket - description: >- - Buy a ticket for the museum by calling an external workflow from another Arazzo file. - workflowId: $sourceDescriptions.tickets-from-museum-api.workflows.get-museum-tickets - outputs: - ticketId: $outputs.ticketId - - workflowId: events-crud - description: >- - This workflow demonstrates how to list, create, update, and delete special events at the museum. - parameters: - - in: header - name: Authorization - value: Basic Og== - steps: - - stepId: list-events - description: >- - Request the list of events. - operationPath: $sourceDescriptions.museum-api#/paths/~1special-events/get - outputs: - events: $response.body - - stepId: create-event - description: >- - Create a new special event. - operationPath: $sourceDescriptions.museum-api#/paths/~1special-events/post - requestBody: - payload: - name: 'Mermaid Treasure Identification and Analysis' - location: 'Under the seaaa 🦀 🎶 🌊.' - eventDescription: 'Join us as we review and classify a rare collection of 20 thingamabobs, gadgets, gizmos, whoosits, and whatsits, kindly donated by Ariel.' - dates: - - '2023-09-05' - - '2023-09-08' - price: 0 - successCriteria: - - condition: $statusCode == 201 - - context: $response.body - condition: $.name == 'Mermaid Treasure Identification and Analysis' - type: - type: jsonpath - version: draft-goessner-dispatch-jsonpath-00 - outputs: - createdEventId: $response.body.eventId - name: $response.body.name - - stepId: get-event-by-id - description: >- - Get the details of the event that was created in the previous step. - operationPath: $sourceDescriptions.museum-api#/paths/~1special-events~1{eventId}/get - parameters: - - name: eventId - in: path - value: $steps.create-event.outputs.createdEventId - successCriteria: - - context: $statusCode - condition: '^200$' - type: regex - - stepId: update-event - description: >- - Update the created event with new details. - operationPath: $sourceDescriptions.museum-api#/paths/~1special-events~1{eventId}/patch - parameters: - - name: eventId - in: path - value: $steps.create-event.outputs.createdEventId - requestBody: - payload: - name: 'Orca Identification and Analysis' - location: 'Under the seaaa 🦀 🎶 🌊.' - dates: - - '2023-09-05' - - '2023-09-08' - price: 0 - successCriteria: - - condition: $statusCode == 200 - - context: $response.body - condition: $.name == 'Orca Identification and Analysis' - type: jsonpath - outputs: - updatedEventId: $response.body.eventId - - stepId: delete-event - description: >- - Delete the event that was updated in the previous step. - operationPath: $sourceDescriptions.museum-api#/paths/~1special-events~1{eventId}/delete - parameters: - - name: eventId - in: path - value: $steps.update-event.outputs.updatedEventId - successCriteria: - - condition: $statusCode == 204 diff --git a/resources/museum-api-test.yaml b/resources/museum-api.arazzo.yaml similarity index 98% rename from resources/museum-api-test.yaml rename to resources/museum-api.arazzo.yaml index ab2ce44844..91f77aa3dc 100644 --- a/resources/museum-api-test.yaml +++ b/resources/museum-api.arazzo.yaml @@ -9,10 +9,10 @@ info: sourceDescriptions: - name: museum-api type: openapi - url: museum-api.yaml + url: museum.yaml - name: tickets-from-museum-api type: arazzo - url: museum-tickets.yaml + url: museum-tickets.arazzo.yaml workflows: - workflowId: get-museum-hours diff --git a/resources/museum-api.yaml b/resources/museum-api.yaml deleted file mode 100644 index f19af26a56..0000000000 --- a/resources/museum-api.yaml +++ /dev/null @@ -1,855 +0,0 @@ -openapi: 3.1.0 -info: - title: Redocly Museum API - description: >- - Imaginary, but delightful Museum API for interacting with museum services - and information. Built with love by Redocly. - version: 1.1.1 - termsOfService: https://redocly.com/subscription-agreement/ - contact: - email: team@redocly.com - url: https://redocly.com/docs/cli/ - license: - name: MIT - url: https://opensource.org/license/mit/ -servers: - - url: https://redocly.com/_mock/demo/openapi/museum-api/ -paths: - /museum-hours: - get: - summary: Get museum hours - description: Get upcoming museum operating hours. - operationId: getMuseumHours - tags: - - Operations - parameters: - - $ref: '#/components/parameters/StartDate' - - $ref: '#/components/parameters/PaginationPage' - - $ref: '#/components/parameters/PaginationLimit' - responses: - '200': - description: Success. - content: - application/json: - schema: - $ref: '#/components/schemas/GetMuseumHoursResponse' - examples: - default_example: - $ref: '#/components/examples/GetMuseumHoursResponseExample' - '400': - $ref: '#/components/responses/BadRequest' - '404': - $ref: '#/components/responses/NotFound' - /special-events: - post: - summary: Create special events - description: Creates a new special event for the museum. - operationId: createSpecialEvent - tags: - - Events - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/CreateSpecialEventRequest' - examples: - default_example: - $ref: '#/components/examples/CreateSpecialEventRequestExample' - responses: - '201': - description: Created. - content: - application/json: - schema: - $ref: '#/components/schemas/SpecialEventResponse' - examples: - default_example: - $ref: '#/components/examples/CreateSpecialEventResponseExample' - '400': - $ref: '#/components/responses/BadRequest' - '404': - $ref: '#/components/responses/NotFound' - get: - summary: List special events - description: Return a list of upcoming special events at the museum. - operationId: listSpecialEvents - tags: - - Events - parameters: - - $ref: '#/components/parameters/StartDate' - - $ref: '#/components/parameters/EndDate' - - $ref: '#/components/parameters/PaginationPage' - - $ref: '#/components/parameters/PaginationLimit' - responses: - '200': - description: Success. - content: - application/json: - schema: - $ref: '#/components/schemas/ListSpecialEventsResponse' - examples: - default_example: - $ref: '#/components/examples/ListSpecialEventsResponseExample' - '400': - $ref: '#/components/responses/BadRequest' - '404': - $ref: '#/components/responses/NotFound' - /special-events/{eventId}: - get: - summary: Get special event - description: Get details about a special event. - operationId: getSpecialEvent - tags: - - Events - parameters: - - $ref: '#/components/parameters/EventId' - responses: - '200': - description: Success. - content: - application/json: - schema: - $ref: '#/components/schemas/SpecialEventResponse' - examples: - default_example: - $ref: '#/components/examples/GetSpecialEventResponseExample' - '400': - $ref: '#/components/responses/BadRequest' - '404': - $ref: '#/components/responses/NotFound' - patch: - summary: Update special event - description: Update the details of a special event. - operationId: updateSpecialEvent - tags: - - Events - parameters: - - $ref: '#/components/parameters/EventId' - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/UpdateSpecialEventRequest' - examples: - default_example: - $ref: '#/components/examples/UpdateSpecialEventRequestExample' - responses: - '200': - description: Success. - content: - application/json: - schema: - $ref: '#/components/schemas/SpecialEventResponse' - examples: - default_example: - $ref: '#/components/examples/UpdateSpecialEventResponseExample' - '400': - $ref: '#/components/responses/BadRequest' - '404': - $ref: '#/components/responses/NotFound' - delete: - summary: Delete special event - description: >- - Delete a special event from the collection. Allows museum to cancel - planned events. - operationId: deleteSpecialEvent - tags: - - Events - parameters: - - $ref: '#/components/parameters/EventId' - responses: - '204': - description: Success - no content. - '400': - $ref: '#/components/responses/BadRequest' - '401': - $ref: '#/components/responses/Unauthorized' - '404': - $ref: '#/components/responses/NotFound' - /tickets: - post: - summary: Buy museum tickets - description: Purchase museum tickets for general entry or special events. - operationId: buyMuseumTickets - tags: - - Tickets - requestBody: - required: true - content: - application/json: - schema: - $ref: '#/components/schemas/BuyMuseumTicketsRequest' - examples: - general_entry: - $ref: '#/components/examples/BuyGeneralTicketsRequestExample' - event_entry: - $ref: '#/components/examples/BuyEventTicketsRequestExample' - responses: - '201': - description: Created. - content: - application/json: - schema: - $ref: '#/components/schemas/BuyMuseumTicketsResponse' - examples: - general_entry: - $ref: '#/components/examples/BuyGeneralTicketsResponseExample' - event_entry: - $ref: '#/components/examples/BuyEventTicketsResponseExample' - '400': - $ref: '#/components/responses/BadRequest' - '404': - $ref: '#/components/responses/NotFound' - /tickets/{ticketId}/qr: - get: - summary: Get ticket QR code - description: >- - Return an image of your ticket with scannable QR code. Used for event - entry. - operationId: getTicketCode - tags: - - Tickets - parameters: - - $ref: '#/components/parameters/TicketId' - responses: - '200': - description: Scannable event ticket in image format. - content: - image/png: - schema: - $ref: '#/components/schemas/GetTicketCodeResponse' - '400': - $ref: '#/components/responses/BadRequest' - '404': - $ref: '#/components/responses/NotFound' - /query: - query: - summary: Query museum data - description: Execute a custom query against museum data - operationId: queryMuseum - parameters: - - in: header - name: Content-Type - required: true - schema: - type: string - enum: ['application/sql'] - description: Content type must be application/sql - - in: header - name: Accept - required: true - schema: - type: string - enum: ['text/csv'] - description: Accept header must be text/csv - tags: - - Operations - requestBody: - required: true - content: - application/sql: - schema: - type: string - description: SQL query to execute - example: 'select event_name, location, price from events where price < 50' - responses: - '200': - description: Query results - content: - text/csv: - schema: - type: string - format: binary - example: | - event_name,location,price - "Underwater Basket Weaving","Rec Center Pool",15 - "Cook like a Caveman","Fire Pit",5 - application/json: - schema: - type: array - items: - type: object - additionalProperties: true - '400': - $ref: '#/components/responses/BadRequest' - '404': - $ref: '#/components/responses/NotFound' - x-query: - summary: Query museum data - description: Execute a custom query against museum data - operationId: queryMuseumEx - parameters: - - in: header - name: Content-Type - required: true - schema: - type: string - enum: ['application/sql'] - description: Content type must be application/sql - - in: header - name: Accept - required: true - schema: - type: string - enum: ['text/csv'] - description: Accept header must be text/csv - tags: - - Operations - requestBody: - required: true - content: - application/sql: - schema: - type: string - description: SQL query to execute - example: 'select event_name, location, price from events where price < 50' - responses: - '200': - description: Query results - content: - text/csv: - schema: - type: string - format: binary - example: | - event_name,location,price - "Underwater Basket Weaving","Rec Center Pool",15 - "Cook like a Caveman","Fire Pit",5 - application/json: - schema: - type: array - items: - type: object - additionalProperties: true - '400': - $ref: '#/components/responses/BadRequest' - '404': - $ref: '#/components/responses/NotFound' -components: - schemas: - TicketType: - description: >- - Type of ticket being purchased. Use `general` for regular museum entry - and `event` for tickets to special events. - type: string - enum: - - event - - general - example: event - Date: - type: string - format: date - example: '2023-10-29' - Email: - description: Email address for ticket purchaser. - type: string - format: email - example: museum-lover@example.com - Phone: - description: Phone number for the ticket purchaser (optional). - type: string - example: +1(234)-567-8910 - BuyMuseumTicketsRequest: - description: Request payload used for purchasing museum tickets. - type: object - properties: - ticketType: - $ref: '#/components/schemas/TicketType' - eventId: - description: >- - Unique identifier for a special event. Required if purchasing - tickets for the museum's special events. - $ref: '#/components/schemas/EventId' - ticketDate: - description: Date that the ticket is valid for. - $ref: '#/components/schemas/Date' - email: - $ref: '#/components/schemas/Email' - phone: - $ref: '#/components/schemas/Phone' - required: - - ticketType - - ticketDate - - email - TicketMessage: - description: Confirmation message after a ticket purchase. - type: string - example: Museum general entry ticket purchased - TicketId: - description: Unique identifier for museum ticket. Generated when purchased. - type: string - format: uuid - example: a54a57ca-36f8-421b-a6b4-2e8f26858a4c - TicketConfirmation: - description: Unique confirmation code used to verify ticket purchase. - type: string - example: ticket-event-a98c8f-7eb12 - BuyMuseumTicketsResponse: - description: Details for a museum ticket after a successful purchase. - type: object - properties: - message: - $ref: '#/components/schemas/TicketMessage' - eventName: - $ref: '#/components/schemas/EventName' - ticketId: - $ref: '#/components/schemas/TicketId' - ticketType: - $ref: '#/components/schemas/TicketType' - ticketDate: - description: Date the ticket is valid for. - $ref: '#/components/schemas/Date' - confirmationCode: - $ref: '#/components/schemas/TicketConfirmation' - required: - - message - - ticketId - - ticketType - - ticketDate - - confirmationCode - GetTicketCodeResponse: - description: Image of a ticket with a QR code used for museum or event entry. - type: string - format: binary - GetMuseumHoursResponse: - description: List of museum operating hours for consecutive days. - type: array - items: - $ref: '#/components/schemas/MuseumDailyHours' - MuseumDailyHours: - description: Daily operating hours for the museum. - type: object - properties: - date: - description: Date the operating hours apply to. - $ref: '#/components/schemas/Date' - example: '2024-12-31' - timeOpen: - type: string - pattern: ^([01]\d|2[0-3]):?([0-5]\d)$ - description: >- - Time the museum opens on a specific date. Uses 24 hour time format - (`HH:mm`). - example: '09:00' - timeClose: - description: >- - Time the museum closes on a specific date. Uses 24 hour time format - (`HH:mm`). - type: string - pattern: ^([01]\d|2[0-3]):?([0-5]\d)$ - example: '18:00' - required: - - date - - timeOpen - - timeClose - EventId: - description: Identifier for a special event. - type: string - format: uuid - example: 3be6453c-03eb-4357-ae5a-984a0e574a54 - EventName: - type: string - description: Name of the special event. - example: Pirate Coding Workshop - EventLocation: - type: string - description: Location where the special event is held. - example: Computer Room - EventDescription: - type: string - description: Description of the special event. - example: >- - Captain Blackbeard shares his love of the C...language. And possibly - Arrrrr (R lang). - EventDates: - type: array - items: - $ref: '#/components/schemas/Date' - description: List of planned dates for the special event. - EventPrice: - description: Price of a ticket for the special event. - type: number - format: float - example: 25 - CreateSpecialEventRequest: - description: Request payload for creating new special events at the museum. - type: object - properties: - name: - $ref: '#/components/schemas/EventName' - location: - $ref: '#/components/schemas/EventLocation' - eventDescription: - $ref: '#/components/schemas/EventDescription' - dates: - $ref: '#/components/schemas/EventDates' - price: - $ref: '#/components/schemas/EventPrice' - required: - - name - - location - - eventDescription - - dates - - price - UpdateSpecialEventRequest: - description: >- - Request payload for updating an existing special event. Only included - fields are updated in the event. - type: object - properties: - name: - $ref: '#/components/schemas/EventName' - location: - $ref: '#/components/schemas/EventLocation' - eventDescription: - $ref: '#/components/schemas/EventDescription' - dates: - $ref: '#/components/schemas/EventDates' - price: - $ref: '#/components/schemas/EventPrice' - ListSpecialEventsResponse: - description: List of upcoming special events. - type: array - items: - $ref: '#/components/schemas/SpecialEventResponse' - SpecialEventResponse: - description: Information about a special event. - type: object - properties: - eventId: - $ref: '#/components/schemas/EventId' - name: - $ref: '#/components/schemas/EventName' - location: - $ref: '#/components/schemas/EventLocation' - eventDescription: - $ref: '#/components/schemas/EventDescription' - dates: - $ref: '#/components/schemas/EventDates' - price: - $ref: '#/components/schemas/EventPrice' - required: - - eventId - - name - - location - - eventDescription - - dates - - price - Error: - type: object - properties: - type: - type: string - example: object - title: - type: string - example: Validation failed - securitySchemes: - MuseumPlaceholderAuth: - type: http - scheme: basic - examples: - BuyGeneralTicketsRequestExample: - summary: General entry ticket - value: - ticketType: general - ticketDate: '2023-09-07' - email: todd@example.com - BuyEventTicketsRequestExample: - summary: Special event ticket - value: - ticketType: general - eventId: dad4bce8-f5cb-4078-a211-995864315e39 - ticketDate: '2023-09-05' - email: todd@example.com - BuyGeneralTicketsResponseExample: - summary: General entry ticket - value: - message: Museum general entry ticket purchased - ticketId: 382c0820-0530-4f4b-99af-13811ad0f17a - ticketType: general - ticketDate: '2023-09-07' - confirmationCode: ticket-general-e5e5c6-dce78 - BuyEventTicketsResponseExample: - summary: Special event ticket - value: - message: Museum special event ticket purchased - ticketId: b811f723-17b2-44f7-8952-24b03e43d8a9 - eventName: Mermaid Treasure Identification and Analysis - ticketType: event - ticketDate: '2023-09-05' - confirmationCode: ticket-event-9c55eg-8v82a - CreateSpecialEventRequestExample: - summary: Create special event - value: - name: Mermaid Treasure Identification and Analysis - location: Under the seaaa 🦀 🎶 🌊. - eventDescription: >- - Join us as we review and classify a rare collection of 20 - thingamabobs, gadgets, gizmos, whoosits, and whatsits, kindly donated - by Ariel. - dates: - - '2023-09-05' - - '2023-09-08' - price: 0 - CreateSpecialEventResponseExample: - summary: Special event created - value: - eventId: dad4bce8-f5cb-4078-a211-995864315e39 - name: Mermaid Treasure Identification and Analysis - location: Under the seaaa 🦀 🎶 🌊. - eventDescription: >- - Join us as we review and classify a rare collection of 20 - thingamabobs, gadgets, gizmos, whoosits, and whatsits, kindly donated - by Ariel. - dates: - - '2023-09-05' - - '2023-09-08' - price: 30 - GetSpecialEventResponseExample: - summary: Get special event - value: - eventId: 6744a0da-4121-49cd-8479-f8cc20526495 - name: Time Traveler Tea Party - location: Temporal Tearoom - eventDescription: Sip tea with important historical figures. - dates: - - '2023-11-18' - - '2023-11-25' - - '2023-12-02' - price: 60 - ListSpecialEventsResponseExample: - summary: List of special events - value: - - eventId: f3e0e76e-e4a8-466e-ab9c-ae36c15b8e97 - name: Sasquatch Ballet - location: Seattle... probably - eventDescription: >- - They're big, they're hairy, but they're also graceful. Come learn - how the biggest feet can have the lightest touch. - dates: - - '2023-12-15' - - '2023-12-22' - price: 40 - - eventId: 2f14374a-9c65-4ee5-94b7-fba66d893483 - name: Solar Telescope Demonstration - location: Far from the sun. - eventDescription: Look at the sun without going blind! - dates: - - '2023-09-07' - - '2023-09-14' - price: 50 - - eventId: 6aaa61ba-b2aa-4868-b803-603dbbf7bfdb - name: Cook like a Caveman - location: Fire Pit on East side - eventDescription: Learn to cook on an open flame. - dates: - - '2023-11-10' - - '2023-11-17' - - '2023-11-24' - price: 5 - - eventId: 602b75e1-5696-4ab8-8c7a-f9e13580f910 - name: Underwater Basket Weaving - location: Rec Center Pool next door. - eventDescription: Learn to weave baskets underwater. - dates: - - '2023-09-12' - - '2023-09-15' - price: 15 - - eventId: dad4bce8-f5cb-4078-a211-995864315e39 - name: Mermaid Treasure Identification and Analysis - location: Room Sea-12 - eventDescription: >- - Join us as we review and classify a rare collection of 20 - thingamabobs, gadgets, gizmos, whoosits, and whatsits — kindly - donated by Ariel. - dates: - - '2023-09-05' - - '2023-09-08' - price: 30 - - eventId: 6744a0da-4121-49cd-8479-f8cc20526495 - name: Time Traveler Tea Party - location: Temporal Tearoom - eventDescription: Sip tea with important historical figures. - dates: - - '2023-11-18' - - '2023-11-25' - - '2023-12-02' - price: 60 - - eventId: 3be6453c-03eb-4357-ae5a-984a0e574a54 - name: Pirate Coding Workshop - location: Computer Room - eventDescription: >- - Captain Blackbeard shares his love of the C...language. And possibly - Arrrrr (R lang). - dates: - - '2023-10-29' - - '2023-10-30' - - '2023-10-31' - price: 45 - - eventId: 9d90d29a-2af5-4206-97d9-9ea9ceadcb78 - name: Llama Street Art Through the Ages - location: Auditorium - eventDescription: Llama street art?! Alpaca my bags -- let's go! - dates: - - '2023-10-29' - - '2023-10-30' - - '2023-10-31' - price: 45 - - eventId: a3c7b2c4-b5fb-4ef7-9322-00a919864957 - name: The Great Parrot Debate - location: Outdoor Amphitheatre - eventDescription: See leading parrot minds discuss important geopolitical issues. - dates: - - '2023-11-03' - - '2023-11-10' - price: 35 - - eventId: b92d46b7-4c5d-422b-87a5-287767e26f29 - name: Eat a Bunch of Corn - location: Cafeteria - eventDescription: We accidentally bought too much corn. Please come eat it. - dates: - - '2023-11-10' - - '2023-11-17' - - '2023-11-24' - price: 5 - UpdateSpecialEventRequestExample: - summary: Update special event request - value: - location: On the beach. - price: 15 - UpdateSpecialEventResponseExample: - summary: Update special event - value: - eventId: dad4bce8-f5cb-4078-a211-995864315e39 - name: Mermaid Treasure Identification and Analysis - location: On the beach. - eventDescription: >- - Join us as we review and classify a rare collection of 20 - thingamabobs, gadgets, gizmos, whoosits, and whatsits, kindly donated - by Ariel. - dates: - - '2023-09-05' - - '2023-09-08' - price: 15 - GetMuseumHoursResponseExample: - summary: Get hours response - value: - - date: '2023-09-11' - timeOpen: '09:00' - timeClose: '18:00' - - date: '2023-09-12' - timeOpen: '09:00' - timeClose: '18:00' - - date: '2023-09-13' - timeOpen: '09:00' - timeClose: '18:00' - - date: '2023-09-14' - timeOpen: '09:00' - timeClose: '18:00' - - date: '2023-09-15' - timeOpen: '10:00' - timeClose: '16:00' - - date: '2023-09-18' - timeOpen: '09:00' - timeClose: '18:00' - - date: '2023-09-19' - timeOpen: '09:00' - timeClose: '18:00' - - date: '2023-09-20' - timeOpen: '09:00' - timeClose: '18:00' - - date: '2023-09-21' - timeOpen: '09:00' - timeClose: '18:00' - - date: '2023-09-22' - timeOpen: '10:00' - timeClose: '16:00' - parameters: - PaginationPage: - name: page - in: query - description: Page number to retrieve. - schema: - type: integer - default: 1 - example: 2 - PaginationLimit: - name: limit - in: query - description: Number of days per page. - schema: - type: integer - default: 10 - maximum: 30 - example: 15 - EventId: - name: eventId - in: path - description: Identifier for a special event. - required: true - schema: - type: string - format: uuid - example: dad4bce8-f5cb-4078-a211-995864315e39 - StartDate: - name: startDate - in: query - description: >- - Starting date to retrieve future operating hours from. Defaults to - today's date. - schema: - type: string - format: date - example: '2023-02-23' - EndDate: - name: endDate - in: query - description: >- - End of a date range to retrieve special events for. Defaults to 7 days - after `startDate`. - schema: - type: string - format: date - example: '2023-04-18' - TicketId: - name: ticketId - in: path - description: >- - Identifier for a ticket to a museum event. Used to generate ticket - image. - required: true - schema: - type: string - format: uuid - example: a54a57ca-36f8-421b-a6b4-2e8f26858a4c - responses: - BadRequest: - description: Bad request. - content: - application/problem+json: - schema: - $ref: '#/components/schemas/Error' - NotFound: - description: Not found. - content: - application/problem+json: - schema: - $ref: '#/components/schemas/Error' - Unauthorized: - description: Unauthorized. - content: - application/problem+json: - schema: - $ref: '#/components/schemas/Error' -tags: - - name: Operations - description: Operational information about the museum. - - name: Events - description: Special events hosted by the museum. - - name: Tickets - description: Museum tickets for general entrance or special events. -security: - - MuseumPlaceholderAuth: [] diff --git a/resources/museum-tickets.arazzo.yaml b/resources/museum-tickets.arazzo.yaml index 62b783058b..ea758bf7c5 100644 --- a/resources/museum-tickets.arazzo.yaml +++ b/resources/museum-tickets.arazzo.yaml @@ -1,15 +1,15 @@ arazzo: 1.0.1 info: - title: Redocly Museum Tickets Workflow + title: Redocly Museum API Tickets description: >- - Use the Museum API as an example in a simple Arazzo workflow. - Built with love by Redocly. + A part of imaginary, but delightful Museum API for interacting with museum services + and information. Built with love by Redocly. version: 1.0.0 sourceDescriptions: - name: museum-api type: openapi - url: ../openapi.yaml + url: museum.yaml workflows: - workflowId: get-museum-tickets @@ -22,7 +22,7 @@ workflows: steps: - stepId: buy-tickets description: >- - Buy museum tickets resolving request details with buyMuseumTickets operationId from openapi.yaml description. + Buy museum tickets resolving request details with buyMuseumTickets operationId from museum-api.yaml description. operationId: buyMuseumTickets requestBody: payload: @@ -32,6 +32,8 @@ workflows: successCriteria: - condition: $statusCode == 201 outputs: - ticketId: $response.body.ticketId + ticketId: $response.body#/ticketId + fullBody: $response.body outputs: ticketId: $steps.buy-tickets.outputs.ticketId + stepFullBody: $steps.buy-tickets.outputs.fullBody diff --git a/resources/museum-tickets.yaml b/resources/museum-tickets.yaml deleted file mode 100644 index c0dd01ecf2..0000000000 --- a/resources/museum-tickets.yaml +++ /dev/null @@ -1,39 +0,0 @@ -arazzo: 1.0.1 -info: - title: Redocly Museum API Tickets - description: >- - A part of imaginary, but delightful Museum API for interacting with museum services - and information. Built with love by Redocly. - version: 1.0.0 - -sourceDescriptions: - - name: museum-api - type: openapi - url: museum-api.yaml - -workflows: - - workflowId: get-museum-tickets - description: >- - This workflow demonstrates how to buy tickets for the museum. - parameters: - - in: header - name: Authorization - value: Basic Og== - steps: - - stepId: buy-tickets - description: >- - Buy museum tickets resolving request details with buyMuseumTickets operationId from museum-api.yaml description. - operationId: buyMuseumTickets - requestBody: - payload: - ticketType: general - ticketDate: 2023-09-07 - email: todd@example.com - successCriteria: - - condition: $statusCode == 201 - outputs: - ticketId: $response.body#/ticketId - fullBody: $response.body - outputs: - ticketId: $steps.buy-tickets.outputs.ticketId - stepFullBody: $steps.buy-tickets.outputs.fullBody diff --git a/resources/museum.yaml b/resources/museum.yaml index f1eba785f0..6acc1f985f 100644 --- a/resources/museum.yaml +++ b/resources/museum.yaml @@ -1,17 +1,19 @@ openapi: 3.1.0 info: title: Redocly Museum API - description: Imaginary, but delightful Museum API for interacting with museum services and information. Built with love by Redocly. + description: >- + Imaginary, but delightful Museum API for interacting with museum services + and information. Built with love by Redocly. version: 1.1.1 - termsOfService: 'https://redocly.com/subscription-agreement/' + termsOfService: https://redocly.com/subscription-agreement/ contact: email: team@redocly.com - url: 'https://redocly.com/docs/cli/' + url: https://redocly.com/docs/cli/ license: name: MIT - url: 'https://opensource.org/license/mit/' + url: https://opensource.org/license/mit/ servers: - - url: 'https://redocly.com/_mock/docs/openapi/museum-api' + - url: https://redocly.com/_mock/demo/openapi/museum-api/ paths: /museum-hours: get: @@ -149,7 +151,9 @@ paths: $ref: '#/components/responses/NotFound' delete: summary: Delete special event - description: Delete a special event from the collection. Allows museum to cancel planned events. + description: >- + Delete a special event from the collection. Allows museum to cancel + planned events. operationId: deleteSpecialEvent tags: - Events @@ -201,7 +205,9 @@ paths: /tickets/{ticketId}/qr: get: summary: Get ticket QR code - description: Return an image of your ticket with scannable QR code. Used for event entry. + description: >- + Return an image of your ticket with scannable QR code. Used for event + entry. operationId: getTicketCode tags: - Tickets @@ -221,7 +227,9 @@ paths: components: schemas: TicketType: - description: Type of ticket being purchased. Use `general` for regular museum entry and `event` for tickets to special events. + description: >- + Type of ticket being purchased. Use `general` for regular museum entry + and `event` for tickets to special events. type: string enum: - event @@ -239,7 +247,7 @@ components: Phone: description: Phone number for the ticket purchaser (optional). type: string - example: '+1(234)-567-8910' + example: +1(234)-567-8910 BuyMuseumTicketsRequest: description: Request payload used for purchasing museum tickets. type: object @@ -247,7 +255,9 @@ components: ticketType: $ref: '#/components/schemas/TicketType' eventId: - description: Unique identifier for a special event. Required if purchasing tickets for the museum's special events. + description: >- + Unique identifier for a special event. Required if purchasing + tickets for the museum's special events. $ref: '#/components/schemas/EventId' ticketDate: description: Date that the ticket is valid for. @@ -272,7 +282,7 @@ components: TicketConfirmation: description: Unique confirmation code used to verify ticket purchase. type: string - example: 'ticket-event-a98c8f-7eb12' + example: ticket-event-a98c8f-7eb12 BuyMuseumTicketsResponse: description: Details for a museum ticket after a successful purchase. type: object @@ -315,14 +325,18 @@ components: example: '2024-12-31' timeOpen: type: string - pattern: '^([01]\d|2[0-3]):?([0-5]\d)$' - description: Time the museum opens on a specific date. Uses 24 hour time format (`HH:mm`). - example: 09:00 + pattern: ^([01]\d|2[0-3]):?([0-5]\d)$ + description: >- + Time the museum opens on a specific date. Uses 24 hour time format + (`HH:mm`). + example: '09:00' timeClose: - description: Time the museum closes on a specific date. Uses 24 hour time format (`HH:mm`). + description: >- + Time the museum closes on a specific date. Uses 24 hour time format + (`HH:mm`). type: string - pattern: '^([01]\d|2[0-3]):?([0-5]\d)$' - example: 18:00 + pattern: ^([01]\d|2[0-3]):?([0-5]\d)$ + example: '18:00' required: - date - timeOpen @@ -343,7 +357,9 @@ components: EventDescription: type: string description: Description of the special event. - example: Captain Blackbeard shares his love of the C...language. And possibly Arrrrr (R lang). + example: >- + Captain Blackbeard shares his love of the C...language. And possibly + Arrrrr (R lang). EventDates: type: array items: @@ -375,7 +391,9 @@ components: - dates - price UpdateSpecialEventRequest: - description: Request payload for updating an existing special event. Only included fields are updated in the event. + description: >- + Request payload for updating an existing special event. Only included + fields are updated in the event. type: object properties: name: @@ -425,7 +443,6 @@ components: title: type: string example: Validation failed - securitySchemes: MuseumPlaceholderAuth: type: http @@ -466,7 +483,10 @@ components: value: name: Mermaid Treasure Identification and Analysis location: Under the seaaa 🦀 🎶 🌊. - eventDescription: Join us as we review and classify a rare collection of 20 thingamabobs, gadgets, gizmos, whoosits, and whatsits, kindly donated by Ariel. + eventDescription: >- + Join us as we review and classify a rare collection of 20 + thingamabobs, gadgets, gizmos, whoosits, and whatsits, kindly donated + by Ariel. dates: - '2023-09-05' - '2023-09-08' @@ -477,7 +497,10 @@ components: eventId: dad4bce8-f5cb-4078-a211-995864315e39 name: Mermaid Treasure Identification and Analysis location: Under the seaaa 🦀 🎶 🌊. - eventDescription: Join us as we review and classify a rare collection of 20 thingamabobs, gadgets, gizmos, whoosits, and whatsits, kindly donated by Ariel. + eventDescription: >- + Join us as we review and classify a rare collection of 20 + thingamabobs, gadgets, gizmos, whoosits, and whatsits, kindly donated + by Ariel. dates: - '2023-09-05' - '2023-09-08' @@ -500,7 +523,9 @@ components: - eventId: f3e0e76e-e4a8-466e-ab9c-ae36c15b8e97 name: Sasquatch Ballet location: Seattle... probably - eventDescription: They're big, they're hairy, but they're also graceful. Come learn how the biggest feet can have the lightest touch. + eventDescription: >- + They're big, they're hairy, but they're also graceful. Come learn + how the biggest feet can have the lightest touch. dates: - '2023-12-15' - '2023-12-22' @@ -533,7 +558,10 @@ components: - eventId: dad4bce8-f5cb-4078-a211-995864315e39 name: Mermaid Treasure Identification and Analysis location: Room Sea-12 - eventDescription: Join us as we review and classify a rare collection of 20 thingamabobs, gadgets, gizmos, whoosits, and whatsits — kindly donated by Ariel. + eventDescription: >- + Join us as we review and classify a rare collection of 20 + thingamabobs, gadgets, gizmos, whoosits, and whatsits — kindly + donated by Ariel. dates: - '2023-09-05' - '2023-09-08' @@ -550,7 +578,9 @@ components: - eventId: 3be6453c-03eb-4357-ae5a-984a0e574a54 name: Pirate Coding Workshop location: Computer Room - eventDescription: Captain Blackbeard shares his love of the C...language. And possibly Arrrrr (R lang). + eventDescription: >- + Captain Blackbeard shares his love of the C...language. And possibly + Arrrrr (R lang). dates: - '2023-10-29' - '2023-10-30' @@ -593,7 +623,10 @@ components: eventId: dad4bce8-f5cb-4078-a211-995864315e39 name: Mermaid Treasure Identification and Analysis location: On the beach. - eventDescription: Join us as we review and classify a rare collection of 20 thingamabobs, gadgets, gizmos, whoosits, and whatsits, kindly donated by Ariel. + eventDescription: >- + Join us as we review and classify a rare collection of 20 + thingamabobs, gadgets, gizmos, whoosits, and whatsits, kindly donated + by Ariel. dates: - '2023-09-05' - '2023-09-08' @@ -661,7 +694,9 @@ components: StartDate: name: startDate in: query - description: Starting date to retrieve future operating hours from. Defaults to today's date. + description: >- + Starting date to retrieve future operating hours from. Defaults to + today's date. schema: type: string format: date @@ -669,7 +704,9 @@ components: EndDate: name: endDate in: query - description: End of a date range to retrieve special events for. Defaults to 7 days after `startDate`. + description: >- + End of a date range to retrieve special events for. Defaults to 7 days + after `startDate`. schema: type: string format: date @@ -677,7 +714,9 @@ components: TicketId: name: ticketId in: path - description: Identifier for a ticket to a museum event. Used to generate ticket image. + description: >- + Identifier for a ticket to a museum event. Used to generate ticket + image. required: true schema: type: string