openapi: 3.2.0 info: title: Odin Exposed Files API 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/ tags: - name: ExposedFiles paths: /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 components: schemas: exposed.FileAPIResponse: type: object properties: data: type: array items: $ref: '#/components/schemas/exposed.File' pagination: $ref: '#/components/schemas/exposed.SearchPagination' success: type: boolean exposed.SearchCount: type: object properties: count: type: integer exposed.Aggregate: type: object properties: buckets: type: array items: type: object doc_count_error_upper_bound: type: integer sum_other_doc_count: type: integer exposed.File: type: object properties: accessible: type: boolean bucket: type: string category: type: string etag: type: string ext: type: string ext_desc: type: string ins_at: type: string label: type: string mod_at: type: string name: type: string path: type: string provider: type: string region: type: string scan_at: type: string sensitive: type: boolean size: type: integer type: type: string url: type: string exposed.APIResponse: type: object properties: data: type: object pagination: type: object success: type: boolean exposed.SearchRequest: required: - limit type: object properties: limit: type: integer query: type: string sort_by: type: string sort_dir: type: string start: type: array items: type: object exposed.SearchPagination: type: object properties: last: type: array items: type: object limit: type: integer start: type: array items: type: object total: type: integer exposed.CountRequest: type: object properties: query: type: string exposed.SummaryRequest: required: - field - limit type: object properties: field: type: string limit: type: integer query: type: string securitySchemes: ApiKeyAuth: type: apiKey name: X-API-Key in: header x-original-swagger-version: '2.0'