# frozen_string_literal: true # openAPI documentation for reservations endpoint class OpenAPI::V1::AvailabilitiesDoc < OpenAPI::V1::BaseDoc resource_description do short 'Availabilities' desc 'Slots availables for reservation' formats FORMATS api_version API_VERSION end include OpenAPI::V1::Concerns::ParamGroups doc_for :index do api :GET, "/#{API_VERSION}/availabilities", 'Availabilities index' description 'Index of reservable availabilities and their slots, paginated. Ordered by *start_at* descendant.' param_group :pagination param :after, DateTime, optional: true, desc: 'Filter availabilities to those starting after the given date.' param :before, DateTime, optional: true, desc: 'Filter availabilities to those ending before the given date.' param :user_id, [Integer, Array], optional: true, desc: 'Scope the request to one or various users.' param :available_type, %w[Event Machine Space Training], optional: true, desc: 'Scope the request to a specific type of reservable.' param :available_id, [Integer, Array], optional: true, desc: 'Scope the request to one or various reservables.
' \ 'WARNING: filtering by available_id is only available if ' \ 'filter available_type is provided' example <<-AVAILABILITIES # /open_api/v1/availabilities?available_type=Machine&page=1&per_page=3 { "availabilities": [ { "id": 5115, "start_at": "2023-07-13T14:00:00.000+02:00", "end_at": "2023-07-13T18:00:00.000+02:00", "created_at": "2023-01-24T12:28:25.905+01:00", "available_type": "Machine", "available_ids": [ 5, 9, 10, 15, 8, 12, 17, 16, 3, 2, 14, 18 ], "slots": [ { "id": 17792, "start_at": "2023-07-13T14:00:00.000+02:00", "end_at": "2023-07-13T15:00:00.000+02:00" }, { "id": 17793, "start_at": "2023-07-13T15:00:00.000+02:00", "end_at": "2023-07-13T16:00:00.000+02:00" }, { "id": 17794, "start_at": "2023-07-13T16:00:00.000+02:00", "end_at": "2023-07-13T17:00:00.000+02:00" }, { "id": 17795, "start_at": "2023-07-13T17:00:00.000+02:00", "end_at": "2023-07-13T18:00:00.000+02:00" } ] }, { "id": 5112, "start_at": "2023-07-07T14:00:00.000+02:00", "end_at": "2023-07-07T18:00:00.000+02:00", "created_at": "2023-01-24T12:26:45.997+01:00", "available_type": "Machine", "available_ids": [ 5, 9, 10, 15, 8, 12, 17, 16, 3, 2, 14, 18 ], "slots": [ { "id": 17786, "start_at": "2023-07-07T14:00:00.000+02:00", "end_at": "2023-07-07T15:00:00.000+02:00" }, { "id": 17787, "start_at": "2023-07-07T15:00:00.000+02:00", "end_at": "2023-07-07T16:00:00.000+02:00" }, { "id": 17788, "start_at": "2023-07-07T16:00:00.000+02:00", "end_at": "2023-07-07T17:00:00.000+02:00" }, { "id": 17789, "start_at": "2023-07-07T17:00:00.000+02:00", "end_at": "2023-07-07T18:00:00.000+02:00" } ] }, { "id": 5111, "start_at": "2023-07-06T14:00:00.000+02:00", "end_at": "2023-07-06T18:00:00.000+02:00", "created_at": "2023-01-24T12:26:37.189+01:00", "available_type": "Machine", "available_ids": [ 5, 9, 10, 15, 8, 12, 17, 16, 3, 2, 14, 18 ], "slots": [ { "id": 17782, "start_at": "2023-07-06T14:00:00.000+02:00", "end_at": "2023-07-06T15:00:00.000+02:00" }, { "id": 17783, "start_at": "2023-07-06T15:00:00.000+02:00", "end_at": "2023-07-06T16:00:00.000+02:00" }, { "id": 17784, "start_at": "2023-07-06T16:00:00.000+02:00", "end_at": "2023-07-06T17:00:00.000+02:00" }, { "id": 17785, "start_at": "2023-07-06T17:00:00.000+02:00", "end_at": "2023-07-06T18:00:00.000+02:00" } ] } ] } AVAILABILITIES end end