openapi: 3.0.1
info:
title: Odin
description:
"ODIN APIs to search across IP Services, CVEs, Exposed Files/Buckets,\
\ Domains and more"
contact: {}
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
version: "1.0"
servers:
- url: https://api.odin.io/
paths:
/v1/cves/all/{ip}/{page}:
get:
tags:
- Hosts
summary: Get cve details
description: Get the detailed cve details for ip based on page
parameters:
- name: ip
in: path
description: get the ip
required: true
schema:
type: string
- name: page
in: path
description: get the page
required: true
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ipservices.IpCveResponse"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"402":
description: Payment Required
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"408":
description: Request Timeout
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"500":
description: Internal Server Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
security:
- ApiKeyAuth: []
/v1/domain/count:
post:
tags:
- domain
summary: Get domains count
description: Get count of domain records based on query
requestBody:
description: Query
content:
"*/*":
schema:
$ref: "#/components/schemas/dns.DNSCountRequest"
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
allOf:
- $ref: "#/components/schemas/dns.APIResponse"
- type: object
properties:
data:
$ref: "#/components/schemas/dns.Data"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/dns.ErrorResponse"
"500":
description: Internal Server Error
content:
application/json:
schema:
$ref: "#/components/schemas/dns.ErrorResponse"
x-codegen-request-body-name: query
/v1/domain/search:
post:
tags:
- domain
summary: Search domains
description: Search domains based on the query
requestBody:
description: Query
content:
"application/json":
schema:
$ref: "#/components/schemas/dns.DomainRequest"
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
allOf:
- type: object
properties:
data:
type: array
items:
$ref: "#/components/schemas/eshandler.DNS"
pagination:
$ref: "#/components/schemas/dns.SearchPagination"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/dns.ErrorResponse"
"500":
description: Internal Server Error
content:
application/json:
schema:
$ref: "#/components/schemas/dns.ErrorResponse"
x-codegen-request-body-name: query
/v1/domain/subdomain/count:
post:
tags:
- domain
summary: Fetch the total no. of subdomain records
description: Returns the count of subdomain records based on domain
requestBody:
description: Query
content:
"*/*":
schema:
$ref: "#/components/schemas/dns.DNSCountRequest"
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
allOf:
- $ref: "#/components/schemas/dns.APIResponse"
- type: object
properties:
data:
$ref: "#/components/schemas/dns.Data"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/dns.ErrorResponse"
"500":
description: Internal Server Error
content:
application/json:
schema:
$ref: "#/components/schemas/dns.ErrorResponse"
security:
- ApiKeyAuth: []
x-codegen-request-body-name: query
/v1/domain/subdomain/search:
post:
tags:
- domain
summary: Fetch the subdomain record
description: Returns the subdomain records based on query
requestBody:
description: Query
content:
"application/json":
schema:
$ref: "#/components/schemas/dns.DomainRequest"
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
allOf:
- type: object
properties:
data:
type: array
items:
type: string
pagination:
$ref: "#/components/schemas/dns.SearchPagination"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/dns.ErrorResponse"
"500":
description: Internal Server Error
content:
application/json:
schema:
$ref: "#/components/schemas/dns.ErrorResponse"
security:
- ApiKeyAuth: []
x-codegen-request-body-name: query
/v1/domain/whois/{domain-name}:
get:
tags:
- domain
summary: Fetch the domain whois record details
description:
"Provides extensive details about the domain whois record like\
\ name servers, domain status, registrar, etc."
parameters:
- name: domain-name
in: path
description: domain
required: true
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
allOf:
- $ref: "#/components/schemas/schema.APIResponse"
- type: object
properties:
data:
$ref: "#/components/schemas/schema.DomainWhoisResponse"
"400":
description: Bad Request
content:
application/json:
schema:
type: object
"402":
description: Payment Required
content:
application/json:
schema:
type: object
"408":
description: Request Timeout
content:
application/json:
schema:
type: object
"500":
description: Internal Server Error
content:
application/json:
schema:
type: object
security:
- ApiKeyAuth: []
/v1/domain/whois/{domain-name}/historical:
get:
tags:
- domain
summary: Fetch all the domain whois historical records
description:
"Provides historical details about the domain whois record like\
\ name servers, domain status, registrar, etc"
parameters:
- name: domain-name
in: path
description: domain
required: true
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
allOf:
- type: object
properties:
" meta":
$ref: "#/components/schemas/schema.PaginationMeta"
data:
type: array
items:
$ref: "#/components/schemas/schema.DomainWhoisResponse"
"400":
description: Bad Request
content:
application/json:
schema:
type: object
"402":
description: Payment Required
content:
application/json:
schema:
type: object
"408":
description: Request Timeout
content:
application/json:
schema:
type: object
"500":
description: Internal Server Error
content:
application/json:
schema:
type: object
security:
- ApiKeyAuth: []
/v1/domain/whois/{domain-name}/is-expired:
get:
tags:
- domain
summary: Get the expiry for a particular domain
description:
"Provides historical details about the domain whois record like\
\ name servers, domain status, registrar, etc"
parameters:
- name: domain-name
in: path
description: domain
required: true
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
allOf:
- type: object
properties:
data:
type: array
items:
$ref: "#/components/schemas/schema.DomainWhoisResponse"
meta:
$ref: "#/components/schemas/schema.PaginationMeta"
"400":
description: Bad Request
content:
application/json:
schema:
type: object
"402":
description: Payment Required
content:
application/json:
schema:
type: object
"408":
description: Request Timeout
content:
application/json:
schema:
type: object
"500":
description: Internal Server Error
content:
application/json:
schema:
type: object
security:
- ApiKeyAuth: []
/v1/domain/whois/{domain-name}/is-registered:
get:
tags:
- domain
summary: Fetch all the domain whois historical records
description:
"Provides historical details about the domain whois record like\
\ name servers, domain status, registrar, etc"
parameters:
- name: domain-name
in: path
description: domain
required: true
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
allOf:
- type: object
properties:
data:
type: array
items:
$ref: "#/components/schemas/schema.DomainWhoisResponse"
meta:
$ref: "#/components/schemas/schema.PaginationMeta"
"400":
description: Bad Request
content:
application/json:
schema:
type: object
"402":
description: Payment Required
content:
application/json:
schema:
type: object
"408":
description: Request Timeout
content:
application/json:
schema:
type: object
"500":
description: Internal Server Error
content:
application/json:
schema:
type: object
security:
- ApiKeyAuth: []
/v1/exposed/buckets/count:
post:
tags:
- ExposedBuckets
summary: Get exposed bucket count
description: Get exposed bucket count according to provided filters
requestBody:
description: Count Request
content:
"*/*":
schema:
$ref: "#/components/schemas/exposed.CountRequest"
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
allOf:
- $ref: "#/components/schemas/exposed.APIResponse"
- type: object
properties:
data:
$ref: "#/components/schemas/exposed.SearchCount"
"400":
description: Bad Request
content:
application/json:
schema:
type: object
additionalProperties: true
"500":
description: Internal Server Error
content:
application/json:
schema:
type: object
additionalProperties: true
security:
- ApiKeyAuth: []
x-codegen-request-body-name: query
/v1/exposed/buckets/search:
post:
tags:
- ExposedBuckets
operationId: searchExposedBuckets
summary: Search exposed buckets
description: |-
Search exposed buckets according to provided filters
Search across categories "img, aud, vid, font, doc, src, web, bkup, dbdump"
Search across labels "credential, financial, pii, legal, ip, medical, hr, report, confidential, backup, compromised, vulnerable"
Search across providers "aws, gcp, do, linode"
requestBody:
description: Search Query
content:
application/json:
schema:
$ref: "#/components/schemas/exposed.SearchRequest"
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: "#/components/schemas/exposed.SearchResponse"
success:
type: boolean
pagination:
type: object
properties:
total:
type: integer
limit:
type: integer
start:
type: array
items:
type: object
last:
type: array
items:
type: object
"400":
description: Bad Request
content:
application/json:
schema:
type: object
additionalProperties: true
"500":
description: Internal Server Error
content:
application/json:
schema:
type: object
additionalProperties: true
security:
- ApiKeyAuth: []
x-codegen-request-body-name: query
/v1/exposed/buckets/summary:
post:
tags:
- ExposedBuckets
summary: Get exposed buckets summary
description: Get Returns exposed buckets aggregated count according to filters
requestBody:
description: Summary Request
content:
"*/*":
schema:
$ref: "#/components/schemas/exposed.SummaryRequest"
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
allOf:
- $ref: "#/components/schemas/exposed.APIResponse"
- type: object
properties:
data:
$ref: "#/components/schemas/exposed.Aggregate"
"400":
description: Bad Request
content:
application/json:
schema:
type: object
additionalProperties: true
"500":
description: Internal Server Error
content:
application/json:
schema:
type: object
additionalProperties: true
security:
- ApiKeyAuth: []
x-codegen-request-body-name: query
/v1/exposed/files/count:
post:
tags:
- ExposedFiles
summary: Get file count
description: Returns overall count of exposed bucket files according to filters
requestBody:
description: Count Request
content:
"*/*":
schema:
$ref: "#/components/schemas/exposed.CountRequest"
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
allOf:
- $ref: "#/components/schemas/exposed.APIResponse"
- type: object
properties:
data:
$ref: "#/components/schemas/exposed.SearchCount"
"400":
description: Bad Request
content:
application/json:
schema:
type: object
additionalProperties: true
"500":
description: Internal Server Error
content:
application/json:
schema:
type: object
additionalProperties: true
security:
- ApiKeyAuth: []
x-codegen-request-body-name: query
/v1/exposed/files/search:
post:
tags:
- ExposedFiles
summary: Search exposed files
description: |-
Search exposed files using advanved filters
Search across categories "img, aud, vid, font, txt, doc, src, db, march, arch, 3d, exec, key, cert"
Search across labels "credential, financial, pii, legal, ip, medical, hr, report, confidential, backup, compromised, vulnerable"
Search across providers "aws, gcp, do, linode"
requestBody:
description: Search Query
content:
"*/*":
schema:
$ref: "#/components/schemas/exposed.SearchRequest"
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/exposed.FileAPIResponse"
"400":
description: Bad Request
content:
application/json:
schema:
type: object
additionalProperties: true
"402":
description: Payment Required
content:
application/json:
schema:
type: object
additionalProperties: true
"500":
description: Internal Server Error
content:
application/json:
schema:
type: object
additionalProperties: true
security:
- ApiKeyAuth: []
x-codegen-request-body-name: query
/v1/exposed/files/summary:
post:
tags:
- ExposedFiles
summary: Get file summary
description:
Returns a summary of exposed bucket files according to provided
filters
requestBody:
description: Summary Request
content:
"*/*":
schema:
$ref: "#/components/schemas/exposed.SummaryRequest"
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
allOf:
- $ref: "#/components/schemas/exposed.APIResponse"
- type: object
properties:
data:
$ref: "#/components/schemas/exposed.Aggregate"
"400":
description: Bad Request
content:
application/json:
schema:
type: object
additionalProperties: true
"500":
description: Internal Server Error
content:
application/json:
schema:
type: object
additionalProperties: true
security:
- ApiKeyAuth: []
x-codegen-request-body-name: query
/v1/fields/exposed/buckets:
get:
tags:
- Fields
summary: Get the fields for exposed buckets
description:
Get the list of fields that can be used to query on exposed buckets
responses:
"200":
description: OK
content:
application/json:
schema:
allOf:
- $ref: "#/components/schemas/APIResponse"
- type: object
properties:
Data:
type: array
items:
$ref: "#/components/schemas/Field"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"402":
description: Payment Required
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"408":
description: Request Timeout
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"500":
description: Internal Server Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/v1/fields/exposed/files:
get:
tags:
- Fields
summary: Get the fields for exposed files
description: Returns the exposed files fields data
responses:
"200":
description: OK
content:
application/json:
schema:
allOf:
- $ref: "#/components/schemas/APIResponse"
- type: object
properties:
Data:
type: array
items:
$ref: "#/components/schemas/Field"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"402":
description: Payment Required
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"408":
description: Request Timeout
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"500":
description: Internal Server Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/v1/fields/hosts/{category}:
get:
tags:
- Fields
summary: Get the fields for hosts
description: Get the list of fields to query on host
parameters:
- name: category
in: path
description: get the category
required: true
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
allOf:
- type: object
properties:
data:
type: array
items:
$ref: "#/components/schemas/Field"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"402":
description: Payment Required
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"408":
description: Request Timeout
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"500":
description: Internal Server Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/v1/hosts/count:
post:
tags:
- Hosts
summary: Get the record count
description: Returns the total no of records based on query
requestBody:
description: Count Query
content:
"*/*":
schema:
$ref: "#/components/schemas/CountRequest"
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
allOf:
- $ref: "#/components/schemas/APIResponse"
- type: object
properties:
" meta":
$ref: "#/components/schemas/PaginationStruct"
data:
$ref: "#/components/schemas/CertCount"
"400":
description: Bad Request
content:
application/json:
schema:
allOf:
- $ref: "#/components/schemas/ErrorResponse"
- type: object
properties:
" error":
type: string
success:
type: boolean
"402":
description: Payment Required
content:
application/json:
schema:
allOf:
- $ref: "#/components/schemas/ErrorResponse"
- type: object
properties:
" error":
type: string
success:
type: boolean
"408":
description: Request Timeout
content:
application/json:
schema:
allOf:
- $ref: "#/components/schemas/ErrorResponse"
- type: object
properties:
" error":
type: string
success:
type: boolean
"500":
description: Internal Server Error
content:
application/json:
schema:
allOf:
- $ref: "#/components/schemas/ErrorResponse"
- type: object
properties:
" error":
type: string
success:
type: boolean
security:
- ApiKeyAuth: []
x-codegen-request-body-name: query
/v1/hosts/cve/{ip}:
get:
tags:
- Hosts
summary: Get ip cve details
description: Get detailed lost of cve ips
parameters:
- name: ip
in: path
description: get the ip
required: true
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ipservices.IpCveResponse"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"402":
description: Payment Required
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"408":
description: Request Timeout
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"500":
description: Internal Server Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
security:
- ApiKeyAuth: []
/v1/hosts/cves/{ip}/{cve}:
get:
tags:
- Hosts
summary: Get cve
description: Get the detailed cve based on ip and cve
parameters:
- name: ip
in: path
description: host ip ip
required: true
schema:
type: string
- name: cve
in: path
description: cve id
required: true
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ipservices.IpCveResponse"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"408":
description: Request Timeout
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"500":
description: Internal Server Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
security:
- ApiKeyAuth: []
/v1/hosts/exploits/{ip}:
get:
tags:
- Hosts
summary: Get exploits for ip
description: Get the detailed list of exploits for the ip
parameters:
- name: ip
in: path
description: get the ip
required: true
schema:
type: string
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ipservices.IpCveResponse"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"402":
description: Payment Required
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"408":
description: Request Timeout
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"500":
description: Internal Server Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
security:
- ApiKeyAuth: []
/v1/hosts/exploits/{ip}/{cve}:
get:
tags:
- Hosts
summary: Get exploits for ip and cve
description: Get the detailed exploit details for ip and cve
parameters:
- name: ip
in: path
description: ip address of the host
required: true
schema:
type: string
- name: cve
in: path
description: cve id
required: true
schema:
type: string
responses:
"200":
description: OK
# --- truncated at 32 KB (61 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cyble/refs/heads/main/openapi/cyble-odin-openapi.yml