{ "openapi": "3.0.0", "info": { "title": "FlyPark.io", "version": "1.0.0" }, "paths": { "/v1/auth/login": { "post": { "tags": [ "Auth" ], "summary": "Sign in", "description": "Login by email and password", "operationId": "0338d1664cda6d08ca94798e573164dd", "parameters": [ { "name": "Accept-Language", "in": "header", "required": false, "schema": { "type": "string" } } ], "requestBody": { "description": "The credentials", "required": true, "content": { "application/json": { "schema": { "required": [ "email", "password" ], "properties": { "email": { "type": "string", "format": "email" }, "password": { "type": "string", "format": "password" } }, "type": "object" } } } }, "responses": { "401": { "description": "The request is unauthorized" }, "422": { "description": "The request cannot be processed" }, "200": { "description": "The login confirmed", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/bearer" } } } } } } }, "/v1/auth/me": { "get": { "tags": [ "Auth" ], "summary": "Show user", "description": "", "operationId": "e5aa5aee4c523852efe5366ebadae7ad", "parameters": [ { "name": "Accept-Language", "in": "header", "required": false, "schema": { "type": "string" } } ], "responses": { "401": { "description": "The request is unauthorized" }, "422": { "description": "The request cannot be processed" }, "200": { "description": "The resource" } }, "security": [ { "Bearer": [] }, { "ApiKeyQuery": [] }, { "ApiKeyHeader": [] } ] } }, "/v1/auth/logout": { "post": { "tags": [ "Auth" ], "summary": "Sign out", "description": "Logout", "operationId": "504cf2b92b1e29ec4d30bc44dc309f3b", "parameters": [ { "name": "Accept-Language", "in": "header", "required": false, "schema": { "type": "string" } } ], "responses": { "401": { "description": "The request is unauthorized" }, "422": { "description": "The request cannot be processed" }, "200": { "description": "The deauthorization confirmed" } }, "security": [ { "Bearer": [] } ] } }, "/v1/auth/refresh": { "post": { "tags": [ "Auth" ], "summary": "Refresh token", "description": "Refresh token", "operationId": "86b38568fe7abfbc2e154cd895bcfe95", "responses": { "401": { "description": "The request is unauthorized" }, "422": { "description": "The request cannot be processed" }, "200": { "description": "The refresh token", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/bearer" } } } } }, "security": [ { "Bearer": [] } ] } }, "/v1/auth/reset": { "post": { "tags": [ "Auth" ], "summary": "Reset password", "description": "Send an email with a link to reset a password", "operationId": "7199ac480accad487222d7bae5133808", "parameters": [ { "name": "Accept-Language", "in": "header", "required": false, "schema": { "type": "string" } } ], "requestBody": { "description": "The e-mail", "required": true, "content": { "application/json": { "schema": { "required": [ "email" ], "properties": { "email": { "type": "string", "format": "email", "example": "operator@flypark.io" } }, "type": "object" } } } }, "responses": { "404": { "description": "The user not found" }, "422": { "description": "The request cannot be processed" }, "200": { "description": "The process has been initiated" } } } }, "/v1/bookings/{booking}/cars": { "get": { "tags": [ "Resource - Booking" ], "summary": "List booking cars", "description": "", "operationId": "ca1fda197e93b09dddea74e9a5f46bcd", "parameters": [ { "name": "Accept-Language", "in": "header", "required": false, "schema": { "type": "string" } }, { "name": "booking", "in": "path", "description": "The resource", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "page[size]", "in": "query", "description": "The paginator", "required": false, "schema": { "type": "integer" } }, { "name": "page[number]", "in": "query", "description": "The paginator", "required": false, "schema": { "type": "integer" } }, { "name": "sort", "in": "query", "description": "The query", "required": false, "schema": { "type": "string" } }, { "name": "filter[$filter]", "in": "query", "description": "The query", "required": false, "schema": { "type": "string" } } ], "responses": { "401": { "description": "The request is unauthorized" }, "406": { "description": "The request has been refused" }, "422": { "description": "The request cannot be processed" }, "200": { "description": "The resources" } }, "security": [ { "Bearer": [] }, { "ApiKeyQuery": [] }, { "ApiKeyHeader": [] } ] } }, "/v1/bookings/{booking}/cars/{car}": { "get": { "tags": [ "Resource - Booking" ], "summary": "Show booking car", "description": "", "operationId": "1e6141b36c243dc68788a8d8bc9a3bca", "parameters": [ { "name": "Accept-Language", "in": "header", "required": false, "schema": { "type": "string" } }, { "name": "booking", "in": "path", "description": "The resource", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "car", "in": "path", "description": "The resource", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "401": { "description": "The request is unauthorized" }, "403": { "description": "The request is forbidden" }, "422": { "description": "The request cannot be processed" }, "200": { "description": "The resource" } }, "security": [ { "Bearer": [] }, { "ApiKeyQuery": [] }, { "ApiKeyHeader": [] } ] }, "patch": { "tags": [ "Resource - Booking" ], "summary": "Update booking car", "description": "", "operationId": "643cab7915e6795854df2c5bbff45c04", "parameters": [ { "name": "Accept-Language", "in": "header", "required": false, "schema": { "type": "string" } }, { "name": "booking", "in": "path", "description": "The resource", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "car", "in": "path", "description": "The resource", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "401": { "description": "The request is unauthorized" }, "403": { "description": "The request is forbidden" }, "406": { "description": "The request has been refused" }, "422": { "description": "The request cannot be processed" }, "200": { "description": "The resource has been updated" } }, "security": [ { "Bearer": [] }, { "ApiKeyQuery": [] }, { "ApiKeyHeader": [] } ] } }, "/v1/bookings": { "get": { "tags": [ "Resource - Booking" ], "summary": "List bookings", "description": "", "operationId": "e7b20e93d5b46e20717f321eb7b47280", "parameters": [ { "name": "Accept-Language", "in": "header", "required": false, "schema": { "type": "string" } }, { "name": "page[size]", "in": "query", "description": "The paginator", "required": false, "schema": { "type": "integer" } }, { "name": "page[number]", "in": "query", "description": "The paginator", "required": false, "schema": { "type": "integer" } }, { "name": "sort", "in": "query", "description": "The query", "required": false, "schema": { "type": "string" } }, { "name": "filter[$filter]", "in": "query", "description": "The query", "required": false, "schema": { "type": "string" } } ], "responses": { "401": { "description": "The request is unauthorized" }, "422": { "description": "The request cannot be processed" }, "200": { "description": "The resources" } }, "security": [ { "Bearer": [] }, { "ApiKeyQuery": [] }, { "ApiKeyHeader": [] } ] } }, "/v1/bookings/{booking}": { "get": { "tags": [ "Resource - Booking" ], "summary": "Show booking", "description": "", "operationId": "e4c724895ba2a256d23093e581259b4a", "parameters": [ { "name": "Accept-Language", "in": "header", "required": false, "schema": { "type": "string" } }, { "name": "X-FlyPark-Network", "in": "header", "required": false, "schema": { "type": "string", "format": "uuid" } }, { "name": "booking", "in": "path", "description": "The resource", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "401": { "description": "The request is unauthorized" }, "403": { "description": "The request is forbidden" }, "200": { "description": "The resource" } }, "security": [ { "Bearer": [] }, { "ApiKeyQuery": [] }, { "ApiKeyHeader": [] } ] }, "delete": { "tags": [ "Resource - Booking" ], "summary": "Cancel booking", "description": "", "operationId": "1efb12473d0ce17cd5a9a41fd9a723e0", "parameters": [ { "name": "booking", "in": "path", "description": "The resource", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "401": { "description": "The request is unauthorized" }, "403": { "description": "The request is forbidden" }, "406": { "description": "The request has been refused" }, "422": { "description": "The request cannot be processed" }, "204": { "description": "The resource has been deleted" } }, "security": [ { "Bearer": [] }, { "ApiKeyQuery": [] }, { "ApiKeyHeader": [] } ] } }, "/v1/bookings/{booking}/payments": { "get": { "tags": [ "Resource - Booking" ], "summary": "List booking payments", "description": "", "operationId": "d26295ad7f1bd3518ea61bb8f311bc78", "parameters": [ { "name": "Accept-Language", "in": "header", "required": false, "schema": { "type": "string" } }, { "name": "booking", "in": "path", "description": "The resource", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "page[size]", "in": "query", "description": "The paginator", "required": false, "schema": { "type": "integer" } }, { "name": "page[number]", "in": "query", "description": "The paginator", "required": false, "schema": { "type": "integer" } }, { "name": "sort", "in": "query", "description": "The query", "required": false, "schema": { "type": "string" } }, { "name": "filter[$filter]", "in": "query", "description": "The query", "required": false, "schema": { "type": "string" } } ], "responses": { "401": { "description": "The request is unauthorized" }, "403": { "description": "The request is forbidden" }, "422": { "description": "The request cannot be processed" }, "200": { "description": "The resources" } }, "security": [ { "Bearer": [] }, { "ApiKeyQuery": [] }, { "ApiKeyHeader": [] } ] } }, "/v1/bookings/{booking}/payments/{payment}": { "get": { "tags": [ "Resource - Booking" ], "summary": "Show booking payment", "description": "", "operationId": "194f9b5039c0f60d23d5504b9bd9d606", "parameters": [ { "name": "Accept-Language", "in": "header", "required": false, "schema": { "type": "string" } }, { "name": "booking", "in": "path", "description": "The resource", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "payment", "in": "path", "description": "The resource", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "401": { "description": "The request is unauthorized" }, "403": { "description": "The request is forbidden" }, "200": { "description": "The resource" } }, "security": [ { "Bearer": [] }, { "ApiKeyQuery": [] }, { "ApiKeyHeader": [] } ] } }, "/v1/bookings/{booking}/services": { "get": { "tags": [ "Resource - Booking" ], "summary": "List booking services", "description": "", "operationId": "1647ef253d47a28dd7469d7224f616f7", "parameters": [ { "name": "Accept-Language", "in": "header", "required": false, "schema": { "type": "string" } }, { "name": "booking", "in": "path", "description": "The resource", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "page[size]", "in": "query", "description": "The paginator", "required": false, "schema": { "type": "integer" } }, { "name": "page[number]", "in": "query", "description": "The paginator", "required": false, "schema": { "type": "integer" } }, { "name": "sort", "in": "query", "description": "The query", "required": false, "schema": { "type": "string" } }, { "name": "filter[$filter]", "in": "query", "description": "The query", "required": false, "schema": { "type": "string" } } ], "responses": { "401": { "description": "The request is unauthorized" }, "403": { "description": "The request is forbidden" }, "422": { "description": "The request cannot be processed" }, "200": { "description": "The resources" } }, "security": [ { "Bearer": [] }, { "ApiKeyQuery": [] }, { "ApiKeyHeader": [] } ] } }, "/v1/bookings/{booking}/services/{service}": { "get": { "tags": [ "Resource - Booking" ], "summary": "Show booking service", "description": "", "operationId": "fa091a750f99234724d59f5d1f4dd5ae", "parameters": [ { "name": "Accept-Language", "in": "header", "required": false, "schema": { "type": "string" } }, { "name": "booking", "in": "path", "description": "The resource", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "service", "in": "path", "description": "The resource", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "401": { "description": "The request is unauthorized" }, "403": { "description": "The request is forbidden" }, "200": { "description": "The resource" } }, "security": [ { "Bearer": [] }, { "ApiKeyQuery": [] }, { "ApiKeyHeader": [] } ] } }, "/status": { "get": { "summary": "The health check", "operationId": "b884f4e1162b85596994f8a018f3245c", "responses": { "200": { "description": "The success" } } } } }, "components": { "schemas": { "bearer": { "properties": { "token": { "type": "string" }, "token_type": { "type": "string" }, "token_expires": { "type": "integer" } }, "type": "object" } }, "securitySchemes": { "Bearer": { "type": "http", "name": "Authorization", "in": "header", "bearerFormat": "JWT", "scheme": "bearer" }, "ApiKeyQuery": { "type": "apiKey", "description": "https://..../endpoint?apikey=", "name": "apikey", "in": "query" }, "ApiKeyHeader": { "type": "apiKey", "description": "Token ", "name": "Authorization", "in": "header" } } } }