{
    "openapi": "3.1.2",
    "info": {
        "title": "LargerIO API",
        "version": "1.0.0",
        "description": "Authenticated REST API for LargerIO technology detection data. Create a personal access token under API Keys, then send it as a `Bearer` token. Requires a verified account."
    },
    "servers": [
        {
            "url": "https:\/\/larger.io\/api\/v1"
        }
    ],
    "security": [
        {
            "http": []
        }
    ],
    "paths": {
        "\/categories": {
            "get": {
                "operationId": "v1.categories.index",
                "tags": [
                    "Categories"
                ],
                "responses": {
                    "200": {
                        "description": "`DataCollection`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/DataCollection"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/categories\/{categorySlug}": {
            "get": {
                "operationId": "v1.categories.show",
                "tags": [
                    "Categories"
                ],
                "parameters": [
                    {
                        "name": "categorySlug",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "anyOf": [
                                        {
                                            "$ref": "#\/components\/schemas\/CategoryTechnologiesData"
                                        },
                                        {
                                            "type": "null"
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/domains\/{domain}": {
            "get": {
                "operationId": "v1.domains.show",
                "tags": [
                    "Domains"
                ],
                "parameters": [
                    {
                        "name": "domain",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "mode",
                        "in": "query",
                        "schema": {
                            "anyOf": [
                                {
                                    "$ref": "#\/components\/schemas\/LookupMode"
                                },
                                {
                                    "type": "null"
                                }
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "anyOf": [
                                        {
                                            "type": "object",
                                            "properties": {
                                                "domain": {
                                                    "type": "string"
                                                },
                                                "technologies": {
                                                    "type": "array",
                                                    "items": {
                                                        "anyOf": [
                                                            {
                                                                "type": "object",
                                                                "properties": {
                                                                    "name": {
                                                                        "type": "string"
                                                                    },
                                                                    "version": {
                                                                        "type": "string"
                                                                    },
                                                                    "confidence": {
                                                                        "type": "string"
                                                                    },
                                                                    "slug": {
                                                                        "type": "null"
                                                                    },
                                                                    "category_slug": {
                                                                        "type": "null"
                                                                    },
                                                                    "category_name": {
                                                                        "type": "null"
                                                                    },
                                                                    "technology_id": {
                                                                        "type": "null"
                                                                    }
                                                                },
                                                                "required": [
                                                                    "name",
                                                                    "version",
                                                                    "confidence",
                                                                    "slug",
                                                                    "category_slug",
                                                                    "category_name",
                                                                    "technology_id"
                                                                ]
                                                            },
                                                            {
                                                                "type": "object",
                                                                "properties": {
                                                                    "name": {
                                                                        "type": "string"
                                                                    },
                                                                    "version": {
                                                                        "type": "string"
                                                                    },
                                                                    "confidence": {
                                                                        "type": [
                                                                            "integer",
                                                                            "string"
                                                                        ]
                                                                    },
                                                                    "slug": {
                                                                        "type": "string"
                                                                    },
                                                                    "category_slug": {
                                                                        "type": "string"
                                                                    },
                                                                    "category_name": {
                                                                        "type": "string"
                                                                    },
                                                                    "technology_id": {
                                                                        "type": [
                                                                            "integer",
                                                                            "string"
                                                                        ]
                                                                    }
                                                                },
                                                                "required": [
                                                                    "name",
                                                                    "version",
                                                                    "confidence",
                                                                    "slug",
                                                                    "category_slug",
                                                                    "category_name",
                                                                    "technology_id"
                                                                ]
                                                            }
                                                        ]
                                                    }
                                                },
                                                "language": {
                                                    "type": "string"
                                                },
                                                "emails": {
                                                    "type": "array",
                                                    "items": {}
                                                },
                                                "http_status": {
                                                    "anyOf": [
                                                        {
                                                            "type": "string"
                                                        },
                                                        {
                                                            "type": "integer",
                                                            "enum": [
                                                                0
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "title": {
                                                    "type": "string"
                                                },
                                                "contact_page": {
                                                    "type": "string"
                                                },
                                                "alias_of": {
                                                    "type": "string"
                                                },
                                                "site_status": {
                                                    "type": "string"
                                                },
                                                "best_rank": {
                                                    "type": "integer"
                                                },
                                                "page_rank": {
                                                    "type": "number"
                                                },
                                                "mode": {
                                                    "type": "string",
                                                    "enum": [
                                                        "quick",
                                                        "full"
                                                    ]
                                                },
                                                "scanned_at": {
                                                    "type": "string"
                                                },
                                                "cached": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "required": [
                                                "domain",
                                                "technologies",
                                                "language",
                                                "emails",
                                                "http_status",
                                                "title",
                                                "contact_page",
                                                "alias_of",
                                                "site_status",
                                                "best_rank",
                                                "page_rank",
                                                "mode",
                                                "scanned_at",
                                                "cached"
                                            ]
                                        },
                                        {
                                            "type": "object",
                                            "properties": {
                                                "cached": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "required": [
                                                "cached"
                                            ],
                                            "additionalProperties": {}
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "502": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "const": "Failed to analyze this website. Please try again."
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "504": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "const": "The website took too long to respond. Please try again."
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "anyOf": [
                                        {
                                            "type": "object",
                                            "properties": {
                                                "message": {
                                                    "type": "string"
                                                }
                                            },
                                            "required": [
                                                "message"
                                            ]
                                        },
                                        {
                                            "type": "object",
                                            "properties": {
                                                "message": {
                                                    "type": "string"
                                                },
                                                "tokens_cost": {
                                                    "type": "integer"
                                                },
                                                "tokens_remaining": {
                                                    "type": "integer"
                                                },
                                                "tokens_limit": {
                                                    "type": "integer"
                                                },
                                                "resets_at": {
                                                    "type": "string"
                                                }
                                            },
                                            "required": [
                                                "message",
                                                "tokens_cost",
                                                "tokens_remaining",
                                                "tokens_limit",
                                                "resets_at"
                                            ]
                                        }
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "schema": {
                                    "type": "string"
                                }
                            },
                            "X-Tokens-Cost": {
                                "schema": {
                                    "type": "string",
                                    "const": "0"
                                }
                            },
                            "X-Tokens-Remaining": {
                                "schema": {
                                    "type": "string"
                                }
                            },
                            "X-Tokens-Limit": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/technologies": {
            "get": {
                "operationId": "v1.technologies.index",
                "tags": [
                    "Technologies"
                ],
                "parameters": [
                    {
                        "name": "search",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "minLength": 2
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`DataCollection`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/DataCollection"
                                }
                            }
                        }
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        },
        "\/technologies\/{technologySlug}": {
            "get": {
                "operationId": "v1.technologies.show",
                "summary": "Same rules as the technology page: an old slug answers 301 to the\ntechnology that took it over, a technology detected on no site is a 404.\nNeither costs a token",
                "tags": [
                    "Technologies"
                ],
                "parameters": [
                    {
                        "name": "technologySlug",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 5
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "`ShowTechnologyCoreData`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/ShowTechnologyCoreData"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "301": {
                        "description": "",
                        "headers": {
                            "Location": {
                                "required": true,
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "tokens_cost": {
                                            "type": "integer"
                                        },
                                        "tokens_remaining": {
                                            "type": "integer"
                                        },
                                        "tokens_limit": {
                                            "type": "integer"
                                        },
                                        "resets_at": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message",
                                        "tokens_cost",
                                        "tokens_remaining",
                                        "tokens_limit",
                                        "resets_at"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "schema": {
                                    "type": "string"
                                }
                            },
                            "X-Tokens-Cost": {
                                "schema": {
                                    "type": "string",
                                    "const": "0"
                                }
                            },
                            "X-Tokens-Remaining": {
                                "schema": {
                                    "type": "string"
                                }
                            },
                            "X-Tokens-Limit": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "$ref": "#\/components\/responses\/ValidationException"
                    }
                }
            }
        },
        "\/trending": {
            "get": {
                "operationId": "v1.trending",
                "tags": [
                    "Trending"
                ],
                "responses": {
                    "200": {
                        "description": "`TrendingPageData`",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/TrendingPageData"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    }
                }
            }
        }
    },
    "components": {
        "securitySchemes": {
            "http": {
                "type": "http",
                "scheme": "bearer"
            }
        },
        "schemas": {
            "CategoryTechnologiesData": {
                "type": "object",
                "additionalProperties": {},
                "title": "CategoryTechnologiesData"
            },
            "DataCollection": {
                "type": "array",
                "items": {},
                "title": "DataCollection"
            },
            "LookupMode": {
                "type": "string",
                "enum": [
                    "quick",
                    "full"
                ],
                "title": "LookupMode"
            },
            "ShowTechnologyCoreData": {
                "type": "object",
                "additionalProperties": {},
                "title": "ShowTechnologyCoreData"
            },
            "TrendingPageData": {
                "type": "object",
                "additionalProperties": {},
                "title": "TrendingPageData"
            }
        },
        "responses": {
            "AuthenticationException": {
                "description": "Unauthenticated",
                "content": {
                    "application\/json": {
                        "schema": {
                            "type": "object",
                            "properties": {
                                "message": {
                                    "type": "string",
                                    "description": "Error overview."
                                }
                            },
                            "required": [
                                "message"
                            ]
                        }
                    }
                }
            },
            "ValidationException": {
                "description": "Validation error",
                "content": {
                    "application\/json": {
                        "schema": {
                            "type": "object",
                            "properties": {
                                "message": {
                                    "type": "string",
                                    "description": "Errors overview."
                                },
                                "errors": {
                                    "type": "object",
                                    "description": "A detailed description of each field that failed validation.",
                                    "additionalProperties": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    }
                                }
                            },
                            "required": [
                                "message",
                                "errors"
                            ]
                        }
                    }
                }
            }
        }
    }
}