Import an API version

POST /apim/import_version/{import_path}

Overview

This API imports an API version from one control plane/Org to another using a public API. Alternatively, when import you can both update the accounts used and add expressions to the API version.

Prerequisites

  • Write permission on the target API to import the API version

Request

   POSThttps://{control_plane_path}/api/1/rest/public/apim/import_version/{import_path}?{query_parameter}

Path parameters

Key Description
import_path The path to the target API.

Format:{org_name}/apim/{api_name}/{api_version name}

Note: The path is case-sensitive.

Query parameters

Key Type Description
duplicate_check boolean
  • skip or true

    This parameter first performs a check for the existence of an API version with the same name:

    • If an API version with the same name exists, additional assets are updated in the API version.

    • If the API version with the same name does not exist, assets are imported successfully with API version in unpublished status.

    Any assets with the same name are not updated and an error code 409 generates.

  • create_new or false
    • If a API version with the same name exists, the API version is successfully imported with a numbered name in the format API version number. Example:apiVersion1

    • This setting does nothing if the target API version does not exist.

  • overwrite

    • If an asset with the same name exists in the target API version and the asset's type is specified in overwrite_types, it is overwritten. Otherwise, it is ignored.

overwrite_types list

The types of assets that can be overwritten, if an asset with the same name already exists in the destination API version.

Valid values:

  • Account

  • File

  • Flows

  • Job (task)

  • Pipeline

  • Policy

Note:
  • The Policy is always overwritten.
  • For any asset type you select, all the assets of that type in the destination API version are imported.
Note: The query parameter setting to import API versions between Orgs is same as the above table.

Request header

Specify Basic for authorization and multipart/form-data for content type.

 Authorization: Basic {your_encoded_security_credentials}
Content-Type: multipart/form-data

Request body

Key Type Description
file string The unmodified ZIP file of the exported source API version.
file_account string

The JSON file containing the list of accounts to modify.

  • To create this file:

    1. Extract the accounts_template.json file from the exported ZIP file. The JSON includes nodes for each account associated with the API version.

    2. Delete the JSON nodes for accounts that you do not want to modify.

    3. Update the values of the value keys for the accounts that requires modification. Replace any encrypted values (such as the password) with the original plain text value. This is required, even if you are not changing the value itself, because these values are encrypted again during import.

    Note:
    • Either do not modify the UUID of the account or the structure of the property_map node. The property_map structure might be different for each account and must be preserved.

    • If this file is not provided, the accounts are not modified.

file_expr string
  • A ZIP file containing expression files to add to the root of the project in the new location.
    • If an expression file with the same name already exists in the target location, it is overwritten.

    • If this file is not provided, no additional expression files are added to the project.

Note: If the ZIP file contains folders, the folder structure is flattened. If duplicate filenames exist in different folders of the ZIP file, only one of those files is copied to the new location.
Example: An expression library file (typically with the .expr extension) might contain:
 {
  prefix:'test';
  prefixer: x => this.prefix + x
   }
Note: The request body parameter setting to import API versions between Orgs is same as the above table.

Response

Response body

{
    "response_map": {
        "successful": [
            {
                "snode_id": "65b124ad2c22dd5a9d774dff",
                "name": "Sample Book API-Test-1.0.0.json"
            },
            {
                "snode_id": "65b124daca75d153d3026009",
                "name": "Sample Book API-Test-1.0.0-2024-01-24 14:55:20.json"
            },
            {
                "snode_id": "65b129e90d78973459c47123",
                "name": "Sample Book API-Test-1.2.0.json"
            },
            {
                "snode_id": "65b124aa411a3e956a84876a",
                "name": "books_pipeline"
            },
            {
                "snode_id": "65b124aa505cc8be84f2707e",
                "name": "books"
            }
        ],
        "failed": [],
        "warnings": []
    },
    "http_status_code": 200
}

Error handling


{
    "response_map": {
        "successful": [
            {
                "snode_id": "65b124ad2c22dd5a9d774dff",
                "name": "Sample Book API-Test-1.0.0.json"
            },
      ...
    ],
 

{
    "http_status_code": 400,
    "response_map": {
        "error_list": [
            {
                "message": "Expecting body argument for endpoint import_version: file_handle"
            }
        ]
    }
}


{
   "response_map": {
        "successful": [],
        "failed": [
            {
                "reason": "SLDB put request failed for https://canary.elastic.snaplogicdev.com/api/1/rest/slfs/Automation2/apim/testapi/1.1/Sample%20Book%20API-Test-1.0.0.json",
                "snode_id": "65b124ad2c22dd5a9d774dff",
                "name": "Sample Book API-Test-1.0.0.json",
                "status_code": 409
            },


 "warnings": [
            {
                "snode_id": "65b124aa505cc8be84f2707e",
                "name": "books",
                "message": "If this task gets imported, it will be disabled as there is no pipeline found."
            }
        ]
    },
    "http_status_code": 200
}
 
HTTP Status Codes Status Description Resolution
200 successful An array of objects that contains the successfully imported node ID, the asset, or an expression file. N/A
400 Bad Request The request was unacceptable, often because of a missing required parameter.
  • Verify that all the required parameters are added accurately.

  • Verify that the body parameter is set as form-dataand the valid .zip file is added.

  • Verify that the headers parameter is set with both key as content-type and value as multipart/form-data

409 Conflict This response is sent when a request conflicts with the current state of the server.
  • Verify that a project with the same name exists.

  • Set the duplicate_check parameter to either skip or true.

  • Existing assets with the same name won't be updated, and other assets will be added.

warnings warning This response is sent when your request of the import will disable the task because the asset is not present. Verify that all the assets are in place to avoid disabling the task that is being imported.