openapi: 3.0.1 info: title: CZERTAINLY Discovery API description: REST API for managing Discoveries in the platform contact: name: CZERTAINLY url: https://www.czertainly.com email: getinfo@czertainly.com license: name: MIT License url: https://github.com/3KeyCompany/CZERTAINLY/blob/develop/LICENSE.md version: 2.7.1 x-logo: url: images/czertainly_color_H.svg externalDocs: description: CZERTAINLY Documentation url: https://docs.czertainly.com servers: - url: http://localhost:8080 description: Generated server url tags: - name: Discovery Management description: Discovery Management API paths: /v1/discoveries: get: tags: - Discovery Management summary: List Discovery operationId: listDiscoveries responses: "400": description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorMessageDto' "502": description: Connector Error content: application/json: schema: $ref: '#/components/schemas/ErrorMessageDto' "200": description: List of available Discoveries content: application/json: schema: type: array items: $ref: '#/components/schemas/DiscoveryHistoryDto' "401": description: Unauthorized "503": description: Connector Communication Error content: application/json: schema: $ref: '#/components/schemas/ErrorMessageDto' "500": description: Internal Server Error "403": description: Forbidden content: application/json: schema: $ref: '#/components/schemas/AuthenticationServiceExceptionDto' "404": description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorMessageDto' post: tags: - Discovery Management summary: Create Discovery operationId: createDiscovery requestBody: content: application/json: schema: $ref: '#/components/schemas/DiscoveryDto' required: true responses: "422": description: Unprocessable Entity content: application/json: schema: type: array items: type: string example: - Error Message 1 - Error Message 2 "400": description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorMessageDto' "502": description: Connector Error content: application/json: schema: $ref: '#/components/schemas/ErrorMessageDto' "401": description: Unauthorized "503": description: Connector Communication Error content: application/json: schema: $ref: '#/components/schemas/ErrorMessageDto' "201": description: Discovery Created content: application/json: schema: $ref: '#/components/schemas/UuidDto' "500": description: Internal Server Error "403": description: Forbidden content: application/json: schema: $ref: '#/components/schemas/AuthenticationServiceExceptionDto' "404": description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorMessageDto' delete: tags: - Discovery Management summary: Delete Multiple Discoveries operationId: bulkDeleteDiscovery requestBody: description: Discovery UUIDs content: application/json: schema: type: array items: type: string example: - c2f685d4-6a3e-11ec-90d6-0242ac120003 - b9b09548-a97c-4c6a-a06a-e4ee6fc2da98 required: true responses: "400": description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorMessageDto' "502": description: Connector Error content: application/json: schema: $ref: '#/components/schemas/ErrorMessageDto' "401": description: Unauthorized "503": description: Connector Communication Error content: application/json: schema: $ref: '#/components/schemas/ErrorMessageDto' "500": description: Internal Server Error "403": description: Forbidden content: application/json: schema: $ref: '#/components/schemas/AuthenticationServiceExceptionDto' "404": description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorMessageDto' "204": description: Discoveries deleted /v1/discoveries/{uuid}: get: tags: - Discovery Management summary: Discovery Details operationId: getDiscovery parameters: - name: uuid in: path description: Discovery UUID required: true schema: type: string responses: "400": description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorMessageDto' "502": description: Connector Error content: application/json: schema: $ref: '#/components/schemas/ErrorMessageDto' "401": description: Unauthorized "503": description: Connector Communication Error content: application/json: schema: $ref: '#/components/schemas/ErrorMessageDto' "500": description: Internal Server Error "403": description: Forbidden content: application/json: schema: $ref: '#/components/schemas/AuthenticationServiceExceptionDto' "404": description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorMessageDto' "200": description: Discovery details retrieved content: application/json: schema: $ref: '#/components/schemas/DiscoveryHistoryDetailDto' delete: tags: - Discovery Management summary: Delete Discovery operationId: deleteDiscovery parameters: - name: uuid in: path description: Discovery UUID required: true schema: type: string responses: "400": description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorMessageDto' "502": description: Connector Error content: application/json: schema: $ref: '#/components/schemas/ErrorMessageDto' "204": description: Discovery deleted "401": description: Unauthorized "503": description: Connector Communication Error content: application/json: schema: $ref: '#/components/schemas/ErrorMessageDto' "500": description: Internal Server Error "403": description: Forbidden content: application/json: schema: $ref: '#/components/schemas/AuthenticationServiceExceptionDto' "404": description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorMessageDto' /v1/discoveries/{uuid}/certificates: get: tags: - Discovery Management summary: Discovery Details operationId: getDiscoveryCertificates parameters: - name: uuid in: path description: Discovery UUID required: true schema: type: string - name: newlyDiscovered in: query required: false schema: type: boolean - name: itemsPerPage in: query required: false schema: type: integer format: int32 default: 10 - name: pageNumber in: query required: false schema: type: integer format: int32 default: 0 responses: "400": description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ErrorMessageDto' "502": description: Connector Error content: application/json: schema: $ref: '#/components/schemas/ErrorMessageDto' "401": description: Unauthorized "503": description: Connector Communication Error content: application/json: schema: $ref: '#/components/schemas/ErrorMessageDto' "500": description: Internal Server Error "403": description: Forbidden content: application/json: schema: $ref: '#/components/schemas/AuthenticationServiceExceptionDto' "404": description: Not Found content: application/json: schema: $ref: '#/components/schemas/ErrorMessageDto' "200": description: Discovery details retrieved content: application/json: schema: $ref: '#/components/schemas/DiscoveryCertificateResponseDto' components: schemas: AttributeCallback: required: - callbackContext - callbackMethod - mappings type: object properties: callbackContext: type: string description: Context part of callback URL callbackMethod: type: string description: HTTP method of the callback mappings: uniqueItems: true type: array description: Mappings for the callback method items: $ref: '#/components/schemas/AttributeCallbackMapping' description: Optional definition of callback for getting the content of the Attribute based on the action AttributeCallbackMapping: required: - targets - to type: object properties: from: type: string description: Name of the attribute whose value is to be used as value of path variable or request param or body field.It is optional and must be set only if value is not set. attributeType: $ref: '#/components/schemas/AttributeType' attributeContentType: $ref: '#/components/schemas/AttributeContentType' to: type: string description: Name of the path variable or request param or body field which is to be used to assign value of attribute targets: uniqueItems: true type: array description: Set of targets for propagating value. items: $ref: '#/components/schemas/AttributeValueTarget' value: type: object description: Static value to be propagated to targets. It is optional and is set only if the value is known at attribute creation time. description: Mappings for the callback method AttributeConstraintType: type: string description: Attribute Constraint Type enum: - regExp - range - dateTime AttributeContentType: type: string description: 'Type of the attribute content. ' enum: - string - integer - secret - file - boolean - credential - date - float - object - text - time - datetime - codeblock AttributeType: type: string description: Type of the attribute. It is optional and must be set only if special behaviour is needed. enum: - data - group - info - meta - custom AttributeValueTarget: type: string description: Set of targets for propagating value. enum: - pathVariable - requestParameter - body BaseAttributeConstraint: required: - data - type type: object properties: description: type: string description: Description of the constraint errorMessage: type: string description: Error message to be displayed for wrong data type: $ref: '#/components/schemas/AttributeConstraintType' data: type: object description: Attribute Constraint Data description: Optional regular expressions and constraints used for validating the Attribute content oneOf: - $ref: '#/components/schemas/RegexpAttributeConstraint' - $ref: '#/components/schemas/RangeAttributeConstraint' - $ref: '#/components/schemas/DateTimeAttributeConstraint' BaseAttributeContentDto: required: - data type: object properties: reference: type: string description: Content Reference data: type: object description: Content Data description: Base Attribute content definition oneOf: - $ref: '#/components/schemas/BooleanAttributeContent' - $ref: '#/components/schemas/CodeBlockAttributeContent' - $ref: '#/components/schemas/CredentialAttributeContent' - $ref: '#/components/schemas/DateAttributeContent' - $ref: '#/components/schemas/DateTimeAttributeContent' - $ref: '#/components/schemas/FileAttributeContent' - $ref: '#/components/schemas/FloatAttributeContent' - $ref: '#/components/schemas/IntegerAttributeContent' - $ref: '#/components/schemas/ObjectAttributeContent' - $ref: '#/components/schemas/SecretAttributeContent' - $ref: '#/components/schemas/StringAttributeContent' - $ref: '#/components/schemas/TextAttributeContent' - $ref: '#/components/schemas/TimeAttributeContent' BooleanAttributeContent: required: - data type: object properties: reference: type: string description: Content Reference data: type: boolean description: Boolean attribute value CodeBlockAttributeContent: required: - data type: object properties: reference: type: string description: Content Reference data: $ref: '#/components/schemas/CodeBlockAttributeContentData' CodeBlockAttributeContentData: required: - code - language type: object properties: language: $ref: '#/components/schemas/ProgrammingLanguageEnum' code: type: string description: Block of the code in Base64. Formatting of the code is specified by variable language description: CodeBlock attribute content data CredentialAttributeContent: required: - data type: object properties: reference: type: string description: Content Reference data: $ref: '#/components/schemas/CredentialAttributeContentData' CredentialAttributeContentData: required: - attributes - kind - name - uuid type: object properties: uuid: type: string description: Object identifier example: 7b55ge1c-844f-11dc-a8a3-0242ac120002 name: type: string description: Object Name example: Name kind: type: string description: Credential Kind example: "SoftKeyStore, Basic, ApiKey, etc" attributes: type: array description: List of Credential Attributes items: $ref: '#/components/schemas/DataAttribute' description: Credential attribute content data DataAttribute: required: - contentType - name - properties - type - uuid type: object properties: uuid: type: string description: UUID of the Attribute for unique identification example: 166b5cf52-63f2-11ec-90d6-0242ac120003 name: type: string description: Name of the Attribute that is used for identification example: Attribute description: type: string description: "Optional description of the Attribute, should contain helper\ \ text on what is expected" content: type: array description: Content of the Attribute items: $ref: '#/components/schemas/BaseAttributeContentDto' type: $ref: '#/components/schemas/AttributeType' contentType: $ref: '#/components/schemas/AttributeContentType' properties: $ref: '#/components/schemas/DataAttributeProperties' constraints: type: array description: Optional regular expressions and constraints used for validating the Attribute content items: $ref: '#/components/schemas/BaseAttributeConstraint' attributeCallback: $ref: '#/components/schemas/AttributeCallback' description: Data attribute allows to store and transfer dynamic data. Its content can be edited and send in requests to store. DataAttributeProperties: required: - label - list - multiSelect - readOnly - required - visible type: object properties: label: type: string description: Friendly name of the the Attribute example: Attribute Name visible: type: boolean description: "Boolean determining if the Attribute is visible and can be\ \ displayed, otherwise it should be hidden to the user." default: true group: type: string description: "Group of the Attribute, used for the logical grouping of the\ \ Attribute" example: requiredAttributes required: type: boolean description: "Boolean determining if the Attribute is required. If true,\ \ the Attribute must be provided." default: false readOnly: type: boolean description: "Boolean determining if the Attribute is read only. If true,\ \ the Attribute content cannot be changed." default: false list: type: boolean description: Boolean determining if the Attribute contains list of values in the content default: false multiSelect: type: boolean description: Boolean determining if the Attribute can have multiple values default: false description: Properties of the Attributes DateAttributeContent: required: - data type: object properties: reference: type: string description: Content Reference data: type: string description: Date attribute value in format yyyy-MM-dd format: date DateTimeAttributeConstraint: required: - type type: object properties: description: type: string description: Description of the constraint errorMessage: type: string description: Error message to be displayed for wrong data type: $ref: '#/components/schemas/AttributeConstraintType' data: $ref: '#/components/schemas/DateTimeAttributeConstraintData' DateTimeAttributeConstraintData: type: object properties: from: type: string description: Start of the datetime for validation format: date-time to: type: string description: End of the datetime for validation format: date-time description: DateTime Range Attribute Constraint Data DateTimeAttributeContent: required: - data type: object properties: reference: type: string description: Content Reference data: type: string description: DateTime attribute value in format yyyy-MM-ddTHH:mm:ss.SSSXXX format: date-time DiscoveryDto: required: - attributes - connectorUuid - kind - name type: object properties: name: type: string description: Discovery name attributes: type: array description: List of Attributes for Discovery items: $ref: '#/components/schemas/RequestAttributeDto' customAttributes: type: array description: List of Custom Attributes items: $ref: '#/components/schemas/RequestAttributeDto' connectorUuid: type: string description: Discovery Provider UUID kind: type: string description: Discovery Kind FileAttributeContent: required: - data type: object properties: reference: type: string description: Content Reference data: $ref: '#/components/schemas/FileAttributeContentData' FileAttributeContentData: required: - content - fileName - mimeType type: object properties: content: type: string description: File content fileName: type: string description: Name of the file mimeType: type: string description: Type of the file uploaded description: File attribute content data FloatAttributeContent: required: - data type: object properties: reference: type: string description: Content Reference data: type: number description: Float attribute value format: float IntegerAttributeContent: required: - data type: object properties: reference: type: string description: Content Reference data: type: integer description: Integer attribute value format: int32 ObjectAttributeContent: required: - data type: object properties: reference: type: string description: Content Reference data: type: object description: Object attribute content data ProgrammingLanguageEnum: type: string description: Definition of programming languages used for code example: "JAVA, PHP, C, etc" enum: - css - clike - javascript - abap - actionscript - ada - apacheconf - apl - applescript - arduino - arff - asciidoc - asm6502 - aspnet - autohotkey - autoit - bash - basic - batch - bison - brainfuck - bro - c - csharp - cpp - coffeescript - clojure - crystal - csp - css-extras - d - dart - diff - django - docker - eiffel - elixir - elm - erb - erlang - fsharp - flow - fortran - gedcom - gherkin - git - glsl - gml - go - graphql - groovy - haml - handlebars - haskell - haxe - http - hpkp - hsts - ichigojam - icon - inform7 - ini - io - j - java - jolie - json - julia - keyman - kotlin - latex - less - liquid - lisp - livescript - lolcode - lua - makefile - markdown - markup-templating - matlab - mel - mizar - monkey - n4js - nasm - nginx - nim - nix - nsis - objectivec - ocaml - opencl - oz - parigp - parser - pascal - perl - php - php-extras - plsql - powershell - processing - prolog - properties - protobuf - pug - puppet - pure - python - q - qore - r - jsx - tsx - renpy - reason - rest - rip - roboconf - ruby - rust - sas - sass - scss - scala - scheme - smalltalk - smarty - sql - soy - stylus - swift - tap - tcl - textile - tt2 - twig - typescript - vbnet - velocity - verilog - vhdl - vim - visual-basic - wasm - wiki - xeora - xojo - xquery - yaml RangeAttributeConstraint: required: - type type: object properties: description: type: string description: Description of the constraint errorMessage: type: string description: Error message to be displayed for wrong data type: $ref: '#/components/schemas/AttributeConstraintType' data: $ref: '#/components/schemas/RangeAttributeConstraintData' RangeAttributeConstraintData: type: object properties: from: type: integer description: Start of the range for validation format: int32 to: type: integer description: End of the range for validation format: int32 description: Integer Range Attribute Constraint Data RegexpAttributeConstraint: required: - type type: object properties: description: type: string description: Description of the constraint errorMessage: type: string description: Error message to be displayed for wrong data type: $ref: '#/components/schemas/AttributeConstraintType' data: type: string description: Regular Expression Attribute Constraint Data RequestAttributeDto: required: - content - name type: object properties: uuid: type: string description: UUID of the Attribute example: 166b5cf52-63f2-11ec-90d6-0242ac120003 name: type: string description: Name of the Attribute example: Attribute content: type: array description: Content of the Attribute items: $ref: '#/components/schemas/BaseAttributeContentDto' description: Request attribute to send attribute content for object SecretAttributeContent: required: - data type: object properties: reference: type: string description: Content Reference data: $ref: '#/components/schemas/SecretAttributeContentData' SecretAttributeContentData: type: object properties: secret: type: string description: Secret attribute data protectionLevel: type: string description: Level of protection of the data description: Secret attribute content data StringAttributeContent: required: - data type: object properties: reference: type: string description: Content Reference data: type: string description: String attribute value TextAttributeContent: required: - data type: object properties: reference: type: string description: Content Reference data: type: string description: Text attribute value TimeAttributeContent: required: - data type: object properties: reference: type: string description: Content Reference data: type: string description: Time attribute value in format HH:mm:ss ErrorMessageDto: required: - message type: object properties: message: type: string description: Error message detail example: Error message UuidDto: required: - uuid type: object properties: uuid: type: string description: Object identifier AuthenticationServiceExceptionDto: required: - code - message - statusCode type: object properties: statusCode: type: integer description: Status code of the HTTP Request format: int32 code: type: string description: Code of the result message: type: string description: Exception message DiscoveryHistoryDto: required: - connectorName - connectorUuid - kind - name - status - uuid type: object properties: uuid: type: string description: Object identifier example: 7b55ge1c-844f-11dc-a8a3-0242ac120002 name: type: string description: Object Name example: Name kind: type: string description: Discovery Kind example: IP-HostName status: $ref: '#/components/schemas/DiscoveryStatus' startTime: type: string description: Date and time when Discovery started format: date-time nullable: true endTime: type: string description: Date and time when Discovery finished format: date-time nullable: true totalCertificatesDiscovered: type: integer description: Number of certificates that are discovered format: int32 default: 0 connectorUuid: type: string description: UUID of the Discovery Provider connectorName: type: string description: Name of the Discovery Provider DiscoveryStatus: type: string description: Status of Discovery enum: - inProgress - failed - completed - warning DiscoveryHistoryDetailDto: required: - attributes - connectorName - connectorUuid - kind - name - status - uuid type: object properties: uuid: type: string description: Object identifier example: 7b55ge1c-844f-11dc-a8a3-0242ac120002 name: type: string description: Object Name example: Name kind: type: string description: Discovery Kind example: IP-HostName status: $ref: '#/components/schemas/DiscoveryStatus' message: type: string description: Failure/Success Messages example: Failed due to network connectivity issues startTime: type: string description: Date and time when Discovery started format: date-time nullable: true endTime: type: string description: Date and time when Discovery finished format: date-time nullable: true totalCertificatesDiscovered: type: integer description: Number of certificates that are discovered format: int32 default: 0 connectorUuid: type: string description: UUID of the Discovery Provider connectorName: type: string description: Name of the Discovery Provider attributes: type: array description: List of Discovery Attributes items: $ref: '#/components/schemas/ResponseAttributeDto' customAttributes: type: array description: List of Custom Attributes items: $ref: '#/components/schemas/ResponseAttributeDto' metadata: type: array description: Metadata of the Discovery items: $ref: '#/components/schemas/MetadataResponseDto' MetadataResponseDto: required: - connectorName - connectorUuid - items type: object properties: connectorUuid: type: string description: UUID of the Connector connectorName: type: string description: Name of the Connector items: type: array description: List of Metadata items: $ref: '#/components/schemas/ResponseMetadataDto' description: Metadata response attributes with their source connector NameAndUuidDto: required: - name - uuid type: object properties: uuid: type: string description: Object identifier example: 7b55ge1c-844f-11dc-a8a3-0242ac120002 name: type: string description: Object Name example: Name description: Source Objects ResponseAttributeDto: required: - contentType - label - name - type type: object properties: uuid: type: string description: UUID of the Attribute example: 166b5cf52-63f2-11ec-90d6-0242ac120003 name: type: string description: Name of the Attribute example: Attribute label: type: string description: Label of the the Attribute example: Attribute Name type: $ref: '#/components/schemas/AttributeType' contentType: $ref: '#/components/schemas/AttributeContentType' content: type: array description: Content of the Attribute items: $ref: '#/components/schemas/BaseAttributeContentDto' description: Response attribute with content for object it belongs to ResponseMetadataDto: required: - contentType - label - name - type type: object properties: uuid: type: string description: UUID of the Attribute example: 166b5cf52-63f2-11ec-90d6-0242ac120003 name: type: string description: Name of the Attribute example: Attribute label: type: string description: Label of the the Attribute example: Attribute Name type: $ref: '#/components/schemas/AttributeType' contentType: $ref: '#/components/schemas/AttributeContentType' content: type: array description: Content of the Attribute items: $ref: '#/components/schemas/BaseAttributeContentDto' sourceObjectType: type: string description: Source Object Type sourceObjects: type: array description: Source Objects items: $ref: '#/components/schemas/NameAndUuidDto' description: Response metadata attribute instance with content DiscoveryCertificateDto: required: - certificateContent - commonName - fingerprint - issuerCommonName - newlyDiscovered - notAfter - notBefore - serialNumber - uuid type: object properties: uuid: type: string description: UUID of the Certificate inventoryUuid: type: string description: UUID of the Certificate in Certificate inventory commonName: type: string description: Certificate common name serialNumber: type: string description: Certificate Serial Number issuerCommonName: type: string description: Issuer common name notBefore: type: string description: Certificate validity start date format: date-time notAfter: type: string description: Certificate expiration date format: date-time fingerprint: type: string description: SHA256 thumbprint of the certificate certificateContent: type: string description: Base64 encoded Certificate content newlyDiscovered: type: boolean description: Boolean representing if the certificate is newly discovered. True - Certificate is newly discoveredfalse - Certificate was already available in the inventory description: Certificates DiscoveryCertificateResponseDto: required: - certificates - itemsPerPage - pageNumber - totalItems - totalPages type: object properties: certificates: type: array description: Certificates items: $ref: '#/components/schemas/DiscoveryCertificateDto' itemsPerPage: type: integer description: Number of entries per page format: int32 pageNumber: type: integer description: Page number for the request format: int32 totalPages: type: integer description: Number of pages available format: int32 totalItems: type: integer description: Number of items available format: int64