# Kubeflow Pipelines API ## Before You Start Tools needed: * Docker * Make ## Auto-generation of Go client and swagger definitions Use `make generate` command to generate clients using a pre-built api-generator image: ```bash make generate ``` Code will be generated in: * `./${API_VERSION}/go_client` * `./${API_VERSION}/go_http_client` * `./${API_VERSION}/swagger` ## Auto-generation of Python client This will generate the Python client for the API version specified in the environment variable. ```bash ./build_kfp_server_api_python_package.sh ``` Code will be generated in `./${API_VERSION}/python_http_client`. ## Auto-generation of API reference documentation This directory contains API definitions. They are used to generate [the API reference on kubeflow.org](https://www.kubeflow.org/docs/pipelines/reference/api/kubeflow-pipeline-api-spec/). * Use the tools [bootprint-openapi](https://github.com/bootprint/bootprint-monorepo/tree/master/packages/bootprint-openapi) and [html-inline](https://github.com/substack/html-inline) to generate the API reference from [kfp_api_single_file.swagger.json](https://github.com/kubeflow/pipelines/blob/master/backend/api/${API_VERSION}/swagger/kfp_api_single_file.swagger.json). These [instructions](https://github.com/bootprint/bootprint-monorepo/tree/master/packages/bootprint-openapi#bootprint-openapi) have shown how to generate *a single self-contained html file* which is the API reference, from a json file. * Use the above generated html to replace the html section, which is below the title section, in the file [kubeflow-pipeline-api-spec.html](https://github.com/kubeflow/website/blob/master/content/en/docs/pipelines/reference/api/kubeflow-pipeline-api-spec.html) Note: whenever the API definition changes (i.e., the file [kfp_api_single_file.swagger.json](https://github.com/kubeflow/pipelines/blob/master/backend/api/${API_VERSION}/swagger/kfp_api_single_file.swagger.json) changes), the API reference needs to be updated. ## Auto-generation of api generator image ```bash make push ``` When you update the [Dockerfile](`./Dockerfile`), to make sure others are using the same image as you do: 1. push a new version of the api generator image to gcr.io/ml-pipeline-test/api-generator:latest. 2. update the PREBUILT_REMOTE_IMAGE var in Makefile to point to your new image. 3. push a new version of the release tools image to gcr.io/ml-pipeline-test/release:latest, run `make push` in [test/release/Makefile](../../test/release/Makefile).