-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
markgerrard
committed
Jul 15, 2024
1 parent
240379e
commit 2800c44
Showing
97 changed files
with
9,075 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
# http://editorconfig.org | ||
root = true | ||
|
||
[*] | ||
charset = utf-8 | ||
end_of_line = lf | ||
indent_size = 2 | ||
indent_style = space | ||
insert_final_newline = true | ||
max_line_length = 80 | ||
trim_trailing_whitespace = true | ||
|
||
[*.md] | ||
max_line_length = 0 | ||
trim_trailing_whitespace = false |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
*.log | ||
.DS_Store | ||
node_modules | ||
dist | ||
coverage | ||
test |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
{ | ||
"env": { | ||
"browser": true, | ||
"es2021": true | ||
}, | ||
"extends": [ | ||
"eslint:recommended", | ||
"plugin:@typescript-eslint/recommended" | ||
], | ||
"overrides": [ | ||
], | ||
"parser": "@typescript-eslint/parser", | ||
"parserOptions": { | ||
"ecmaVersion": "latest", | ||
"sourceType": "module" | ||
}, | ||
"plugins": [ | ||
"@typescript-eslint" | ||
], | ||
|
||
"rules": { | ||
"@typescript-eslint/no-explicit-any": "off", | ||
"@typescript-eslint/no-namespace": "off", | ||
"@typescript-eslint/ban-types": "off", | ||
"no-irregular-whitespace": "off" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
*.log | ||
.DS_Store | ||
node_modules | ||
dist | ||
coverage |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
License: | ||
======== | ||
The MIT License (MIT) | ||
http://opensource.org/licenses/MIT | ||
|
||
Copyright (c) 2014 - 2024 APIMATIC Limited | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy | ||
of this software and associated documentation files (the "Software"), to deal | ||
in the Software without restriction, including without limitation the rights | ||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
copies of the Software, and to permit persons to whom the Software is | ||
furnished to do so, subject to the following conditions: | ||
|
||
The above copyright notice and this permission notice shall be included in | ||
all copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
THE SOFTWARE. | ||
|
||
Trade Mark: | ||
========== | ||
APIMATIC is a trade mark for APIMATIC Limited |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,155 @@ | ||
|
||
# Getting Started with Train Travel API | ||
|
||
## Introduction | ||
|
||
API for finding and booking train trips across Europe. | ||
|
||
### Run in Postman | ||
|
||
Experiment with this API in Postman, using our Postman Collection. | ||
|
||
[<img src="https://run.pstmn.io/button.svg" alt="Run In Postman" style="width: 128px; height: 32px;">](https://app.getpostman.com/run-collection/9265903-7a75a0d0-b108-4436-ba54-c6139698dc08?action=collection%2Ffork&source=rip_markdown&collection-url=entityId%3D9265903-7a75a0d0-b108-4436-ba54-c6139698dc08%26entityType%3Dcollection%26workspaceId%3Df507f69d-9564-419c-89a2-cb8e4c8c7b8f) | ||
|
||
### Run in Insomnia | ||
|
||
Experiment with this API in Insomnia, using our Insomnia Collection. | ||
|
||
[![Run in Insomnia}](https://insomnia.rest/images/run.svg)](https://insomnia.rest/run/?label=Train%20Travel%20API&uri=https%3A%2F%2Fraw.githubusercontent.com%2Fbump-sh-examples%2Ftrain-travel-api%2Fmain%2Finsomnia%2FInsomnia_2024-05-27.json) | ||
|
||
## Building | ||
|
||
### Requirements | ||
|
||
The SDK relies on **Node.js** and **npm** (to resolve dependencies). It also requires **Typescript version 3.9+**. You can download and install Node.js and [npm](https://www.npmjs.com/) from [the official Node.js website](https://nodejs.org/en/download/). | ||
|
||
> **NOTE:** npm is installed by default when Node.js is installed. | ||
### Verify Successful Installation | ||
|
||
Run the following commands in the command prompt or shell of your choice to check if Node.js and npm are successfully installed: | ||
|
||
* Node.js: `node --version` | ||
|
||
* npm: `npm --version` | ||
|
||
![Version Check](https://apidocs.io/illustration/typescript?workspaceFolder=TrainTravelAPI&step=versionCheck) | ||
|
||
### Install Dependencies | ||
|
||
- To resolve all dependencies, go to the **SDK root directory** and run the following command with npm: | ||
|
||
```bash | ||
npm install | ||
``` | ||
|
||
- This will install all dependencies in the **node_modules** folder. | ||
|
||
![Resolve Dependencies](https://apidocs.io/illustration/typescript?workspaceFolder=TrainTravelAPI&workspaceName=train-travel-apilib&step=resolveDependency) | ||
|
||
## Installation | ||
|
||
The following section explains how to use the generated library in a new project. | ||
|
||
### 1. Initialize the Node Project | ||
|
||
- Open an IDE/text editor for JavaScript like Visual Studio Code. The basic workflow presented here is also applicable if you prefer using a different editor or IDE. | ||
|
||
- Click on **File** and select **Open Folder**. Select an empty folder of your project, the folder will become visible in the sidebar on the left. | ||
|
||
![Open Folder](https://apidocs.io/illustration/typescript?step=openProject) | ||
|
||
- To initialize the Node project, click on **Terminal** and select **New Terminal**. Execute the following command in the terminal: | ||
|
||
```bash | ||
npm init --y | ||
``` | ||
|
||
![Initialize the Node Project](https://apidocs.io/illustration/typescript?step=initializeProject) | ||
|
||
### 2. Add Dependencies to the Client Library | ||
|
||
- The created project manages its dependencies using its `package.json` file. In order to add a dependency on the *Train Travel APILib* client library, double click on the `package.json` file in the bar on the left and add the dependency to the package in it. | ||
|
||
![Add TrainTravelApilib Dependency](https://apidocs.io/illustration/typescript?workspaceFolder=TrainTravelAPI&workspaceName=train-travel-apilib&step=importDependency) | ||
|
||
- To install the package in the project, run the following command in the terminal: | ||
|
||
```bash | ||
npm install | ||
``` | ||
|
||
![Install TrainTravelApilib Dependency](https://apidocs.io/illustration/typescript?step=installDependency) | ||
|
||
## Initialize the API Client | ||
|
||
**_Note:_** Documentation for the client can be found [here.](doc/client.md) | ||
|
||
The following parameters are configurable for the API Client: | ||
|
||
| Parameter | Type | Description | | ||
| --- | --- | --- | | ||
| `environment` | `Environment` | The API environment. <br> **Default: `Environment.Production`** | | ||
| `timeout` | `number` | Timeout for API calls.<br>*Default*: `0` | | ||
| `httpClientOptions` | `Partial<HttpClientOptions>` | Stable configurable http client options. | | ||
| `unstableHttpClientOptions` | `any` | Unstable configurable http client options. | | ||
| `authorizationCodeAuthCredentials` | [`AuthorizationCodeAuthCredentials`](doc/auth/oauth-2-authorization-code-grant.md) | The credential object for authorizationCodeAuth | | ||
|
||
### HttpClientOptions | ||
|
||
| Parameter | Type | Description | | ||
| --- | --- | --- | | ||
| `timeout` | `number` | Timeout in milliseconds. | | ||
| `httpAgent` | `any` | Custom http agent to be used when performing http requests. | | ||
| `httpsAgent` | `any` | Custom https agent to be used when performing http requests. | | ||
| `retryConfig` | `Partial<RetryConfiguration>` | Configurations to retry requests. | | ||
|
||
### RetryConfiguration | ||
|
||
| Parameter | Type | Description | | ||
| --- | --- | --- | | ||
| `maxNumberOfRetries` | `number` | Maximum number of retries. <br> *Default*: `0` | | ||
| `retryOnTimeout` | `boolean` | Whether to retry on request timeout. <br> *Default*: `true` | | ||
| `retryInterval` | `number` | Interval before next retry. Used in calculation of wait time for next request in case of failure. <br> *Default*: `1` | | ||
| `maximumRetryWaitTime` | `number` | Overall wait time for the requests getting retried. <br> *Default*: `0` | | ||
| `backoffFactor` | `number` | Used in calculation of wait time for next request in case of failure. <br> *Default*: `2` | | ||
| `httpStatusCodesToRetry` | `number[]` | Http status codes to retry against. <br> *Default*: `[408, 413, 429, 500, 502, 503, 504, 521, 522, 524]` | | ||
| `httpMethodsToRetry` | `HttpMethod[]` | Http methods to retry against. <br> *Default*: `['GET', 'PUT']` | | ||
|
||
The API client can be initialized as follows: | ||
|
||
```ts | ||
const client = new Client({ | ||
authorizationCodeAuthCredentials: { | ||
oAuthClientId: 'OAuthClientId', | ||
oAuthClientSecret: 'OAuthClientSecret', | ||
oAuthRedirectUri: 'OAuthRedirectUri', | ||
oAuthScopes: [ | ||
OAuthScopeEnum.Read, | ||
OAuthScopeEnum.Write | ||
] | ||
}, | ||
timeout: 0, | ||
environment: Environment.Production, | ||
}); | ||
``` | ||
|
||
## Authorization | ||
|
||
This API uses the following authentication schemes. | ||
|
||
* [`OAuth2 (OAuth 2 Authorization Code Grant)`](doc/auth/oauth-2-authorization-code-grant.md) | ||
|
||
## List of APIs | ||
|
||
* [O Auth Authorization](doc/controllers/o-auth-authorization.md) | ||
* [Stations](doc/controllers/stations.md) | ||
* [Trips](doc/controllers/trips.md) | ||
* [Bookings](doc/controllers/bookings.md) | ||
* [Payments](doc/controllers/payments.md) | ||
|
||
## Classes Documentation | ||
|
||
* [ApiResponse](doc/api-response.md) | ||
* [ApiError](doc/api-error.md) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
|
||
# ApiError | ||
|
||
Thrown when the HTTP status code is not okay. | ||
|
||
The ApiError extends the ApiResponse interface, so all ApiResponse properties are available. | ||
|
||
## Properties | ||
|
||
| Name | Type | Description | | ||
| --- | --- | --- | | ||
| request | HttpRequest | Original request that resulted in this response. | | ||
| statusCode | number | Response status code. | | ||
| headers | Record<string, string> | Response headers. | | ||
| result | T | Response data. | | ||
| body | string \| Blob \| NodeJS.ReadableStream | Original body from the response. | | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
|
||
# ApiResponse | ||
|
||
An interface for the result of an API call. | ||
|
||
## Properties | ||
|
||
| Name | Type | Description | | ||
| --- | --- | --- | | ||
| request | HttpRequest | Original request that resulted in this response. | | ||
| statusCode | number | Response status codee. | | ||
| headers | Record<string, string> | Response headers. | | ||
| result | T | Response data. | | ||
| body | string \| Blob \| NodeJS.ReadableStream | Original body from the response. | | ||
|
Oops, something went wrong.