Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Backport 2.x] Add OpenAPI specification for import and export saved object api #6883

Merged
merged 1 commit into from
May 31, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
summary: The export objects API response contains JSON records for each exported object.
value:
{"attributes":{"fields":"[{\"count\":0,\"name\":\"@timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"count\":0,\"name\":\"customer_gender\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"count\":0,\"name\":\"manufacturer\",\"type\":\"string\",\"esTypes\":[\"text\"],\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"count\":0,\"name\":\"url.keyword\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"url\"}}},{\"count\":0,\"name\":\"user\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"count\":0,\"name\":\"utc_time\",\"type\":\"date\",\"esTypes\":[\"date\"],\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true}]","timeFieldName":"@timestamp","title":"open*"},"id":"4b3a6220-1e02-11ef-891d-992edd5ce25b","migrationVersion":{"index-pattern":"7.6.0"},"references":[],"type":"index-pattern","updated_at":"2024-05-29T21:27:47.266Z","version":"Wzc0LDFd"}
2 changes: 2 additions & 0 deletions docs/openapi/saved_objects/examples/import.ndjson
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
{"attributes":{"fields":"[{\"count\":0,\"name\":\"@timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"count\":0,\"name\":\"AvgTicketPrice\",\"type\":\"number\",\"esTypes\":[\"float\"],\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"count\":0,\"name\":\"utc_time\",\"type\":\"date\",\"esTypes\":[\"date\"],\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true}]","timeFieldName":"@timestamp","title":"open*"},"id":"4b3a6220-1e02-11ef-891d-992edd5ce25b","migrationVersion":{"index-pattern":"7.6.0"},"references":[],"type":"index-pattern","updated_at":"2024-05-29T21:27:47.266Z","version":"Wzc0LDFd"}
{"exportedCount":1,"missingRefCount":0,"missingReferences":[]}
185 changes: 185 additions & 0 deletions docs/openapi/saved_objects/saved_objects.yml
Original file line number Diff line number Diff line change
Expand Up @@ -520,6 +520,191 @@ paths:
- id: 67a9021c-c97e-4499-8150-9722ab44edd4
type: visualization
fields: ['title', 'fieldFormatMap']
responses:
'200':
description: The bulk get request is successful.
content:
application/json:
schema:
type: object
/api/saved_objects/_import:
post:
tags:
- saved objects
summary: Create sets of saved objects from a file created through the export API
parameters:
- in: query
name: overwrite
description: Overwrites saved objects when they already exist. This option cannot be used with the `createNewCopies` option.
schema:
type: boolean
default: false
- in: query
name: createNewCopies
description: Creates copies of saved objects, regenerates each object ID, and resets the origin. This option cannot be used with the `overwrite` option.
schema:
type: boolean
default: false
- in: query
name: dataSourceId
description: The ID of the data source to use for the import.
schema:
type: string
- in: query
name: workspace
description: Workspaces that the saved objects exist in.
schema:
oneOf:
- type: string
- type: array
- in: query
name: dataSourceEnabled
description: If set to true, will enable the multiple data source.
schema:
type: boolean
default: false
requestBody:
required: true
description: The ndjson file containing the saved objects to import
content:
multipart/form-data:
schema:
type: object
properties:
file:
description: |
A file exported using the export API. NOTE: The `savedObjects.maxImportExportSize` and `savedObjects.maxImportPayloadBytes` settings in the config file determine the maximum size of the file that can be imported.
example:
importObjectRequest:
summary: Example of importing saved objects
value:
$ref: '../examples/import.ndjson'
responses:
'200':
description: The import request is successful.
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
description: Indicates if the import was successful.
successCount:
type: integer
description: The number of successful imports.
errors:
type: array
items:
type: object
description: Indicates the import was unsuccessful and specifies the objects that failed to import.
successResults:
type: array
items:
type: object
description: Indicates the objects that are successfully imported, with any metadata if applicable.
examples:
importObjectSuccessResponse:
summary: Example of successful import
value:
success: true
successCount: 1
successResults:
- type: index-pattern
id: 4b3a6220-1e02-11ef-891d-992edd5ce25b
meta:
title: 'opensearch_dashboards_sample_data_ecommerce'
icon: indexPatternApp
overwrite: true
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/400_bad_request'
/api/saved_objects/_export:
post:
tags:
- saved objects
summary: Export set of saved objects into ndjson file
requestBody:
required: true
description: Can use type, objects and search to filter the objects to export
content:
application/json:
schema:
type: object
properties:
type:
oneOf:
- type: string
- type: array
items:
type: string
description: The saved object types to include in the export. Use * to export all the types.
objects:
type: array
items:
type: object
properties:
id:
type: string
required: true
description: Unique id of the saved object.
type:
type: string
required: true
description: The type of saved object.
description: The list of saved objects to export.
search:
type: string
description: The simple_query_string query that filters the objects.
includeReferencesDeep:
type: boolean
default: false
description: If set to true, will include references of the saved objects.
excludeExportDetails:
type: boolean
default: false
description: If set to true, will exclude export details at the end of the stream.
workspace:
type: array
items:
type: string
description: Workspaces that the saved objects exist in.
examples:
exportDashboards:
summary: Example of exporting dashboards
value:
objects:
- id: 67a9021c-c97e-4499-8150-9722ab44edd4
type: dashboard
includeReferencesDeep: true
excludeExportDetails: false
exportIndexPatterns:
summary: Example of exporting index patterns
value:
objects:
- id: 4b3a6220-1e02-11ef-891d-992edd5ce25b
type: index-pattern
includeReferencesDeep: false
excludeExportDetails: true
responses:
'200':
description: The export request is successful.
content:
application/x-ndjson:
schema:
type: object
examples:
exportSavedObjectsResponse:
$ref: '../examples/export_objects_response.yaml'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/400_bad_request'
components:
parameters:
type:
Expand Down
Loading