openapi: 3.1.0
info:
version: 1.0.0
title: References
description: |-
API for CybelAngel's Keywords.
Authentication uses standard [OAuth2 Bearer Tokens](https://tools.ietf.org/html/rfc6750).
Here is a simple example of how to fetch such a token with curl:
```shell
curl -X POST https://auth.cybelangel.com/oauth/token -H 'content-type: application/json -d '{"client_id": "client_id", "client_secret": "client_secret", "audience": "https://platform.cybelangel.com/", "grant_type": "client_credentials"}
```
The received access token can then be used as a Bearer token to request our API.
contact:
email: support@cybelangel.com
license:
url: 'https://cybelangel.com/'
name: Proprietary
servers:
- url: 'https://api.cybelangel.com'
paths:
/v1/keywords:
get:
tags:
- Keywords
summary: Get Keywords
description: Get all keywords for organization of authenticated OAuth client token.
Results are sorted alphabetically by the keyword name.
operationId: get-keywords
parameters:
- name: ids
in: query
description: Filter keywords by ID. Accepts multiple values (`?ids=&ids=`).
required: false
schema:
type: array
title: Ids
description: Filter keywords by ID. Accepts multiple values (`?ids=&ids=`).
default: []
items:
type: string
format: uuid
- name: name
in: query
description: Filter keywords by name.
required: false
schema:
type: string
title: Name
description: Filter keywords by name.
- name: status
in: query
description: Filter keywords by status. Accepts multiple values (`?status=pending&status=active`).
required: false
schema:
type: array
title: Status
description: Filter keywords by status. Accepts multiple values (`?status=pending&status=active`).
default: []
items:
$ref: '#/components/schemas/KeywordStatus'
- name: creation_start_date
in: query
description: Filter keywords created on or after this date.
required: false
schema:
type: string
title: Creation Start Date
description: Filter keywords created on or after this date.
format: date-time
examples:
- '2023-10-05T14:48:00.000Z'
examples:
default:
value: '2023-10-05T14:48:00.000Z'
- name: creation_end_date
in: query
description: Filter keywords created on or before this date.
required: false
schema:
type: string
title: Creation End Date
description: Filter keywords created on or before this date.
format: date-time
examples:
- '2023-10-05T14:48:00.000Z'
examples:
default:
value: '2023-10-05T14:48:00.000Z'
- name: last_modification_start_date
in: query
description: Filter keywords last modified on or after this date.
required: false
schema:
type: string
title: Last Modification Start Date
description: Filter keywords last modified on or after this date.
format: date-time
examples:
- '2023-10-05T14:48:00.000Z'
examples:
default:
value: '2023-10-05T14:48:00.000Z'
- name: last_modification_end_date
in: query
description: Filter keywords last modified on or before this date.
required: false
schema:
type: string
title: Last Modification End Date
description: Filter keywords last modified on or before this date.
format: date-time
examples:
- '2023-10-05T14:48:00.000Z'
examples:
default:
value: '2023-10-05T14:48:00.000Z'
- name: cursor
in: query
description: 'Cursor returned by a previous call to this endpoint. If it is not set, you will get the first page.'
required: false
schema:
type: string
title: Cursor
description: 'Cursor returned by a previous call to this endpoint. If it is not set, you will get the first page.'
- name: workspaces
in: query
description: Filter keywords by workspace. Accepts multiple values (`?workspaces=&workspaces=`).
required: false
schema:
type: array
title: Workspaces
description: Filter keywords by workspace. Accepts multiple values (`?workspaces=&workspaces=`).
default: []
items:
type: string
format: uuid
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ClientKeywordListDTO'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse_BadRequestError_'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse_UnauthorizedError_'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse_ForbiddenAccessError_'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse_UnknownError_'
security:
- jwt: []
servers:
- url: 'https://api.cybelangel.com'
post:
tags:
- Keywords
summary: Create Keywords
description: Create a batch of keywords for the organization of the authenticated OAuth client token.
Maximum 10 keywords per request. Keywords are created in "pending" status.
operationId: create-keywords
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ClientCreateKeywordsBodyDTO'
responses:
'201':
description: All the keywords were created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ClientCreateKeywords201ResponseDTO'
'207':
description: One or more keywords failed to be created
content:
application/json:
schema:
$ref: '#/components/schemas/ClientCreateKeywords207ResponseDTO'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse_BadRequestError_'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse_UnauthorizedError_'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse_ForbiddenAccessError_'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse_UnknownError_'
security:
- jwt: []
servers:
- url: 'https://api.cybelangel.com'
patch:
tags:
- Keywords
summary: Update Keywords
description: Update a batch of keywords for the organization of the authenticated OAuth client token.
Maximum 10 keywords per request. Omitted fields are left unchanged.
operationId: update-keywords
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ClientUpdateKeywordsBodyDTO'
responses:
'200':
description: All the keywords were updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ClientUpdateKeywords200ResponseDTO'
'207':
description: One or more keywords failed to be updated
content:
application/json:
schema:
$ref: '#/components/schemas/ClientUpdateKeywords207ResponseDTO'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse_BadRequestError_'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse_UnauthorizedError_'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse_ForbiddenAccessError_'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse_UnknownError_'
security:
- jwt: []
servers:
- url: 'https://api.cybelangel.com'
/v1/keywords/status:
put:
tags:
- Keywords
summary: Update Keywords Status
description: Update the status of a batch of keywords for the organization of the authenticated OAuth client token.
Only deactivation ("inactive") is supported. Maximum 10 keywords per request.
operationId: update-keywords-status
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateKeywordsStatusBodyDTO'
responses:
'200':
description: All the keywords were updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ClientUpdateKeywords200ResponseDTO'
'207':
description: One or more keywords failed to be updated
content:
application/json:
schema:
$ref: '#/components/schemas/ClientUpdateKeywords207ResponseDTO'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse_BadRequestError_'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse_UnauthorizedError_'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse_ForbiddenAccessError_'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse_UnknownError_'
security:
- jwt: []
servers:
- url: 'https://api.cybelangel.com'
/v1/workspaces:
get:
tags:
- Workspaces
summary: Get Workspaces
description: Get all workspaces for the organization of the authenticated OAuth client token.
operationId: get-workspaces
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/WorkspaceListDTO'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse_BadRequestError_'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse_UnauthorizedError_'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse_ForbiddenAccessError_'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/APIErrorResponse_UnknownError_'
security:
- jwt: []
servers:
- url: 'https://api.cybelangel.com'
tags:
- name: Keywords
description: Manipulate keywords.
- name: Workspaces
description: List workspaces.
components:
securitySchemes:
jwt:
type: http
scheme: bearer
bearerFormat: JWT
schemas:
KeywordStatus:
type: string
enum:
- pending
- active
- inactive
title: KeywordStatus
ClientKeywordListDTO:
type: object
title: ClientKeywordListDTO
additionalProperties: false
properties:
items:
type: array
title: Items
description: List of keywords matching the request
items:
$ref: '#/components/schemas/ClientKeywordDTO'
total:
type: integer
title: Total
description: Total number of keywords through all pages
minimum: 0
next_cursor:
title: Next Cursor
description: Cursor to the next page. You should use this cursor in the "cursor" query parameter to retrieve the next page.
anyOf:
- type: string
required:
- items
- total
ClientKeywordDTO:
type: object
title: ClientKeywordDTO
properties:
id:
type: string
title: Id
description: Unique identifier of the keyword.
format: uuid
name:
type: string
title: Name
description: Name of the keyword.
type:
$ref: '#/components/schemas/KeywordType'
description: Type of the keyword.
status:
$ref: '#/components/schemas/KeywordStatus'
description: Current status of the keyword.
description:
type: string
title: Description
description: Description of the keyword.
workspaces:
type: array
title: Workspaces
description: Workspaces the keyword belongs to.
default: []
items:
$ref: '#/components/schemas/WorkspaceDTO'
creation_date:
type: string
title: Creation Date
description: Date of creation.
format: date-time
examples:
- '2023-10-05T14:48:00.000Z'
last_modification_date:
type: string
title: Last Modification Date
description: Date of the last modification.
format: date-time
examples:
- '2023-10-05T14:48:00.000Z'
required:
- id
- name
- type
- status
- description
- creation_date
- last_modification_date
KeywordType:
type: string
enum:
- subsidiaries
- projects
- domain
- ip
- bin
- vip
- product
- misc
title: KeywordType
WorkspaceDTO:
type: object
title: WorkspaceDTO
additionalProperties: false
properties:
id:
type: string
title: Id
description: Unique identifier of the workspace.
format: uuid
name:
type: string
title: Name
description: Name of the workspace.
description:
title: Description
description: Description of the workspace.
anyOf:
- type: string
required:
- id
- name
APIErrorResponse_BadRequestError_:
type: object
title: 'APIErrorResponse[BadRequestError]'
properties:
error:
$ref: '#/components/schemas/BadRequestError'
required:
- error
BadRequestError:
type: object
title: BadRequestError
description: User sent a bad request.
properties:
message:
type: string
title: Message
required:
- message
APIErrorResponse_UnauthorizedError_:
type: object
title: 'APIErrorResponse[UnauthorizedError]'
properties:
error:
$ref: '#/components/schemas/UnauthorizedError'
required:
- error
UnauthorizedError:
type: object
title: UnauthorizedError
description: User cannot access some resource.
properties:
message:
type: string
title: Message
required:
- message
APIErrorResponse_ForbiddenAccessError_:
type: object
title: 'APIErrorResponse[ForbiddenAccessError]'
properties:
error:
$ref: '#/components/schemas/ForbiddenAccessError'
required:
- error
ForbiddenAccessError:
type: object
title: ForbiddenAccessError
description: User cannot access some resource.
properties:
message:
type: string
title: Message
required:
- message
APIErrorResponse_UnknownError_:
type: object
title: 'APIErrorResponse[UnknownError]'
properties:
error:
$ref: '#/components/schemas/UnknownError'
required:
- error
UnknownError:
type: object
title: UnknownError
description: 'Unknown error on server-side, please contact support.'
properties:
message:
type: string
title: Message
required:
- message
ClientCreateKeywordsBodyDTO:
type: object
title: ClientCreateKeywordsBodyDTO
additionalProperties: false
properties:
keywords:
type: array
title: Keywords
description: List of keywords to create. Maximum 10 items.
minItems: 1
maxItems: 10
items:
$ref: '#/components/schemas/ClientCreateKeywordInputDTO'
required:
- keywords
ClientCreateKeywordInputDTO:
type: object
title: ClientCreateKeywordInputDTO
additionalProperties: false
properties:
name:
type: string
title: Name
description: Name of the keyword.
minLength: 1
maxLength: 500
type:
$ref: '#/components/schemas/KeywordType'
description: Type of the keyword.
description:
type: string
title: Description
description: Description of the keyword.
default: ''
workspaces:
type: array
title: Workspaces
description: Workspaces the keyword belongs to. Required if the organization has workspaces enabled; otherwise defaults to the organization's workspace.
default: []
items:
type: string
format: uuid
required:
- name
ClientCreateKeywords201ResponseDTO:
type: object
title: ClientCreateKeywords201ResponseDTO
additionalProperties: false
properties:
created_keywords:
type: array
title: Created Keywords
description: List of successfully created keywords
items:
$ref: '#/components/schemas/ClientKeywordDTO'
failed_keywords:
type: array
title: Failed Keywords
description: List of keywords that could not be created
items:
$ref: '#/components/schemas/FailedToCreateKeywordDTO'
required:
- created_keywords
- failed_keywords
FailedToCreateKeywordDTO:
type: object
title: FailedToCreateKeywordDTO
properties:
name:
type: string
title: Name
error_code:
$ref: '#/components/schemas/CreateKeywordErrorCode'
error_details:
title: Error Details
anyOf:
- type: string
required:
- name
- error_code
CreateKeywordErrorCode:
type: string
enum:
- NAME_ALREADY_EXISTS
- INVALID_NAME
- INVALID_RULE
- INFOSTEALER_NOT_AVAILABLE_FOR_TYPE
- INFOSTEALER_NOT_ACTIVATED
- INTERNAL_ERROR
title: CreateKeywordErrorCode
ClientCreateKeywords207ResponseDTO:
type: object
title: ClientCreateKeywords207ResponseDTO
additionalProperties: false
properties:
created_keywords:
type: array
title: Created Keywords
description: List of successfully created keywords
items:
$ref: '#/components/schemas/ClientKeywordDTO'
failed_keywords:
type: array
title: Failed Keywords
description: List of keywords that could not be created
items:
$ref: '#/components/schemas/FailedToCreateKeywordDTO'
required:
- created_keywords
- failed_keywords
ClientUpdateKeywordsBodyDTO:
type: object
title: ClientUpdateKeywordsBodyDTO
additionalProperties: false
properties:
keywords:
type: array
title: Keywords
description: List of keywords to update. Maximum 10 items.
minItems: 1
maxItems: 10
items:
$ref: '#/components/schemas/ClientUpdateKeywordInputDTO'
required:
- keywords
ClientUpdateKeywordInputDTO:
type: object
title: ClientUpdateKeywordInputDTO
additionalProperties: false
properties:
id:
type: string
title: Id
description: Unique identifier of the keyword to update.
format: uuid
type:
description: Type of the keyword.
anyOf:
- $ref: '#/components/schemas/KeywordType'
description:
title: Description
description: Description of the keyword.
anyOf:
- type: string
workspaces:
title: Workspaces
description: Workspaces the keyword belongs to. Required if the organization has workspaces enabled; otherwise defaults to the organization's workspace.
anyOf:
- type: array
minItems: 1
items:
type: string
format: uuid
required:
- id
ClientUpdateKeywords200ResponseDTO:
type: object
title: ClientUpdateKeywords200ResponseDTO
additionalProperties: false
properties:
updated_keywords:
type: array
title: Updated Keywords
description: List of successfully updated keywords
items:
$ref: '#/components/schemas/ClientKeywordDTO'
failed_keywords:
type: array
title: Failed Keywords
description: List of keywords that could not be updated
items:
$ref: '#/components/schemas/FailedToUpdateKeywordDTO'
required:
- updated_keywords
- failed_keywords
FailedToUpdateKeywordDTO:
type: object
title: FailedToUpdateKeywordDTO
properties:
id:
type: string
title: Id
format: uuid
error_code:
$ref: '#/components/schemas/UpdateKeywordErrorCode'
error_details:
title: Error Details
anyOf:
- type: string
required:
- id
- error_code
UpdateKeywordErrorCode:
type: string
enum:
- NOT_FOUND
- NAME_ALREADY_EXISTS
- INVALID_NAME
- INVALID_RULE
- INFOSTEALER_NOT_AVAILABLE_FOR_TYPE
- INFOSTEALER_NOT_ACTIVATED
- INTERNAL_ERROR
title: UpdateKeywordErrorCode
ClientUpdateKeywords207ResponseDTO:
type: object
title: ClientUpdateKeywords207ResponseDTO
additionalProperties: false
properties:
updated_keywords:
type: array
title: Updated Keywords
description: List of successfully updated keywords
items:
$ref: '#/components/schemas/ClientKeywordDTO'
failed_keywords:
type: array
title: Failed Keywords
description: List of keywords that could not be updated
items:
$ref: '#/components/schemas/FailedToUpdateKeywordDTO'
required:
- updated_keywords
- failed_keywords
UpdateKeywordsStatusBodyDTO:
type: object
title: UpdateKeywordsStatusBodyDTO
additionalProperties: false
properties:
keywords:
type: array
title: Keywords
description: List of keywords whose status to update. Maximum 10 items.
minItems: 1
maxItems: 10
items:
$ref: '#/components/schemas/UpdateKeywordStatusInputDTO'
required:
- keywords
UpdateKeywordStatusInputDTO:
type: object
title: UpdateKeywordStatusInputDTO
additionalProperties: false
properties:
id:
type: string
title: Id
description: Unique identifier of the keyword to update.
format: uuid
status:
const: inactive
title: Status
description: New status of the keyword. Only "inactive" (deactivation) is accepted.
required:
- id
- status
WorkspaceListDTO:
type: object
title: WorkspaceListDTO
additionalProperties: false
properties:
items:
type: array
title: Items
description: List of workspaces matching the request
items:
$ref: '#/components/schemas/WorkspaceDTO'
total:
type: integer
title: Total
description: Total number of workspaces
minimum: 0
required:
- items
- total