openapi: 3.0.0 info: description: This is the Integration & Catalog API version: "1.0.0" title: Integration API license: name: Apache 2.0 url: 'http://www.apache.org/licenses/LICENSE-2.0.html' tags: - name: admins description: Secured Admin-only calls - name: developers description: Operations available to regular developers paths: /repository: get: tags: - developers summary: repository of available integrations operationId: searchRepository description: | By passing in the appropriate search attributes, you can search for available integration templates in the repository (available for loading into the store) parameters: - in: query name: searchString description: pass an optional search string for looking up available Integrations template required: false schema: type: string - in: query name: limit description: maximum number of records to return schema: type: integer format: int32 minimum: 0 maximum: 50 responses: '200': description: search results matching criteria content: application/json: schema: type: array items: $ref: '../../src/main/resources/schema/system/integrations-template-list.schema' example: - template-name: nginx version: 1.0.0 description: Nginx HTTP server collector catalog: observability collections: - logs - metrics - name: apache HTTP server version: 1.0.0 description: Http Apache server catalog: observability collections: - logs - metrics - name: VPC Flow Logs version: 1.0.0 description: " Log and View Network Traffic Flows" catalog: observability collections: - logs '400': description: bad input parameter post: tags: - admins summary: adds an Integration template item operationId: addIntegration description: | Adds an Integration template to the repository, expecting the internal URLs to be accessible requestBody: required: true description: Inventory template item to add content: application/zip: schema: $ref: '../../src/main/resources/schema/system/integration.schema' example: - BLOB including all images, json files, dashboards and documentations responses: '201': description: item created '400': description: 'invalid input, object invalid' '409': description: an existing item already exists /repository/{id}: get: tags: - developers summary: get integration template from the repository by id operationId: integrationFromRepositoryById description: | Get a specific Integration from the repository by Id parameters: - in: path name: id description: integration name required: true schema: type: string responses: '200': description: Integration template content: application/json: schema: $ref: '../../src/main/resources/schema/system/integration.schema' example: template-name: nginx version: integration: 0.1.0 schema: 1.0.0 resource: "^1.23.0" description: Nginx HTTP server collector identification: instrumentationScope.attributes.identification catalog: observability collection: - category: logs components: - communication - http feeds: - info: access logs input_type: logfile dataset: nginx.access labels: - nginx - access - info: error logs input_type: logfile labels: - nginx - error dataset: nginx.error - category: metrics components: [ ] feeds: - info: status metrics input_type: metrics dataset: nginx.status labels: - nginx - status repository: url: https://github.com/opensearch-project/observability/tree/main/integrarions/nginx '400': description: bad input parameter /repository/{id}/fields: get: tags: - developers summary: get integration-template catalog fields operationId: integrationFieldsById description: | Get a specific Integration-template fields by Id parameters: - in: path name: id description: integration name required: true schema: type: string responses: '200': description: Integration's fields content: application/json: schema: $ref: '../../src/main/resources/schema/system/integration-fields-list.schema' example: template-name: nginx version: 1.0.0 description: Nginx HTTP server collector catalog: observability collections: - category: logs components: - source: logs.mapping container: true fields: severity: properties: number: type: long text: type: text fields: keyword: type: keyword ignore_above: 256 attributes: type: object properties: data_stream: properties: dataset: ignore_above: 128 type: keyword namespace: ignore_above: 128 type: keyword type: ignore_above: 56 type: keyword body: type: text "@timestamp": type: date observedTimestamp: type: date traceId: ignore_above: 256 type: keyword spanId: ignore_above: 256 type: keyword schemaUrl: type: text fields: keyword: type: keyword ignore_above: 256 instrumentationScope: properties: name: type: text fields: keyword: type: keyword ignore_above: 128 version: type: text fields: keyword: type: keyword ignore_above: 256 dropped_attributes_count: type: integer schemaUrl: type: text fields: keyword: type: keyword ignore_above: 256 event: properties: domain: ignore_above: 256 type: keyword name: ignore_above: 256 type: keyword category: ignore_above: 256 type: keyword type: ignore_above: 256 type: keyword kind: ignore_above: 256 type: keyword result: ignore_above: 256 type: keyword exception: properties: message: ignore_above: 1024 type: keyword type: ignore_above: 256 type: keyword stacktrace: type: text - source: http.mapping container: false fields: http: properties: flavor: type: keyword ignore_above: 256 user_agent: type: keyword ignore_above: 2048 url: type: keyword ignore_above: 2048 schema: type: keyword ignore_above: 1024 target: type: keyword ignore_above: 1024 route: type: keyword ignore_above: 1024 client.ip: type: ip resent_count: type: integer request: type: object properties: id: type: text fields: keyword: type: keyword ignore_above: 256 body.content: type: text bytes: type: long method: type: keyword ignore_above: 256 referrer: type: keyword ignore_above: 1024 mime_type: type: keyword ignore_above: 1024 response: type: object properties: id: type: text fields: keyword: type: keyword ignore_above: 256 body.content: type: text bytes: type: long status_code: type: integer - source: communication.mapping fields: communication: properties: sock.family: type: keyword ignore_above: 256 source: type: object properties: address: type: text fields: keyword: type: keyword ignore_above: 1024 domain: type: text fields: keyword: type: keyword ignore_above: 1024 bytes: type: long ip: type: ip port: type: long mac: type: keyword ignore_above: 1024 packets: type: long destination: type: object properties: address: type: text fields: keyword: type: keyword ignore_above: 1024 domain: type: text fields: keyword: type: keyword ignore_above: 1024 bytes: type: long ip: type: ip port: type: long mac: type: keyword ignore_above: 1024 packets: type: long - category: metrics components: - source: metrics.mapping container: true fields: name: type: text fields: keyword: type: keyword ignore_above: 256 attributes: type: object properties: data_stream: properties: dataset: ignore_above: 128 type: keyword namespace: ignore_above: 128 type: keyword type: ignore_above: 56 type: keyword description: type: text fields: keyword: type: keyword ignore_above: 256 unit: type: keyword ignore_above: 128 kind: type: keyword ignore_above: 128 aggregationTemporality: type: keyword ignore_above: 128 monotonic: type: boolean startTime: type: date "@timestamp": type: date observedTimestamp: type: date_nanos value: properties: int: type: integer double: type: double buckets: properties: count: type: long sum: type: double max: type: float min: type: float bucketCount: type: long bucketCountsList: type: long explicitBoundsList: type: float explicitBoundsCount: type: float quantiles: properties: quantile: type: double value: type: double quantileValuesCount: type: long positiveBuckets: properties: count: type: long max: type: float min: type: float negativeBuckets: properties: count: type: long max: type: float min: type: float negativeOffset: type: integer positiveOffset: type: integer zeroCount: type: long scale: type: long max: type: float min: type: float sum: type: float count: type: long exemplar: properties: time: type: date traceId: ignore_above: 256 type: keyword spanId: ignore_above: 256 type: keyword instrumentationScope: properties: name: type: text fields: keyword: type: keyword ignore_above: 128 version: type: text fields: keyword: type: keyword ignore_above: 256 droppedAttributesCount: type: integer schemaUrl: type: text fields: keyword: type: keyword ignore_above: 256 schemaUrl: type: text fields: keyword: type: keyword ignore_above: 256 '400': description: bad input parameter /store: get: tags: - developers summary: get all stored Integrations operationId: searchStore description: | By passing in the appropriate search attributes, you can search for available Integrations in the store parameters: - in: query name: searchString description: pass an optional search string for looking up Integration in the store required: false schema: type: string - in: query name: limit description: maximum number of records to return schema: type: integer format: int32 minimum: 0 maximum: 50 responses: '200': description: search results matching criteria content: application/json: schema: type: array items: $ref: '../../src/main/resources/schema/system/integration-instance.schema' example: template-name: nginx dataset: prod namespace: us_east id: nginx-prod-us_east version: 0.1.0 description: Nginx HTTP server collector for east cost prod systems template: https://github.com/opensearch-project/observability/blob/2.x/integrations/nginx/config.json creationDate: '2016-08-29T09:12:33.001Z' status: LOADED assets: - name: sso-logs-dashboard-new.ndjson creationDate: "'2016-08-29T09:12:33.001Z'" status: LOADED '400': description: bad input parameter post: tags: - admins summary: adds an Integration item to store operationId: storeIntegration description: | Adds an Integration to the system store, expecting the internal URLs to be accessible requestBody: required: true description: Inventory item to add content: application/json: schema: $ref: '../../src/main/resources/schema/system/integration-instance.schema' example: template-name: nginx dataset: prod namespace: us_east id: nginx-prod-us_east version: 0.1.0 description: Nginx HTTP server collector for east cost prod systems template: https://github.com/opensearch-project/observability/blob/2.x/integrations/nginx/config.json creationDate: '2016-08-29T09:12:33.001Z' status: LOADED assets: - name: sso-logs-dashboard-new.ndjson creationDate: "'2016-08-29T09:12:33.001Z'" status: LOADED responses: '201': description: item created '400': description: 'invalid input, object invalid' '409': description: an existing item already exists /store/{id}: get: tags: - developers summary: get stored Integration status operationId: integrationStatus description: | Get the stored Integration's status parameters: - in: path name: id description: Integration instance Id required: true schema: type: string responses: '200': description: stored integration status content: application/json: schema: $ref: '../../src/main/resources/schema/system/integration-instance.schema' example: template-name: nginx dataset: prod namespace: us_east id: nginx-prod-us_east version: 0.1.0 description: Nginx HTTP server collector for east cost prod systems template: https://github.com/opensearch-project/observability/blob/2.x/integrations/nginx/config.json creationDate: '2016-08-29T09:12:33.001Z' status: LOADED assets: - name: sso-logs-dashboard-new.ndjson creationDate: "'2016-08-29T09:12:33.001Z'" status: LOADED '400': description: bad input parameter /store/{id}/validate: post: tags: - developers summary: validates an Integration operationId: integrationValidate description: | validate this integration including all its assets parameters: - in: path name: id description: Integration instance Id required: true schema: type: string responses: '200': description: integration store status content: application/json: schema: $ref: '../../src/main/resources/schema/system/integration-instance.schema' example: template-name: nginx dataset: prod namespace: us_east id: nginx-prod-us_east version: 0.1.0 description: Nginx HTTP server collector for east cost prod systems template: https://github.com/opensearch-project/observability/blob/2.x/integrations/nginx/config.json creationDate: '2016-08-29T09:12:33.001Z' status: LOADED assets: - name: sso-logs-dashboard-new.ndjson creationDate: "'2016-08-29T09:12:33.001Z'" status: LOADED '400': description: bad input parameter /store/{id}/upload: post: tags: - developers summary: upload Integration's assets operationId: integrationUploadAssets description: | Load a list of assets associated with this integration into available Integrations in the system store requestBody: required: false description: Inventory items to upload content: application/json: schema: $ref: '../../src/main/resources/schema/system/integration-instance.schema' example: template-name: nginx dataset: prod namespace: us_east id: nginx-prod-us_east version: 0.1.0 description: Nginx HTTP server collector for east cost prod systems template: https://github.com/opensearch-project/observability/blob/2.x/integrations/nginx/config.json creationDate: '2016-08-29T09:12:33.001Z' status: LOADED assets: - name: sso-logs-dashboard-new.ndjson creationDate: "'2016-08-29T09:12:33.001Z'" status: LOADED parameters: - in: path name: id description: Integration instance Id required: true schema: type: string responses: '200': description: integration store status content: application/json: schema: $ref: '../../src/main/resources/schema/system/integration-instance.schema' example: template-name: nginx dataset: prod namespace: us_east id: nginx-prod-us_east version: 0.1.0 description: Nginx HTTP server collector for east cost prod systems template: https://github.com/opensearch-project/observability/blob/2.x/integrations/nginx/config.json creationDate: '2016-08-29T09:12:33.001Z' status: LOADED assets: - name: sso-logs-dashboard-new.ndjson creationDate: "'2016-08-29T09:12:33.001Z'" status: LOADED '400': description: bad input parameter /store/{id}/activate: put: tags: - developers summary: activate an Integration operationId: integrationActivate description: | attempts activating an integration that may be in an intermediate phase during the storage process parameters: - in: path name: id description: Integration instance Id required: true schema: type: string responses: '200': description: integration store status content: application/json: schema: $ref: '../../src/main/resources/schema/system/integration-instance.schema' example: template-name: nginx dataset: prod namespace: us_east id: nginx-prod-us_east version: 0.1.0 description: Nginx HTTP server collector for east cost prod systems template: https://github.com/opensearch-project/observability/blob/2.x/integrations/nginx/config.json creationDate: '2016-08-29T09:12:33.001Z' status: LOADED assets: - name: sso-logs-dashboard-new.ndjson creationDate: "'2016-08-29T09:12:33.001Z'" status: LOADED '400': description: bad input parameter servers: - url: http://127.0.0.1:4010 description: Mock server (uses fake data)