{
    "openapi": "3.1.0",
    "info": {
        "title": "RailBot API",
        "version": "1.0.0"
    },
    "servers": [
        {
            "url": "https://railbot.5.75.206.151.sslip.io/api/v1"
        }
    ],
    "security": [
        {
            "bearerAuth": []
        }
    ],
    "paths": {
        "/wallet": {
            "get": {
                "summary": "Wallet balance",
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "Successful response"
                    },
                    "401": {
                        "description": "Invalid API key"
                    },
                    "403": {
                        "description": "Restricted account"
                    },
                    "429": {
                        "description": "Rate limit or quota reached"
                    }
                }
            }
        },
        "/apps": {
            "get": {
                "summary": "List apps",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "default": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful response"
                    },
                    "401": {
                        "description": "Invalid API key"
                    },
                    "403": {
                        "description": "Restricted account"
                    },
                    "429": {
                        "description": "Rate limit or quota reached"
                    }
                }
            }
        },
        "/apps/{id}/credentials": {
            "post": {
                "summary": "Read app credentials (paid)",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        }
                    },
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "minLength": 8,
                            "maxLength": 128,
                            "pattern": "^[A-Za-z0-9._:-]+$"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful response"
                    },
                    "401": {
                        "description": "Invalid API key"
                    },
                    "402": {
                        "description": "Insufficient credit"
                    },
                    "403": {
                        "description": "Restricted account"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "409": {
                        "description": "Idempotency conflict or changed resource"
                    },
                    "422": {
                        "description": "Invalid request"
                    },
                    "429": {
                        "description": "Rate limit or quota reached"
                    }
                }
            }
        },
        "/wallet/topups": {
            "post": {
                "summary": "Create top-up invoice",
                "parameters": [
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "minLength": 8,
                            "maxLength": 128,
                            "pattern": "^[A-Za-z0-9._:-]+$"
                        }
                    }
                ],
                "responses": {
                    "202": {
                        "description": "Invoice queued"
                    },
                    "200": {
                        "description": "Successful response"
                    },
                    "401": {
                        "description": "Invalid API key"
                    },
                    "403": {
                        "description": "Restricted account"
                    },
                    "409": {
                        "description": "Idempotency conflict or changed resource"
                    },
                    "422": {
                        "description": "Invalid request"
                    },
                    "429": {
                        "description": "Rate limit or quota reached"
                    },
                    "503": {
                        "description": "New top-ups unavailable"
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "amount"
                                ],
                                "properties": {
                                    "amount": {
                                        "type": "string",
                                        "example": "10.00"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/wallet/topups/{reference}": {
            "get": {
                "summary": "Check top-up invoice",
                "parameters": [
                    {
                        "name": "reference",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful response"
                    },
                    "401": {
                        "description": "Invalid API key"
                    },
                    "403": {
                        "description": "Restricted account"
                    },
                    "404": {
                        "description": "Resource not found"
                    },
                    "429": {
                        "description": "Rate limit or quota reached"
                    }
                }
            }
        }
    },
    "components": {
        "securitySchemes": {
            "bearerAuth": {
                "type": "http",
                "scheme": "bearer"
            }
        }
    }
}