diff --git a/.github/workflows/openapi_breaking_changes.yml b/.github/workflows/openapi_breaking_changes.yml new file mode 100644 index 00000000000..c0373d11201 --- /dev/null +++ b/.github/workflows/openapi_breaking_changes.yml @@ -0,0 +1,62 @@ +name: OpenAPI Breaking Changes + +on: + pull_request: + branches: + - main + paths: + - 'docs/openapi/**' + - '.github/workflows/openapi_breaking_changes.yml' + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + detect-breaking-changes: + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - name: Checkout PR + uses: actions/checkout@v4 + with: + path: pr + persist-credentials: false + + - name: Checkout Base Branch + uses: actions/checkout@v4 + with: + ref: ${{ github.base_ref }} + path: base + persist-credentials: false + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 22 + cache: 'yarn' + cache-dependency-path: | + pr/docs/openapi/yarn.lock + base/docs/openapi/yarn.lock + + - name: Build PR Spec + working-directory: pr/docs/openapi + run: | + yarn install --frozen-lockfile --ignore-scripts + yarn build + + - name: Build Base Spec + working-directory: base/docs/openapi + run: | + yarn install --frozen-lockfile --ignore-scripts + yarn build + + - name: Check for Breaking Changes + uses: oasdiff/oasdiff-action/breaking@v0.0.37 + with: + base: 'base/docs/openapi/dist/latest/openapi.yaml' + revision: 'pr/docs/openapi/dist/latest/openapi.yaml' + fail-on: 'ERR' diff --git a/.github/workflows/openapi_deploy.yml b/.github/workflows/openapi_deploy.yml new file mode 100644 index 00000000000..09524dbf626 --- /dev/null +++ b/.github/workflows/openapi_deploy.yml @@ -0,0 +1,55 @@ +name: Deploy CF API V3 OpenAPI Documentation + +on: + push: + branches: + - main + paths: + - 'docs/openapi/**' + - '.github/workflows/openapi_deploy.yml' + workflow_dispatch: + +jobs: + deploy: + name: Build and publish to gh-pages + runs-on: ubuntu-latest + container: + image: node:24-alpine + permissions: + contents: write + steps: + - name: Checkout main + uses: actions/checkout@v4 + with: + path: main + + - name: Setup + working-directory: main/docs/openapi + run: | + apk add python3 make g++ git tar + yarn install + + - name: Build + working-directory: main/docs/openapi + run: yarn build + + - name: Checkout gh-pages + uses: actions/checkout@v4 + with: + ref: gh-pages + path: gh-pages + + - name: Sync built docs into gh-pages/openapi + run: | + rm -rf gh-pages/openapi + mkdir -p gh-pages/openapi + cp -r main/docs/openapi/dist/. gh-pages/openapi/ + + - name: Commit and push + working-directory: gh-pages + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + git add openapi + git diff --cached --quiet && echo "No changes to publish" || \ + (git commit -m "Update openapi docs from ${GITHUB_SHA}" && git push) diff --git a/.github/workflows/openapi_test.yml b/.github/workflows/openapi_test.yml new file mode 100644 index 00000000000..b8511e80c71 --- /dev/null +++ b/.github/workflows/openapi_test.yml @@ -0,0 +1,38 @@ +name: OpenAPI Docs Test + +on: + workflow_dispatch: + pull_request: + branches: [ main ] + paths: + - 'docs/openapi/**' + - '.github/workflows/openapi_test.yml' + +concurrency: + group: '${{ github.workflow }}-${{ github.head_ref || github.run_id }}' + cancel-in-progress: true + +jobs: + test: + name: Test + runs-on: ubuntu-latest + container: + image: node:24-alpine + defaults: + run: + working-directory: docs/openapi + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup + run: | + apk add python3 make g++ + yarn install + - name: Stats + run: yarn redocly stats --format markdown >> $GITHUB_STEP_SUMMARY + - name: Lint + run: | + yarn redocly lint --max-problems 9999 --format markdown >> $GITHUB_STEP_SUMMARY || true + yarn redocly lint --max-problems 9999 --format github-actions + - name: Build + run: yarn build diff --git a/docs/openapi/.gitignore b/docs/openapi/.gitignore new file mode 100644 index 00000000000..63d1577f571 --- /dev/null +++ b/docs/openapi/.gitignore @@ -0,0 +1,47 @@ +# From capi-openapi-spec +capi/*.json +capi/*.yml +.DS_Store +openapitools.json +clients/ +sdk/ +node_modules/ + +# Test SDK integration generated files +test/sdk-integration/python/capi_client/ +test/sdk-integration/python/docs/ +test/sdk-integration/python/test/ +test/sdk-integration/python/.openapi-generator/ +test/sdk-integration/python/*.egg-info/ +test/sdk-integration/python/build/ +test/sdk-integration/python/dist/ +test/sdk-integration/python/.tox/ +test/sdk-integration/python/.pytest_cache/ +test/sdk-integration/python/__pycache__/ +test/sdk-integration/python/.coverage +test/sdk-integration/python/htmlcov/ +test/sdk-integration/python/README.md +test/sdk-integration/python/setup.py +test/sdk-integration/python/setup.cfg +test/sdk-integration/python/pyproject.toml +test/sdk-integration/python/requirements.txt +test/sdk-integration/python/test-requirements.txt +test/sdk-integration/python/tox.ini +test/sdk-integration/python/git_push.sh +test/sdk-integration/python/.github/ +test/sdk-integration/python/.gitlab-ci.yml +test/sdk-integration/python/.travis.yml + +# Test SDK integration Go generated files (if any beyond the test files) +test/sdk-integration/go/vendor/ +test/sdk-integration/go/pkg/ +test/sdk-integration/go/bin/ + +# From cf-api-openapi-poc +.idea +*.iml +dist +node_modules +out +tmp +.tmp diff --git a/docs/openapi/.redocly.lint-ignore.yaml b/docs/openapi/.redocly.lint-ignore.yaml new file mode 100644 index 00000000000..e600f7e1e64 --- /dev/null +++ b/docs/openapi/.redocly.lint-ignore.yaml @@ -0,0 +1,5 @@ +# This file instructs Redocly's linter to ignore the rules contained for specific parts of your API. +# See https://redocly.com/docs/cli/ for more information. +apis/cf/latest/paths/Packages.yaml: + operation-2xx-response: + - '#/~1v3~1packages~1{guid}~1download/get/responses' diff --git a/docs/openapi/LICENSE b/docs/openapi/LICENSE new file mode 100644 index 00000000000..d6456956733 --- /dev/null +++ b/docs/openapi/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/docs/openapi/README.md b/docs/openapi/README.md new file mode 100644 index 00000000000..95ced01ebaa --- /dev/null +++ b/docs/openapi/README.md @@ -0,0 +1,121 @@ +# Cloud Foundry CAPI OpenAPI Specification - Experimental + +> **Note:** This repository is an experimental project to explore the OpenAPI specification for the Cloud Foundry API (CAPI). It is not an official Cloud Foundry project and may not be suitable for production use. + +This repository contains the OpenAPI 3.0 specification for the Cloud Foundry API (CAPI). It provides a complete, machine-readable definition of the CAPI endpoints, enabling automated client generation, documentation, and testing. + +A rendered version can be consumed at https://cloudfoundry.github.io/cf-openapi/ + +## Project Structure + +The repository is organized as follows: + +- `apis/cf/`: Contains the OpenAPI specification files, versioned by CAPI release. + - `latest/`: A symlink to the latest stable version. + - `3.130.0/`: An example of a specific version folder. +- `bin/`: Houses build and utility scripts for managing the specification. +- `scripts/`: Additional scripts for development and maintenance tasks. + +## Getting Started + +### Prerequisites + +- [Node.js](https://nodejs.org/) +- [Yarn](https://yarnpkg.com/) + +### Installation + +1. Clone the repository: + + ```bash + git clone https://github.com/cloudfoundry/cf-openapi.git + cd cf-openapi + ``` + +2. Install the dependencies: + + ```bash + yarn install + ``` + +### Usage + +**Linting** + +`yarn lint` + +Lints the OpenAPI specification files using [`redocly lint`](https://github.com/Redocly/redocly-cli) to ensure they adhere to the defined rules and best practices. This helps maintain consistency and quality in the specification. + +**Building** + +`yarn build` + +Executes the `bin/build.js` script to bundle the modular OpenAPI files from `apis/cf/**/` into individual bundled `openapi.yaml` files in the `dist/` directory. It uses [`redocly`](https://github.com/Redocly/redocly-cli) to merge the different OpenAPI files into a single file for each version. + +**Previewing** + +`yarn preview` + +First, this command runs the build script to ensure the latest specification is bundled. Then, it starts a local HTTP server using `http-server` to serve the `dist/` directory. This allows you to preview the generated documentation locally in your browser. + +**Creating a new version** + +`yarn create-version 3.131.0` + +Runs the `bin/create-version.js` script, which is used to create a new versioned directory under `apis/cf/`. This is useful when a new version of the CAPI is released and you need to update the specification. It copies the current `apis/cf/latest/openapi.yaml` to a new versioned directory, and maintains the `redocly.yaml` file for the new version. After running this command and rebuilding, the new version will be available in scalar. + +**Compliance Testing** + +`yarn test:compliance` + +Runs a comprehensive compliance test suite against a live Cloud Foundry API. This script uses `wiretap` to proxy requests to the API, validating them against the OpenAPI specification in real-time. It clones the `capi-bara-tests` repository and executes its test suite against the proxied API. + +> :warning: Unfortunally wiretap seems to be quite instable it cannot properly handle multiform-data requests and sometimes just crashes with memory erros. Its currently as good as it is and helped a lot making the spec compliant. + +**Prerequisites:** + +- Go must be installed and available in your `PATH`. +- The following environment variables must be set: + - `CF_API_URL`: The URL of the Cloud Foundry API. + - `CF_APPS_DOMAIN`: The application domain for your Cloud Foundry instance. + - `CF_ADMIN_USER`: The username for an admin user. + - `CF_ADMIN_PASSWORD`: The password for the admin user. + +**Optional:** + +- `THREADS`: The number of parallel test nodes to run (default: 6). + +The script will generate a `wiretap-report.json` file in the `out` directory, which contains a detailed report of the API interactions and any compliance issues found. + +```mermaid +flowchart TD + A[CAPI BARA Tests] -->|HTTP Request| B[Wiretap Proxy] + B -->|HTTP Request| C[CF API Server] + C -->|HTTP Response| B + B -->|HTTP Response| A +``` + +**Contract Testing (Mock Server)** + +`yarn test:mockserver ` + +Executes the `bin/test-mockserver.js` script to run contract tests against a running server (either a live API or a mock server). This script uses `wiretap` to validate that the server's responses conform to the OpenAPI specification. + +**Example:** + +```bash +yarn test:mockserver http://localhost:4010 dist/latest/openapi.yaml +``` + +This is useful for: + +- Validating a mock server's implementation against the OpenAPI spec. +- Quickly checking a live API for compliance without running the full `capi-bara-tests` suite. + +## Contributing + +Contributions are welcome! Please feel free to submit a pull request or open an issue to discuss any changes. + +## License + +This project is licensed under the Apache-2.0 License. See the [LICENSE](LICENSE) file for details. diff --git a/docs/openapi/apis/cf/latest/components/parameters/CreatedAts.yaml b/docs/openapi/apis/cf/latest/components/parameters/CreatedAts.yaml new file mode 100644 index 00000000000..aaca05ad1b1 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/parameters/CreatedAts.yaml @@ -0,0 +1,8 @@ +name: created_ats +in: query +required: false +schema: + type: string +description: | + Timestamp to filter by. When filtering on equality, several comma-delimited timestamps may be passed. Also supports filtering with [relational operators](#relational-operators). +example: "2021-01-01T00:00:00Z" diff --git a/docs/openapi/apis/cf/latest/components/parameters/Guid.yaml b/docs/openapi/apis/cf/latest/components/parameters/Guid.yaml new file mode 100644 index 00000000000..0ac29e49e93 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/parameters/Guid.yaml @@ -0,0 +1,7 @@ +name: guid +in: path +required: true +schema: + type: string + format: uuid +description: The unique identifier for the resource diff --git a/docs/openapi/apis/cf/latest/components/parameters/LabelSelector.yaml b/docs/openapi/apis/cf/latest/components/parameters/LabelSelector.yaml new file mode 100644 index 00000000000..a7f97bf6e58 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/parameters/LabelSelector.yaml @@ -0,0 +1,7 @@ +name: label_selector +in: query +description: A query string containing a list of [label selector](#labels-and-selectors) requirements +required: false +schema: + type: string +example: "environment=production" diff --git a/docs/openapi/apis/cf/latest/components/parameters/OrderBy.yaml b/docs/openapi/apis/cf/latest/components/parameters/OrderBy.yaml new file mode 100644 index 00000000000..c7654eea2a8 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/parameters/OrderBy.yaml @@ -0,0 +1,8 @@ +name: order_by +in: query +required: false +schema: + type: string +description: | + Value to sort by. Defaults to ascending; prepend with `-` to sort descending. +example: "created_at" diff --git a/docs/openapi/apis/cf/latest/components/parameters/Page.yaml b/docs/openapi/apis/cf/latest/components/parameters/Page.yaml new file mode 100644 index 00000000000..6d55d505317 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/parameters/Page.yaml @@ -0,0 +1,7 @@ +name: page +in: query +required: false +schema: + type: integer +description: Page to display; valid values are integers >= 1 +example: 1 diff --git a/docs/openapi/apis/cf/latest/components/parameters/PerPage.yaml b/docs/openapi/apis/cf/latest/components/parameters/PerPage.yaml new file mode 100644 index 00000000000..7041fac04cd --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/parameters/PerPage.yaml @@ -0,0 +1,7 @@ +name: per_page +in: query +required: false +schema: + type: integer +description: Number of results per page, valid values are 1 through 5000 +example: 50 diff --git a/docs/openapi/apis/cf/latest/components/parameters/SpaceGuid.yaml b/docs/openapi/apis/cf/latest/components/parameters/SpaceGuid.yaml new file mode 100644 index 00000000000..dddd5b717a4 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/parameters/SpaceGuid.yaml @@ -0,0 +1,7 @@ +name: space_guid +in: path +required: true +schema: + type: string + format: uuid +description: The unique identifier for the space diff --git a/docs/openapi/apis/cf/latest/components/parameters/UpdatedAts.yaml b/docs/openapi/apis/cf/latest/components/parameters/UpdatedAts.yaml new file mode 100644 index 00000000000..fda0bc2953a --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/parameters/UpdatedAts.yaml @@ -0,0 +1,8 @@ +name: updated_ats +in: query +required: false +schema: + type: string +description: | + Timestamp to filter by. When filtering on equality, several comma-delimited timestamps may be passed. Also supports filtering with [relational operators](#relational-operators). +example: "2021-01-01T00:00:00Z" diff --git a/docs/openapi/apis/cf/latest/components/parameters/UserGuid.yaml b/docs/openapi/apis/cf/latest/components/parameters/UserGuid.yaml new file mode 100644 index 00000000000..3de29c31b49 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/parameters/UserGuid.yaml @@ -0,0 +1,6 @@ +name: guid +in: path +required: true +schema: + type: string +description: The unique identifier for the user, matching either a UAA user id or client id. A client id may not be a uuid. diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/AppCreateRequestBody.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/AppCreateRequestBody.yaml new file mode 100644 index 00000000000..b2fe58ec1b9 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/AppCreateRequestBody.yaml @@ -0,0 +1,41 @@ +description: App object that needs to be created +required: true +content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Name of the app + environment_variables: + type: object + description: Environment variables to be used for the App when running + additionalProperties: + type: string + lifecycle: + $ref: ../schemas/Lifecycle.yaml + description: Provides the lifecycle object for the application + relationships: + type: object + properties: + space: + $ref: ../schemas/RelationshipToOne.yaml + description: A relationship to a space + required: + - space + metadata: + $ref: ../schemas/Metadata.yaml + required: + - name + - relationships + description: Request schema for creating an app + examples: + default: + summary: default + value: + name: my_app + relationships: + space: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/AppUpdateRequestBody.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/AppUpdateRequestBody.yaml new file mode 100644 index 00000000000..42003efcc26 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/AppUpdateRequestBody.yaml @@ -0,0 +1,31 @@ +description: App object that needs to be updated +required: true +content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Name of the app + environment_variables: + type: object + description: Environment variables to be used for the App when running + additionalProperties: + type: string + lifecycle: + $ref: ../schemas/Lifecycle.yaml + description: Lifecycle to be used when updating the app; note `data` is a required field in lifecycle if lifecycle is updated. `type` may NOT be changed from its current value. + metadata: + $ref: ../schemas/Metadata.yaml + description: Request schema for updating an app + examples: + default: + summary: default + value: + name: my_app + lifecycle: + type: buildpack + data: + buildpacks: + - java_buildpack diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/BuildCreateRequestBody.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/BuildCreateRequestBody.yaml new file mode 100644 index 00000000000..b37dac6ba3b --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/BuildCreateRequestBody.yaml @@ -0,0 +1,24 @@ +description: Build object that needs to be created +required: true +content: + application/json: + schema: + type: object + properties: + package: + type: object + properties: + guid: + type: string + format: uuid + required: + - guid + description: App package to stage + lifecycle: + $ref: '../schemas/Lifecycle.yaml' + description: Lifecycle information for a build + metadata: + $ref: '../schemas/Metadata.yaml' + required: + - package + description: Request schema for creating a build diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/BuildpackCreateRequestBody.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/BuildpackCreateRequestBody.yaml new file mode 100644 index 00000000000..75cfee6b555 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/BuildpackCreateRequestBody.yaml @@ -0,0 +1,39 @@ +description: Buildpack object that needs to be added +required: true +content: + application/json: + schema: + type: object + properties: + name: + type: string + description: The name of the buildpack + stack: + type: string + description: The name of the stack that the buildpack will use + position: + type: integer + description: The order in which the buildpacks are checked during buildpack auto-detection + lifecycle: + type: string + description: The version of buildpack the buildpack will use. `buildpack` indicates [Classic Buildpacks](https://docs.cloudfoundry.org/buildpacks/classic.html). `cnb` indicates [Cloud Native Buildpacks](https://docs.cloudfoundry.org/buildpacks/cnb/) + enabled: + type: boolean + description: Whether or not the buildpack will be used for staging + locked: + type: boolean + description: Whether or not the buildpack is locked to prevent updating the bits + metadata: + $ref: ../schemas/Metadata.yaml + required: + - name + description: Request schema for creating a buildpack + examples: + default: + summary: default + value: + name: ruby_buildpack + position: 42 + enabled: true + locked: false + stack: windows64 diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/BuildpackUpdateRequestBody.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/BuildpackUpdateRequestBody.yaml new file mode 100644 index 00000000000..21b334b19e4 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/BuildpackUpdateRequestBody.yaml @@ -0,0 +1,34 @@ +description: Buildpack object that needs to be updated +required: true +content: + application/json: + schema: + type: object + properties: + name: + type: string + description: The name of the buildpack + position: + type: integer + description: The order in which the buildpacks are checked during buildpack auto-detection + enabled: + type: boolean + description: Whether or not the buildpack will be used for staging + locked: + type: boolean + description: Whether or not the buildpack is locked to prevent updating the bits + stack: + type: string + description: The name of the stack that the buildpack will use + metadata: + $ref: ../schemas/Metadata.yaml + description: Request schema for updating a buildpack + examples: + default: + summary: default + value: + name: ruby_buildpack + position: 42 + enabled: true + locked: false + stack: windows64 diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/DomainCreateRequestBody.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/DomainCreateRequestBody.yaml new file mode 100644 index 00000000000..12b0e53d79f --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/DomainCreateRequestBody.yaml @@ -0,0 +1,39 @@ +description: Domain object that needs to be created +required: true +content: + application/json: + schema: + type: object + required: + - name + properties: + name: + type: string + description: Name of the domain + internal: + type: boolean + description: Whether the domain is used for internal (container-to-container) traffic + router_group: + type: object + properties: + guid: + type: string + format: uuid + description: 'The desired router group guid. _note: creates a `tcp` domain; cannot be used when `internal` is set to `true` or domain is scoped to an org_' + relationships: + type: object + properties: + organization: + $ref: ../schemas/RelationshipToOne.yaml + description: A relationship to the organization the domain will be scoped to; _note cannot be used when `internal` is set to `true` or domain is associated with a router group_ + shared_organizations: + $ref: ../schemas/RelationshipToMany.yaml + description: A relationship to organizations the domain will be shared with _Note cannot be used without an organization relationship_ + metadata: + $ref: ../schemas/Metadata.yaml + examples: + default: + summary: default + value: + name: example.com + internal: false diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/DomainUpdateRequestBody.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/DomainUpdateRequestBody.yaml new file mode 100644 index 00000000000..006b25879e7 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/DomainUpdateRequestBody.yaml @@ -0,0 +1,10 @@ +description: Domain object that needs to be updated +required: true +content: + application/json: + schema: + type: object + properties: + metadata: + $ref: '../schemas/Metadata.yaml' + description: Request schema for updating a domain diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/DropletCreateRequestBody.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/DropletCreateRequestBody.yaml new file mode 100644 index 00000000000..dd61f76db46 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/DropletCreateRequestBody.yaml @@ -0,0 +1,34 @@ +description: Droplet object that needs to be created +required: true +content: + application/json: + schema: + type: object + properties: + relationships: + type: object + properties: + app: + $ref: ../schemas/RelationshipToOne.yaml + description: App to create droplet for + required: + - app + process_types: + type: object + description: Process names and start commands for the droplet + metadata: + $ref: ../schemas/Metadata.yaml + required: + - relationships + description: Request schema for creating a droplet + examples: + default: + summary: default + value: + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + process_types: + rake: bundle exec rake + web: bundle exec rackup config.ru -p $PORT diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/IsolationSegmentCreate.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/IsolationSegmentCreate.yaml new file mode 100644 index 00000000000..53466cecdf6 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/IsolationSegmentCreate.yaml @@ -0,0 +1,18 @@ +description: Isolation segment to create +content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Name of the isolation segment; isolation segment names must be unique across the entire system, and case is ignored when checking for uniqueness + metadata: + $ref: ../schemas/Metadata.yaml + required: + - name + examples: + default: + summary: default + value: + name: my_segment diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/ManagedServiceInstanceUpdate.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/ManagedServiceInstanceUpdate.yaml new file mode 100644 index 00000000000..f781183c873 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/ManagedServiceInstanceUpdate.yaml @@ -0,0 +1,25 @@ +description: Managed service instance to update +content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Name of the service instance + tags: + type: array + items: + type: string + description: Tags for the service instance + parameters: + type: object + description: Parameters for the service instance + relationships: + type: object + properties: + service_plan: + $ref: '../schemas/RelationshipToOne.yaml' + description: Relationships for the service instance + metadata: + $ref: '../schemas/Metadata.yaml' diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/OrganizationCreateRequestBody.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/OrganizationCreateRequestBody.yaml new file mode 100644 index 00000000000..8d94d804ead --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/OrganizationCreateRequestBody.yaml @@ -0,0 +1,23 @@ +description: Organization object that needs to be created +required: true +content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Organization name + suspended: + type: boolean + description: Whether an organization is suspended or not + metadata: + $ref: ../schemas/Metadata.yaml + required: + - name + description: Request schema for creating an organization + examples: + default: + summary: default + value: + name: my-organization diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/OrganizationQuotaCreateRequestBody.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/OrganizationQuotaCreateRequestBody.yaml new file mode 100644 index 00000000000..79284632c38 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/OrganizationQuotaCreateRequestBody.yaml @@ -0,0 +1,95 @@ +description: Organization quota object that needs to be created +required: true +content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Name of the quota + apps: + type: object + description: Quotas that affect applications and application sub-resources + properties: + per_process_memory_in_mb: + type: + - integer + - 'null' + description: Maximum memory for a single process or task + total_memory_in_mb: + type: + - integer + - 'null' + description: Total memory allowed for all the started processes and running tasks in an organization + total_instances: + type: + - integer + - 'null' + description: Total instances of all the started processes allowed in an organization + log_rate_limit_in_bytes_per_second: + type: + - integer + - 'null' + description: Total log rate limit allowed for all the started processes and running tasks in an organization + per_app_tasks: + type: + - integer + - 'null' + description: Maximum number of running tasks in an organization + services: + type: object + description: Quotas that affect services + properties: + paid_services_allowed: + type: boolean + description: Specifies whether instances of paid service plans can be created + total_service_instances: + type: + - integer + - 'null' + description: Total number of service instances allowed in an organization + total_service_keys: + type: + - integer + - 'null' + description: Total number of service keys allowed in an organization + routes: + type: object + description: Quotas that affect routes + properties: + total_routes: + type: + - integer + - 'null' + description: Total number of routes allowed in an organization + total_reserved_ports: + type: + - integer + - 'null' + description: Total number of ports that are reservable by routes in an organization + domains: + type: object + description: Quotas that affect domains + properties: + total_domains: + type: + - integer + - 'null' + description: Total number of domains that can be scoped to an organization + relationships: + type: object + properties: + organizations: + $ref: ../schemas/RelationshipToMany.yaml + description: A relationship to the organizations where the quota is applied + metadata: + $ref: ../schemas/Metadata.yaml + required: + - name + description: Request schema for creating an organization quota + examples: + default: + summary: default + value: + name: production diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/OrganizationQuotaUpdateRequestBody.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/OrganizationQuotaUpdateRequestBody.yaml new file mode 100644 index 00000000000..00d1402d878 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/OrganizationQuotaUpdateRequestBody.yaml @@ -0,0 +1,62 @@ +description: Organization quota object that needs to be updated +required: true +content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Name of the quota + apps: + type: object + description: Quotas that affect applications and application sub-resources + properties: + per_process_memory_in_mb: + type: [integer, "null"] + description: Maximum memory for a single process or task + total_memory_in_mb: + type: [integer, "null"] + description: Total memory allowed for all the started processes and running tasks in an organization + total_instances: + type: [integer, "null"] + description: Total instances of all the started processes allowed in an organization + log_rate_limit_in_bytes_per_second: + type: [integer, "null"] + description: Total log rate limit allowed for all the started processes and running tasks in an organization + per_app_tasks: + type: [integer, "null"] + description: Maximum number of running tasks in an organization + services: + type: object + description: Quotas that affect services + properties: + paid_services_allowed: + type: boolean + description: Specifies whether instances of paid service plans can be created + total_service_instances: + type: [integer, "null"] + description: Total number of service instances allowed in an organization + total_service_keys: + type: [integer, "null"] + description: Total number of service keys allowed in an organization + routes: + type: object + description: Quotas that affect routes + properties: + total_routes: + type: [integer, "null"] + description: Total number of routes allowed in an organization + total_reserved_ports: + type: [integer, "null"] + description: Total number of ports that are reservable by routes in an organization + domains: + type: object + description: Quotas that affect domains + properties: + total_domains: + type: [integer, "null"] + description: Total number of domains that can be scoped to an organization + metadata: + $ref: '../schemas/Metadata.yaml' + description: Request schema for updating an organization quota diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/OrganizationUpdateRequestBody.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/OrganizationUpdateRequestBody.yaml new file mode 100644 index 00000000000..3cec99e5c4c --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/OrganizationUpdateRequestBody.yaml @@ -0,0 +1,21 @@ +description: Organization object that needs to be updated +required: true +content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Organization name + suspended: + type: boolean + description: Whether an organization is suspended or not + metadata: + $ref: ../schemas/Metadata.yaml + description: Request schema for updating an organization + examples: + default: + summary: default + value: + name: my-organization diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/PackageCreateRequestBody.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/PackageCreateRequestBody.yaml new file mode 100644 index 00000000000..cd608374c42 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/PackageCreateRequestBody.yaml @@ -0,0 +1,60 @@ +description: Package object that needs to be created or copied. When copying (source_guid query parameter is provided), only relationships.app is required. When creating a new package, type and relationships.app are required. +required: true +content: + application/json: + schema: + type: object + properties: + type: + type: string + description: Type of the package; valid values are bits or docker. Required when creating a new package (when source_guid is not provided). Not required when copying a package (when source_guid is provided). + enum: + - bits + - docker + data: + type: object + description: Data for package type + properties: + image: + type: string + description: The registry address of the image (for docker packages) + username: + type: string + description: The username for the image's registry (for docker packages) + password: + type: string + description: The password for the image's registry (for docker packages) + relationships: + type: object + properties: + app: + $ref: ../schemas/RelationshipToOne.yaml + description: A relationship to an app + required: + - app + metadata: + $ref: ../schemas/Metadata.yaml + required: + - relationships + description: Request schema for creating a package + examples: + buildpack_app: + summary: buildpack app + value: + type: bits + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + docker_app: + summary: Docker app + value: + type: docker + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + data: + image: registry/image:latest + username: username + password: password diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/PackageUpdateRequestBody.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/PackageUpdateRequestBody.yaml new file mode 100644 index 00000000000..bd3c8f494db --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/PackageUpdateRequestBody.yaml @@ -0,0 +1,16 @@ +description: Package object that needs to be updated +required: true +content: + application/json: + schema: + type: object + properties: + metadata: + $ref: '../schemas/Metadata.yaml' + username: + type: string + description: The username for the image’s registry. Only possible for Docker package. + password: + type: string + description: The password for the image’s registry. Only possible for Docker package. + description: Request schema for updating a package diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/PackageUploadRequestBody.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/PackageUploadRequestBody.yaml new file mode 100644 index 00000000000..56c0550f486 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/PackageUploadRequestBody.yaml @@ -0,0 +1,14 @@ +description: Package bits to be uploaded +required: true +content: + multipart/form-data: + schema: + type: object + properties: + bits: + type: string + format: binary + resources: + type: array + items: + $ref: '../schemas/ResourceMatch.yaml' diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/ProcessUpdateRequestBody.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/ProcessUpdateRequestBody.yaml new file mode 100644 index 00000000000..2cb1fa1719d --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/ProcessUpdateRequestBody.yaml @@ -0,0 +1,31 @@ +description: Process object that needs to be updated +required: true +content: + application/json: + schema: + type: object + properties: + command: + type: + - string + - 'null' + description: The command used to start the process; use null to revert to the buildpack-detected or procfile-provided start command + health_check: + $ref: ../schemas/HealthCheck.yaml + description: The health check to perform on the process + readiness_health_check: + $ref: ../schemas/HealthCheck.yaml + description: The readiness health check to perform on the process + metadata: + $ref: ../schemas/Metadata.yaml + description: Request schema for updating a process + examples: + default: + summary: default + value: + command: rackup + metadata: + labels: + key: value + annotations: + note: detailed information diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/RoleCreate.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/RoleCreate.yaml new file mode 100644 index 00000000000..22d81bac146 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/RoleCreate.yaml @@ -0,0 +1,53 @@ +description: Role to create +content: + application/json: + schema: + type: object + properties: + type: + type: string + description: Role to create + enum: + - organization_user + - organization_auditor + - organization_manager + - organization_billing_manager + - space_auditor + - space_developer + - space_manager + - space_supporter + relationships: + type: object + properties: + user: + $ref: ../schemas/UserRelationshipToOne.yaml + organization: + $ref: ../schemas/RelationshipToOne.yaml + description: A relationship to an organization; required only when creating an organization role + space: + $ref: ../schemas/RelationshipToOne.yaml + description: A relationship to a space; required only when creating a space role + examples: + by_user_guid: + summary: by user guid + value: + type: organization_auditor + relationships: + user: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + organization: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + by_username_and_origin: + summary: by username and origin + value: + type: organization_auditor + relationships: + user: + data: + username: user-name + origin: ldap + organization: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/RouteCreateRequestBody.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/RouteCreateRequestBody.yaml new file mode 100644 index 00000000000..9a464319ffa --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/RouteCreateRequestBody.yaml @@ -0,0 +1,49 @@ +description: Route to create +content: + application/json: + schema: + type: object + properties: + host: + type: string + description: The host component for the route; not compatible with routes specifying the `tcp` protocol + path: + type: string + description: The path component for the route; should begin with a `/` and not compatible with routes specifying the `tcp` protocol + port: + type: integer + description: The port the route will listen on; only compatible with routes leveraging a domain that supports the `tcp` protocol. For `tcp` domains, a port will be randomly assigned if not specified + relationships: + type: object + properties: + domain: + $ref: ../schemas/RelationshipToOne.yaml + description: A relationship to the domain of the route + space: + $ref: ../schemas/RelationshipToOne.yaml + description: A relationship to the space containing the route; routes can only be mapped to destinations in that space + metadata: + $ref: ../schemas/Metadata.yaml + required: + - relationships + examples: + default: + summary: default + value: + host: a-hostname + path: /some_path + port: 6666 + relationships: + domain: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + space: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + options: + loadbalancing: round-robin + metadata: + labels: + key: value + annotations: + note: detailed information diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/RouteDestinations.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/RouteDestinations.yaml new file mode 100644 index 00000000000..83a6be6a6eb --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/RouteDestinations.yaml @@ -0,0 +1,26 @@ +description: A list of route destinations +content: + application/json: + schema: + type: object + properties: + destinations: + type: array + items: + $ref: ../schemas/RouteDestination.yaml + description: List of destinations to add to route; destinations without `process.type` specified will get process type `"web"` by default + examples: + default: + summary: default + value: + destinations: + - app: + guid: 123e4567-e89b-12d3-a456-426614174000 + weight: 61 + - app: + guid: 123e4567-e89b-12d3-a456-426614174000 + process: + type: api + weight: 39 + port: 9000 + protocol: http1 diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/ServiceBrokerCreate.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/ServiceBrokerCreate.yaml new file mode 100644 index 00000000000..394a3f90481 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/ServiceBrokerCreate.yaml @@ -0,0 +1,61 @@ +description: Service broker to create +content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Name of the service broker + url: + type: string + format: uri + description: URL of the service broker + authentication: + type: object + properties: + type: + type: string + enum: + - basic + description: Type of authentication + credentials: + type: object + properties: + username: + type: string + password: + type: string + required: + - username + - password + required: + - type + - credentials + description: Authentication details for the service broker + relationships: + type: object + properties: + space: + $ref: ../schemas/RelationshipToOne.yaml + description: Relationships for the service broker + metadata: + $ref: ../schemas/Metadata.yaml + required: + - name + - url + examples: + default: + summary: default + value: + name: my_service_broker + url: https://example.service-broker.com + authentication: + type: basic + credentials: + username: us3rn4me + password: p4ssw0rd + relationships: + space: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/ServiceBrokerUpdateRequestBody.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/ServiceBrokerUpdateRequestBody.yaml new file mode 100644 index 00000000000..9c84419329c --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/ServiceBrokerUpdateRequestBody.yaml @@ -0,0 +1,56 @@ +description: Service broker object that needs to be updated +required: true +content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Name of the service broker + url: + type: string + description: URL of the service broker + authentication: + type: object + description: Credentials used to authenticate against the service broker + properties: + type: + type: string + enum: + - basic + description: Authentication type + credentials: + type: object + description: Authentication credentials + properties: + username: + type: string + description: Username for basic authentication + password: + type: string + description: Password for basic authentication + required: + - username + - password + required: + - type + - credentials + metadata: + $ref: ../schemas/Metadata.yaml + examples: + default: + summary: default + value: + name: my_service_broker + url: https://example.service-broker.com + authentication: + type: basic + credentials: + username: us3rn4me + password: p4ssw0rd + metadata: + labels: + key: value + annotations: + note: detailed information diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/ServiceCredentialBindingCreateRequestBody.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/ServiceCredentialBindingCreateRequestBody.yaml new file mode 100644 index 00000000000..ed61657f4b1 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/ServiceCredentialBindingCreateRequestBody.yaml @@ -0,0 +1,90 @@ +description: A request to create a service credential binding +content: + application/json: + schema: + type: object + required: + - type + - relationships + properties: + type: + type: string + enum: + - app + - key + description: Type of the service credential binding. Valid values are key and app + name: + type: string + description: Name of the service credential binding. name is optional when the type is app + relationships: + type: object + required: + - service_instance + properties: + service_instance: + $ref: ../schemas/RelationshipToOne.yaml + description: The service instance to be bound + app: + $ref: ../schemas/RelationshipToOne.yaml + description: The app to be bound. Required when type is app + description: Relationships for the service credential binding + parameters: + type: object + description: A JSON object that is passed to the service broker + metadata: + $ref: ../schemas/Metadata.yaml + examples: + app_credential_binding: + summary: App credential binding + value: + type: app + name: some-binding-name + relationships: + service_instance: + data: + guid: 7304bc3c-7010-11ea-8840-48bf6bec2d78 + app: + data: + guid: e0e4417c-74ee-11ea-a604-48bf6bec2d78 + parameters: + key1: value1 + key2: value2 + metadata: + labels: + foo: bar + annotations: + baz: qux + key_credential_binding: + summary: Key credential binding + value: + type: key + name: some-binding-name + relationships: + service_instance: + data: + guid: 7304bc3c-7010-11ea-8840-48bf6bec2d78 + parameters: + key1: value1 + key2: value2 + metadata: + labels: + foo: bar + annotations: + baz: qux + default: + summary: default + value: + type: key + name: some-binding-name + relationships: + service_instance: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + parameters: + key1: value1 + key2: value2 + metadata: + labels: + foo: bar + annotations: + baz: qux diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/ServiceCredentialBindingUpdateRequestBody.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/ServiceCredentialBindingUpdateRequestBody.yaml new file mode 100644 index 00000000000..eac9848914e --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/ServiceCredentialBindingUpdateRequestBody.yaml @@ -0,0 +1,25 @@ +description: A request to update a service credential binding +content: + application/json: + schema: + type: object + properties: + metadata: + $ref: ../schemas/Metadata.yaml + examples: + update_binding: + summary: Update service credential binding + value: + metadata: + labels: + foo: bar + annotations: + baz: qux + default: + summary: default + value: + metadata: + labels: + foo: bar + annotations: + baz: qux diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/ServiceInstanceCreateRequestBody.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/ServiceInstanceCreateRequestBody.yaml new file mode 100644 index 00000000000..c0fcd478054 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/ServiceInstanceCreateRequestBody.yaml @@ -0,0 +1,121 @@ +description: A request to create a service instance +content: + application/json: + schema: + type: object + required: + - type + - name + - relationships + properties: + type: + type: string + enum: + - managed + - user-provided + description: The type of service instance + name: + type: string + description: Name of the service instance + parameters: + type: object + description: A JSON object that is passed to the service broker + credentials: + type: object + description: A JSON object that is made available to apps bound to this service instance (user-provided services only) + tags: + type: array + items: + type: string + description: Tags are used by apps to identify service instances; they are shown in the app VCAP_SERVICES env + syslog_drain_url: + type: string + description: URL to which logs for bound applications will be streamed (user-provided services only) + route_service_url: + type: string + description: URL to which requests for bound routes will be forwarded; must use the https protocol (user-provided services only) + relationships: + type: object + required: + - space + properties: + space: + $ref: ../schemas/RelationshipToOne.yaml + description: The space in which to create the service instance + service_plan: + $ref: ../schemas/RelationshipToOne.yaml + description: The service plan from which to create the service instance + description: Relationships for the service instance + metadata: + $ref: ../schemas/Metadata.yaml + examples: + managed_service_instance: + summary: Managed service instance + value: + type: managed + name: my_service_instance + parameters: + foo: bar + baz: qux + tags: + - foo + - bar + - baz + metadata: + annotations: + foo: bar + labels: + baz: qux + relationships: + space: + data: + guid: 7304bc3c-7010-11ea-8840-48bf6bec2d78 + service_plan: + data: + guid: e0e4417c-74ee-11ea-a604-48bf6bec2d78 + user_provided_service_instance: + summary: User-provided service instance + value: + type: user-provided + name: my_service_instance + credentials: + foo: bar + baz: qux + tags: + - foo + - bar + - baz + syslog_drain_url: https://syslog.com/drain + route_service_url: https://route.com/service + metadata: + annotations: + foo: bar + labels: + baz: qux + relationships: + space: + data: + guid: 7304bc3c-7010-11ea-8840-48bf6bec2d78 + default: + summary: default + value: + type: user-provided + name: my_service_instance + credentials: + foo: bar + baz: qux + tags: + - foo + - bar + - baz + syslog_drain_url: https://syslog.com/drain + route_service_url: https://route.com/service + metadata: + annotations: + foo: bar + labels: + baz: qux + relationships: + space: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/ServiceInstanceUpdateRequestBody.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/ServiceInstanceUpdateRequestBody.yaml new file mode 100644 index 00000000000..2a6a50eb95c --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/ServiceInstanceUpdateRequestBody.yaml @@ -0,0 +1,106 @@ +description: A request to update a service instance +content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Name of the service instance + parameters: + type: object + description: A JSON object that is passed to the service broker (managed services only) + credentials: + type: object + description: A JSON object that is made available to apps bound to this service instance (user-provided services only) + tags: + type: array + items: + type: string + description: Tags are used by apps to identify service instances; they are shown in the app VCAP_SERVICES env + syslog_drain_url: + type: string + description: URL to which logs for bound applications will be streamed (user-provided services only) + route_service_url: + type: string + description: URL to which requests for bound routes will be forwarded; must use the https protocol (user-provided services only) + relationships: + type: object + properties: + service_plan: + $ref: ../schemas/RelationshipToOne.yaml + description: The service plan from which to create the service instance + description: Relationships for the service instance + maintenance_info: + type: object + required: + - version + properties: + version: + type: string + description: Must be a semantic version value and it must match the version in the maintenance_info for the service instance plan in the updated broker catalog + description: If provided, must have the `version` field; `version` must be a semantic version value and it must match the `version` in the `maintenance_info` for the service instance plan in the updated broker catalog. Any other value for `version` will cause a `MaintenanceInfoConflict` error + metadata: + $ref: ../schemas/Metadata.yaml + examples: + managed_service_instance: + summary: Update managed service instance + value: + name: my_service_instance + parameters: + foo: bar + baz: qux + tags: + - foo + - bar + - baz + relationships: + service_plan: + data: + guid: f2b6ba9c-a4d2-11ea-8ae6-48bf6bec2d78 + metadata: + annotations: + note: detailed information + labels: + key: value + managed_service_instance_upgrade: + summary: Upgrade managed service instance + value: + maintenance_info: + version: 2.1.1 + user_provided_service_instance: + summary: Update user-provided service instance + value: + name: my_service_instance + credentials: + foo: bar + baz: qux + tags: + - foo + - bar + - baz + syslog_drain_url: https://syslog.com/drain + route_service_url: https://route.com/service + metadata: + annotations: + foo: bar + labels: + baz: qux + default: + summary: default + value: + name: my_service_instance + credentials: + foo: bar + baz: qux + tags: + - foo + - bar + - baz + syslog_drain_url: https://syslog.com/drain + route_service_url: https://route.com/service + metadata: + annotations: + foo: bar + labels: + baz: qux diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/ServicePlanVisibilityCreateRequestBody.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/ServicePlanVisibilityCreateRequestBody.yaml new file mode 100644 index 00000000000..5b083db443d --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/ServicePlanVisibilityCreateRequestBody.yaml @@ -0,0 +1,34 @@ +description: Service plan visibility object that needs to be created +required: true +content: + application/json: + schema: + type: object + properties: + type: + type: string + enum: + - public + - admin + - organization + description: Denotes the visibility of the plan + organizations: + type: array + items: + type: object + properties: + guid: + type: string + format: uuid + required: + - guid + description: Desired list of organizations GUIDs where the plan will be accessible; required if type is organization + required: + - type + examples: + default: + summary: default + value: + type: organization + organizations: + - guid: 123e4567-e89b-12d3-a456-426614174000 diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/ServicePlanVisibilityUpdateRequestBody.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/ServicePlanVisibilityUpdateRequestBody.yaml new file mode 100644 index 00000000000..5aa583fa0b4 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/ServicePlanVisibilityUpdateRequestBody.yaml @@ -0,0 +1,24 @@ +description: Service plan visibility object that needs to be updated +required: true +content: + application/json: + schema: + type: object + properties: + type: + type: string + enum: [public, admin, organization] + description: Denotes the visibility of the plan + organizations: + type: array + items: + type: object + properties: + guid: + type: string + format: uuid + required: + - guid + description: Desired list of organizations GUIDs where the plan will be accessible; required if type is organization + required: + - type diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/SidecarCreate.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/SidecarCreate.yaml new file mode 100644 index 00000000000..93fe203fd59 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/SidecarCreate.yaml @@ -0,0 +1,30 @@ +description: Sidecar to create +content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Name of the sidecar + command: + type: string + description: Command to run for the sidecar + process_types: + type: array + items: + type: string + description: Process types that the sidecar applies to + memory_in_mb: + type: integer + description: Memory limit for the sidecar in MB + examples: + default: + summary: default + value: + name: auth-sidecar + command: bundle exec rackup + process_types: + - web + - worker + memory_in_mb: 300 diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/SidecarUpdateRequestBody.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/SidecarUpdateRequestBody.yaml new file mode 100644 index 00000000000..359fdea9fc0 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/SidecarUpdateRequestBody.yaml @@ -0,0 +1,31 @@ +description: Sidecar object that needs to be updated +required: true +content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Human-readable name for the sidecar + command: + type: string + description: The command used to start the sidecar + process_types: + type: array + items: + type: string + description: A list of process types the sidecar applies to + memory_in_mb: + type: integer + description: Reserved memory for sidecar + examples: + default: + summary: default + value: + name: auth-sidecar + command: bundle exec rackup + process_types: + - web + - worker + memory_in_mb: 300 diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/SpaceCreate.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/SpaceCreate.yaml new file mode 100644 index 00000000000..25e92a53d31 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/SpaceCreate.yaml @@ -0,0 +1,20 @@ +description: Space to create +content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Name of the space + relationships: + type: object + properties: + organization: + $ref: '../schemas/RelationshipToOne.yaml' + description: The organization that the space belongs to + metadata: + $ref: '../schemas/Metadata.yaml' + required: + - name + - relationships diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/SpaceCreateRequestBody.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/SpaceCreateRequestBody.yaml new file mode 100644 index 00000000000..7c94c457b42 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/SpaceCreateRequestBody.yaml @@ -0,0 +1,33 @@ +description: Space object that needs to be created +required: true +content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Name of the space + relationships: + type: object + properties: + organization: + $ref: ../schemas/RelationshipToOne.yaml + description: A relationship to an organization + required: + - organization + metadata: + $ref: ../schemas/Metadata.yaml + required: + - name + - relationships + description: Request schema for creating a space + examples: + default: + summary: default + value: + name: my-space + relationships: + organization: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/SpaceQuotaCreate.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/SpaceQuotaCreate.yaml new file mode 100644 index 00000000000..bbc75bdc035 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/SpaceQuotaCreate.yaml @@ -0,0 +1,72 @@ +description: Space quota to create +content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Name of the space quota + apps: + type: object + properties: + total_memory_in_mb: + type: integer + description: Total memory allowed for all apps in MB + per_process_memory_in_mb: + type: integer + description: Maximum memory per process in MB + log_rate_limit_in_bytes_per_second: + type: integer + description: Log rate limit in bytes per second + total_instances: + type: integer + description: Total number of app instances allowed + per_app_tasks: + type: integer + description: Maximum number of tasks per app + description: App limits for the space quota + services: + type: object + properties: + paid_services_allowed: + type: boolean + description: Whether paid services are allowed + total_service_instances: + type: integer + description: Total number of service instances allowed + total_service_keys: + type: integer + description: Total number of service keys allowed + description: Service limits for the space quota + routes: + type: object + properties: + total_routes: + type: integer + description: Total number of routes allowed + total_reserved_ports: + type: integer + description: Total number of reserved ports allowed + description: Route limits for the space quota + relationships: + type: object + properties: + organization: + $ref: ../schemas/RelationshipToOne.yaml + spaces: + $ref: ../schemas/RelationshipToMany.yaml + description: Relationships for the space quota + metadata: + $ref: ../schemas/Metadata.yaml + required: + - name + examples: + default: + summary: default + value: + name: production + relationships: + organization: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/SpaceQuotaUpdate.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/SpaceQuotaUpdate.yaml new file mode 100644 index 00000000000..fcbd6a31ce9 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/SpaceQuotaUpdate.yaml @@ -0,0 +1,53 @@ +description: Space quota to update +content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Name of the space quota + apps: + type: object + properties: + total_memory_in_mb: + type: integer + description: Total memory allowed for all apps in MB + per_process_memory_in_mb: + type: integer + description: Maximum memory per process in MB + log_rate_limit_in_bytes_per_second: + type: integer + description: Log rate limit in bytes per second + total_instances: + type: integer + description: Total number of app instances allowed + per_app_tasks: + type: integer + description: Maximum number of tasks per app + description: App limits for the space quota + services: + type: object + properties: + paid_services_allowed: + type: boolean + description: Whether paid services are allowed + total_service_instances: + type: integer + description: Total number of service instances allowed + total_service_keys: + type: integer + description: Total number of service keys allowed + description: Service limits for the space quota + routes: + type: object + properties: + total_routes: + type: integer + description: Total number of routes allowed + total_reserved_ports: + type: integer + description: Total number of reserved ports allowed + description: Route limits for the space quota + metadata: + $ref: '../schemas/Metadata.yaml' \ No newline at end of file diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/SpaceUpdateRequestBody.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/SpaceUpdateRequestBody.yaml new file mode 100644 index 00000000000..55ebcbe7d30 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/SpaceUpdateRequestBody.yaml @@ -0,0 +1,18 @@ +description: Space object that needs to be updated +required: true +content: + application/json: + schema: + type: object + properties: + name: + type: string + description: New space name + metadata: + $ref: ../schemas/Metadata.yaml + description: Request schema for updating a space + examples: + default: + summary: default + value: + name: new-space-name diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/StackCreateRequestBody.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/StackCreateRequestBody.yaml new file mode 100644 index 00000000000..758be34716b --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/StackCreateRequestBody.yaml @@ -0,0 +1,19 @@ +description: Stack object that needs to be created +required: true +content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Name of the stack; must be unique and no longer than 250 characters + maxLength: 250 + description: + type: [string, "null"] + description: Description of the stack; must no longer than 250 characters + maxLength: 250 + metadata: + $ref: '../schemas/Metadata.yaml' + required: + - name diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/TaskCreateRequestBody.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/TaskCreateRequestBody.yaml new file mode 100644 index 00000000000..a71aba038b1 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/TaskCreateRequestBody.yaml @@ -0,0 +1,49 @@ +description: Task object that needs to be created +required: true +content: + application/json: + schema: + type: object + properties: + command: + type: string + description: The command to run for the task. **NOTE:** optional if a `template.process.guid` is provided + name: + type: string + description: Human-readable name for the task + memory_in_mb: + type: integer + description: Amount of memory to allocate for the task in MB + disk_in_mb: + type: integer + description: Amount of disk to allocate for the task in MB + log_rate_limit_in_bytes_per_second: + type: integer + description: Amount of log rate limit to allocate for the task in bytes per second + droplet_guid: + type: string + format: uuid + description: The GUID of a droplet to use to run the task + template: + type: object + description: An object with a process field to template the task from + properties: + process: + type: object + properties: + guid: + type: string + format: uuid + required: + - guid + description: The guid of the process that will be used as a template + metadata: + $ref: ../schemas/Metadata.yaml + description: Request schema for creating a task + examples: + default: + summary: default + value: + template: + process: + guid: 123e4567-e89b-12d3-a456-426614174000 diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/UserCreate.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/UserCreate.yaml new file mode 100644 index 00000000000..395b9f6d249 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/UserCreate.yaml @@ -0,0 +1,27 @@ +description: User to create +content: + application/json: + schema: + type: object + properties: + guid: + type: string + description: Unique identifier for the user + username: + type: string + description: Username of the user to be created. This can only be provided together with origin + origin: + type: string + description: Origin of the user to be created. This can only be provided together with username and cannot be uaa + metadata: + $ref: ../schemas/Metadata.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + by_username_and_origin: + summary: by username and origin + value: + username: some-user + origin: some-origin diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/UserProvidedServiceInstanceUpdate.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/UserProvidedServiceInstanceUpdate.yaml new file mode 100644 index 00000000000..9d5fa5ca866 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/UserProvidedServiceInstanceUpdate.yaml @@ -0,0 +1,27 @@ +description: User provided service instance to update +content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Name of the service instance + tags: + type: array + items: + type: string + description: Tags for the service instance + credentials: + type: object + description: Service credentials + syslog_drain_url: + type: string + format: uri + description: URL for syslog drain + route_service_url: + type: string + format: uri + description: URL for route service + metadata: + $ref: '../schemas/Metadata.yaml' diff --git a/docs/openapi/apis/cf/latest/components/requestBodies/UserUpdate.yaml b/docs/openapi/apis/cf/latest/components/requestBodies/UserUpdate.yaml new file mode 100644 index 00000000000..078c9d60866 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/requestBodies/UserUpdate.yaml @@ -0,0 +1,34 @@ +description: User to update +content: + application/json: + schema: + type: object + properties: + username: + type: string + description: The username of the user + presentation_name: + type: string + description: The presentation name of the user + origin: + type: string + description: The origin of the user + metadata: + $ref: ../schemas/Metadata.yaml + links: + type: object + properties: + self: + $ref: ../schemas/Link.yaml + description: The URL to get this user + examples: + default: + summary: default + value: + metadata: + labels: + environment: production + annotations: + note: detailed information + rate_limits: + custom_request_limit: 2000 diff --git a/docs/openapi/apis/cf/latest/components/responses/500.yaml b/docs/openapi/apis/cf/latest/components/responses/500.yaml new file mode 100644 index 00000000000..472824908bc --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/responses/500.yaml @@ -0,0 +1,5 @@ +description: Internal Server Error +content: + application/json: + schema: + $ref: '../schemas/Errors.yaml' diff --git a/docs/openapi/apis/cf/latest/components/responses/500Unauthorized.yaml b/docs/openapi/apis/cf/latest/components/responses/500Unauthorized.yaml new file mode 100644 index 00000000000..472824908bc --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/responses/500Unauthorized.yaml @@ -0,0 +1,5 @@ +description: Internal Server Error +content: + application/json: + schema: + $ref: '../schemas/Errors.yaml' diff --git a/docs/openapi/apis/cf/latest/components/responses/BadGateway.yaml b/docs/openapi/apis/cf/latest/components/responses/BadGateway.yaml new file mode 100644 index 00000000000..81b0adc8928 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/responses/BadGateway.yaml @@ -0,0 +1,5 @@ +description: Bad Gateway +content: + application/json: + schema: + $ref: '../schemas/Error.yaml' diff --git a/docs/openapi/apis/cf/latest/components/responses/BadRequest.yaml b/docs/openapi/apis/cf/latest/components/responses/BadRequest.yaml new file mode 100644 index 00000000000..c58bb36ebec --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/responses/BadRequest.yaml @@ -0,0 +1,8 @@ +description: Bad Request +content: + application/json: + schema: + $ref: '../schemas/Errors.yaml' + text/html: + schema: + type: string diff --git a/docs/openapi/apis/cf/latest/components/responses/BuildpackCreateResponse.yaml b/docs/openapi/apis/cf/latest/components/responses/BuildpackCreateResponse.yaml new file mode 100644 index 00000000000..24432dc09e0 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/responses/BuildpackCreateResponse.yaml @@ -0,0 +1,5 @@ +description: Successfully created buildpack +content: + application/json: + schema: + $ref: '../schemas/Buildpack.yaml' diff --git a/docs/openapi/apis/cf/latest/components/responses/BuildpackGetResponse.yaml b/docs/openapi/apis/cf/latest/components/responses/BuildpackGetResponse.yaml new file mode 100644 index 00000000000..d9e0429acb6 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/responses/BuildpackGetResponse.yaml @@ -0,0 +1,5 @@ +description: Successfully retrieved buildpack +content: + application/json: + schema: + $ref: '../schemas/Buildpack.yaml' diff --git a/docs/openapi/apis/cf/latest/components/responses/Conflict.yaml b/docs/openapi/apis/cf/latest/components/responses/Conflict.yaml new file mode 100644 index 00000000000..3cb1ae815ac --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/responses/Conflict.yaml @@ -0,0 +1,5 @@ +description: Conflict +content: + application/json: + schema: + $ref: '../schemas/Errors.yaml' diff --git a/docs/openapi/apis/cf/latest/components/responses/DropletCreateResponse.yaml b/docs/openapi/apis/cf/latest/components/responses/DropletCreateResponse.yaml new file mode 100644 index 00000000000..01c18a6f127 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/responses/DropletCreateResponse.yaml @@ -0,0 +1,5 @@ +description: Successfully created droplet +content: + application/json: + schema: + $ref: '../schemas/Droplet.yaml' diff --git a/docs/openapi/apis/cf/latest/components/responses/DropletGetResponse.yaml b/docs/openapi/apis/cf/latest/components/responses/DropletGetResponse.yaml new file mode 100644 index 00000000000..7e74c30aa5b --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/responses/DropletGetResponse.yaml @@ -0,0 +1,5 @@ +description: Successfully retrieved droplet +content: + application/json: + schema: + $ref: '../schemas/Droplet.yaml' diff --git a/docs/openapi/apis/cf/latest/components/responses/Forbidden.yaml b/docs/openapi/apis/cf/latest/components/responses/Forbidden.yaml new file mode 100644 index 00000000000..b90c039c0c8 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/responses/Forbidden.yaml @@ -0,0 +1,5 @@ +description: Forbidden +content: + application/json: + schema: + $ref: '../schemas/Errors.yaml' diff --git a/docs/openapi/apis/cf/latest/components/responses/NotFound.yaml b/docs/openapi/apis/cf/latest/components/responses/NotFound.yaml new file mode 100644 index 00000000000..955b8d5516d --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/responses/NotFound.yaml @@ -0,0 +1,5 @@ +description: Not Found +content: + application/json: + schema: + $ref: '../schemas/Errors.yaml' diff --git a/docs/openapi/apis/cf/latest/components/responses/RoleCreateResponse.yaml b/docs/openapi/apis/cf/latest/components/responses/RoleCreateResponse.yaml new file mode 100644 index 00000000000..8b501bfff54 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/responses/RoleCreateResponse.yaml @@ -0,0 +1,5 @@ +description: Role created +content: + application/json: + schema: + $ref: '../schemas/Role.yaml' diff --git a/docs/openapi/apis/cf/latest/components/responses/RoleGetResponse.yaml b/docs/openapi/apis/cf/latest/components/responses/RoleGetResponse.yaml new file mode 100644 index 00000000000..f8332ea8b39 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/responses/RoleGetResponse.yaml @@ -0,0 +1,5 @@ +description: Role retrieved +content: + application/json: + schema: + $ref: '../schemas/Role.yaml' diff --git a/docs/openapi/apis/cf/latest/components/responses/RoleListResponse.yaml b/docs/openapi/apis/cf/latest/components/responses/RoleListResponse.yaml new file mode 100644 index 00000000000..fb8b08329a6 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/responses/RoleListResponse.yaml @@ -0,0 +1,15 @@ +description: Roles retrieved +content: + application/json: + schema: + type: object + properties: + pagination: + $ref: '../schemas/Pagination.yaml' + resources: + type: array + items: + $ref: '../schemas/Role.yaml' + included: + $ref: '../schemas/IncludedResources.yaml' + description: Additional related resources included in the response when using the include parameter diff --git a/docs/openapi/apis/cf/latest/components/responses/RouteCreateResponse.yaml b/docs/openapi/apis/cf/latest/components/responses/RouteCreateResponse.yaml new file mode 100644 index 00000000000..bb487d61c17 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/responses/RouteCreateResponse.yaml @@ -0,0 +1,5 @@ +description: Route created +content: + application/json: + schema: + $ref: '../schemas/Route.yaml' diff --git a/docs/openapi/apis/cf/latest/components/responses/RouteListResponse.yaml b/docs/openapi/apis/cf/latest/components/responses/RouteListResponse.yaml new file mode 100644 index 00000000000..e10f3bfa324 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/responses/RouteListResponse.yaml @@ -0,0 +1,12 @@ +description: A list of routes +content: + application/json: + schema: + type: object + properties: + pagination: + $ref: '../schemas/Pagination.yaml' + resources: + type: array + items: + $ref: '../schemas/Route.yaml' diff --git a/docs/openapi/apis/cf/latest/components/responses/ServiceUnavailable.yaml b/docs/openapi/apis/cf/latest/components/responses/ServiceUnavailable.yaml new file mode 100644 index 00000000000..cf7fc73bf20 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/responses/ServiceUnavailable.yaml @@ -0,0 +1,5 @@ +description: Service Unavailable +content: + application/json: + schema: + $ref: '../schemas/Errors.yaml' diff --git a/docs/openapi/apis/cf/latest/components/responses/TooManyRequests.yaml b/docs/openapi/apis/cf/latest/components/responses/TooManyRequests.yaml new file mode 100644 index 00000000000..cde85b517aa --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/responses/TooManyRequests.yaml @@ -0,0 +1,20 @@ +description: Too Many Requests +content: + application/json: + schema: + type: object + properties: + errors: + type: array + items: + type: object + properties: + code: + type: integer + example: 10008 + title: + type: string + example: "CF-RateLimitExceeded" + detail: + type: string + example: "Rate limit exceeded" diff --git a/docs/openapi/apis/cf/latest/components/responses/Unauthorized.yaml b/docs/openapi/apis/cf/latest/components/responses/Unauthorized.yaml new file mode 100644 index 00000000000..136030315db --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/responses/Unauthorized.yaml @@ -0,0 +1,5 @@ +description: Unauthorized +content: + application/json: + schema: + $ref: '../schemas/Errors.yaml' diff --git a/docs/openapi/apis/cf/latest/components/responses/UnprocessableEntity.yaml b/docs/openapi/apis/cf/latest/components/responses/UnprocessableEntity.yaml new file mode 100644 index 00000000000..a36abb8f0bd --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/responses/UnprocessableEntity.yaml @@ -0,0 +1,5 @@ +description: Unprocessable Entity +content: + application/json: + schema: + $ref: '../schemas/Errors.yaml' diff --git a/docs/openapi/apis/cf/latest/components/responses/UserCreateResponse.yaml b/docs/openapi/apis/cf/latest/components/responses/UserCreateResponse.yaml new file mode 100644 index 00000000000..42631fc3f47 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/responses/UserCreateResponse.yaml @@ -0,0 +1,5 @@ +description: User created +content: + application/json: + schema: + $ref: '../schemas/User.yaml' diff --git a/docs/openapi/apis/cf/latest/components/responses/UserUpdateResponse.yaml b/docs/openapi/apis/cf/latest/components/responses/UserUpdateResponse.yaml new file mode 100644 index 00000000000..af106d691b4 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/responses/UserUpdateResponse.yaml @@ -0,0 +1,5 @@ +description: User updated +content: + application/json: + schema: + $ref: '../schemas/User.yaml' diff --git a/docs/openapi/apis/cf/latest/components/schemas/App.yaml b/docs/openapi/apis/cf/latest/components/schemas/App.yaml new file mode 100644 index 00000000000..7c37d6f6096 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/App.yaml @@ -0,0 +1,67 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' + - properties: + name: + type: string + description: The name of the app + state: + type: string + description: Current desired state of the app + enum: + - STOPPED + - STARTED + lifecycle: + $ref: './Lifecycle.yaml' + description: Provides the default lifecycle object for the application. This lifecycle will be used when staging and running the application. The staging lifecycle can be overridden on builds + relationships: + $ref: './Relationships.yaml' + metadata: + $ref: './Metadata.yaml' + links: + type: object + properties: + self: + $ref: './Link.yaml' + description: The URL to get this app + space: + $ref: './Link.yaml' + description: The URL to get the space for this app + processes: + $ref: './Link.yaml' + description: The URL to get the processes for this app + packages: + $ref: './Link.yaml' + description: The URL to get the packages for this app + environment_variables: + $ref: './Link.yaml' + description: The URL to get the environment variables for this app + current_droplet: + $ref: './Link.yaml' + description: The URL to get the current droplet for this app + droplets: + $ref: './Link.yaml' + description: The URL to get the droplets for this app + tasks: + $ref: './Link.yaml' + description: The URL to get the tasks for this app + start: + $ref: './Link.yaml' + description: The URL to start the app + stop: + $ref: './Link.yaml' + description: The URL to stop the app + revisions: + $ref: './Link.yaml' + description: The URL to get the revisions for this app + deployed_revisions: + $ref: './Link.yaml' + description: The URL to get the deployed revisions for this app + features: + $ref: './Link.yaml' + description: The URL to get the features for this app + included: + $ref: './IncludedResources.yaml' + description: Additional related resources included in the response when using the include parameter +description: > + Apps represent the core entities in the Cloud Foundry environment. They are the deployable units that run your code. Each app can have multiple processes, routes, and services associated with it. Apps can be scaled horizontally by increasing the number of instances. They can also be updated and restarted as needed. diff --git a/docs/openapi/apis/cf/latest/components/schemas/AppCredentialBinding.yaml b/docs/openapi/apis/cf/latest/components/schemas/AppCredentialBinding.yaml new file mode 100644 index 00000000000..ed97907dd43 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/AppCredentialBinding.yaml @@ -0,0 +1,44 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' + - properties: + type: + type: string + enum: + - app + description: Type of credential binding + name: + type: [string, "null"] + description: Name of the credential binding + last_operation: + $ref: './ServiceCredentialBindingLastOperation.yaml' + relationships: + type: object + properties: + app: + $ref: './RelationshipToOne.yaml' + service_instance: + $ref: './RelationshipToOne.yaml' + description: Relationships for the credential binding + links: + type: object + properties: + self: + $ref: './Link.yaml' + details: + $ref: './Link.yaml' + app: + $ref: './Link.yaml' + service_instance: + $ref: './Link.yaml' + parameters: + $ref: './Link.yaml' + metadata: + $ref: './Metadata.yaml' + included: + $ref: './IncludedResources.yaml' + description: Additional related resources included in the response when using the include parameter + required: + - type + - relationships + - links \ No newline at end of file diff --git a/docs/openapi/apis/cf/latest/components/schemas/AppEnvironment.yaml b/docs/openapi/apis/cf/latest/components/schemas/AppEnvironment.yaml new file mode 100644 index 00000000000..5263ee5b14b --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/AppEnvironment.yaml @@ -0,0 +1,24 @@ +type: object +properties: + staging_env_json: + type: object + description: Environment variables used during staging + additionalProperties: true + running_env_json: + type: object + description: Environment variables used during runtime + additionalProperties: true + environment_variables: + type: object + description: User-defined environment variables + additionalProperties: + type: [string, "null"] + system_env_json: + type: object + description: System environment variables including VCAP_SERVICES + additionalProperties: true + application_env_json: + type: object + description: Application environment variables including VCAP_APPLICATION + additionalProperties: true +description: 'Environment variables that will be provided to an app at runtime' diff --git a/docs/openapi/apis/cf/latest/components/schemas/AppEnvironmentVariables.yaml b/docs/openapi/apis/cf/latest/components/schemas/AppEnvironmentVariables.yaml new file mode 100644 index 00000000000..97f3dbedd80 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/AppEnvironmentVariables.yaml @@ -0,0 +1,17 @@ +type: object +properties: + var: + type: object + description: Environment variables + additionalProperties: + type: [string, "null"] + links: + type: object + properties: + self: + $ref: './Link.yaml' + description: The URL to get the environment variables for this app + app: + $ref: './Link.yaml' + description: The URL to get the app for these environment variables +description: 'App environment variables with links' diff --git a/docs/openapi/apis/cf/latest/components/schemas/AppFeature.yaml b/docs/openapi/apis/cf/latest/components/schemas/AppFeature.yaml new file mode 100644 index 00000000000..4c7a1f5f7f7 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/AppFeature.yaml @@ -0,0 +1,13 @@ +type: object +properties: + name: + type: string + description: The name of the app feature + description: + type: [string, "null"] + description: The description of the app feature + enabled: + type: boolean + description: Denotes whether or not the app feature is enabled +description: > + App features are used to manage whether optional capabilities are enabled for a given application. diff --git a/docs/openapi/apis/cf/latest/components/schemas/AppFeatureList.yaml b/docs/openapi/apis/cf/latest/components/schemas/AppFeatureList.yaml new file mode 100644 index 00000000000..c796e2931a3 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/AppFeatureList.yaml @@ -0,0 +1,8 @@ +type: object +properties: + pagination: + $ref: '#/components/schemas/Pagination' + resources: + type: array + items: + $ref: '#/components/schemas/AppFeature' diff --git a/docs/openapi/apis/cf/latest/components/schemas/AppList.yaml b/docs/openapi/apis/cf/latest/components/schemas/AppList.yaml new file mode 100644 index 00000000000..dcd3ea84ab8 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/AppList.yaml @@ -0,0 +1,11 @@ +type: object +properties: + pagination: + $ref: './Pagination.yaml' + resources: + type: array + items: + $ref: './App.yaml' + included: + $ref: './IncludedResources.yaml' + description: Additional related resources included in the response when using the include parameter diff --git a/docs/openapi/apis/cf/latest/components/schemas/AppPermissions.yaml b/docs/openapi/apis/cf/latest/components/schemas/AppPermissions.yaml new file mode 100644 index 00000000000..b89ddd0e925 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/AppPermissions.yaml @@ -0,0 +1,12 @@ +type: object +properties: + read_basic_data: + type: boolean + description: Whether the user can read basic app data + read_sensitive_data: + type: boolean + description: Whether the user can read sensitive app data +required: + - read_basic_data + - read_sensitive_data +description: 'User permissions for an app' diff --git a/docs/openapi/apis/cf/latest/components/schemas/AppSshEnabled.yaml b/docs/openapi/apis/cf/latest/components/schemas/AppSshEnabled.yaml new file mode 100644 index 00000000000..273806515b9 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/AppSshEnabled.yaml @@ -0,0 +1,11 @@ +type: object +properties: + enabled: + type: boolean + description: Whether SSH is enabled for the app + reason: + type: string + description: If SSH is disabled, describes whether it is disabled globally, at the space level, or at the app level +required: + - enabled +description: 'SSH enabled status for an app' diff --git a/docs/openapi/apis/cf/latest/components/schemas/AppUsageEvent.yaml b/docs/openapi/apis/cf/latest/components/schemas/AppUsageEvent.yaml new file mode 100644 index 00000000000..5cf0cb50fe2 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/AppUsageEvent.yaml @@ -0,0 +1,86 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' +properties: + state: + type: object + properties: + current: + type: string + description: Current state of the app that this event pertains to, if applicable + previous: + type: [string, "null"] + description: Previous state of the app that this event pertains to, if applicable + app: + type: object + properties: + guid: + type: string + description: Unique identifier of the app that this event pertains to, if applicable + name: + type: [string, "null"] + description: Name of the app that this event pertains to, if applicable + process: + type: object + properties: + guid: + type: string + description: Unique identifier of the process that this event pertains to, if applicable + type: + type: string + description: Type of the process that this event pertains to, if applicable + space: + type: object + properties: + guid: + type: string + description: Unique identifier of the space that this event pertains to, if applicable + name: + type: [string, "null"] + description: Name of the space that this event pertains to, if applicable + organization: + type: object + properties: + guid: + type: string + description: Unique identifier of the org that this event pertains to, if applicable + buildpack: + type: object + properties: + guid: + type: string + description: Unique identifier of the buildpack that this event pertains to, if applicable + name: + type: [string, "null"] + description: Name of the buildpack that this event pertains to, if applicable + task: + type: object + properties: + guid: + type: string + description: Unique identifier of the task that this event pertains to, if applicable + name: + type: [string, "null"] + description: Name of the task that this event pertains to, if applicable + memory_in_mb_per_instance: + type: object + properties: + current: + type: integer + description: Current memory in MB of the app that this event pertains to, if applicable + previous: + type: [integer, "null"] + description: Previous memory in MB of the app that this event pertains to, if applicable + instance_count: + type: object + properties: + current: + type: integer + description: Current instance count of the app that this event pertains to, if applicable + previous: + type: [integer, "null"] + description: Previous instance count of the app that this event pertains to, if applicable +description: >- + App usage events are a record of changes in the usage of apps and tasks. Examples include starting an application, scaling an application (from, say, one to three instances), and stopping an application. + + Usage events are typically used by billing and chargeback applications. diff --git a/docs/openapi/apis/cf/latest/components/schemas/AppUsageEventList.yaml b/docs/openapi/apis/cf/latest/components/schemas/AppUsageEventList.yaml new file mode 100644 index 00000000000..21fc8223ba2 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/AppUsageEventList.yaml @@ -0,0 +1,8 @@ +type: object +properties: + pagination: + $ref: './Pagination.yaml' + resources: + type: array + items: + $ref: './AppUsageEvent.yaml' diff --git a/docs/openapi/apis/cf/latest/components/schemas/AuditEvent.yaml b/docs/openapi/apis/cf/latest/components/schemas/AuditEvent.yaml new file mode 100644 index 00000000000..1a11b1bf692 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/AuditEvent.yaml @@ -0,0 +1,54 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' + - properties: + type: + type: string + description: The type of the event + actor: + type: object + properties: + guid: + type: string + description: The unique identifier for the actor (user or system resource that performed the action) + type: + type: string + description: The actor type + name: + type: string + description: The name of the actor + target: + type: object + properties: + guid: + type: string + description: The unique identifier for the target (resource that the event acted upon) + type: + type: string + description: The target type + name: + type: string + description: The name of the target + data: + type: object + description: Additional information about event + space: + type: [object, "null"] + properties: + guid: + type: string + description: Unique identifier for the space where the event occurred; if the event did not occur within a space, the `space` field will be `null` + organization: + type: [object, "null"] + properties: + guid: + type: string + description: Unique identifier for the organization where the event occurred; if the event did not occur within an organization, the `organization` field will be `null` + links: + type: object + properties: + self: + $ref: './Link.yaml' + description: The URL to get this audit event +description: > + Audit events help Cloud Foundry operators monitor actions taken against resources (such as apps) via user or system actions. diff --git a/docs/openapi/apis/cf/latest/components/schemas/AuditEventList.yaml b/docs/openapi/apis/cf/latest/components/schemas/AuditEventList.yaml new file mode 100644 index 00000000000..9cb07ea86b8 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/AuditEventList.yaml @@ -0,0 +1,8 @@ +type: object +properties: + pagination: + $ref: './Pagination.yaml' + resources: + type: array + items: + $ref: './AuditEvent.yaml' diff --git a/docs/openapi/apis/cf/latest/components/schemas/BaseSchema.yaml b/docs/openapi/apis/cf/latest/components/schemas/BaseSchema.yaml new file mode 100644 index 00000000000..9b6b16de8a2 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/BaseSchema.yaml @@ -0,0 +1,18 @@ +type: object +properties: + guid: + type: string + format: uuid + description: The unique identifier for the resource + created_at: + type: string + format: date-time + description: The ISO8601 compatible date and time when resource was created + updated_at: + type: string + format: date-time + description: The ISO8601 compatible date and time when resource was last updated +description: | + A resource represents an individual object within the system, such as an app or a service. It is represented as a JSON object. + A resource consists of several required resource fields and other attributes specific to the resource. + See Resources and Experimental Resources for specific resources. diff --git a/docs/openapi/apis/cf/latest/components/schemas/Build.yaml b/docs/openapi/apis/cf/latest/components/schemas/Build.yaml new file mode 100644 index 00000000000..1f0286c2f0f --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/Build.yaml @@ -0,0 +1,79 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' + - properties: + state: + type: string + description: State of the build + enum: + - STAGING + - STAGED + - FAILED + staging_memory_in_mb: + type: [integer, "null"] + description: Memory in MB allocated for staging of the build + staging_disk_in_mb: + type: [integer, "null"] + description: Disk space in MB allocated for staging of the build + staging_log_rate_limit_bytes_per_second: + type: integer + description: Log rate limit in bytes per second allocated for staging of the build + error: + type: [string, 'null'] + description: A string describing errors during the build process + lifecycle: + $ref: './Lifecycle.yaml' + description: Provides the lifecycle object to use during staging; this will override the build’s application’s default lifecycle for this build + checksum: + type: object + properties: + type: + type: string + description: Hashing algorithm for checksum; supported algorithms are sha256 and sha1 + value: + type: string + description: Checksum of build + metadata: + $ref: './Metadata.yaml' + relationships: + $ref: './Relationships.yaml' + package: + type: object + properties: + guid: + type: string + format: uuid + description: The package that is the input to the staging process + droplet: + type: [object, 'null'] + properties: + guid: + type: string + format: uuid + description: A resulting droplet from the staging process; `droplet` will be `null` if staging has not completed + created_by: + type: object + properties: + guid: + type: string + description: The guid of the user that created the build + name: + type: [string, "null"] + description: The name of the user that created the build + email: + type: [string, "null"] + description: The email of the user that created the build + links: + type: object + properties: + self: + $ref: './Link.yaml' + description: The URL to get this build + app: + $ref: './Link.yaml' + description: The URL to get the app for this build + droplet: + $ref: './Link.yaml' + description: The URL to get the droplet for this build +description: > + Builds represent the process of transforming source code into a runnable artifact. Builds can be triggered manually or automatically as part of the app lifecycle. A successful build results in a droplet that can be used to run the app. diff --git a/docs/openapi/apis/cf/latest/components/schemas/BuildList.yaml b/docs/openapi/apis/cf/latest/components/schemas/BuildList.yaml new file mode 100644 index 00000000000..3c9782836ad --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/BuildList.yaml @@ -0,0 +1,8 @@ +type: object +properties: + pagination: + $ref: './Pagination.yaml' + resources: + type: array + items: + $ref: './Build.yaml' diff --git a/docs/openapi/apis/cf/latest/components/schemas/BuildUpdate.yaml b/docs/openapi/apis/cf/latest/components/schemas/BuildUpdate.yaml new file mode 100644 index 00000000000..d1f736fc9f3 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/BuildUpdate.yaml @@ -0,0 +1,26 @@ +type: object +properties: + state: + type: string + description: State of the build + enum: + - STAGING + - STAGED + - FAILED + staging_memory_in_mb: + type: [integer, "null"] + description: Memory in MB allocated for staging of the build + staging_disk_in_mb: + type: [integer, "null"] + description: Disk space in MB allocated for staging of the build + staging_log_rate_limit_bytes_per_second: + type: integer + description: Log rate limit in bytes per second allocated for staging of the build + error: + type: [string, 'null'] + description: A string describing errors during the build process + lifecycle: + $ref: './Lifecycle.yaml' + description: Provides the lifecycle object to use during staging + metadata: + $ref: './Metadata.yaml' diff --git a/docs/openapi/apis/cf/latest/components/schemas/Buildpack.yaml b/docs/openapi/apis/cf/latest/components/schemas/Buildpack.yaml new file mode 100644 index 00000000000..e53679c5a31 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/Buildpack.yaml @@ -0,0 +1,43 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' + - properties: + name: + type: string + description: The name of the buildpack; to be used by app buildpack field (only alphanumeric characters) + state: + type: string + description: The state of the buildpack + enum: + - AWAITING_UPLOAD + - READY + stack: + type: [string, 'null'] + description: The name of the stack that the buildpack uses + lifecycle: + type: string + description: The version of buildpacks the buildpack uses. `buildpack` indicates [Classic Buildpacks](https://docs.cloudfoundry.org/buildpacks/classic.html). `cnb` indicates [Cloud Native Buildpacks](https://docs.cloudfoundry.org/buildpacks/cnb/) + position: + type: integer + description: The order in which the buildpacks are checked during buildpack auto-detection + enabled: + type: boolean + description: Whether or not the buildpack can be used for staging + locked: + type: boolean + description: Whether or not the buildpack is locked to prevent updating the bits + filename: + type: [string, 'null'] + description: The filename of the buildpack + metadata: + $ref: './Metadata.yaml' + links: + type: object + properties: + self: + $ref: './Link.yaml' + description: The URL of the buildpack + upload: + $ref: './Link.yaml' + description: The URL to upload the buildpack +description: A buildpack represents a set of scripts used to prepare an application for launch. diff --git a/docs/openapi/apis/cf/latest/components/schemas/BuildpackList.yaml b/docs/openapi/apis/cf/latest/components/schemas/BuildpackList.yaml new file mode 100644 index 00000000000..6ef12f99868 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/BuildpackList.yaml @@ -0,0 +1,8 @@ +type: object +properties: + pagination: + $ref: './Pagination.yaml' + resources: + type: array + items: + $ref: './Buildpack.yaml' diff --git a/docs/openapi/apis/cf/latest/components/schemas/Deployment.yaml b/docs/openapi/apis/cf/latest/components/schemas/Deployment.yaml new file mode 100644 index 00000000000..fb28d35dcde --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/Deployment.yaml @@ -0,0 +1,124 @@ +type: object +allOf: +- $ref: ./BaseSchema.yaml +- properties: + status: + type: object + properties: + value: + type: string + description: The current status of the deployment + enum: + - ACTIVE + - FINALIZED + reason: + type: string + description: The reason for the status of the deployment + enum: + - DEPLOYING + - PAUSED + - CANCELING + - DEPLOYED + - CANCELED + - SUPERSEDED + details: + type: object + properties: + last_successful_healthcheck: + type: string + format: date-time + description: Timestamp of the last successful health check + last_status_change: + type: string + format: date-time + description: Timestamp of last change to status.value or status.reason + strategy: + type: string + description: Strategy used for the deployment + enum: + - rolling + - canary + options: + type: object + properties: + max_in_flight: + type: integer + description: The maximum number of new instances to deploy simultaneously + web_instances: + type: integer + description: The number of instances for the web process of the new droplet + memory_in_mb: + type: integer + description: The amount of memory in megabytes to allocate for the web process + disk_in_mb: + type: integer + description: The amount of disk space in megabytes to allocate for the web process + log_rate_limit_in_bytes_per_second: + type: integer + description: The log rate limit in bytes per second for the web process. A value of -1 indicates unlimited, 0 prevents any logs from being emitted. + canary: + type: object + description: Configuration for canary deployments. Present when strategy is 'canary'. + properties: + steps: + type: array + description: Array of steps defining the canary deployment progression + items: + type: object + properties: + instance_weight: + type: integer + description: The percentage of instances to be deployed as part of the canary process in this step + droplet: + type: object + properties: + guid: + type: string + format: uuid + description: The droplet guid that the deployment is transitioning the app to + previous_droplet: + type: object + properties: + guid: + type: string + format: uuid + description: "The app\u2019s [current droplet guid](#get-current-droplet-association-for-an-app) before the deployment was created" + new_processes: + type: array + items: + type: object + properties: + guid: + type: string + format: uuid + description: The GUID of the new process created as part of the deployment + type: + type: string + description: The type of the new process created as part of the deployment + revision: + type: [object, "null"] + properties: + guid: + type: string + format: uuid + description: The revision the deployment is transitioning the app to + version: + type: integer + description: The version of the revision + relationships: + $ref: ./Relationships.yaml + metadata: + $ref: ./Metadata.yaml + links: + type: object + properties: + self: + $ref: ./Link.yaml + description: The URL to get this deployment + app: + $ref: ./Link.yaml + description: The URL to get the app for this deployment + cancel: + $ref: ./Link.yaml + description: The URL to cancel this deployment +description: "Deployments are objects that manage updates to applications with zero downtime. They can either: - Manage updating an app\u2019s droplet directly after an application package is staged - Roll an app back to a specific revision along with its associated droplet\nDeployment strategies supported: - Rolling deployments allow for applications to be deployed without incurring downtime by gradually rolling out instances. Max-in-flight can be configured to specify how many instances are rolled out simultaneously. - Canary deployments deploy a single instance and pause for user evaluation. If the canary instance is deemed successful, the deployment can be resumed via the continue action. The deployment then continues like a rolling deployment. This feature is experimental and is subject to change.\n" diff --git a/docs/openapi/apis/cf/latest/components/schemas/DeploymentList.yaml b/docs/openapi/apis/cf/latest/components/schemas/DeploymentList.yaml new file mode 100644 index 00000000000..3b582fd2cf3 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/DeploymentList.yaml @@ -0,0 +1,8 @@ +type: object +properties: + pagination: + $ref: './Pagination.yaml' + resources: + type: array + items: + $ref: './Deployment.yaml' diff --git a/docs/openapi/apis/cf/latest/components/schemas/Domain.yaml b/docs/openapi/apis/cf/latest/components/schemas/Domain.yaml new file mode 100644 index 00000000000..520314e54e4 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/Domain.yaml @@ -0,0 +1,51 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' + - properties: + name: + type: string + description: The name of the domain; must be between 3 ~ 253 characters and follow [RFC 1035](https://tools.ietf.org/html/rfc1035) + internal: + type: boolean + description: Whether the domain is used for internal (container-to-container) traffic + router_group: + type: + - object + - 'null' + properties: + guid: + type: string + format: uuid + description: The guid of the desired router group to route `tcp` traffic through; if set, the domain will only be available for `tcp` traffic + supported_protocols: + type: array + items: + type: string + enum: + - http + - tcp + description: Available protocols for routes using the domain, currently `http` and `tcp` + relationships: + $ref: './Relationships.yaml' + metadata: + $ref: './Metadata.yaml' + links: + type: object + properties: + self: + $ref: './Link.yaml' + description: The URL to get this domain + organization: + $ref: './Link.yaml' + description: The URL to get the organization for this domain + route_reservations: + $ref: './Link.yaml' + description: The URL to get the route reservations for this domain + shared_organizations: + $ref: './Link.yaml' + description: The URL to get the shared organizations for this domain + router_group: + $ref: './Link.yaml' + description: The URL to get the router group for this domain +description: | + A domain is a fully qualified domain name that is used for application routes. A domain can be scoped to an organization, meaning it can be used to create routes for spaces inside that organization, or be left unscoped to allow all organizations access. diff --git a/docs/openapi/apis/cf/latest/components/schemas/DomainList.yaml b/docs/openapi/apis/cf/latest/components/schemas/DomainList.yaml new file mode 100644 index 00000000000..4cebea5d499 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/DomainList.yaml @@ -0,0 +1,8 @@ +type: object +properties: + pagination: + $ref: './Pagination.yaml' + resources: + type: array + items: + $ref: './Domain.yaml' diff --git a/docs/openapi/apis/cf/latest/components/schemas/Droplet.yaml b/docs/openapi/apis/cf/latest/components/schemas/Droplet.yaml new file mode 100644 index 00000000000..81fc21a99af --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/Droplet.yaml @@ -0,0 +1,74 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' + - properties: + state: + type: string + description: State of the droplet; valid states are AWAITING_UPLOAD, PROCESSING_UPLOAD, STAGED, COPYING, FAILED, or EXPIRED + error: + type: [string, 'null'] + description: A string describing the last error during the droplet lifecycle + lifecycle: + $ref: './Lifecycle.yaml' + execution_metadata: + type: [string, "null"] + description: Serialized JSON data resulting from staging for use when executing a droplet + process_types: + type: object + description: The process types (keys) and associated start commands (values) that will be created when the droplet is executed + metadata: + $ref: './Metadata.yaml' + links: + type: object + properties: + self: + $ref: './Link.yaml' + description: The URL to get this droplet + package: + $ref: './Link.yaml' + description: The URL to get the package for this droplet + app: + $ref: './Link.yaml' + description: The URL to get the app for this droplet + assign_current_droplet: + $ref: './Link.yaml' + description: The URL to assign the droplet to an application + download: + $ref: './Link.yaml' + description: The URL to download the droplet + upload: + $ref: './Link.yaml' + description: The URL to upload the droplet + checksum: + type: [object, 'null'] + properties: + type: + type: string + description: Hashing algorithm for checksum; supported algorithms are sha256 and sha1 + value: + type: string + description: Checksum of the droplet + buildpacks: + type: [array, "null"] + items: + type: object + properties: + name: + type: [string, "null"] + description: System buildpack name + detect_output: + type: [string, 'null'] + description: Output during buildpack detect process + version: + type: [string, 'null'] + description: Version reported by the buildpack + buildpack_name: + type: [string, "null"] + description: Name reported by the buildpack + stack: + type: [string, 'null'] + description: The root filesystem to use with the buildpack, for example cflinuxfs4 + image: + type: [string, 'null'] + description: Docker image name for Docker droplets +description: A droplet is the result of staging an application package. There are two types (lifecycles) of droplets buildpack and docker. In the case of the buildpacks, the droplet contains the bits produced by the buildpack, typically application code and dependencies. diff --git a/docs/openapi/apis/cf/latest/components/schemas/DropletList.yaml b/docs/openapi/apis/cf/latest/components/schemas/DropletList.yaml new file mode 100644 index 00000000000..5966da8cfa3 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/DropletList.yaml @@ -0,0 +1,8 @@ +type: object +properties: + pagination: + $ref: './Pagination.yaml' + resources: + type: array + items: + $ref: './Droplet.yaml' diff --git a/docs/openapi/apis/cf/latest/components/schemas/EnvironmentVariableGroup.yaml b/docs/openapi/apis/cf/latest/components/schemas/EnvironmentVariableGroup.yaml new file mode 100644 index 00000000000..46af31a2f80 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/EnvironmentVariableGroup.yaml @@ -0,0 +1,22 @@ +type: object +properties: + updated_at: + type: string + format: date-time + description: The time the environment variable group was last updated + name: + type: [string, "null"] + description: The name of the group; can only be "running" or "staging" + var: + type: object + additionalProperties: + type: [string, "null"] + description: Environment variables to inject; keys and values must be strings + links: + type: object + properties: + self: + $ref: './Link.yaml' + description: The URL to get this environment variable group +description: > + Environment variable groups allow platform operators/admins to manage environment variables across all apps in a Cloud Foundry foundation. Variables in the running environment variable group will be injected into all running app containers. Variables in the staging environment variable group will be injected into the staging container for all apps while they are being staged. diff --git a/docs/openapi/apis/cf/latest/components/schemas/Error.yaml b/docs/openapi/apis/cf/latest/components/schemas/Error.yaml new file mode 100644 index 00000000000..b5c84c73b64 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/Error.yaml @@ -0,0 +1,11 @@ +type: object +properties: + code: + type: integer + description: A numeric code for this error + detail: + type: string + description: Detailed description of the error + title: + type: string + description: Name of the error diff --git a/docs/openapi/apis/cf/latest/components/schemas/Errors.yaml b/docs/openapi/apis/cf/latest/components/schemas/Errors.yaml new file mode 100644 index 00000000000..d0846baaedd --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/Errors.yaml @@ -0,0 +1,9 @@ +type: object +properties: + errors: + type: array + items: + $ref: './Error.yaml' +description: | + An error response will always return a list of error objects. Errors appear on the job resource for asynchronous operations. + Clients should use the code and title fields for programmatically handling specific errors. The message in the detail field is subject to change over time. diff --git a/docs/openapi/apis/cf/latest/components/schemas/FeatureFlag.yaml b/docs/openapi/apis/cf/latest/components/schemas/FeatureFlag.yaml new file mode 100644 index 00000000000..72bc762bc0c --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/FeatureFlag.yaml @@ -0,0 +1,23 @@ +type: object +properties: + name: + type: string + description: The name of the feature flag + enabled: + type: boolean + description: Whether the feature flag is enabled + updated_at: + type: [string, "null"] + format: date-time + description: The time the feature flag was last updated; this will be blank for feature flags that have not been configured + custom_error_message: + type: [string, "null"] + description: The error string returned by the API when a client performs an action disabled by the feature flag + links: + type: object + properties: + self: + $ref: './Link.yaml' + description: The URL to get this feature flag +description: > + Feature flags are runtime flags that enable or disable functionality on the API. diff --git a/docs/openapi/apis/cf/latest/components/schemas/FeatureFlagList.yaml b/docs/openapi/apis/cf/latest/components/schemas/FeatureFlagList.yaml new file mode 100644 index 00000000000..3ab81a30d3c --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/FeatureFlagList.yaml @@ -0,0 +1,8 @@ +type: object +properties: + pagination: + $ref: './Pagination.yaml' + resources: + type: array + items: + $ref: './FeatureFlag.yaml' diff --git a/docs/openapi/apis/cf/latest/components/schemas/HealthCheck.yaml b/docs/openapi/apis/cf/latest/components/schemas/HealthCheck.yaml new file mode 100644 index 00000000000..fc62fc5098d --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/HealthCheck.yaml @@ -0,0 +1,22 @@ +type: object +properties: + type: + type: string + enum: ["port", "process", "http"] + description: The type of health check to perform; valid values are http, port, and process; default is port + data: + type: object + properties: + timeout: + type: [integer, 'null'] + description: The duration in seconds that health checks can fail before the process is restarted + invocation_timeout: + type: [integer, 'null'] + description: The timeout in seconds for individual health check requests for http and port health checks + interval: + type: [integer, 'null'] + description: The interval in seconds between health check requests + endpoint: + type: string + description: The endpoint called to determine if the app is healthy; this key is only present for http health checks +description: 'Health check configuration for a process' diff --git a/docs/openapi/apis/cf/latest/components/schemas/IncludedResources.yaml b/docs/openapi/apis/cf/latest/components/schemas/IncludedResources.yaml new file mode 100644 index 00000000000..a2d3158d5eb --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/IncludedResources.yaml @@ -0,0 +1,51 @@ +type: object +description: Additional related resources included in the response when using the include parameter +properties: + spaces: + type: array + items: + $ref: './Space.yaml' + description: Array of included space resources + organizations: + type: array + items: + $ref: './Organization.yaml' + description: Array of included organization resources + domains: + type: array + items: + $ref: './Domain.yaml' + description: Array of included domain resources + service_offerings: + type: array + items: + $ref: './ServiceOffering.yaml' + description: Array of included service offering resources + service_instances: + type: array + items: + oneOf: + - $ref: './ManagedServiceInstance.yaml' + - $ref: './UserProvidedServiceInstance.yaml' + discriminator: + propertyName: type + mapping: + managed: ./ManagedServiceInstance.yaml + user-provided: ./UserProvidedServiceInstance.yaml + description: Array of included service instance resources + apps: + type: array + items: + $ref: './App.yaml' + description: Array of included app resources + routes: + type: array + items: + $ref: './Route.yaml' + description: Array of included route resources + users: + type: array + items: + $ref: './User.yaml' + description: Array of included user resources +additionalProperties: false diff --git a/docs/openapi/apis/cf/latest/components/schemas/IndexLink.yaml b/docs/openapi/apis/cf/latest/components/schemas/IndexLink.yaml new file mode 100644 index 00000000000..bb193816eb7 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/IndexLink.yaml @@ -0,0 +1,19 @@ +allOf: + - $ref: ./Link.yaml + - type: object + properties: + meta: + type: object + description: Contains metadata about the link + properties: + version: + type: string + description: The version of the API + host_key_fingerprint: + type: string + description: The host key fingerprint of the link + oauth_client: + type: string + description: The oauth client for the link +description: | + Each link is keyed by its type and will include a href for the URL and an optional method for links that cannot be followed using GET. Can include a meta object with metadata about the link. diff --git a/docs/openapi/apis/cf/latest/components/schemas/IsolationSegment.yaml b/docs/openapi/apis/cf/latest/components/schemas/IsolationSegment.yaml new file mode 100644 index 00000000000..4007eaa6233 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/IsolationSegment.yaml @@ -0,0 +1,19 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' + - properties: + name: + type: string + description: The name of the isolation segment + metadata: + $ref: './Metadata.yaml' + links: + type: object + properties: + self: + $ref: './Link.yaml' + description: The URL to get this isolation segment + organizations: + $ref: './Link.yaml' + description: The URL to get the organizations for this isolation segment +description: An isolation segment provides a dedicated pool of compute resources for an organization or space. diff --git a/docs/openapi/apis/cf/latest/components/schemas/IsolationSegmentList.yaml b/docs/openapi/apis/cf/latest/components/schemas/IsolationSegmentList.yaml new file mode 100644 index 00000000000..dfc532a991f --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/IsolationSegmentList.yaml @@ -0,0 +1,8 @@ +type: object +properties: + pagination: + $ref: './Pagination.yaml' + resources: + type: array + items: + $ref: './IsolationSegment.yaml' diff --git a/docs/openapi/apis/cf/latest/components/schemas/Job.yaml b/docs/openapi/apis/cf/latest/components/schemas/Job.yaml new file mode 100644 index 00000000000..d7fb196b7fe --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/Job.yaml @@ -0,0 +1,48 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' + - properties: + operation: + type: string + description: The type of operation the job is performing + state: + type: string + description: The current state of the job + enum: + - PROCESSING + - COMPLETE + - FAILED + - POLLING + errors: + type: array + description: Any errors encountered during job execution + items: + $ref: './Error.yaml' + warnings: + type: array + description: Any warnings encountered during job execution + items: + $ref: './Warning.yaml' + links: + type: object + additionalProperties: true + properties: + self: + $ref: './Link.yaml' + description: The URL to get this job + manifest: + $ref: './Link.yaml' + description: The URL to get the manifest for this job + service_brokers: + $ref: './Link.yaml' + description: The URL to get the service broker for this job + service_credential_binding: + $ref: './Link.yaml' + description: The URL to get the service credential binding for this job + service_instances: + $ref: './Link.yaml' + description: The URL to get the service instance for this job + service_route_bindings: + $ref: './Link.yaml' + description: The URL to get the service route binding for this job +description: 'Jobs are created by the platform when performing certain asynchronous actions. Asynchronous jobs are commonly used for long-running tasks such as uploading large files, staging applications, or deleting resources.' diff --git a/docs/openapi/apis/cf/latest/components/schemas/JobList.yaml b/docs/openapi/apis/cf/latest/components/schemas/JobList.yaml new file mode 100644 index 00000000000..061f73e43a2 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/JobList.yaml @@ -0,0 +1,8 @@ +type: object +properties: + pagination: + $ref: '#/components/schemas/Pagination' + resources: + type: array + items: + $ref: '#/components/schemas/Job' diff --git a/docs/openapi/apis/cf/latest/components/schemas/KeyCredentialBinding.yaml b/docs/openapi/apis/cf/latest/components/schemas/KeyCredentialBinding.yaml new file mode 100644 index 00000000000..644d52dd99c --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/KeyCredentialBinding.yaml @@ -0,0 +1,38 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' + - properties: + type: + type: string + enum: + - key + description: Type of credential binding + name: + type: string + description: Name of the credential binding + last_operation: + $ref: './ServiceCredentialBindingLastOperation.yaml' + relationships: + type: object + properties: + service_instance: + $ref: './RelationshipToOne.yaml' + description: Relationships for the credential binding + links: + type: object + properties: + self: + $ref: './Link.yaml' + details: + $ref: './Link.yaml' + service_instance: + $ref: './Link.yaml' + metadata: + $ref: './Metadata.yaml' + included: + $ref: './IncludedResources.yaml' + description: Additional related resources included in the response when using the include parameter + required: + - type + - relationships + - links \ No newline at end of file diff --git a/docs/openapi/apis/cf/latest/components/schemas/Lifecycle.yaml b/docs/openapi/apis/cf/latest/components/schemas/Lifecycle.yaml new file mode 100644 index 00000000000..9645df8f68c --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/Lifecycle.yaml @@ -0,0 +1,32 @@ +type: object +properties: + type: + type: string + description: Type of the lifecycle; valid values are buildpack, cnb, docker + data: + type: object + additionalProperties: true + description: Data specific to the lifecycle + properties: + buildpacks: + type: array + items: + type: string + description: List of the names of buildpacks, URLs from which they may be downloaded, or null to auto-detect a suitable buildpack during staging (applicable for buildpack and cnb lifecycles) + stack: + type: [string, "null"] + description: The root filesystem to use with the buildpack, for example cflinuxfs4 (applicable for buildpack lifecycle) + credentials: + type: object + additionalProperties: + type: object + properties: + username: + type: [string, "null"] + password: + type: [string, "null"] + token: + type: string + description: Credentials used to download the configured buildpacks (applicable for cnb lifecycle) +description: > + The lifecycle type defines how the application droplet is created and run. The following lifecycle types are supported: - buildpack: Traditional buildpacks for Cloud Foundry applications. - cnb: Cloud Native Buildpacks that are OCI-compliant. - docker: Run pre-built Docker images. diff --git a/docs/openapi/apis/cf/latest/components/schemas/Link.yaml b/docs/openapi/apis/cf/latest/components/schemas/Link.yaml new file mode 100644 index 00000000000..ebd8f1b0134 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/Link.yaml @@ -0,0 +1,12 @@ +type: object +properties: + href: + type: string + description: The URL of the link + method: + type: string + description: An optional field containing the HTTP method to be used when following the URL +required: + - href +description: | + Each link is keyed by its type and will include a href for the URL and an optional method for links that cannot be followed using GET. diff --git a/docs/openapi/apis/cf/latest/components/schemas/ManagedServiceInstance.yaml b/docs/openapi/apis/cf/latest/components/schemas/ManagedServiceInstance.yaml new file mode 100644 index 00000000000..519f4675f18 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/ManagedServiceInstance.yaml @@ -0,0 +1,75 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' + - properties: + type: + type: string + enum: + - managed + description: Type of service instance + name: + type: string + description: Name of the service instance + tags: + type: array + items: + type: string + description: Tags for the service instance + syslog_drain_url: + type: [string, "null"] + format: uri + description: URL for syslog drain + route_service_url: + type: [string, "null"] + format: uri + description: URL for route service + dashboard_url: + type: [string, "null"] + format: uri + description: URL for service dashboard + maintenance_info: + type: object + properties: + version: + type: string + description: Version of maintenance info + description: + type: [string, "null"] + description: Description of maintenance info + upgrade_available: + type: boolean + description: Whether an upgrade is available + last_operation: + $ref: './ServiceInstanceLastOperation.yaml' + relationships: + type: object + properties: + space: + $ref: './RelationshipToOne.yaml' + service_plan: + $ref: './RelationshipToOne.yaml' + description: Relationships for the service instance + links: + type: object + properties: + self: + $ref: './Link.yaml' + space: + $ref: './Link.yaml' + service_plan: + $ref: './Link.yaml' + parameters: + $ref: './Link.yaml' + service_credential_bindings: + $ref: './Link.yaml' + service_route_bindings: + $ref: './Link.yaml' + shared_spaces: + $ref: './Link.yaml' + metadata: + $ref: './Metadata.yaml' + required: + - type + - name + - relationships + - links \ No newline at end of file diff --git a/docs/openapi/apis/cf/latest/components/schemas/Metadata.yaml b/docs/openapi/apis/cf/latest/components/schemas/Metadata.yaml new file mode 100644 index 00000000000..92846d2d578 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/Metadata.yaml @@ -0,0 +1,77 @@ +type: object +properties: + labels: + type: object + additionalProperties: + type: [string, "null"] + description: | + A set of key-value pairs that describe the resource. Labels are a JSON object that contains information about a resource. They are used to tag resources with metadata that can be used to filter and group resources. Labels are included in the response body of a request to retrieve a resource. + Labels are user-specified key/value pairs that are attached to API Resources. They are queryable, identifying attributes of a resource, but they do not affect the operation of CloudFoundry. + + For example, an app may be assigned a label with key sensitive and possible values true or false. + + Users could then find all sensitive apps with a selector for sensitive=true, resulting in a response containing only apps having the label key sensitive with a label value of true. + + Labels + Labels allow users to apply identifying attributes to resources that are meaningful to the user, but not the CloudFoundry system. + + Examples may include (but are not limited to): + + "production" : "true" or "production" : "false" + "env" : "dev" or "env" : "test" or "env" : "prod" + "chargeback-code" : "abc123" + Label keys + Label keys are made up of an (optional) prefix, and name. If a prefix is present, it is separated from the name by a /. Prefixes are dns names intended to enable namespacing of label keys. + + A label key prefix must adhere to the following restrictions: + + Length: 0-253 characters + Allowed characters: alphanumeric ( [a-z0-9A-Z] ), -, and . + DNS subdomain format (series of subdomain labels separated by .) + A label key name must adhere to the following restrictions: + + Length: 1-63 characters + Allowed characters: alphanumeric ( [a-z0-9A-Z] ), -, _, and . + Must begin and end with an alphanumeric character + Label values + Label values must adhere to the following restrictions: + + Length: 0-63 characters + Allowed characters: alphanumeric ( [a-z0-9A-Z] ), -, _, and . + Must begin and end with an alphanumeric character + Empty values are allowed + annotations: + type: object + additionalProperties: + type: [string, "null"] + description: | + A set of key-value pairs that describe the resource. Annotations are a JSON object that contains information about a resource. They are used to tag resources with metadata that can be used to filter and group resources. Annotations are included in the response body of a request to retrieve a resource. + Annotations are user-specified key-value pairs that are attached to API resources. They do not affect the operation of Cloud Foundry. Annotations cannot be used in filters. + + When a service instance is being created, the service broker is sent the annotations of the service instance, and the space and organization in which the service instance resides. When a service instance is being updated, the service broker is sent the annotations of the space and organization in which the service instance resides. When a service binding is being created, the service broker is sent annotations of any associated app, and the space and organization in which the binding resides. Only annotations with a prefix (e.g. company.com/contacts) are sent to service brokers. + + Examples may include (but are not limited to): + + "contact info": "bob@example.com jane@example.com" + "library versions": "Spring: 5.1, Redis Client: a184098. yaml parser: 38" + "git-sha": "d56fe0367554ae5e878e37ed6c5b9a82f5995512" + Annotation keys + Annotation keys are made up of an (optional) prefix and name. If a prefix is present, it is separated from the name by a /. Prefixes are DNS names intended to enable namespacing of annotation keys. + + An annotation key prefix must adhere to the following restrictions: + + Length: 0-253 characters + Allowed characters: a-z, A-Z, 0-9, -, and .; emojis cannot be used in keys + DNS subdomain format (series of subdomain annotations separated by .) + An annotation key name must adhere to the following restrictions: + + Length: 1-63 characters + Allowed characters: a-z, A-Z, 0-9, -, _, and .; emojis cannot be used in keys + Must begin and end with an alphanumeric character + Annotation values + Annotation values must adhere to the following restrictions: + + Length: 0-5000 unicode characters +description: | + Metadata is a JSON object that contains information about a resource. It includes the GUID of the resource, the time the resource was created, the time the resource was last updated, and links to the resource. + Metadata is included in the response body of a request to retrieve a resource. diff --git a/docs/openapi/apis/cf/latest/components/schemas/Organization.yaml b/docs/openapi/apis/cf/latest/components/schemas/Organization.yaml new file mode 100644 index 00000000000..415e5f87662 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/Organization.yaml @@ -0,0 +1,35 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' + - properties: + name: + type: string + description: Name of the organization + suspended: + type: boolean + description: Whether an organization is suspended or not; non-admins will be blocked from creating, updating, or deleting resources in a suspended organization + relationships: + type: object + properties: + quota: + $ref: './RelationshipToOne.yaml' + description: The quota applied to the organization + metadata: + $ref: './Metadata.yaml' + links: + type: object + properties: + self: + $ref: './Link.yaml' + description: The URL to get this organization + domains: + $ref: './Link.yaml' + description: The URL to get the domains for this organization + quota: + $ref: './Link.yaml' + description: The URL to get the quota for this organization + default_domain: + $ref: './Link.yaml' + description: The URL to get the default domain for this organization +description: > + An org is a development account that an individual or multiple collaborators can own and use. All collaborators access an org with user accounts. Collaborators in an org share a resource quota plan, applications, services availability, and custom domains. diff --git a/docs/openapi/apis/cf/latest/components/schemas/OrganizationList.yaml b/docs/openapi/apis/cf/latest/components/schemas/OrganizationList.yaml new file mode 100644 index 00000000000..f23e060b888 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/OrganizationList.yaml @@ -0,0 +1,9 @@ +type: object +properties: + pagination: + $ref: './Pagination.yaml' + resources: + type: array + items: + $ref: './Organization.yaml' +description: A paginated list of organizations diff --git a/docs/openapi/apis/cf/latest/components/schemas/OrganizationQuota.yaml b/docs/openapi/apis/cf/latest/components/schemas/OrganizationQuota.yaml new file mode 100644 index 00000000000..5118f0cc408 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/OrganizationQuota.yaml @@ -0,0 +1,75 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' + - properties: + name: + type: string + description: Name of the quota + apps: + type: object + description: Quotas that affect applications and application sub-resources + properties: + per_process_memory_in_mb: + type: [integer, "null"] + description: Maximum memory for a single process or task + total_memory_in_mb: + type: [integer, "null"] + description: Total memory allowed for all the started processes and running tasks in an organization + total_instances: + type: [integer, "null"] + description: Total instances of all the started processes allowed in an organization + log_rate_limit_in_bytes_per_second: + type: [integer, "null"] + description: Total log rate limit allowed for all the started processes and running tasks in an organization + per_app_tasks: + type: [integer, "null"] + description: Maximum number of running tasks in an organization + services: + type: object + description: Quotas that affect services + properties: + paid_services_allowed: + type: boolean + description: Specifies whether instances of paid service plans can be created + total_service_instances: + type: [integer, "null"] + description: Total number of service instances allowed in an organization + total_service_keys: + type: [integer, "null"] + description: Total number of service keys allowed in an organization + routes: + type: object + description: Quotas that affect routes + properties: + total_routes: + type: [integer, "null"] + description: Total number of routes allowed in an organization + total_reserved_ports: + type: [integer, "null"] + description: Total number of ports that are reservable by routes in an organization + domains: + type: object + description: Quotas that affect domains + properties: + total_domains: + type: [integer, "null"] + description: Total number of domains that can be scoped to an organization + relationships: + type: object + properties: + organizations: + $ref: './RelationshipToMany.yaml' + description: A relationship to the organizations where the quota is applied + metadata: + $ref: './Metadata.yaml' + links: + type: object + properties: + self: + $ref: './Link.yaml' + description: The URL to get this organization quota + organizations: + $ref: './Link.yaml' + description: The URL to get the organizations for this quota +description: > + Organization quotas are named sets of memory, log rate, service, and instance usage quotas. For example, one organization quota might allow up to 10 services, 10 routes, and 2 GB of RAM, while another might offer 100 services, 100 routes, and 10 GB of RAM. diff --git a/docs/openapi/apis/cf/latest/components/schemas/OrganizationQuotaList.yaml b/docs/openapi/apis/cf/latest/components/schemas/OrganizationQuotaList.yaml new file mode 100644 index 00000000000..cf47a8f8287 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/OrganizationQuotaList.yaml @@ -0,0 +1,9 @@ +type: object +allOf: + - $ref: './Pagination.yaml' + - properties: + resources: + type: array + items: + $ref: './OrganizationQuota.yaml' +description: A paginated list of organization quotas diff --git a/docs/openapi/apis/cf/latest/components/schemas/Package.yaml b/docs/openapi/apis/cf/latest/components/schemas/Package.yaml new file mode 100644 index 00000000000..2d5852aeb7d --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/Package.yaml @@ -0,0 +1,65 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' + - properties: + type: + type: string + description: Type of the package; valid values are bits or docker + enum: + - bits + - docker + data: + type: object + description: Data for package type + properties: + error: + type: [string, 'null'] + description: If an error occurs this field will contain the error message + checksum: + type: object + properties: + type: + type: string + description: The checksum type, for example sha256 + value: + type: [string, 'null'] + description: The checksum value; this will be populated after bits are uploaded + image: + type: string + description: The registry address of the image + username: + type: [string, "null"] + description: The username for the image's registry + password: + type: [string, "null"] + description: The password for the image's registry + state: + type: string + description: State of the package; valid states are AWAITING_UPLOAD, PROCESSING_UPLOAD, READY, FAILED, COPYING, or EXPIRED + enum: + - AWAITING_UPLOAD + - PROCESSING_UPLOAD + - READY + - FAILED + - COPYING + - EXPIRED + relationships: + $ref: './Relationships.yaml' + metadata: + $ref: './Metadata.yaml' + links: + type: object + properties: + self: + $ref: './Link.yaml' + description: The URL to get this package + upload: + $ref: './Link.yaml' + description: The URL to upload the package bits + download: + $ref: './Link.yaml' + description: The URL to download the package bits + app: + $ref: './Link.yaml' + description: The URL to get the app for this package +description: 'A package represents an application"s "source code" - either raw bits or a pointer to these bits. Packages are used to create builds, which result in a droplet that can be deployed.' diff --git a/docs/openapi/apis/cf/latest/components/schemas/PackageList.yaml b/docs/openapi/apis/cf/latest/components/schemas/PackageList.yaml new file mode 100644 index 00000000000..2b8672fbf47 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/PackageList.yaml @@ -0,0 +1,8 @@ +type: object +properties: + pagination: + $ref: './Pagination.yaml' + resources: + type: array + items: + $ref: './Package.yaml' diff --git a/docs/openapi/apis/cf/latest/components/schemas/Pagination.yaml b/docs/openapi/apis/cf/latest/components/schemas/Pagination.yaml new file mode 100644 index 00000000000..2260104e922 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/Pagination.yaml @@ -0,0 +1,29 @@ +type: object +properties: + total_results: + type: integer + description: The total number of results available + total_pages: + type: integer + description: The total number of pages available + first: + allOf: + - $ref: './Link.yaml' + - description: The first page of results + last: + allOf: + - $ref: './Link.yaml' + - description: The last page of results + next: + oneOf: + - $ref: './Link.yaml' + - type: "null" + description: The next page of results + previous: + oneOf: + - $ref: './Link.yaml' + - type: "null" + description: The previous page of results +description: | + Pagination is a technique used to divide a large set of results into smaller, more manageable sets. This allows clients to retrieve results in smaller chunks, reducing the amount of data transferred and improving performance. + The pagination object is a JSON object that contains information about the pagination state of the results. It includes the total number of results available, the total number of pages available, and links to the first, last, next, and previous pages of results. diff --git a/docs/openapi/apis/cf/latest/components/schemas/Process.yaml b/docs/openapi/apis/cf/latest/components/schemas/Process.yaml new file mode 100644 index 00000000000..f00637fe749 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/Process.yaml @@ -0,0 +1,63 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' + - properties: + version: + type: string + format: uuid + description: Random identifier that changes every time the process will be recreated in the runtime + type: + type: string + description: Process type; a unique identifier for processes belonging to an app + command: + type: [string, "null"] + description: The command used to start the process; use null to revert to the buildpack-detected or procfile-provided start command + user: + type: [string, "null"] + description: The user used to run the process; use null to revert to the docker-detected or default 'vcap' user + instances: + type: integer + description: The number of instances to run + memory_in_mb: + type: [integer, "null"] + description: The memory in MB allocated per instance + disk_in_mb: + type: [integer, "null"] + description: The disk in MB allocated per instance + log_rate_limit_in_bytes_per_second: + type: integer + description: The log rate in bytes per second allocated per instance + health_check: + $ref: './HealthCheck.yaml' + readiness_health_check: + $ref: './HealthCheck.yaml' + relationships: + type: object + properties: + app: + $ref: './RelationshipToOne.yaml' + revision: + oneOf: + - $ref: './RelationshipToOne.yaml' + - type: 'null' + metadata: + $ref: './Metadata.yaml' + links: + type: object + properties: + self: + $ref: './Link.yaml' + description: The URL to get this process + scale: + $ref: './Link.yaml' + description: The URL to scale this process + app: + $ref: './Link.yaml' + description: The URL to get the app for this process + space: + $ref: './Link.yaml' + description: The URL to get the space for this process + stats: + $ref: './Link.yaml' + description: The URL to get the stats for this process +description: 'A process defines the runnable units of an app' diff --git a/docs/openapi/apis/cf/latest/components/schemas/ProcessList.yaml b/docs/openapi/apis/cf/latest/components/schemas/ProcessList.yaml new file mode 100644 index 00000000000..b54d8690488 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/ProcessList.yaml @@ -0,0 +1,9 @@ +allOf: + - $ref: './Pagination.yaml' + - type: object + properties: + resources: + type: array + items: + $ref: './Process.yaml' +description: 'A list of processes' diff --git a/docs/openapi/apis/cf/latest/components/schemas/ProcessStats.yaml b/docs/openapi/apis/cf/latest/components/schemas/ProcessStats.yaml new file mode 100644 index 00000000000..2a532cb3b14 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/ProcessStats.yaml @@ -0,0 +1,39 @@ +type: object +properties: + resources: + type: array + items: + type: object + properties: + type: + type: string + index: + type: integer + state: + type: string + enum: ["RUNNING", "CRASHED", "STARTING", "DOWN", "STOPPING"] + host: + type: string + uptime: + type: integer + mem_quota: + type: [integer, 'null'] + disk_quota: + type: [integer, 'null'] + log_rate_limit: + type: [integer, 'null'] + usage: + type: object + properties: + time: + type: string + format: date-time + cpu: + type: number + mem: + type: integer + disk: + type: integer + log_rate: + type: integer +description: 'Statistics for a process' diff --git a/docs/openapi/apis/cf/latest/components/schemas/Relationship.yaml b/docs/openapi/apis/cf/latest/components/schemas/Relationship.yaml new file mode 100644 index 00000000000..3537dfe326a --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/Relationship.yaml @@ -0,0 +1,6 @@ +type: object +properties: + guid: + type: string + format: uuid + description: The GUID of the resource diff --git a/docs/openapi/apis/cf/latest/components/schemas/RelationshipToMany.yaml b/docs/openapi/apis/cf/latest/components/schemas/RelationshipToMany.yaml new file mode 100644 index 00000000000..cbd9186a6e6 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/RelationshipToMany.yaml @@ -0,0 +1,15 @@ +type: object +properties: + data: + type: array + items: + $ref: './Relationship.yaml' + links: + type: object + properties: + self: + $ref: './Link.yaml' + related: + $ref: './Link.yaml' +description: | + Some relationships relate a resource to several other resources. For example, an isolation segment can be entitled to multiple organizations. diff --git a/docs/openapi/apis/cf/latest/components/schemas/RelationshipToOne.yaml b/docs/openapi/apis/cf/latest/components/schemas/RelationshipToOne.yaml new file mode 100644 index 00000000000..89f05cdb347 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/RelationshipToOne.yaml @@ -0,0 +1,14 @@ +type: object +properties: + data: + type: [object, "null"] + $ref: './Relationship.yaml' + links: + type: object + properties: + self: + $ref: './Link.yaml' + related: + $ref: './Link.yaml' +description: | + Some relationships relate a resource to exactly one other resource. For example an app can belong to only one space. diff --git a/docs/openapi/apis/cf/latest/components/schemas/Relationships.yaml b/docs/openapi/apis/cf/latest/components/schemas/Relationships.yaml new file mode 100644 index 00000000000..e506a359c65 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/Relationships.yaml @@ -0,0 +1,12 @@ +type: object +description: | + Relationships represent associations between resources. When relationships are mutable, they can be used to create, read, update, and delete these associations. An app’s relationship to its current droplet is mutable, but an app’s relationship to its space is not. + + Relationships do not affect the fundamental properties of a resource, but may affect their behavior and permissions logic. Relationships are tied to the lifecycles of the associated resources and will be removed if either of the associated resources are deleted. For example, if a user is removed from an organization, both the user and the organization persist, but the relationship between them does not. + + Not all resources implement every relationship operation demonstrated in the examples below. See the docs for each resource to see how it interacts with its relationships. + + Endpoints that return relationship data list this information under the relationships key. + + The relationship object + The relationship object is a key-value pair that uniquely identifies a resource. In practice this is almost always the guid of a resource. diff --git a/docs/openapi/apis/cf/latest/components/schemas/ResourceMatch.yaml b/docs/openapi/apis/cf/latest/components/schemas/ResourceMatch.yaml new file mode 100644 index 00000000000..941dbd8c780 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/ResourceMatch.yaml @@ -0,0 +1,18 @@ +type: object +properties: + resources: + type: array + items: + type: object + properties: + checksum: + type: object + properties: + value: + type: string + size_in_bytes: + type: integer + path: + type: string + mode: + type: string diff --git a/docs/openapi/apis/cf/latest/components/schemas/Revision.yaml b/docs/openapi/apis/cf/latest/components/schemas/Revision.yaml new file mode 100644 index 00000000000..53b19eeb582 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/Revision.yaml @@ -0,0 +1,36 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' + - properties: + version: + type: integer + description: Version number of the revision + description: + type: [string, "null"] + description: Description of the revision, created by the user + droplet: + $ref: './RelationshipToOne.yaml' + relationships: + allOf: + - $ref: './Relationships.yaml' + - properties: + app: + $ref: './RelationshipToOne.yaml' + enabled: + type: boolean + description: Whether the revision is enabled or not. + metadata: + $ref: './Metadata.yaml' + links: + type: object + properties: + self: + $ref: './Link.yaml' + description: The URL to get this revision + app: + $ref: './Link.yaml' + description: The URL to get the app for this revision + environment_variables: + $ref: './Link.yaml' + description: The URL to get the environment variables for this revision +description: 'An App Revision is an immutable snapshot of an app at a particular point in time. Revisions are identified by a sequential version number. The "current" revision for an app is the revision that is currently deployed for all instances of the app.' diff --git a/docs/openapi/apis/cf/latest/components/schemas/RevisionList.yaml b/docs/openapi/apis/cf/latest/components/schemas/RevisionList.yaml new file mode 100644 index 00000000000..5b241ec6fd8 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/RevisionList.yaml @@ -0,0 +1,8 @@ +type: object +properties: + pagination: + $ref: './Pagination.yaml' + resources: + type: array + items: + $ref: './Revision.yaml' diff --git a/docs/openapi/apis/cf/latest/components/schemas/Role.yaml b/docs/openapi/apis/cf/latest/components/schemas/Role.yaml new file mode 100644 index 00000000000..f49bb3eb990 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/Role.yaml @@ -0,0 +1,66 @@ +allOf: + - $ref: './BaseSchema.yaml' +type: object +properties: + type: + type: string + description: |- + Role type. Possible values are: + - `organization_user`: A user in the organization + - `organization_auditor`: An auditor in the organization + - `organization_manager`: A manager in the organization + - `organization_billing_manager`: A billing manager in the organization + - `space_auditor`: An auditor in the space + - `space_developer`: A developer in the space + - `space_manager`: A manager in the space + - `space_supporter`: A supporter in the space (not authorized to use the V2 API) + enum: + - organization_user + - organization_auditor + - organization_manager + - organization_billing_manager + - space_auditor + - space_developer + - space_manager + - space_supporter + relationships: + allOf: + - $ref: './Relationships.yaml' + properties: + organization: + allOf: + - $ref: './RelationshipToOne.yaml' + - description: | + A relationship to the organization the role controls access to; when this is a space role, `organization.data` will be `null`. + space: + allOf: + - $ref: './RelationshipToOne.yaml' + - description: | + A relationship to the space the role controls access to; when this is an organization role, `space.data` will be `null`. + user: + allOf: + - $ref: './UserRelationshipToOne.yaml' + - description: | + A relationship to the user; this is the user that has the role + links: + type: object + properties: + self: + $ref: './Link.yaml' + description: The URL to get this role + user: + $ref: './Link.yaml' + description: The URL to get the user for this role + organization: + $ref: './Link.yaml' + description: The URL to get the organization for this role + space: + $ref: './Link.yaml' + description: The URL to get the space for this role + included: + $ref: './IncludedResources.yaml' + description: Additional related resources included in the response when using the include parameter +description: | + Roles represent a set of permissions that can be granted to users. Roles are represented as a JSON object. + A role consists of several required role fields and other attributes specific to the role. + See Roles for specific roles. diff --git a/docs/openapi/apis/cf/latest/components/schemas/Route.yaml b/docs/openapi/apis/cf/latest/components/schemas/Route.yaml new file mode 100644 index 00000000000..d972b356d5c --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/Route.yaml @@ -0,0 +1,38 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' + - properties: + protocol: + type: string + host: + type: string + path: + type: string + port: + type: [integer, 'null'] + url: + type: string + description: Fully qualified path or address where the route directs traffic + relationships: + $ref: './Relationships.yaml' + metadata: + $ref: './Metadata.yaml' + links: + type: object + properties: + self: + $ref: './Link.yaml' + description: The URL to get this route + space: + $ref: './Link.yaml' + description: The URL to get the space for this route + domain: + $ref: './Link.yaml' + description: The URL to get the domain for this route + destinations: + $ref: './Link.yaml' + description: The URL to get the destinations for this route + included: + $ref: './IncludedResources.yaml' + description: Additional related resources included in the response when using the include parameter +description: A route in Cloud Foundry is used to direct traffic from a URL to an application. diff --git a/docs/openapi/apis/cf/latest/components/schemas/RouteDestination.yaml b/docs/openapi/apis/cf/latest/components/schemas/RouteDestination.yaml new file mode 100644 index 00000000000..39680cd702c --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/RouteDestination.yaml @@ -0,0 +1,40 @@ +type: object +properties: + guid: + type: string + app: + type: object + properties: + guid: + type: string + process: + type: object + properties: + type: + type: string + weight: + type: + - integer + - 'null' + port: + type: integer + protocol: + type: [string, "null"] + created_at: + type: string + format: date-time + updated_at: + type: [string, "null"] + format: date-time + metadata: + $ref: './Metadata.yaml' + links: + type: object + properties: + self: + $ref: './Link.yaml' + description: The URL to get this route destination + route: + $ref: './Link.yaml' + description: The URL to get the route for this destination +description: A route destination is a specification for where traffic on a route should be directed. diff --git a/docs/openapi/apis/cf/latest/components/schemas/RouteDestinationList.yaml b/docs/openapi/apis/cf/latest/components/schemas/RouteDestinationList.yaml new file mode 100644 index 00000000000..85794f07994 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/RouteDestinationList.yaml @@ -0,0 +1,9 @@ +type: object +properties: + pagination: + $ref: './Pagination.yaml' + destinations: + type: array + items: + $ref: './RouteDestination.yaml' +description: A list of route destinations diff --git a/docs/openapi/apis/cf/latest/components/schemas/RouteList.yaml b/docs/openapi/apis/cf/latest/components/schemas/RouteList.yaml new file mode 100644 index 00000000000..6f691449e24 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/RouteList.yaml @@ -0,0 +1,12 @@ +type: object +properties: + pagination: + $ref: './Pagination.yaml' + resources: + type: array + items: + $ref: './Route.yaml' + included: + $ref: './IncludedResources.yaml' + description: Additional related resources included in the response when using the include parameter +description: A list of routes diff --git a/docs/openapi/apis/cf/latest/components/schemas/SecurityGroup.yaml b/docs/openapi/apis/cf/latest/components/schemas/SecurityGroup.yaml new file mode 100644 index 00000000000..84ea72585ea --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/SecurityGroup.yaml @@ -0,0 +1,72 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' + - properties: + name: + type: string + description: Name of the security group + globally_enabled: + type: object + properties: + running: + type: boolean + description: Whether the security group is globally enabled for running apps + staging: + type: boolean + description: Whether the security group is globally enabled for staging apps + rules: + type: array + items: + type: object + properties: + protocol: + type: string + description: Protocol for the rule + destination: + type: string + description: Destination for the rule + ports: + type: string + description: Ports for the rule + type: + type: integer + description: Type for ICMP rules + code: + type: integer + description: Code for ICMP rules + description: + type: string + description: Description of the rule + description: Rules for the security group + running_spaces: + type: object + properties: + data: + type: array + items: + $ref: './Relationship.yaml' + description: Spaces where this security group is applied to running apps + staging_spaces: + type: object + properties: + data: + type: array + items: + $ref: './Relationship.yaml' + description: Spaces where this security group is applied to staging apps + links: + type: object + properties: + self: + $ref: './Link.yaml' + running_spaces: + $ref: './Link.yaml' + staging_spaces: + $ref: './Link.yaml' + metadata: + $ref: './Metadata.yaml' + required: + - name + - globally_enabled + - rules + - links \ No newline at end of file diff --git a/docs/openapi/apis/cf/latest/components/schemas/SecurityGroupCreate.yaml b/docs/openapi/apis/cf/latest/components/schemas/SecurityGroupCreate.yaml new file mode 100644 index 00000000000..bd82d9c9204 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/SecurityGroupCreate.yaml @@ -0,0 +1,42 @@ +type: object +properties: + name: + type: string + description: Name of the security group + globally_enabled: + type: object + properties: + running: + type: boolean + description: Whether the security group is globally enabled for running apps + staging: + type: boolean + description: Whether the security group is globally enabled for staging apps + rules: + type: array + items: + type: object + properties: + protocol: + type: string + description: Protocol for the rule + destination: + type: string + description: Destination for the rule + ports: + type: string + description: Ports for the rule + type: + type: integer + description: Type for ICMP rules + code: + type: integer + description: Code for ICMP rules + description: + type: [string, "null"] + description: Description of the rule + description: Rules for the security group + metadata: + $ref: './Metadata.yaml' +required: + - name \ No newline at end of file diff --git a/docs/openapi/apis/cf/latest/components/schemas/SecurityGroupList.yaml b/docs/openapi/apis/cf/latest/components/schemas/SecurityGroupList.yaml new file mode 100644 index 00000000000..4fd687540db --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/SecurityGroupList.yaml @@ -0,0 +1,8 @@ +type: object +properties: + pagination: + $ref: './Pagination.yaml' + resources: + type: array + items: + $ref: './SecurityGroup.yaml' diff --git a/docs/openapi/apis/cf/latest/components/schemas/SecurityGroupUpdate.yaml b/docs/openapi/apis/cf/latest/components/schemas/SecurityGroupUpdate.yaml new file mode 100644 index 00000000000..b281ff5d771 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/SecurityGroupUpdate.yaml @@ -0,0 +1,40 @@ +type: object +properties: + name: + type: string + description: Name of the security group + globally_enabled: + type: object + properties: + running: + type: boolean + description: Whether the security group is globally enabled for running apps + staging: + type: boolean + description: Whether the security group is globally enabled for staging apps + rules: + type: array + items: + type: object + properties: + protocol: + type: string + description: Protocol for the rule + destination: + type: string + description: Destination for the rule + ports: + type: string + description: Ports for the rule + type: + type: integer + description: Type for ICMP rules + code: + type: integer + description: Code for ICMP rules + description: + type: [string, "null"] + description: Description of the rule + description: Rules for the security group + metadata: + $ref: './Metadata.yaml' diff --git a/docs/openapi/apis/cf/latest/components/schemas/ServiceBroker.yaml b/docs/openapi/apis/cf/latest/components/schemas/ServiceBroker.yaml new file mode 100644 index 00000000000..2d5a4ecc00a --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/ServiceBroker.yaml @@ -0,0 +1,32 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' + - properties: + name: + type: string + description: Name of the service broker + url: + type: string + format: uri + description: URL of the service broker + relationships: + type: object + properties: + space: + $ref: './RelationshipToOne.yaml' + description: Relationships for the service broker + links: + type: object + properties: + self: + $ref: './Link.yaml' + space: + $ref: './Link.yaml' + service_offerings: + $ref: './Link.yaml' + metadata: + $ref: './Metadata.yaml' + required: + - name + - url + - links \ No newline at end of file diff --git a/docs/openapi/apis/cf/latest/components/schemas/ServiceBrokerList.yaml b/docs/openapi/apis/cf/latest/components/schemas/ServiceBrokerList.yaml new file mode 100644 index 00000000000..a1613eee430 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/ServiceBrokerList.yaml @@ -0,0 +1,8 @@ +type: object +properties: + pagination: + $ref: './Pagination.yaml' + resources: + type: array + items: + $ref: './ServiceBroker.yaml' diff --git a/docs/openapi/apis/cf/latest/components/schemas/ServiceCredentialBindingLastOperation.yaml b/docs/openapi/apis/cf/latest/components/schemas/ServiceCredentialBindingLastOperation.yaml new file mode 100644 index 00000000000..259990adcbd --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/ServiceCredentialBindingLastOperation.yaml @@ -0,0 +1,28 @@ +type: object +properties: + type: + type: string + description: Type of the last operation + enum: + - create + - delete + state: + type: string + description: State of the last operation + enum: + - initial + - in progress + - succeeded + - failed + description: + type: [string, "null"] + description: A textual explanation associated with this state + created_at: + type: string + format: date-time + description: When the last operation was created + updated_at: + type: string + format: date-time + description: When the last operation was last updated +description: The last operation object for service credential bindings diff --git a/docs/openapi/apis/cf/latest/components/schemas/ServiceCredentialBindingList.yaml b/docs/openapi/apis/cf/latest/components/schemas/ServiceCredentialBindingList.yaml new file mode 100644 index 00000000000..7ce081075ab --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/ServiceCredentialBindingList.yaml @@ -0,0 +1,18 @@ +type: object +properties: + pagination: + $ref: './Pagination.yaml' + resources: + type: array + items: + oneOf: + - $ref: './AppCredentialBinding.yaml' + - $ref: './KeyCredentialBinding.yaml' + discriminator: + propertyName: type + mapping: + app: './AppCredentialBinding.yaml' + key: './KeyCredentialBinding.yaml' + included: + $ref: './IncludedResources.yaml' + description: Additional related resources included in the response when using the include parameter diff --git a/docs/openapi/apis/cf/latest/components/schemas/ServiceInstanceLastOperation.yaml b/docs/openapi/apis/cf/latest/components/schemas/ServiceInstanceLastOperation.yaml new file mode 100644 index 00000000000..80ea6c8b5bb --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/ServiceInstanceLastOperation.yaml @@ -0,0 +1,29 @@ +type: object +properties: + type: + type: string + description: Type of the last operation + enum: + - create + - update + - delete + state: + type: string + description: State of the last operation + enum: + - initial + - in progress + - succeeded + - failed + description: + type: [string, "null"] + description: A textual explanation associated with this state + created_at: + type: string + format: date-time + description: When the last operation was created + updated_at: + type: string + format: date-time + description: When the last operation was last updated +description: The last operation object for service instances diff --git a/docs/openapi/apis/cf/latest/components/schemas/ServiceInstanceList.yaml b/docs/openapi/apis/cf/latest/components/schemas/ServiceInstanceList.yaml new file mode 100644 index 00000000000..e1e99665339 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/ServiceInstanceList.yaml @@ -0,0 +1,15 @@ +type: object +properties: + pagination: + $ref: './Pagination.yaml' + resources: + type: array + items: + oneOf: + - $ref: './ManagedServiceInstance.yaml' + - $ref: './UserProvidedServiceInstance.yaml' + discriminator: + propertyName: type + mapping: + managed: './ManagedServiceInstance.yaml' + user-provided: './UserProvidedServiceInstance.yaml' \ No newline at end of file diff --git a/docs/openapi/apis/cf/latest/components/schemas/ServiceOffering.yaml b/docs/openapi/apis/cf/latest/components/schemas/ServiceOffering.yaml new file mode 100644 index 00000000000..c3ceed7fb98 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/ServiceOffering.yaml @@ -0,0 +1,22 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' + - properties: + service_broker_guid: + type: string + service_broker_name: + type: string + metadata: + $ref: './Metadata.yaml' + links: + type: object + properties: + self: + $ref: './Link.yaml' + description: The URL to get this service offering + service_plans: + $ref: './Link.yaml' + description: The URL to get the service plans for this offering + service_broker: + $ref: './Link.yaml' + description: The URL to get the service broker for this offering \ No newline at end of file diff --git a/docs/openapi/apis/cf/latest/components/schemas/ServiceOfferingList.yaml b/docs/openapi/apis/cf/latest/components/schemas/ServiceOfferingList.yaml new file mode 100644 index 00000000000..681d7470287 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/ServiceOfferingList.yaml @@ -0,0 +1,8 @@ +type: object +properties: + pagination: + $ref: './Pagination.yaml' + resources: + type: array + items: + $ref: './ServiceOffering.yaml' diff --git a/docs/openapi/apis/cf/latest/components/schemas/ServicePlan.yaml b/docs/openapi/apis/cf/latest/components/schemas/ServicePlan.yaml new file mode 100644 index 00000000000..bb034500126 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/ServicePlan.yaml @@ -0,0 +1,25 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' + - properties: + service_offering_guid: + type: string + service_offering_name: + type: string + metadata: + $ref: './Metadata.yaml' + links: + type: object + properties: + self: + $ref: './Link.yaml' + description: The URL to get this service plan + service_offering: + $ref: './Link.yaml' + description: The URL to get the service offering for this plan + visibility: + $ref: './Link.yaml' + description: The URL to get the visibility for this plan + included: + $ref: './IncludedResources.yaml' + description: Additional related resources included in the response when using the include parameter \ No newline at end of file diff --git a/docs/openapi/apis/cf/latest/components/schemas/ServicePlanList.yaml b/docs/openapi/apis/cf/latest/components/schemas/ServicePlanList.yaml new file mode 100644 index 00000000000..5a6663cd091 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/ServicePlanList.yaml @@ -0,0 +1,11 @@ +type: object +properties: + pagination: + $ref: './Pagination.yaml' + resources: + type: array + items: + $ref: './ServicePlan.yaml' + included: + $ref: './IncludedResources.yaml' + description: Additional related resources included in the response when using the include parameter diff --git a/docs/openapi/apis/cf/latest/components/schemas/ServicePlanVisibility.yaml b/docs/openapi/apis/cf/latest/components/schemas/ServicePlanVisibility.yaml new file mode 100644 index 00000000000..9e426b2b319 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/ServicePlanVisibility.yaml @@ -0,0 +1,25 @@ +type: object +properties: + type: + type: string + description: Type of visibility + enum: + - public + - admin + - organization + - space + organizations: + type: array + items: + type: object + properties: + guid: + type: string + format: uuid + description: Organization GUID + name: + type: string + description: Organization name + description: Organizations that have visibility to this service plan +required: + - type diff --git a/docs/openapi/apis/cf/latest/components/schemas/ServiceRouteBinding.yaml b/docs/openapi/apis/cf/latest/components/schemas/ServiceRouteBinding.yaml new file mode 100644 index 00000000000..03fbeae88f1 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/ServiceRouteBinding.yaml @@ -0,0 +1,35 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' + - properties: + route_service_url: + type: [string, "null"] + format: uri + description: URL for the route service + last_operation: + $ref: './ServiceCredentialBindingLastOperation.yaml' + relationships: + type: object + properties: + route: + $ref: './RelationshipToOne.yaml' + service_instance: + $ref: './RelationshipToOne.yaml' + description: Relationships for the service route binding + links: + type: object + properties: + self: + $ref: './Link.yaml' + route: + $ref: './Link.yaml' + service_instance: + $ref: './Link.yaml' + metadata: + $ref: './Metadata.yaml' + included: + $ref: './IncludedResources.yaml' + description: Additional related resources included in the response when using the include parameter + required: + - relationships + - links \ No newline at end of file diff --git a/docs/openapi/apis/cf/latest/components/schemas/ServiceRouteBindingCreate.yaml b/docs/openapi/apis/cf/latest/components/schemas/ServiceRouteBindingCreate.yaml new file mode 100644 index 00000000000..5f518525951 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/ServiceRouteBindingCreate.yaml @@ -0,0 +1,22 @@ +type: object +properties: + relationships: + type: object + properties: + route: + $ref: './RelationshipToOne.yaml' + description: The route to bind + service_instance: + $ref: './RelationshipToOne.yaml' + description: The service instance to bind + required: + - route + - service_instance + description: Relationships for the service route binding + parameters: + type: object + description: A JSON object that is passed to the service broker + metadata: + $ref: './Metadata.yaml' +required: + - relationships \ No newline at end of file diff --git a/docs/openapi/apis/cf/latest/components/schemas/ServiceRouteBindingList.yaml b/docs/openapi/apis/cf/latest/components/schemas/ServiceRouteBindingList.yaml new file mode 100644 index 00000000000..dbe3c61e35a --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/ServiceRouteBindingList.yaml @@ -0,0 +1,11 @@ +type: object +properties: + pagination: + $ref: './Pagination.yaml' + resources: + type: array + items: + $ref: './ServiceRouteBinding.yaml' + included: + $ref: './IncludedResources.yaml' + description: Additional related resources included in the response when using the include parameter diff --git a/docs/openapi/apis/cf/latest/components/schemas/ServiceUsageEvent.yaml b/docs/openapi/apis/cf/latest/components/schemas/ServiceUsageEvent.yaml new file mode 100644 index 00000000000..17e123c290d --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/ServiceUsageEvent.yaml @@ -0,0 +1,10 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' + - properties: + links: + type: object + properties: + self: + $ref: './Link.yaml' + description: The URL to get this service usage event \ No newline at end of file diff --git a/docs/openapi/apis/cf/latest/components/schemas/ServiceUsageEventList.yaml b/docs/openapi/apis/cf/latest/components/schemas/ServiceUsageEventList.yaml new file mode 100644 index 00000000000..2dd8d9dc3fe --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/ServiceUsageEventList.yaml @@ -0,0 +1,8 @@ +type: object +properties: + pagination: + $ref: './Pagination.yaml' + resources: + type: array + items: + $ref: './ServiceUsageEvent.yaml' diff --git a/docs/openapi/apis/cf/latest/components/schemas/Sidecar.yaml b/docs/openapi/apis/cf/latest/components/schemas/Sidecar.yaml new file mode 100644 index 00000000000..7b4211671e5 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/Sidecar.yaml @@ -0,0 +1,44 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' + - properties: + name: + type: string + description: Name of the sidecar + command: + type: string + description: Command to run for the sidecar + process_types: + type: array + items: + type: string + description: Process types that the sidecar applies to + memory_in_mb: + type: [integer, "null"] + description: Memory limit for the sidecar in MB + origin: + type: [string, "null"] + description: Origin of the sidecar + enum: + - user + - buildpack + relationships: + type: object + properties: + app: + $ref: './RelationshipToOne.yaml' + description: Relationships for the sidecar + links: + type: object + properties: + self: + $ref: './Link.yaml' + app: + $ref: './Link.yaml' + metadata: + $ref: './Metadata.yaml' + required: + - name + - command + - process_types + - relationships \ No newline at end of file diff --git a/docs/openapi/apis/cf/latest/components/schemas/SidecarCreate.yaml b/docs/openapi/apis/cf/latest/components/schemas/SidecarCreate.yaml new file mode 100644 index 00000000000..73f3db072d4 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/SidecarCreate.yaml @@ -0,0 +1,16 @@ +type: object +properties: + name: + type: string + description: Name of the sidecar + command: + type: string + description: Command to run for the sidecar + process_types: + type: array + items: + type: string + description: Process types that the sidecar applies to + memory_in_mb: + type: [integer, "null"] + description: Memory limit for the sidecar in MB diff --git a/docs/openapi/apis/cf/latest/components/schemas/SidecarList.yaml b/docs/openapi/apis/cf/latest/components/schemas/SidecarList.yaml new file mode 100644 index 00000000000..49efa5d66a8 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/SidecarList.yaml @@ -0,0 +1,8 @@ +type: object +properties: + pagination: + $ref: './Pagination.yaml' + resources: + type: array + items: + $ref: './Sidecar.yaml' diff --git a/docs/openapi/apis/cf/latest/components/schemas/Space.yaml b/docs/openapi/apis/cf/latest/components/schemas/Space.yaml new file mode 100644 index 00000000000..e9dfc682490 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/Space.yaml @@ -0,0 +1,35 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' + - properties: + name: + type: string + description: Name of the space + relationships: + type: object + properties: + organization: + $ref: './RelationshipToOne.yaml' + quota: + $ref: './RelationshipToOne.yaml' + description: Relationships for the space + links: + type: object + properties: + self: + $ref: './Link.yaml' + organization: + $ref: './Link.yaml' + features: + $ref: './Link.yaml' + apply_manifest: + $ref: './Link.yaml' + metadata: + $ref: './Metadata.yaml' + included: + $ref: './IncludedResources.yaml' + description: Additional related resources included in the response when using the include parameter + required: + - name + - relationships + - links \ No newline at end of file diff --git a/docs/openapi/apis/cf/latest/components/schemas/SpaceFeature.yaml b/docs/openapi/apis/cf/latest/components/schemas/SpaceFeature.yaml new file mode 100644 index 00000000000..28375c576bb --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/SpaceFeature.yaml @@ -0,0 +1,8 @@ +type: object +properties: + name: + type: string + description: + type: [string, "null"] + enabled: + type: boolean diff --git a/docs/openapi/apis/cf/latest/components/schemas/SpaceList.yaml b/docs/openapi/apis/cf/latest/components/schemas/SpaceList.yaml new file mode 100644 index 00000000000..af670208f16 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/SpaceList.yaml @@ -0,0 +1,11 @@ +type: object +properties: + pagination: + $ref: './Pagination.yaml' + resources: + type: array + items: + $ref: './Space.yaml' + included: + $ref: './IncludedResources.yaml' + description: Additional related resources included in the response when using the include parameter diff --git a/docs/openapi/apis/cf/latest/components/schemas/SpaceQuota.yaml b/docs/openapi/apis/cf/latest/components/schemas/SpaceQuota.yaml new file mode 100644 index 00000000000..f51caf4ca63 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/SpaceQuota.yaml @@ -0,0 +1,73 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' + - properties: + name: + type: string + description: Name of the space quota + apps: + type: object + properties: + total_memory_in_mb: + type: [integer, 'null'] + description: Total memory allowed for all apps in MB + per_process_memory_in_mb: + type: [integer, 'null'] + description: Maximum memory per process in MB + log_rate_limit_in_bytes_per_second: + type: [integer, 'null'] + description: Log rate limit in bytes per second + total_instances: + type: [integer, 'null'] + description: Total number of app instances allowed + per_app_tasks: + type: [integer, 'null'] + description: Maximum number of tasks per app + description: App limits for the space quota + services: + type: object + properties: + paid_services_allowed: + type: boolean + description: Whether paid services are allowed + total_service_instances: + type: [integer, 'null'] + description: Total number of service instances allowed + total_service_keys: + type: [integer, 'null'] + description: Total number of service keys allowed + description: Service limits for the space quota + routes: + type: object + properties: + total_routes: + type: [integer, 'null'] + description: Total number of routes allowed + total_reserved_ports: + type: [integer, 'null'] + description: Total number of reserved ports allowed + description: Route limits for the space quota + relationships: + type: object + properties: + organization: + $ref: './RelationshipToOne.yaml' + spaces: + $ref: './RelationshipToMany.yaml' + description: Relationships for the space quota + links: + type: object + properties: + self: + $ref: './Link.yaml' + organization: + $ref: './Link.yaml' + metadata: + $ref: './Metadata.yaml' + required: + - name + - apps + - services + - routes + - relationships + - links \ No newline at end of file diff --git a/docs/openapi/apis/cf/latest/components/schemas/SpaceQuotaList.yaml b/docs/openapi/apis/cf/latest/components/schemas/SpaceQuotaList.yaml new file mode 100644 index 00000000000..d8849c42e2d --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/SpaceQuotaList.yaml @@ -0,0 +1,8 @@ +type: object +properties: + pagination: + $ref: './Pagination.yaml' + resources: + type: array + items: + $ref: './SpaceQuota.yaml' diff --git a/docs/openapi/apis/cf/latest/components/schemas/SpaceQuotaUpdate.yaml b/docs/openapi/apis/cf/latest/components/schemas/SpaceQuotaUpdate.yaml new file mode 100644 index 00000000000..9cb34fe6b46 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/SpaceQuotaUpdate.yaml @@ -0,0 +1,49 @@ +type: object +properties: + name: + type: [string, "null"] + description: Name of the space quota + apps: + type: object + properties: + total_memory_in_mb: + type: [integer, "null"] + description: Total memory allowed for all apps in MB + per_process_memory_in_mb: + type: [integer, "null"] + description: Maximum memory per process in MB + log_rate_limit_in_bytes_per_second: + type: [integer, "null"] + description: Log rate limit in bytes per second + total_instances: + type: [integer, "null"] + description: Total number of app instances allowed + per_app_tasks: + type: [integer, "null"] + description: Maximum number of tasks per app + description: App limits for the space quota + services: + type: object + properties: + paid_services_allowed: + type: boolean + description: Whether paid services are allowed + total_service_instances: + type: [integer, "null"] + description: Total number of service instances allowed + total_service_keys: + type: [integer, "null"] + description: Total number of service keys allowed + description: Service limits for the space quota + routes: + type: object + properties: + total_routes: + type: [integer, "null"] + description: Total number of routes allowed + total_reserved_ports: + type: [integer, "null"] + description: Total number of reserved ports allowed + description: Route limits for the space quota + metadata: + $ref: ./Metadata.yaml diff --git a/docs/openapi/apis/cf/latest/components/schemas/Stack.yaml b/docs/openapi/apis/cf/latest/components/schemas/Stack.yaml new file mode 100644 index 00000000000..a26a0c1bd12 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/Stack.yaml @@ -0,0 +1,30 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' + - properties: + name: + type: string + description: Name of the stack + description: + type: [string, "null"] + description: Description of the stack + build_rootfs_image: + type: string + description: The filesystem root image for building + run_rootfs_image: + type: string + description: The filesystem root image for running + default: + type: boolean + description: Whether this is the default stack + links: + type: object + properties: + self: + $ref: './Link.yaml' + metadata: + $ref: './Metadata.yaml' + required: + - name + - description + - links diff --git a/docs/openapi/apis/cf/latest/components/schemas/StackList.yaml b/docs/openapi/apis/cf/latest/components/schemas/StackList.yaml new file mode 100644 index 00000000000..f6e95370b95 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/StackList.yaml @@ -0,0 +1,8 @@ +type: object +properties: + pagination: + $ref: './Pagination.yaml' + resources: + type: array + items: + $ref: './Stack.yaml' diff --git a/docs/openapi/apis/cf/latest/components/schemas/Task.yaml b/docs/openapi/apis/cf/latest/components/schemas/Task.yaml new file mode 100644 index 00000000000..7e6d97cc06d --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/Task.yaml @@ -0,0 +1,37 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' + - properties: + name: + type: string + command: + type: string + state: + type: string + enum: + - PENDING + - RUNNING + - SUCCEEDED + - FAILED + - CANCELING + sequence_id: + type: integer + memory_in_mb: + type: [integer, "null"] + disk_in_mb: + type: [integer, "null"] + droplet_guid: + type: string + result: + type: object + properties: + failure_reason: + type: [string, "null"] + metadata: + $ref: './Metadata.yaml' + links: + type: object + properties: + self: + $ref: './Link.yaml' +description: A task is a one-off process that can be run in the Cloud Foundry environment. diff --git a/docs/openapi/apis/cf/latest/components/schemas/TaskList.yaml b/docs/openapi/apis/cf/latest/components/schemas/TaskList.yaml new file mode 100644 index 00000000000..c4dd3ab148e --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/TaskList.yaml @@ -0,0 +1,8 @@ +type: object +properties: + pagination: + $ref: './Pagination.yaml' + resources: + type: array + items: + $ref: './Task.yaml' diff --git a/docs/openapi/apis/cf/latest/components/schemas/User.yaml b/docs/openapi/apis/cf/latest/components/schemas/User.yaml new file mode 100644 index 00000000000..6252481d2d2 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/User.yaml @@ -0,0 +1,30 @@ +type: object +properties: + guid: + type: string + description: Unique identifier for the user, matching either a UAA user id or client id. A client id may not be a uuid. + created_at: + type: string + format: date-time + description: The ISO8601 compatible date and time when resource was created + updated_at: + type: string + format: date-time + description: The ISO8601 compatible date and time when resource was last updated + username: + type: [string, "null"] + description: The username of the user + presentation_name: + type: string + description: The presentation name of the user + origin: + type: [string, "null"] + description: The origin of the user + metadata: + $ref: './Metadata.yaml' + links: + type: object + properties: + self: + $ref: './Link.yaml' + description: The URL to get this user \ No newline at end of file diff --git a/docs/openapi/apis/cf/latest/components/schemas/UserCreate.yaml b/docs/openapi/apis/cf/latest/components/schemas/UserCreate.yaml new file mode 100644 index 00000000000..d4005ee72d2 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/UserCreate.yaml @@ -0,0 +1,20 @@ +anyOf: + - type: object + properties: + guid: + type: string + description: Unique identifier for the user. For UAA users this will match the user ID of an existing UAA user's GUID; in the case of UAA clients, this will match the UAA client ID + metadata: + $ref: './Metadata.yaml' + required: [guid] + - type: object + properties: + username: + type: [string, "null"] + description: Username of the user to be created. This can only be provided together with origin + origin: + type: [string, "null"] + description: Origin of the user to be created. This can only be provided together with username and cannot be uaa + metadata: + $ref: './Metadata.yaml' + required: [username, origin] diff --git a/docs/openapi/apis/cf/latest/components/schemas/UserList.yaml b/docs/openapi/apis/cf/latest/components/schemas/UserList.yaml new file mode 100644 index 00000000000..5ccb83d62de --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/UserList.yaml @@ -0,0 +1,8 @@ +type: object +properties: + pagination: + $ref: './Pagination.yaml' + resources: + type: array + items: + $ref: './User.yaml' diff --git a/docs/openapi/apis/cf/latest/components/schemas/UserProvidedServiceInstance.yaml b/docs/openapi/apis/cf/latest/components/schemas/UserProvidedServiceInstance.yaml new file mode 100644 index 00000000000..59d2c135dd4 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/UserProvidedServiceInstance.yaml @@ -0,0 +1,51 @@ +type: object +allOf: + - $ref: './BaseSchema.yaml' + - properties: + type: + type: string + enum: + - user-provided + description: Type of service instance + name: + type: string + description: Name of the service instance + tags: + type: array + items: + type: string + description: Tags for the service instance + syslog_drain_url: + type: [string, "null"] + format: uri + description: URL for syslog drain + route_service_url: + type: [string, "null"] + format: uri + description: URL for route service + relationships: + type: object + properties: + space: + $ref: './RelationshipToOne.yaml' + description: Relationships for the service instance + links: + type: object + properties: + self: + $ref: './Link.yaml' + space: + $ref: './Link.yaml' + service_credential_bindings: + $ref: './Link.yaml' + service_route_bindings: + $ref: './Link.yaml' + credentials: + $ref: './Link.yaml' + metadata: + $ref: './Metadata.yaml' + required: + - type + - name + - relationships + - links \ No newline at end of file diff --git a/docs/openapi/apis/cf/latest/components/schemas/UserProvidedServiceInstanceUpdate.yaml b/docs/openapi/apis/cf/latest/components/schemas/UserProvidedServiceInstanceUpdate.yaml new file mode 100644 index 00000000000..9f980d74a55 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/UserProvidedServiceInstanceUpdate.yaml @@ -0,0 +1,24 @@ +type: object +properties: + name: + type: string + description: Name of the service instance + tags: + type: array + items: + type: string + description: Tags for the service instance + credentials: + type: object + description: Service credentials + syslog_drain_url: + type: [string, "null"] + format: uri + description: URL for syslog drain + route_service_url: + type: string + format: uri + description: URL for route service + metadata: + $ref: './Metadata.yaml' +description: Schema for updating a user-provided service instance diff --git a/docs/openapi/apis/cf/latest/components/schemas/UserRelationshipToOne.yaml b/docs/openapi/apis/cf/latest/components/schemas/UserRelationshipToOne.yaml new file mode 100644 index 00000000000..12e2fef85e9 --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/UserRelationshipToOne.yaml @@ -0,0 +1,30 @@ +type: [object, "null"] +properties: + data: + type: object + description: | + User relationship data that can be specified either by GUID or by username and origin. + When using username and origin, the set_roles_by_username feature flag must be enabled. + oneOf: + - type: object + properties: + guid: + type: string + description: The GUID of the user, matching either a UAA user id or client id. A client id may not be a uuid. + required: + - guid + additionalProperties: false + - type: object + properties: + username: + type: string + description: The username of the user + origin: + type: string + description: The identity provider for the user (e.g., 'ldap', 'saml'). Optional field to disambiguate the username. + required: + - username + additionalProperties: false + description: | + User relationship data that can be specified either by GUID or by username and origin. + Set to null to clear the relationship. \ No newline at end of file diff --git a/docs/openapi/apis/cf/latest/components/schemas/Warning.yaml b/docs/openapi/apis/cf/latest/components/schemas/Warning.yaml new file mode 100644 index 00000000000..4edb3d4cc1f --- /dev/null +++ b/docs/openapi/apis/cf/latest/components/schemas/Warning.yaml @@ -0,0 +1,5 @@ +type: object +properties: + detail: + type: string + description: Description of the warning diff --git a/docs/openapi/apis/cf/latest/openapi.yaml b/docs/openapi/apis/cf/latest/openapi.yaml new file mode 100644 index 00000000000..dcd3c9cbcb5 --- /dev/null +++ b/docs/openapi/apis/cf/latest/openapi.yaml @@ -0,0 +1,678 @@ +openapi: 3.1.0 +info: + title: Cloud Foundry V3 API + description: "# Welcome to the Experimental Cloud Foundry V3 API Docs! \n\n# Expermiental Warning\n This OpenAPI specification is a experiment and not ready for productive use.\n# Getting help\nThe CAPI team can most easily be reached on our Slack channel for questions and issues regarding the API. To report an issue with the docs or API, please feel free to file a GitHub issue on our API repo, cloud_controller_ng.\nWe recommend reaching out to Slack first as we will be most responsive there.\n \n# More resources\n- The Cloud Foundry V2 API is still deprecated but still available for interacting with Cloud Foundry.\n- Running Tasks\n- V3 API Documentation OpenAPI Spec Source Code. " + version: latest + license: + name: Apache 2.0 + url: https://www.apache.org/licenses/LICENSE-2.0.html + contact: + name: Cloud Foundry + url: https://www.cloudfoundry.org/ +tags: + - name: Admin + description: "Administrative operations for Cloud Foundry platform management." + - name: Apps + description: "Apps are top-level objects that link together and contain configuration information for your packages, droplets, processes, tasks, and more." + - name: App Usage Events + description: "App usage events are a record of changes in the usage of apps and tasks." + - name: Audit Events + description: "Audit events help Cloud Foundry operators monitor actions taken against resources (such as apps) via user or system actions." + - name: Builds + description: "Builds represent the process of staging an application package." + - name: Buildpacks + description: "Buildpacks are used during a build to download external dependencies and transform a package into an executable droplet." + - name: Deployments + description: "Deployments are objects that manage updates to applications with zero downtime." + - name: Domains + description: "Domains represent a fully qualified domain name that is used for application routes." + - name: Droplets + description: "Droplets are the result of staging an application package." + - name: Environment Variable Groups + description: "There are two types of environment variable groups: running and staging." + - name: Feature Flags + description: "Feature flags are runtime flags that enable or disable functionality on the API." + - name: Info + description: "Info endpoints expose Cloud Controller configuration information." + - name: Internal + description: "Internal endpoints for system monitoring and metrics." + - name: Isolation Segments + description: "Isolation Segments provide dedicated pools of resources to which apps can be deployed to isolate workloads." + - name: Jobs + description: "Jobs are created by the platform when performing certain asynchronous actions." + - name: Manifests + description: "A manifest is a method for applying bulk configurations to apps and their underlying processes." + - name: Organizations + description: "An org is a development account that an individual or multiple collaborators can own and use." + - name: Organization Quotas + description: "Organization quotas are named sets of memory, log rate, service, and instance usage quotas." + - name: Packages + description: "A package is an application’s ‘source code’; either raw bits for your application or a pointer to these bits." + - name: Processes + description: "Processes define the runnable units of an app." + - name: Resource Matches + description: "Resource Matches are used to determine if a resource has been previously uploaded to the Cloud Controller." + - name: Revisions + description: "Revisions represent code used by an application at a specific time." + - name: Roles + description: "Roles are used to control access to resources." + - name: Root + description: "Root API endpoints that provide entry points and API information." + - name: Routes + description: "Routes are used to map a URL to an app." + - name: Security Groups + description: "Security groups are used to control access to apps." + - name: Service Brokers + description: "Service brokers are used to manage services." + - name: Service Credential Bindings + description: "Service credential bindings are used to bind a service instance to an app." + - name: Service Instances + description: "Service instances are instances of a service." + - name: Service Offerings + description: "Service offerings are services that are available to be used." + - name: Service Plans + description: "Service plans are plans for a service." + - name: Service Route Bindings + description: "Service route bindings are used to bind a route to a service instance." + - name: Service Usage Events + description: "Service usage events are a record of changes in the usage of services." + - name: Sidecars + description: "Sidecars are used to run a process alongside an app." + - name: Spaces + description: "Spaces are used to group apps and services." + - name: Space Quotas + description: "Space quotas are named sets of memory, log rate, service, and instance usage quotas." + - name: Stacks + description: "Stacks are used to specify the operating system and runtime environment for an app." + - name: Tasks + description: "Tasks are one-off commands that can be run against an app." + - name: Users + description: "Users are the users of the Cloud Foundry platform." +security: + - oauth: + - cloud_controller.read + - cloud_controller.write +servers: + - url: https://api.example.local + description: Cloud Foundry V3 API server +components: + schemas: + BaseSchema: + $ref: './components/schemas/BaseSchema.yaml' + Relationships: + $ref: './components/schemas/Relationships.yaml' + Relationship: + $ref: './components/schemas/Relationship.yaml' + RelationshipToOne: + $ref: './components/schemas/RelationshipToOne.yaml' + RelationshipToMany: + $ref: './components/schemas/RelationshipToMany.yaml' + UserRelationshipToOne: + $ref: './components/schemas/UserRelationshipToOne.yaml' + IncludedResources: + $ref: './components/schemas/IncludedResources.yaml' + Link: + $ref: './components/schemas/Link.yaml' + Pagination: + $ref: './components/schemas/Pagination.yaml' + Metadata: + $ref: './components/schemas/Metadata.yaml' + Buildpack: + $ref: './components/schemas/Buildpack.yaml' + BuildpackList: + $ref: './components/schemas/BuildpackList.yaml' + User: + $ref: './components/schemas/User.yaml' + Droplet: + $ref: './components/schemas/Droplet.yaml' + DropletList: + $ref: './components/schemas/DropletList.yaml' + Lifecycle: + $ref: './components/schemas/Lifecycle.yaml' + Domain: + $ref: './components/schemas/Domain.yaml' + DomainList: + $ref: './components/schemas/DomainList.yaml' + EnvironmentVariableGroup: + $ref: './components/schemas/EnvironmentVariableGroup.yaml' + Deployment: + $ref: './components/schemas/Deployment.yaml' + DeploymentList: + $ref: './components/schemas/DeploymentList.yaml' + FeatureFlag: + $ref: './components/schemas/FeatureFlag.yaml' + FeatureFlagList: + $ref: './components/schemas/FeatureFlagList.yaml' + Build: + $ref: './components/schemas/Build.yaml' + BuildList: + $ref: './components/schemas/BuildList.yaml' + AuditEvent: + $ref: './components/schemas/AuditEvent.yaml' + AuditEventList: + $ref: './components/schemas/AuditEventList.yaml' + App: + $ref: './components/schemas/App.yaml' + AppList: + $ref: './components/schemas/AppList.yaml' + AppEnvironment: + $ref: './components/schemas/AppEnvironment.yaml' + AppEnvironmentVariables: + $ref: './components/schemas/AppEnvironmentVariables.yaml' + AppPermissions: + $ref: './components/schemas/AppPermissions.yaml' + AppSshEnabled: + $ref: './components/schemas/AppSshEnabled.yaml' + Route: + $ref: './components/schemas/Route.yaml' + RouteDestination: + $ref: './components/schemas/RouteDestination.yaml' + RouteDestinationList: + $ref: './components/schemas/RouteDestinationList.yaml' + Job: + $ref: './components/schemas/Job.yaml' + Error: + $ref: './components/schemas/Error.yaml' + Warning: + $ref: './components/schemas/Warning.yaml' + AppUsageEvent: + $ref: './components/schemas/AppUsageEvent.yaml' + AppUsageEventList: + $ref: './components/schemas/AppUsageEventList.yaml' + IsolationSegment: + $ref: './components/schemas/IsolationSegment.yaml' + IsolationSegmentList: + $ref: './components/schemas/IsolationSegmentList.yaml' + Organization: + $ref: './components/schemas/Organization.yaml' + OrganizationList: + $ref: './components/schemas/OrganizationList.yaml' + OrganizationQuota: + $ref: './components/schemas/OrganizationQuota.yaml' + OrganizationQuotaList: + $ref: './components/schemas/OrganizationQuotaList.yaml' + Package: + $ref: './components/schemas/Package.yaml' + PackageList: + $ref: './components/schemas/PackageList.yaml' + Process: + $ref: './components/schemas/Process.yaml' + ProcessList: + $ref: './components/schemas/ProcessList.yaml' + ProcessStats: + $ref: './components/schemas/ProcessStats.yaml' + SecurityGroup: + $ref: './components/schemas/SecurityGroup.yaml' + ServiceBroker: + $ref: './components/schemas/ServiceBroker.yaml' + AppCredentialBinding: + $ref: './components/schemas/AppCredentialBinding.yaml' + KeyCredentialBinding: + $ref: './components/schemas/KeyCredentialBinding.yaml' + ManagedServiceInstance: + $ref: './components/schemas/ManagedServiceInstance.yaml' + UserProvidedServiceInstance: + $ref: './components/schemas/UserProvidedServiceInstance.yaml' + ServicePlanVisibility: + $ref: './components/schemas/ServicePlanVisibility.yaml' + ServiceRouteBinding: + $ref: './components/schemas/ServiceRouteBinding.yaml' + Sidecar: + $ref: './components/schemas/Sidecar.yaml' + SpaceQuota: + $ref: './components/schemas/SpaceQuota.yaml' + Space: + $ref: './components/schemas/Space.yaml' + Stack: + $ref: './components/schemas/Stack.yaml' + securitySchemes: + oauth: + type: oauth2 + flows: + implicit: + authorizationUrl: https://uaa.cloudfoundry.local/api-oauth/dialog + scopes: + cloud_controller.admin: This scope provides read and write access to all resources + cloud_controller.admin_read_only: This scope provides read only access to all resources + cloud_controller.global_auditor: This scope provides read access to all resources + cloud_controller.read: Read access to the Cloud Controller + cloud_controller.write: Write access to the Cloud Controller + cloud_controller.update_build_state: This scope allows its bearer to update the state of a build; currently only used when updating builds + cloud_controller_service_permissions.read: This scope provides read only access for service instance permissions + bearer: + type: http + scheme: bearer + bearerFormat: JWT + description: Bearer JWT token authentication + parameters: + GUID: + $ref: './components/parameters/Guid.yaml' + guid: + $ref: './components/parameters/Guid.yaml' + Page: + $ref: './components/parameters/Page.yaml' + PerPage: + $ref: './components/parameters/PerPage.yaml' + OrderBy: + $ref: './components/parameters/OrderBy.yaml' + CreatedAts: + $ref: './components/parameters/CreatedAts.yaml' + UpdatedAts: + $ref: './components/parameters/UpdatedAts.yaml' + LabelSelector: + $ref: './components/parameters/LabelSelector.yaml' + responses: + Unauthorized: + $ref: './components/responses/Unauthorized.yaml' + Forbidden: + $ref: './components/responses/Forbidden.yaml' + BadRequest: + $ref: './components/responses/BadRequest.yaml' + NotFound: + $ref: './components/responses/NotFound.yaml' + 500: + $ref: './components/responses/500.yaml' + UnprocessableEntity: + $ref: './components/responses/UnprocessableEntity.yaml' + BuildpackCreateResponse: + $ref: './components/responses/BuildpackCreateResponse.yaml' + BuildpackGetResponse: + $ref: './components/responses/BuildpackGetResponse.yaml' + UserCreateResponse: + $ref: './components/responses/UserCreateResponse.yaml' + UserUpdateResponse: + $ref: './components/responses/UserUpdateResponse.yaml' + DropletCreateResponse: + $ref: './components/responses/DropletCreateResponse.yaml' + DropletGetResponse: + $ref: './components/responses/DropletGetResponse.yaml' + RouteCreateResponse: + $ref: './components/responses/RouteCreateResponse.yaml' + RouteListResponse: + $ref: './components/responses/RouteListResponse.yaml' + RoleCreateResponse: + $ref: './components/responses/RoleCreateResponse.yaml' + RoleGetResponse: + $ref: './components/responses/RoleGetResponse.yaml' + RoleListResponse: + $ref: './components/responses/RoleListResponse.yaml' + requestBodies: + AppCreateRequestBody: + $ref: './components/requestBodies/AppCreateRequestBody.yaml' + AppUpdateRequestBody: + $ref: './components/requestBodies/AppUpdateRequestBody.yaml' + BuildCreateRequestBody: + $ref: './components/requestBodies/BuildCreateRequestBody.yaml' + BuildpackCreateRequestBody: + $ref: './components/requestBodies/BuildpackCreateRequestBody.yaml' + BuildpackUpdateRequestBody: + $ref: './components/requestBodies/BuildpackUpdateRequestBody.yaml' + DomainCreateRequestBody: + $ref: './components/requestBodies/DomainCreateRequestBody.yaml' + DomainUpdateRequestBody: + $ref: './components/requestBodies/DomainUpdateRequestBody.yaml' + DropletCreateRequestBody: + $ref: './components/requestBodies/DropletCreateRequestBody.yaml' + IsolationSegmentCreate: + $ref: './components/requestBodies/IsolationSegmentCreate.yaml' + OrganizationCreateRequestBody: + $ref: './components/requestBodies/OrganizationCreateRequestBody.yaml' + OrganizationUpdateRequestBody: + $ref: './components/requestBodies/OrganizationUpdateRequestBody.yaml' + OrganizationQuotaCreateRequestBody: + $ref: './components/requestBodies/OrganizationQuotaCreateRequestBody.yaml' + OrganizationQuotaUpdateRequestBody: + $ref: './components/requestBodies/OrganizationQuotaUpdateRequestBody.yaml' + PackageCreateRequestBody: + $ref: './components/requestBodies/PackageCreateRequestBody.yaml' + PackageUpdateRequestBody: + $ref: './components/requestBodies/PackageUpdateRequestBody.yaml' + PackageUploadRequestBody: + $ref: './components/requestBodies/PackageUploadRequestBody.yaml' + ProcessUpdateRequestBody: + $ref: './components/requestBodies/ProcessUpdateRequestBody.yaml' + RoleCreate: + $ref: './components/requestBodies/RoleCreate.yaml' + RouteCreateRequestBody: + $ref: './components/requestBodies/RouteCreateRequestBody.yaml' + RouteDestinations: + $ref: './components/requestBodies/RouteDestinations.yaml' + SpaceCreateRequestBody: + $ref: './components/requestBodies/SpaceCreateRequestBody.yaml' + SpaceUpdateRequestBody: + $ref: './components/requestBodies/SpaceUpdateRequestBody.yaml' + TaskCreateRequestBody: + $ref: './components/requestBodies/TaskCreateRequestBody.yaml' + UserCreate: + $ref: './components/requestBodies/UserCreate.yaml' + UserUpdate: + $ref: './components/requestBodies/UserUpdate.yaml' + ServiceBrokerCreate: + $ref: './components/requestBodies/ServiceBrokerCreate.yaml' + SpaceQuotaCreate: + $ref: './components/requestBodies/SpaceQuotaCreate.yaml' + SpaceQuotaUpdate: + $ref: './components/requestBodies/SpaceQuotaUpdate.yaml' + UserProvidedServiceInstanceUpdate: + $ref: './components/requestBodies/UserProvidedServiceInstanceUpdate.yaml' + ManagedServiceInstanceUpdate: + $ref: './components/requestBodies/ManagedServiceInstanceUpdate.yaml' + SidecarCreate: + $ref: './components/requestBodies/SidecarCreate.yaml' +paths: + /: + $ref: './paths/Root.yaml#/' + /v3: + $ref: './paths/V3.yaml#/' + /v3/admin/actions/clear_buildpack_cache: + $ref: './paths/AdminClearBuildpackCache.yaml#/' + /v3/apps: + $ref: './paths/Apps.yaml#/~1v3~1apps' + /v3/apps/{guid}: + $ref: './paths/Apps.yaml#/~1v3~1apps~1{guid}' + /v3/apps/{guid}/actions/start: + $ref: './paths/Apps.yaml#/~1v3~1apps~1{guid}~1actions~1start' + /v3/apps/{guid}/actions/stop: + $ref: './paths/Apps.yaml#/~1v3~1apps~1{guid}~1actions~1stop' + /v3/apps/{guid}/actions/restart: + $ref: './paths/Apps.yaml#/~1v3~1apps~1{guid}~1actions~1restart' + /v3/apps/{guid}/droplets: + $ref: './paths/Apps.yaml#/~1v3~1apps~1{guid}~1droplets' + /v3/apps/{guid}/droplets/current: + $ref: './paths/Apps.yaml#/~1v3~1apps~1{guid}~1droplets~1current' + /v3/apps/{guid}/relationships/current_droplet: + $ref: './paths/Apps.yaml#/~1v3~1apps~1{guid}~1relationships~1current_droplet' + /v3/app_usage_events: + $ref: './paths/AppUsageEvents.yaml#/~1v3~1app_usage_events' + /v3/app_usage_events/{guid}: + $ref: './paths/AppUsageEvents.yaml#/~1v3~1app_usage_events~1{guid}' + /v3/app_usage_events/actions/destructively_purge_all_and_reseed: + $ref: './paths/AppUsageEvents.yaml#/~1v3~1app_usage_events~1actions~1destructively_purge_all_and_reseed' + /v3/audit_events: + $ref: './paths/AuditEvents.yaml#/~1v3~1audit_events' + /v3/audit_events/{guid}: + $ref: './paths/AuditEvents.yaml#/~1v3~1audit_events~1{guid}' + /v3/builds: + $ref: './paths/Builds.yaml#/~1v3~1builds' + /v3/builds/{guid}: + $ref: './paths/Builds.yaml#/~1v3~1builds~1{guid}' + /v3/buildpacks: + $ref: './paths/Buildpacks.yaml#/~1v3~1buildpacks' + /v3/buildpacks/{guid}: + $ref: './paths/Buildpacks.yaml#/~1v3~1buildpacks~1{guid}' + /v3/buildpacks/{guid}/upload: + $ref: './paths/Buildpacks.yaml#/~1v3~1buildpacks~1{guid}~1upload' + /v3/deployments: + $ref: './paths/Deployments.yaml#/~1v3~1deployments' + /v3/deployments/{guid}: + $ref: './paths/Deployments.yaml#/~1v3~1deployments~1{guid}' + /v3/deployments/{guid}/actions/cancel: + $ref: './paths/Deployments.yaml#/~1v3~1deployments~1{guid}~1actions~1cancel' + /v3/deployments/{guid}/actions/continue: + $ref: './paths/Deployments.yaml#/~1v3~1deployments~1{guid}~1actions~1continue' + /v3/domains: + $ref: './paths/Domains.yaml#/~1v3~1domains' + /v3/domains/{guid}: + $ref: './paths/Domains.yaml#/~1v3~1domains~1{guid}' + /v3/domains/{guid}/relationships/shared_organizations: + $ref: './paths/Domains.yaml#/~1v3~1domains~1{guid}~1relationships~1shared_organizations' + /v3/domains/{guid}/relationships/shared_organizations/{org_guid}: + $ref: './paths/Domains.yaml#/~1v3~1domains~1{guid}~1relationships~1shared_organizations~1{org_guid}' + /v3/droplets: + $ref: './paths/Droplets.yaml#/~1v3~1droplets' + /v3/droplets/{guid}: + $ref: './paths/Droplets.yaml#/~1v3~1droplets~1{guid}' + /v3/droplets/{guid}/download: + $ref: './paths/Droplets.yaml#/~1v3~1droplets~1{guid}~1download' + /v3/droplets/{guid}/upload: + $ref: './paths/Droplets.yaml#/~1v3~1droplets~1{guid}~1upload' + /v3/environment_variable_groups/{name}: + $ref: './paths/EnvironmentVariableGroups.yaml#/~1v3~1environment_variable_groups~1{name}' + /v3/feature_flags: + $ref: './paths/FeatureFlags.yaml#/~1v3~1feature_flags' + /v3/feature_flags/{name}: + $ref: './paths/FeatureFlags.yaml#/~1v3~1feature_flags~1{name}' + /v3/info: + $ref: './paths/Info.yaml#/~1v3~1info' + /v3/info/usage_summary: + $ref: './paths/Info.yaml#/~1v3~1info~1usage_summary' + /v3/isolation_segments: + $ref: './paths/IsolationSegments.yaml#/~1v3~1isolation_segments' + /v3/isolation_segments/{guid}: + $ref: './paths/IsolationSegments.yaml#/~1v3~1isolation_segments~1{guid}' + /v3/isolation_segments/{guid}/relationships/organizations: + $ref: './paths/IsolationSegments.yaml#/~1v3~1isolation_segments~1{guid}~1relationships~1organizations' + /v3/isolation_segments/{guid}/relationships/organizations/{org_guid}: + $ref: './paths/IsolationSegments.yaml#/~1v3~1isolation_segments~1{guid}~1relationships~1organizations~1{org_guid}' + /v3/isolation_segments/{guid}/relationships/spaces: + $ref: './paths/IsolationSegments.yaml#/~1v3~1isolation_segments~1{guid}~1relationships~1spaces' + /v3/isolation_segments/{guid}/organizations: + $ref: './paths/IsolationSegments.yaml#/~1v3~1isolation_segments~1{guid}~1organizations' + /v3/jobs/{guid}: + $ref: './paths/Jobs.yaml#/~1v3~1jobs~1{guid}' + /v3/resource_matches: + $ref: './paths/ResourceMatches.yaml#/~1v3~1resource_matches' + /v3/revisions/{guid}: + $ref: './paths/Revisions.yaml#/~1v3~1revisions~1{guid}' + /v3/revisions/{guid}/environment_variables: + $ref: './paths/Revisions.yaml#/~1v3~1revisions~1{guid}~1environment_variables' + /v3/apps/{guid}/revisions: + $ref: './paths/Revisions.yaml#/~1v3~1apps~1{guid}~1revisions' + /v3/apps/{guid}/revisions/deployed: + $ref: './paths/Revisions.yaml#/~1v3~1apps~1{guid}~1revisions~1deployed' + /v3/roles: + $ref: './paths/Roles.yaml#/~1v3~1roles' + /v3/roles/{guid}: + $ref: './paths/Roles.yaml#/~1v3~1roles~1{guid}' + /v3/routes: + $ref: './paths/Routes.yaml#/~1v3~1routes' + /v3/routes/{guid}/destinations: + $ref: './paths/Routes.yaml#/~1v3~1routes~1{guid}~1destinations' + /v3/routes/{guid}/destinations/{destination_guid}: + $ref: './paths/Routes.yaml#/~1v3~1routes~1{guid}~1destinations~1{destination_guid}' + /v3/security_groups: + $ref: './paths/SecurityGroups.yaml#/~1v3~1security_groups' + /v3/security_groups/{guid}: + $ref: './paths/SecurityGroups.yaml#/~1v3~1security_groups~1{guid}' + /v3/security_groups/{guid}/relationships/running_spaces: + $ref: './paths/SecurityGroups.yaml#/~1v3~1security_groups~1{guid}~1relationships~1running_spaces' + /v3/security_groups/{guid}/relationships/running_spaces/{space_guid}: + $ref: './paths/SecurityGroups.yaml#/~1v3~1security_groups~1{guid}~1relationships~1running_spaces~1{space_guid}' + /v3/security_groups/{guid}/relationships/staging_spaces: + $ref: './paths/SecurityGroups.yaml#/~1v3~1security_groups~1{guid}~1relationships~1staging_spaces' + /v3/security_groups/{guid}/relationships/staging_spaces/{space_guid}: + $ref: './paths/SecurityGroups.yaml#/~1v3~1security_groups~1{guid}~1relationships~1staging_spaces~1{space_guid}' + /v3/service_brokers: + $ref: './paths/ServiceBrokers.yaml#/~1v3~1service_brokers' + /v3/service_brokers/{guid}: + $ref: './paths/ServiceBrokers.yaml#/~1v3~1service_brokers~1{guid}' + /v3/service_credential_bindings: + $ref: './paths/ServiceCredentialBindings.yaml#/~1v3~1service_credential_bindings' + /v3/service_credential_bindings/{guid}: + $ref: './paths/ServiceCredentialBindings.yaml#/~1v3~1service_credential_bindings~1{guid}' + /v3/service_credential_bindings/{guid}/details: + $ref: './paths/ServiceCredentialBindings.yaml#/~1v3~1service_credential_bindings~1{guid}~1details' + /v3/service_credential_bindings/{guid}/parameters: + $ref: './paths/ServiceCredentialBindings.yaml#/~1v3~1service_credential_bindings~1{guid}~1parameters' + /v3/service_instances: + $ref: './paths/ServiceInstances.yaml#/~1v3~1service_instances' + /v3/service_instances/{guid}: + $ref: './paths/ServiceInstances.yaml#/~1v3~1service_instances~1{guid}' + /v3/service_offerings: + $ref: './paths/ServiceOfferings.yaml#/~1v3~1service_offerings' + /v3/service_offerings/{guid}: + $ref: './paths/ServiceOfferings.yaml#/~1v3~1service_offerings~1{guid}' + /v3/service_plans: + $ref: './paths/ServicePlans.yaml#/~1v3~1service_plans' + /v3/service_plans/{guid}: + $ref: './paths/ServicePlans.yaml#/~1v3~1service_plans~1{guid}' + /v3/service_plans/{guid}/visibility: + $ref: './paths/ServicePlans.yaml#/~1v3~1service_plans~1{guid}~1visibility' + /v3/service_plans/{guid}/visibility/{organization_guid}: + $ref: './paths/ServicePlans.yaml#/~1v3~1service_plans~1{guid}~1visibility~1{organization_guid}' + /v3/service_route_bindings: + $ref: './paths/ServiceRouteBindings.yaml#/~1v3~1service_route_bindings' + /v3/service_route_bindings/{guid}: + $ref: './paths/ServiceRouteBindings.yaml#/~1v3~1service_route_bindings~1{guid}' + /v3/service_route_bindings/{guid}/parameters: + $ref: './paths/ServiceRouteBindings.yaml#/~1v3~1service_route_bindings~1{guid}~1parameters' + /v3/service_usage_events: + $ref: './paths/ServiceUsageEvents.yaml#/~1v3~1service_usage_events' + /v3/service_usage_events/{guid}: + $ref: './paths/ServiceUsageEvents.yaml#/~1v3~1service_usage_events~1{guid}' + /v3/service_usage_events/actions/destructively_purge_all_and_reseed: + $ref: './paths/ServiceUsageEvents.yaml#/~1v3~1service_usage_events~1actions~1destructively_purge_all_and_reseed' + /v3/sidecars/{guid}: + $ref: './paths/Sidecars.yaml#/~1v3~1sidecars~1{guid}' + /v3/apps/{guid}/sidecars: + $ref: './paths/Sidecars.yaml#/~1v3~1apps~1{guid}~1sidecars' + /v3/spaces: + $ref: './paths/Spaces.yaml#/~1v3~1spaces' + /v3/spaces/{guid}: + $ref: './paths/Spaces.yaml#/~1v3~1spaces~1{guid}' + /v3/spaces/{guid}/actions/apply_manifest: + $ref: './paths/Spaces.yaml#/~1v3~1spaces~1{guid}~1actions~1apply_manifest' + /v3/spaces/{guid}/features: + $ref: './paths/Spaces.yaml#/~1v3~1spaces~1{guid}~1features' + /v3/spaces/{guid}/features/{name}: + $ref: './paths/Spaces.yaml#/~1v3~1spaces~1{guid}~1features~1{name}' + /v3/spaces/{guid}/manifest_diff: + $ref: './paths/Spaces.yaml#/~1v3~1spaces~1{guid}~1manifest_diff' + /v3/spaces/{guid}/relationships/isolation_segment: + $ref: './paths/Spaces.yaml#/~1v3~1spaces~1{guid}~1relationships~1isolation_segment' + /v3/spaces/{guid}/routes: + $ref: './paths/Spaces.yaml#/~1v3~1spaces~1{guid}~1routes' + /v3/spaces/{guid}/usage_summary: + $ref: './paths/Spaces.yaml#/~1v3~1spaces~1{guid}~1usage_summary' + /v3/spaces/{guid}/running_security_groups: + $ref: './paths/Spaces.yaml#/~1v3~1spaces~1{guid}~1running_security_groups' + /v3/spaces/{guid}/staging_security_groups: + $ref: './paths/Spaces.yaml#/~1v3~1spaces~1{guid}~1staging_security_groups' + /v3/spaces/{guid}/users: + $ref: './paths/Spaces.yaml#/~1v3~1spaces~1{guid}~1users' + /v3/space_quotas: + $ref: './paths/SpaceQuotas.yaml#/~1v3~1space_quotas' + /v3/space_quotas/{guid}: + $ref: './paths/SpaceQuotas.yaml#/~1v3~1space_quotas~1{guid}' + /v3/space_quotas/{quota_guid}/relationships/spaces: + $ref: './paths/SpaceQuotas.yaml#/~1v3~1space_quotas~1{quota_guid}~1relationships~1spaces' + /v3/space_quotas/{guid}/relationships/spaces/{space_guid}: + $ref: './paths/SpaceQuotas.yaml#/~1v3~1space_quotas~1{guid}~1relationships~1spaces~1{space_guid}' + /v3/stacks: + $ref: './paths/Stacks.yaml#/~1v3~1stacks' + /v3/stacks/{guid}: + $ref: './paths/Stacks.yaml#/~1v3~1stacks~1{guid}' + /v3/stacks/{guid}/apps: + $ref: './paths/Stacks.yaml#/~1v3~1stacks~1{guid}~1apps' + /v3/tasks: + $ref: './paths/Tasks.yaml#/~1v3~1tasks' + /v3/tasks/{guid}: + $ref: './paths/Tasks.yaml#/~1v3~1tasks~1{guid}' + /v3/tasks/{guid}/actions/cancel: + $ref: './paths/Tasks.yaml#/~1v3~1tasks~1{guid}~1actions~1cancel' + /v3/tasks/{guid}/cancel: + $ref: './paths/Tasks.yaml#/~1v3~1tasks~1{guid}~1cancel' + /v3/users: + $ref: './paths/Users.yaml#/~1v3~1users' + /v3/users/{guid}: + $ref: './paths/Users.yaml#/~1v3~1users~1{guid}' + /v3/organizations: + $ref: './paths/Organizations.yaml#/~1v3~1organizations' + /v3/organizations/{guid}: + $ref: './paths/Organizations.yaml#/~1v3~1organizations~1{guid}' + /v3/organizations/{guid}/domains/default: + $ref: './paths/Organizations.yaml#/~1v3~1organizations~1{guid}~1domains~1default' + /v3/organizations/{guid}/usage_summary: + $ref: './paths/Organizations.yaml#/~1v3~1organizations~1{guid}~1usage_summary' + /v3/organizations/{guid}/users: + $ref: './paths/Organizations.yaml#/~1v3~1organizations~1{guid}~1users' + /v3/organizations/{guid}/relationships/default_isolation_segment: + $ref: './paths/Organizations.yaml#/~1v3~1organizations~1{guid}~1relationships~1default_isolation_segment' + /v3/organization_quotas: + $ref: './paths/OrganizationQuotas.yaml#/~1v3~1organization_quotas' + /v3/organization_quotas/{guid}: + $ref: './paths/OrganizationQuotas.yaml#/~1v3~1organization_quotas~1{guid}' + /v3/organization_quotas/{quota_guid}/relationships/organizations: + $ref: './paths/OrganizationQuotas.yaml#/~1v3~1organization_quotas~1{quota_guid}~1relationships~1organizations' + /v3/packages: + $ref: './paths/Packages.yaml#/~1v3~1packages' + /v3/packages/{guid}: + $ref: './paths/Packages.yaml#/~1v3~1packages~1{guid}' + /v3/packages/{guid}/droplets: + $ref: './paths/Packages.yaml#/~1v3~1packages~1{guid}~1droplets' + /v3/apps/{guid}/packages: + $ref: './paths/Packages.yaml#/~1v3~1apps~1{guid}~1packages' + /v3/packages/{guid}/upload: + $ref: './paths/Packages.yaml#/~1v3~1packages~1{guid}~1upload' + /v3/packages/{guid}/download: + $ref: './paths/Packages.yaml#/~1v3~1packages~1{guid}~1download' + /v3/processes: + $ref: './paths/Processes.yaml#/~1v3~1processes' + /v3/processes/{guid}: + $ref: './paths/Processes.yaml#/~1v3~1processes~1{guid}' + /v3/processes/{guid}/process_instances: + $ref: './paths/Processes.yaml#/~1v3~1processes~1{guid}~1process_instances' + /v3/processes/{guid}/stats: + $ref: './paths/Processes.yaml#/~1v3~1processes~1{guid}~1stats' + /v3/processes/{guid}/actions/scale: + $ref: './paths/Processes.yaml#/~1v3~1processes~1{guid}~1actions~1scale' + /v3/processes/{guid}/instances/{index}: + $ref: './paths/Processes.yaml#/~1v3~1processes~1{guid}~1instances~1{index}' + /v3/apps/{guid}/processes: + $ref: './paths/Processes.yaml#/~1v3~1apps~1{guid}~1processes' + /v3/apps/{guid}/processes/{type}: + $ref: './paths/Processes.yaml#/~1v3~1apps~1{guid}~1processes~1{type}' + /v3/apps/{guid}/processes/{type}/stats: + $ref: './paths/Processes.yaml#/~1v3~1apps~1{guid}~1processes~1{type}~1stats' + /v3/apps/{guid}/processes/{type}/actions/scale: + $ref: './paths/Processes.yaml#/~1v3~1apps~1{guid}~1processes~1{type}~1actions~1scale' + /v3/apps/{guid}/processes/{type}/instances/{index}: + $ref: './paths/Processes.yaml#/~1v3~1apps~1{guid}~1processes~1{type}~1instances~1{index}' + /v3/apps/{guid}/manifest: + $ref: './paths/Manifests.yaml#/~1v3~1apps~1{guid}~1manifest' + /v3/apps/{guid}/builds: + $ref: './paths/Builds.yaml#/~1v3~1apps~1{guid}~1builds' + /v3/apps/{guid}/tasks: + $ref: './paths/Tasks.yaml#/~1v3~1apps~1{guid}~1tasks' + /v3/apps/{guid}/actions/clear_buildpack_cache: + $ref: './paths/Apps.yaml#/~1v3~1apps~1{guid}~1actions~1clear_buildpack_cache' + /v3/apps/{guid}/env: + $ref: './paths/Apps.yaml#/~1v3~1apps~1{guid}~1env' + /v3/apps/{guid}/environment_variables: + $ref: './paths/Apps.yaml#/~1v3~1apps~1{guid}~1environment_variables' + /v3/apps/{guid}/features: + $ref: './paths/Apps.yaml#/~1v3~1apps~1{guid}~1features' + /v3/apps/{guid}/features/{name}: + $ref: './paths/Apps.yaml#/~1v3~1apps~1{guid}~1features~1{name}' + /v3/apps/{guid}/permissions: + $ref: './paths/Apps.yaml#/~1v3~1apps~1{guid}~1permissions' + /v3/apps/{guid}/routes: + $ref: './paths/Routes.yaml#/~1v3~1apps~1{guid}~1routes' + /v3/apps/{guid}/ssh_enabled: + $ref: './paths/Apps.yaml#/~1v3~1apps~1{guid}~1ssh_enabled' + /v3/domains/{guid}/route_reservations: + $ref: './paths/Domains.yaml#/~1v3~1domains~1{guid}~1route_reservations' + /v3/organizations/{guid}/domains: + $ref: './paths/Domains.yaml#/~1v3~1organizations~1{guid}~1domains' + /v3/processes/{guid}/sidecars: + $ref: './paths/Sidecars.yaml#/~1v3~1processes~1{guid}~1sidecars' + /v3/routes/{guid}: + $ref: './paths/Routes.yaml#/~1v3~1routes~1{guid}' + /v3/routes/{guid}/relationships/shared_spaces: + $ref: './paths/Routes.yaml#/~1v3~1routes~1{guid}~1relationships~1shared_spaces' + /v3/routes/{guid}/relationships/shared_spaces/{space_guid}: + $ref: './paths/Routes.yaml#/~1v3~1routes~1{guid}~1relationships~1shared_spaces~1{space_guid}' + /v3/routes/{guid}/relationships/space: + $ref: './paths/Routes.yaml#/~1v3~1routes~1{guid}~1relationships~1space' + /v3/service_instances/{guid}/credentials: + $ref: './paths/ServiceInstances.yaml#/~1v3~1service_instances~1{guid}~1credentials' + /v3/service_instances/{guid}/parameters: + $ref: './paths/ServiceInstances.yaml#/~1v3~1service_instances~1{guid}~1parameters' + /v3/service_instances/{guid}/permissions: + $ref: './paths/ServiceInstances.yaml#/~1v3~1service_instances~1{guid}~1permissions' + /v3/service_instances/{guid}/relationships/shared_spaces: + $ref: './paths/ServiceInstances.yaml#/~1v3~1service_instances~1{guid}~1relationships~1shared_spaces' + /v3/service_instances/{guid}/relationships/shared_spaces/usage_summary: + $ref: './paths/ServiceInstances.yaml#/~1v3~1service_instances~1{guid}~1relationships~1shared_spaces~1usage_summary' + /v3/service_instances/{guid}/relationships/shared_spaces/{space_guid}: + $ref: './paths/ServiceInstances.yaml#/~1v3~1service_instances~1{guid}~1relationships~1shared_spaces~1{space_guid}' diff --git a/docs/openapi/apis/cf/latest/paths/AdminClearBuildpackCache.yaml b/docs/openapi/apis/cf/latest/paths/AdminClearBuildpackCache.yaml new file mode 100644 index 00000000000..53fffbc273c --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/AdminClearBuildpackCache.yaml @@ -0,0 +1,21 @@ +post: + summary: Clear the buildpack cache + description: This endpoint will delete all of the existing buildpack caches in the blobstore. The buildpack cache is used during staging by buildpacks as a way to cache certain resources, e.g. downloaded Ruby gems. An admin who wants to decrease the size of their blobstore could use this endpoint to delete unnecessary blobs. + operationId: clearBuildpackCache + tags: + - Admin + responses: + '202': + description: Accepted + headers: + Location: + description: URL of the job that is clearing the buildpack cache + schema: + type: string + format: uri + '401': + $ref: '../components/responses/Unauthorized.yaml' + '403': + $ref: '../components/responses/Forbidden.yaml' + '404': + $ref: '../components/responses/NotFound.yaml' diff --git a/docs/openapi/apis/cf/latest/paths/AppUsageEvents.yaml b/docs/openapi/apis/cf/latest/paths/AppUsageEvents.yaml new file mode 100644 index 00000000000..754297f1114 --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/AppUsageEvents.yaml @@ -0,0 +1,185 @@ +/v3/app_usage_events: + get: + summary: List app usage events + description: Retrieve all app usage events. + operationId: listAppUsageEvents + tags: + - App Usage Events + parameters: + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - name: after_guid + in: query + schema: + type: string + description: Filters out events before and including the event with the given guid + - name: guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of usage event guids to filter by + - $ref: ../components/parameters/CreatedAts.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AppUsageEventList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 2 + total_pages: 2 + first: + href: https://api.example.org<%= path %>?page=1&per_page=1 + last: + href: https://api.example.org<%= path %>?page=2&per_page=1 + next: + href: https://api.example.org<%= path %>?page=2&per_page=1 + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2020-05-28T16:41:23Z' + updated_at: '2020-05-28T16:41:26Z' + state: + current: STARTED + previous: STOPPED + app: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: name-1982 + process: + guid: 123e4567-e89b-12d3-a456-426614174000 + type: type-1983 + space: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: name-1664 + organization: + guid: 123e4567-e89b-12d3-a456-426614174000 + buildpack: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: label-64 + task: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: name-2929 + memory_in_mb_per_instance: + current: 512 + previous: 256 + instance_count: + current: 10 + previous: 5 + links: + self: + href: https://api.example.org/v3/app_usage_events/a595fe2f-01ff-4965-a50c-290258ab8582 + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/app_usage_events/{guid}: + get: + summary: Get an app usage event + description: Retrieve a specific app usage event. + operationId: getAppUsageEvent + tags: + - App Usage Events + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AppUsageEvent.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2020-05-28T16:41:23Z' + updated_at: '2020-05-28T16:41:26Z' + state: + current: STARTED + previous: STOPPED + app: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: name-1982 + process: + guid: 123e4567-e89b-12d3-a456-426614174000 + type: type-1983 + space: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: name-1664 + organization: + guid: 123e4567-e89b-12d3-a456-426614174000 + buildpack: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: label-64 + task: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: name-2929 + memory_in_mb_per_instance: + current: 512 + previous: 256 + instance_count: + current: 10 + previous: 5 + links: + self: + href: https://api.example.org/v3/app_usage_events/a595fe2f-01ff-4965-a50c-290258ab8582 + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/app_usage_events/actions/destructively_purge_all_and_reseed: + post: + summary: Purge and seed app usage events + description: |- + Destroys all existing events. Populates new usage events, one for each + started app. All populated events will have a created_at value of + current time. There is the potential race condition if apps are + currently being started, stopped, or scaled. The seeded usage events + will have the same guid as the app. + operationId: purgeAndSeedAppUsageEvents + tags: + - App Usage Events + responses: + '200': + description: OK + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml diff --git a/docs/openapi/apis/cf/latest/paths/Apps.yaml b/docs/openapi/apis/cf/latest/paths/Apps.yaml new file mode 100644 index 00000000000..193319a8f62 --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/Apps.yaml @@ -0,0 +1,1375 @@ +/v3/apps: + get: + summary: List apps + description: Retrieve all apps the user has access to. + operationId: listApps + tags: + - Apps + parameters: + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + - $ref: ../components/parameters/LabelSelector.yaml + - name: guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of app GUIDs to filter by + - name: names + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of app names to filter by + - name: space_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of space GUIDs to filter by + - name: organization_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of organization GUIDs to filter by + - name: stacks + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of stack names to filter by + - name: lifecycle_type + in: query + schema: + type: string + enum: + - buildpack + - cnb + - docker + description: Lifecycle type to filter by + - name: include + in: query + schema: + type: array + items: + type: string + enum: + - space + - space.organization + description: Optionally include a list of unique related resources in the response + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AppList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 3 + total_pages: 2 + first: + href: https://api.example.org?page=1&per_page=2 + last: + href: https://api.example.org?page=2&per_page=2 + next: + href: https://api.example.org?page=2&per_page=2 + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + name: my_app + state: STARTED + created_at: '2016-03-17T21:41:30Z' + updated_at: '2016-03-18T11:32:30Z' + lifecycle: + type: buildpack + data: + buildpacks: + - java_buildpack + stack: cflinuxfs4 + relationships: + space: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + current_droplet: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446 + space: + href: https://api.example.org/v3/spaces/2f35885d-0c9d-4423-83ad-fd05066f8576 + processes: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/processes + packages: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/packages + environment_variables: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/environment_variables + current_droplet: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/droplets/current + droplets: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/droplets + tasks: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/tasks + start: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/actions/start + method: POST + stop: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/actions/stop + method: POST + revisions: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/revisions + deployed_revisions: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/revisions/deployed + features: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/features + metadata: + labels: {} + annotations: {} + - guid: 123e4567-e89b-12d3-a456-426614174000 + name: my_app2 + state: STOPPED + created_at: '1970-01-01T00:00:02Z' + updated_at: '2016-06-08T16:41:26Z' + lifecycle: + type: buildpack + data: + buildpacks: + - ruby_buildpack + stack: cflinuxfs4 + relationships: + space: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + droplet: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/02b4ec9b-94c7-4468-9c23-4e906191a0f8 + space: + href: https://api.example.org/v3/spaces/2f35885d-0c9d-4423-83ad-fd05066f8576 + processes: + href: https://api.example.org/02b4ec9b-94c7-4468-9c23-4e906191a0f8/processes + packages: + href: https://api.example.org/02b4ec9b-94c7-4468-9c23-4e906191a0f8/packages + environment_variables: + href: https://api.example.org/02b4ec9b-94c7-4468-9c23-4e906191a0f8/environment_variables + current_droplet: + href: https://api.example.org/02b4ec9b-94c7-4468-9c23-4e906191a0f8/droplets/current + droplets: + href: https://api.example.org/02b4ec9b-94c7-4468-9c23-4e906191a0f8/droplets + tasks: + href: https://api.example.org/02b4ec9b-94c7-4468-9c23-4e906191a0f8/tasks + start: + href: https://api.example.org/02b4ec9b-94c7-4468-9c23-4e906191a0f8/actions/start + method: POST + stop: + href: https://api.example.org/02b4ec9b-94c7-4468-9c23-4e906191a0f8/actions/stop + method: POST + revisions: + href: https://api.example.org//02b4ec9b-94c7-4468-9c23-4e906191a0f8/revisions + deployed_revisions: + href: https://api.example.org//02b4ec9b-94c7-4468-9c23-4e906191a0f8/revisions/deployed + features: + href: https://api.example.org//02b4ec9b-94c7-4468-9c23-4e906191a0f8/features + metadata: + labels: {} + annotations: {} + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + post: + summary: Create an app + description: Creates a new app. + operationId: createApp + tags: + - Apps + requestBody: + $ref: ../components/requestBodies/AppCreateRequestBody.yaml + responses: + '201': + description: Successfully created app + content: + application/json: + schema: + $ref: ../components/schemas/App.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: my_app + state: STOPPED + created_at: '2016-03-17T21:41:30Z' + updated_at: '2016-06-08T16:41:26Z' + lifecycle: + type: buildpack + data: + buildpacks: + - java_buildpack + stack: cflinuxfs4 + relationships: + space: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + current_droplet: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446 + space: + href: https://api.example.org/v3/spaces/2f35885d-0c9d-4423-83ad-fd05066f8576 + processes: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/processes + packages: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/packages + environment_variables: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/environment_variables + current_droplet: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/droplets/current + droplets: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/droplets + tasks: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/tasks + start: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/actions/start + method: POST + stop: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/actions/stop + method: POST + revisions: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/revisions + deployed_revisions: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/revisions/deployed + features: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/features + metadata: + labels: {} + annotations: {} + links: + space: + operationId: getSpace + parameters: + guid: $response.body#/relationships/space/data/guid + description: Retrieve the space for this app + current_droplet: + operationId: getDroplet + parameters: + guid: $response.body#/relationships/current_droplet/data/guid + description: Retrieve the current droplet for this app + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + description: Unprocessable Entity + content: + application/json: + schema: + $ref: ../components/schemas/Errors.yaml + examples: + uniqueness_error: + value: + errors: + - code: 10016 + title: CF-UniquenessError + detail: The given app name is already taken in the targeted space + feature_disabled: + value: + errors: + - code: 330002 + title: CF-FeatureDisabled + detail: Some feature flag must be enabled by the Cloud Foundry admin in order to push the app as is. + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/apps/{guid}: + get: + summary: Get an app + description: Retrieve a specific app. + operationId: getApp + tags: + - Apps + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: include + in: query + schema: + type: array + items: + type: string + enum: + - space + - space.organization + description: Optionally include a list of unique related resources in the response + responses: + '200': + description: Successfully retrieved app + content: + application/json: + schema: + $ref: ../components/schemas/App.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: my_app + state: STOPPED + created_at: '2016-03-17T21:41:30Z' + updated_at: '2016-06-08T16:41:26Z' + lifecycle: + type: buildpack + data: + buildpacks: + - java_buildpack + stack: cflinuxfs4 + relationships: + space: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + current_droplet: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446 + space: + href: https://api.example.org/v3/spaces/2f35885d-0c9d-4423-83ad-fd05066f8576 + processes: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/processes + packages: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/packages + environment_variables: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/environment_variables + current_droplet: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/droplets/current + droplets: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/droplets + tasks: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/tasks + start: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/actions/start + method: POST + stop: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/actions/stop + method: POST + revisions: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/revisions + deployed_revisions: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/revisions/deployed + features: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/features + metadata: + labels: {} + annotations: {} + links: + space: + operationId: getSpace + parameters: + guid: $response.body#/relationships/space/data/guid + description: Retrieve the space for this app + current_droplet: + operationId: getDroplet + parameters: + guid: $response.body#/relationships/current_droplet/data/guid + description: Retrieve the current droplet for this app + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update an app + description: Update an app. + operationId: updateApp + tags: + - Apps + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + $ref: ../components/requestBodies/AppUpdateRequestBody.yaml + responses: + '200': + description: Successfully updated app + content: + application/json: + schema: + $ref: ../components/schemas/App.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: my_app + state: STARTED + created_at: '2016-03-17T21:41:30Z' + updated_at: '2016-03-18T11:32:30Z' + lifecycle: + type: buildpack + data: + buildpacks: + - java_buildpack + stack: cflinuxfs4 + relationships: + space: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + current_droplet: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446 + space: + href: https://api.example.org/v3/spaces/2f35885d-0c9d-4423-83ad-fd05066f8576 + processes: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/processes + packages: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/packages + environment_variables: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/environment_variables + current_droplet: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/droplets/current + droplets: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/droplets + tasks: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/tasks + start: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/actions/start + method: POST + stop: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/actions/stop + method: POST + revisions: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/revisions + deployed_revisions: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/revisions/deployed + features: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/features + metadata: + labels: {} + annotations: {} + links: + space: + operationId: getSpace + parameters: + guid: $response.body#/relationships/space/data/guid + description: Retrieve the space for this app + current_droplet: + operationId: getDroplet + parameters: + guid: $response.body#/relationships/current_droplet/data/guid + description: Retrieve the current droplet for this app + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + delete: + summary: Delete an app + description: Delete an app. + operationId: deleteApp + tags: + - Apps + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '202': + description: Successfully deleted app + headers: + Location: + description: URL of the job that is deleting the app + schema: + type: string + format: uri + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml +/v3/apps/{guid}/actions/start: + post: + summary: Start an app + description: Start an app. + operationId: startApp + tags: + - Apps + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: Successfully started app + content: + application/json: + schema: + $ref: ../components/schemas/App.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: my_app + state: STARTED + created_at: '2016-03-17T21:41:30Z' + updated_at: '2016-03-18T11:32:30Z' + lifecycle: + type: buildpack + data: + buildpacks: + - java_buildpack + stack: cflinuxfs4 + relationships: + space: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + current_droplet: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446 + space: + href: https://api.example.org/v3/spaces/2f35885d-0c9d-4423-83ad-fd05066f8576 + processes: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/processes + packages: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/packages + environment_variables: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/environment_variables + current_droplet: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/droplets/current + droplets: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/droplets + tasks: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/tasks + start: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/actions/start + method: POST + stop: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/actions/stop + method: POST + revisions: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/revisions + deployed_revisions: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/revisions/deployed + features: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/features + metadata: + labels: {} + annotations: {} + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/apps/{guid}/actions/stop: + post: + summary: Stop an app + description: Stop an app. + operationId: stopApp + tags: + - Apps + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: Successfully stopped app + content: + application/json: + schema: + $ref: ../components/schemas/App.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: my_app + state: STARTED + created_at: '2016-03-17T21:41:30Z' + updated_at: '2016-03-18T11:32:30Z' + lifecycle: + type: buildpack + data: + buildpacks: + - java_buildpack + stack: cflinuxfs4 + relationships: + space: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + current_droplet: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446 + space: + href: https://api.example.org/v3/spaces/2f35885d-0c9d-4423-83ad-fd05066f8576 + processes: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/processes + packages: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/packages + environment_variables: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/environment_variables + current_droplet: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/droplets/current + droplets: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/droplets + tasks: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/tasks + start: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/actions/start + method: POST + stop: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/actions/stop + method: POST + revisions: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/revisions + deployed_revisions: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/revisions/deployed + features: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/features + metadata: + labels: {} + annotations: {} + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/apps/{guid}/actions/restart: + post: + summary: Restart an app + description: This endpoint will synchronously stop and start an application. Unlike the start and stop actions, this endpoint will error if the app is not successfully stopped in the runtime. For restarting applications without downtime, see the deployments resource. + operationId: restartApp + tags: + - Apps + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: Successfully restarted app + content: + application/json: + schema: + $ref: ../components/schemas/App.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: my_app + state: STARTED + created_at: '2016-03-17T21:41:30Z' + updated_at: '2016-03-18T11:32:30Z' + lifecycle: + type: buildpack + data: + buildpacks: + - java_buildpack + stack: cflinuxfs4 + relationships: + space: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + current_droplet: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446 + space: + href: https://api.example.org/v3/spaces/2f35885d-0c9d-4423-83ad-fd05066f8576 + processes: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/processes + packages: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/packages + environment_variables: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/environment_variables + current_droplet: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/droplets/current + droplets: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/droplets + tasks: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/tasks + start: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/actions/start + method: POST + stop: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/actions/stop + method: POST + revisions: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/revisions + deployed_revisions: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/revisions/deployed + features: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/features + metadata: + labels: {} + annotations: {} + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/apps/{guid}/droplets: + get: + summary: List droplets for an app + description: Retrieve all droplets belonging to an app. + operationId: listAppDroplets + tags: + - Apps + - Droplets + parameters: + - $ref: ../components/parameters/Guid.yaml + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - $ref: ../components/parameters/LabelSelector.yaml + - name: guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of droplet guids to filter by + - name: states + in: query + schema: + type: array + items: + type: string + enum: + - AWAITING_UPLOAD + - PROCESSING_UPLOAD + - STAGED + - COPYING + - FAILED + - EXPIRED + description: Comma-delimited list of droplet states to filter by + responses: + '200': + description: List of droplets for the app + content: + application/json: + schema: + $ref: ../components/schemas/DropletList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 2 + total_pages: 1 + first: + href: https://api.example.org?page=1&per_page=50 + last: + href: https://api.example.org?page=1&per_page=50 + next: null + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + state: STAGED + error: null + lifecycle: + type: buildpack + data: {} + image: null + execution_metadata: PRIVATE DATA HIDDEN + process_types: + redacted_message: 123e4567-e89b-12d3-a456-426614174000 + checksum: + type: sha256 + value: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 + buildpacks: + - name: ruby_buildpack + detect_output: ruby 1.6.14 + version: 1.1.1. + buildpack_name: ruby + stack: cflinuxfs4 + created_at: '2016-03-28T23:39:34Z' + updated_at: '2016-03-28T23:39:47Z' + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/droplets/585bc3c1-3743-497d-88b0-403ad6b56d16 + package: + href: https://api.example.org/v3/packages/8222f76a-9e09-4360-b3aa-1ed329945e92 + app: + href: https://api.example.org/v3/apps/7b34f1cf-7e73-428a-bb5a-8a17a8058396 + assign_current_droplet: + href: https://api.example.org/v3/apps/7b34f1cf-7e73-428a-bb5a-8a17a8058396/relationships/current_droplet + method: PATCH + download: + href: https://api.example.org/v3/droplets/585bc3c1-3743-497d-88b0-403ad6b56d16/download + metadata: + labels: {} + annotations: {} + - guid: 123e4567-e89b-12d3-a456-426614174000 + state: STAGED + error: null + lifecycle: + type: docker + data: {} + execution_metadata: 123e4567-e89b-12d3-a456-426614174000 + process_types: + redacted_message: 123e4567-e89b-12d3-a456-426614174000 + image: cloudfoundry/diego-docker-app-custom:latest + checksum: null + buildpacks: null + stack: null + created_at: '2016-03-17T00:00:01Z' + updated_at: '2016-03-17T21:41:32Z' + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/droplets/fdf3851c-def8-4de1-87f1-6d4543189e22 + package: + href: https://api.example.org/v3/packages/c5725684-a02f-4e59-bc67-8f36ae944688 + app: + href: https://api.example.org/v3/apps/7b34f1cf-7e73-428a-bb5a-8a17a8058396 + assign_current_droplet: + href: https://api.example.org/v3/apps/7b34f1cf-7e73-428a-bb5a-8a17a8058396/relationships/current_droplet + method: PATCH + metadata: + labels: {} + annotations: {} + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/apps/{guid}/droplets/current: + get: + summary: Get current droplet + description: Get the current droplet for an app. + operationId: getCurrentDropletForApp + tags: + - Apps + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: Successfully retrieved droplet + content: + application/json: + schema: + $ref: ../components/schemas/Droplet.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + state: STAGED + error: null + lifecycle: + type: buildpack + data: {} + execution_metadata: '' + process_types: + rake: bundle exec rake + web: bundle exec rackup config.ru -p $PORT + checksum: + type: sha256 + value: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 + buildpacks: + - name: ruby_buildpack + detect_output: ruby 1.6.14 + version: 1.1.1. + buildpack_name: ruby + stack: cflinuxfs4 + image: null + created_at: '2016-03-28T23:39:34Z' + updated_at: '2016-03-28T23:39:47Z' + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/droplets/585bc3c1-3743-497d-88b0-403ad6b56d16 + package: + href: https://api.example.org/v3/packages/8222f76a-9e09-4360-b3aa-1ed329945e92 + app: + href: https://api.example.org/v3/apps/7b34f1cf-7e73-428a-bb5a-8a17a8058396 + assign_current_droplet: + href: https://api.example.org/v3/apps/7b34f1cf-7e73-428a-bb5a-8a17a8058396/relationships/current_droplet + method: PATCH + download: + href: https://api.example.org/v3/droplets/585bc3c1-3743-497d-88b0-403ad6b56d16/download + metadata: + labels: {} + annotations: {} + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/apps/{guid}/relationships/current_droplet: + get: + summary: Get current droplet association for an app + description: This endpoint retrieves the current droplet relationship for an app. + operationId: getCurrentDropletAssociationForApp + tags: + - Apps + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/RelationshipToOne.yaml + examples: + default: + summary: default + value: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/apps/d4c91047-7b29-4fda-b7f9-04033e5c9c9f/relationships/current_droplet + related: + href: https://api.example.org/v3/apps/d4c91047-7b29-4fda-b7f9-04033e5c9c9f/droplets/current + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Set current droplet + description: Set the current droplet for an app. The current droplet is the droplet that the app will use when running. + operationId: setCurrentDropletForApp + tags: + - Apps + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + description: Droplet relationship object that needs to be set + required: true + content: + application/json: + schema: + type: object + properties: + data: + $ref: ../components/schemas/Relationship.yaml + required: + - data + description: Request schema for setting the current droplet + examples: + default: + summary: default + value: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + responses: + '200': + description: Successfully set current droplet + content: + application/json: + schema: + $ref: ../components/schemas/RelationshipToOne.yaml + examples: + default: + summary: default + value: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/apps/d4c91047-7b29-4fda-b7f9-04033e5c9c9f/relationships/current_droplet + related: + href: https://api.example.org/v3/apps/d4c91047-7b29-4fda-b7f9-04033e5c9c9f/droplets/current + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/apps/{guid}/env: + get: + summary: Get environment for an app + description: Retrieve the environment variables that will be provided to an app at runtime. It will include environment variables for Environment Variable Groups and Service Bindings. + operationId: getEnvForApp + tags: + - Apps + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AppEnvironment.yaml + examples: + default: + summary: default + value: + staging_env_json: + GEM_CACHE: http://gem-cache.example.org + running_env_json: + HTTP_PROXY: http://proxy.example.org + environment_variables: + RAILS_ENV: production + system_env_json: + VCAP_SERVICES: + mysql: + - name: db-for-my-app + binding_id: 0e85b634-e043-4b43-96da-f83dfe83ab33 + binding_name: db-for-my-app + instance_id: 07fca01c-f789-4d45-80b4-e19ba3ca862c + instance_name: my-mysql-service + label: mysql + tags: + - relational + - sql + plan: xlarge + credentials: + username: user + password: top-secret + syslog_drain_url: https://syslog.example.org/drain + volume_mounts: [] + provider: null + application_env_json: + VCAP_APPLICATION: + limits: + fds: 16384 + application_name: my_app + application_uris: + - my_app.example.org + name: my_app + space_name: my_space + space_id: 2f35885d-0c9d-4423-83ad-fd05066f8576 + uris: + - my_app.example.org + users: null + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/apps/{guid}/environment_variables: + get: + summary: Get environment variables for an app + description: Retrieve the environment variables that are associated with the given app. For the entire list of environment variables that will be available to the app at runtime, see the env endpoint. + operationId: getEnvironmentVariablesForApp + tags: + - Apps + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AppEnvironmentVariables.yaml + examples: + default: + summary: default + value: + var: + RAILS_ENV: production + links: + self: + href: https://api.example.org/v3/apps/[guid]/environment_variables + app: + href: https://api.example.org/v3/apps/[guid] + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update environment variables for an app + description: Update the environment variables associated with the given app. The variables given in the request will be merged with the existing app environment variables. Any requested variables with a value of `null` will be removed from the app. Environment variable names may not start with VCAP_. PORT is not a valid environment variable. The updated environment variables will not take effect until the app is restarted. + operationId: updateEnvironmentVariablesForApp + tags: + - Apps + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + content: + application/json: + schema: + type: object + properties: + var: + type: object + additionalProperties: + type: [string, "null"] + description: Environment variables to inject; keys and values must be strings + examples: + default: + summary: default + value: + var: + DEBUG: 'false' + USER: null + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AppEnvironmentVariables.yaml + examples: + default: + summary: default + value: + var: + RAILS_ENV: production + DEBUG: 'false' + links: + self: + href: https://api.example.org/v3/apps/[guid]/environment_variables + app: + href: https://api.example.org/v3/apps/[guid] + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/apps/{guid}/permissions: + get: + summary: Get permissions for an app + description: Get the current user’s permissions for the given app. If a user can see an app, then they can see its basic data. Only admin, read-only admins, and space developers can read sensitive data. + operationId: getPermissionsForApp + tags: + - Apps + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AppPermissions.yaml + examples: + default: + summary: default + value: + read_basic_data: true + read_sensitive_data: false + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/apps/{guid}/ssh_enabled: + get: + summary: Get SSH enabled for an app + description: Returns if an application’s runtime environment will accept ssh connections. If ssh is disabled, the `reason` field will describe whether it is disabled globally, at the space level, or at the app level. + operationId: getSshEnabledForApp + tags: + - Apps + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AppSshEnabled.yaml + examples: + default: + summary: default + value: + enabled: false + reason: Disabled globally + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/apps/{guid}/actions/clear_buildpack_cache: + post: + summary: Clear buildpack cache for application + description: This endpoint will delete the buildpack cache for a specified app. The buildpack cache is used during staging by buildpacks as a way to cache certain resources, e.g. downloaded Ruby gems. A user may want to use this endpoint when an app doesn’t stage anymore due to out-of-disk caused by a large buildpack cache content. + operationId: clearBuildpackCacheForApplication + tags: + - Apps + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '202': + description: Accepted + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/apps/{guid}/features: + get: + summary: List app features + description: This endpoint retrieves the list of features for the specified app. + operationId: listAppFeatures + tags: + - Apps + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/apps/{guid}/features/{name}: + get: + summary: Get an app feature + description: Get an app feature. + operationId: getAppFeature + tags: + - Apps + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: name + in: path + required: true + schema: + type: string + enum: + - ssh + - revisions + - service-binding-k8s + - file-based-vcap-services + responses: + '200': + description: OK + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update an app feature + description: Update an app feature. + operationId: updateAppFeature + tags: + - Apps + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: name + in: path + required: true + schema: + type: string + enum: + - ssh + - revisions + - service-binding-k8s + - file-based-vcap-services + requestBody: + content: + application/json: + schema: + properties: + enabled: + type: boolean + examples: + default: + summary: default + value: + enabled: false + responses: + '200': + description: OK + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml diff --git a/docs/openapi/apis/cf/latest/paths/AuditEvents.yaml b/docs/openapi/apis/cf/latest/paths/AuditEvents.yaml new file mode 100644 index 00000000000..09ccda7827e --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/AuditEvents.yaml @@ -0,0 +1,268 @@ +/v3/audit_events: + get: + summary: List audit events + description: Retrieve all audit events the user has access to. + operationId: listAuditEvents + tags: + - Audit Events + parameters: + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + - name: types + in: query + schema: + type: array + items: + type: string + enum: + - audit.app.apply_manifest + - audit.app.build.create + - audit.app.copy-bits + - audit.app.create + - audit.app.delete-request + - audit.app.deployment.cancel + - audit.app.deployment.create + - audit.app.deployment.continue + - audit.app.droplet.create + - audit.app.droplet.delete + - audit.app.droplet.download + - audit.app.droplet.mapped + - audit.app.droplet.upload + - audit.app.environment.show + - audit.app.environment_variables.show + - audit.app.map-route + - audit.app.package.create + - audit.app.package.delete + - audit.app.package.download + - audit.app.package.upload + - audit.app.process.crash + - audit.app.process.create + - audit.app.process.delete + - audit.app.process.ready + - audit.app.process.not-ready + - audit.app.process.rescheduling + - audit.app.process.scale + - audit.app.process.terminate_instance + - audit.app.process.update + - audit.app.restage + - audit.app.restart + - audit.app.revision.create + - audit.app.revision.environment_variables.show + - audit.app.ssh-authorized + - audit.app.ssh-unauthorized + - audit.app.start + - audit.app.stop + - audit.app.task.cancel + - audit.app.task.create + - audit.app.unmap-route + - audit.app.update + - audit.app.upload-bits + - audit.organization.create + - audit.organization.delete-request + - audit.organization.update + - audit.route.create + - audit.route.delete-request + - audit.route.share + - audit.route.transfer-owner + - audit.route.unshare + - audit.route.update + - audit.service.create + - audit.service.delete + - audit.service.update + - audit.service_binding.create + - audit.service_binding.delete + - audit.service_binding.show + - audit.service_binding.start_create + - audit.service_binding.start_delete + - audit.service_binding.update + - audit.service_broker.create + - audit.service_broker.delete + - audit.service_broker.update + - audit.service_dashboard_client.create + - audit.service_dashboard_client.delete + - audit.service_instance.bind_route + - audit.service_instance.create + - audit.service_instance.delete + - audit.service_instance.purge + - audit.service_instance.share + - audit.service_instance.show + - audit.service_instance.start_create + - audit.service_instance.start_delete + - audit.service_instance.start_update + - audit.service_instance.unbind_route + - audit.service_instance.unshare + - audit.service_instance.update + - audit.service_key.create + - audit.service_key.delete + - audit.service_key.show + - audit.service_key.start_create + - audit.service_key.start_delete + - audit.service_key.update + - audit.service_plan.create + - audit.service_plan.delete + - audit.service_plan.update + - audit.service_plan_visibility.create + - audit.service_plan_visibility.delete + - audit.service_plan_visibility.update + - audit.service_route_binding.create + - audit.service_route_binding.delete + - audit.service_route_binding.start_create + - audit.service_route_binding.start_delete + - audit.service_route_binding.update + - audit.space.create + - audit.space.delete-request + - audit.space.update + - audit.user.organization_auditor_add + - audit.user.organization_auditor_remove + - audit.user.organization_billing_manager_add + - audit.user.organization_billing_manager_remove + - audit.user.organization_manager_add + - audit.user.organization_manager_remove + - audit.user.organization_user_add + - audit.user.organization_user_remove + - audit.user.space_auditor_add + - audit.user.space_auditor_remove + - audit.user.space_developer_add + - audit.user.space_developer_remove + - audit.user.space_manager_add + - audit.user.space_manager_remove + - audit.user.space_supporter_add + - audit.user.space_supporter_remove + - audit.user_provided_service_instance.create + - audit.user_provided_service_instance.delete + - audit.user_provided_service_instance.show + - audit.user_provided_service_instance.update + - app.crash + - blob.remove_orphan + description: Comma-delimited list of event types to filter by + - name: target_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of target guids to filter by. Also supports filtering by exclusion. + - name: space_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of space guids to filter by + - name: organization_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of organization guids to filter by + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AuditEventList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 1 + total_pages: 1 + first: + href: https://api.example.org?page=1&per_page=2 + last: + href: https://api.example.org?page=1&per_page=2 + next: null + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2016-06-08T16:41:23Z' + updated_at: '2016-06-08T16:41:26Z' + type: audit.app.update + actor: + guid: 123e4567-e89b-12d3-a456-426614174000 + type: user + name: admin + target: + guid: 123e4567-e89b-12d3-a456-426614174000 + type: app + name: my-app + data: + request: + recursive: true + space: + guid: 123e4567-e89b-12d3-a456-426614174000 + organization: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org//a595fe2f-01ff-4965-a50c-290258ab8582 + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/audit_events/{guid}: + get: + summary: Get an audit event + description: Retrieve a specific audit event. + operationId: getAuditEvent + tags: + - Audit Events + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AuditEvent.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2016-06-08T16:41:23Z' + updated_at: '2016-06-08T16:41:26Z' + type: audit.app.update + actor: + guid: 123e4567-e89b-12d3-a456-426614174000 + type: user + name: admin + target: + guid: 123e4567-e89b-12d3-a456-426614174000 + type: app + name: my-app + data: + request: + recursive: true + space: + guid: 123e4567-e89b-12d3-a456-426614174000 + organization: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/audit_events/a595fe2f-01ff-4965-a50c-290258ab8582 + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml diff --git a/docs/openapi/apis/cf/latest/paths/Buildpacks.yaml b/docs/openapi/apis/cf/latest/paths/Buildpacks.yaml new file mode 100644 index 00000000000..4d49f9115c1 --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/Buildpacks.yaml @@ -0,0 +1,253 @@ +/v3/buildpacks: + get: + summary: List buildpacks + description: Retrieve all buildpacks. + operationId: listBuildpacks + tags: + - Buildpacks + parameters: + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + - $ref: ../components/parameters/LabelSelector.yaml + - name: names + in: query + schema: + type: array + items: + type: string + description: | + Comma-delimited list of buildpack names to filter by + - name: stacks + in: query + schema: + type: array + items: + type: string + description: | + Comma-delimited list of stacks to filter by + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/BuildpackList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 3 + total_pages: 2 + first: + href: https://api.example.org/v3/buildpacks?page=1&per_page=2 + last: + href: https://api.example.org/v3/buildpacks?page=2&per_page=2 + next: + href: https://api.example.org/v3/buildpacks?page=2&per_page=2 + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2016-03-18T23:26:46Z' + updated_at: '2016-10-17T20:00:42Z' + name: my-buildpack + state: AWAITING_UPLOAD + filename: null + stack: my-stack + position: 1 + lifecycle: cnb + enabled: true + locked: false + metadata: + labels: {} + annotations: {} + links: + self: + href: https://api.example.org/v3/buildpacks/fd35633f-5c5c-4e4e-a5a9-0722c970a9d2 + upload: + href: https://api.example.org/v3/buildpacks/fd35633f-5c5c-4e4e-a5a9-0722c970a9d2/upload + method: POST + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + post: + summary: Create a buildpack + description: Create a buildpack. + operationId: createBuildpack + tags: + - Buildpacks + requestBody: + $ref: ../components/requestBodies/BuildpackCreateRequestBody.yaml + responses: + '201': + $ref: ../components/responses/BuildpackCreateResponse.yaml + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/buildpacks/{guid}: + get: + summary: Get a buildpack + description: Retrieve a buildpack. + operationId: getBuildpack + tags: + - Buildpacks + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + $ref: ../components/responses/BuildpackGetResponse.yaml + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update a buildpack + description: Update a buildpack. + operationId: updateBuildpack + tags: + - Buildpacks + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + $ref: ../components/requestBodies/BuildpackUpdateRequestBody.yaml + responses: + '200': + description: Successfully updated buildpack + content: + application/json: + schema: + $ref: ../components/schemas/Buildpack.yaml + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + delete: + summary: Delete a buildpack + description: Delete a buildpack. + operationId: deleteBuildpack + tags: + - Buildpacks + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '202': + description: Accepted + headers: + Location: + description: URL of the job that is deleting the buildpack + schema: + type: string + format: uri + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml +/v3/buildpacks/{guid}/upload: + post: + summary: Upload buildpack bits + description: Upload a zip file containing a Cloud Foundry compatible buildpack. The file must be sent as part of a multi-part form. + operationId: uploadBuildpack + tags: + - Buildpacks + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + description: The buildpack file to be uploaded + required: true + content: + multipart/form-data: + schema: + type: object + properties: + bits: + type: string + format: binary + resources: + type: array + items: + type: object + properties: + path: + type: string + size_in_bytes: + type: integer + checksum: + type: object + properties: + value: + type: string + responses: + '200': + description: Successfully uploaded buildpack + content: + application/json: + schema: + $ref: ../components/schemas/Buildpack.yaml + '202': + description: Upload initiated + headers: + Location: + schema: + type: string + description: URL of the job tracking the upload + content: + application/json: + schema: + $ref: ../components/schemas/Buildpack.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml diff --git a/docs/openapi/apis/cf/latest/paths/Builds.yaml b/docs/openapi/apis/cf/latest/paths/Builds.yaml new file mode 100644 index 00000000000..249ba31cc29 --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/Builds.yaml @@ -0,0 +1,372 @@ +/v3/builds: + get: + summary: List builds + description: Retrieve all builds. + operationId: listBuilds + tags: + - Builds + parameters: + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + - $ref: ../components/parameters/LabelSelector.yaml + - name: states + in: query + schema: + type: array + items: + type: string + enum: + - STAGING + - STAGED + - FAILED + description: Comma-delimited list of build states to filter by + - name: app_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of app GUIDs to filter by + - name: package_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of package GUIDs to filter by + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/BuildList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 1 + total_pages: 1 + first: + href: https://api.example.org?states=STAGING&page=1&per_page=2 + last: + href: https://api.example.org?states=STAGING&page=1&per_page=2 + next: null + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2016-03-28T23:39:34Z' + updated_at: '2016-06-08T16:41:26Z' + created_by: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: bill + email: bill@example.com + state: STAGING + staging_memory_in_mb: 1024 + staging_disk_in_mb: 1024 + staging_log_rate_limit_bytes_per_second: 1024 + error: null + lifecycle: + type: buildpack + data: + buildpacks: + - ruby_buildpack + stack: cflinuxfs4 + package: + guid: 123e4567-e89b-12d3-a456-426614174000 + droplet: null + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + metadata: + labels: {} + annotations: {} + links: + self: + href: https://api.example.org/v3/builds/585bc3c1-3743-497d-88b0-403ad6b56d16 + app: + href: https://api.example.org/v3/apps/7b34f1cf-7e73-428a-bb5a-8a17a8058396 + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + post: + summary: Create a build + description: Create a build. + operationId: createBuild + tags: + - Builds + requestBody: + description: Build object that needs to be created + required: true + content: + application/json: + schema: + type: object + properties: + package: + $ref: ../components/schemas/Relationship.yaml + lifecycle: + $ref: ../components/schemas/Lifecycle.yaml + staging_memory_in_mb: + type: integer + description: Memory in MB allocated for staging of the build + staging_disk_in_mb: + type: integer + description: Disk space in MB allocated for staging of the build + staging_log_rate_limit_bytes_per_second: + type: integer + description: Log rate limit in bytes per second allocated for staging of the build + metadata: + $ref: ../components/schemas/Metadata.yaml + required: + - package + description: Request schema for creating a build + examples: + default: + summary: default + value: + package: + guid: 123e4567-e89b-12d3-a456-426614174000 + responses: + '201': + description: Successfully created build + content: + application/json: + schema: + $ref: ../components/schemas/Build.yaml + links: + app: + operationId: getApp + parameters: + guid: $response.body#/relationships/app/data/guid + description: Retrieve the app for this build + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/builds/{guid}: + get: + summary: Get a build + description: Retrieve a build. + operationId: getBuild + tags: + - Builds + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: Successfully retrieved build + content: + application/json: + schema: + $ref: ../components/schemas/Build.yaml + links: + app: + operationId: getApp + parameters: + guid: $response.body#/relationships/app/data/guid + description: Retrieve the app for this build + droplet: + operationId: getDroplet + parameters: + guid: $response.body#/droplet/guid + description: Retrieve the droplet for this build + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update a build + description: Update a build. + operationId: updateBuild + tags: + - Builds + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/BuildUpdate.yaml + examples: + default: + summary: default + value: + metadata: + labels: + key: value + annotations: + note: detailed information + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/Build.yaml + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/apps/{guid}/builds: + get: + summary: List builds for an app + description: Retrieve all builds for an app. + operationId: listAppBuilds + tags: + - Builds + parameters: + - $ref: ../components/parameters/Guid.yaml + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - name: states + in: query + schema: + type: array + items: + type: string + enum: + - STAGING + - STAGED + - FAILED + description: Comma-delimited list of build states to filter by + - $ref: ../components/parameters/LabelSelector.yaml + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/BuildList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 1 + total_pages: 1 + first: + href: https://api.example.org?states=STAGING&page=1&per_page=2 + last: + href: https://api.example.org?states=STAGING&page=1&per_page=2 + next: null + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2016-03-28T23:39:34Z' + updated_at: '2016-06-08T16:41:26Z' + created_by: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: bill + email: bill@example.com + state: STAGING + staging_memory_in_mb: 1024 + staging_disk_in_mb: 1024 + staging_log_rate_limit_bytes_per_second: 1024 + error: null + lifecycle: + type: buildpack + data: + buildpacks: + - ruby_buildpack + stack: cflinuxfs4 + package: + guid: 123e4567-e89b-12d3-a456-426614174000 + droplet: null + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + metadata: + labels: {} + annotations: {} + links: + self: + href: https://api.example.org/v3/builds/585bc3c1-3743-497d-88b0-403ad6b56d16 + app: + href: https://api.example.org/v3/apps/7b34f1cf-7e73-428a-bb5a-8a17a8058396 + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update a build + description: Update a build. + operationId: updateBuildViaApp + tags: + - Builds + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + description: Build object that needs to be updated + required: true + content: + application/json: + schema: + type: object + properties: + metadata: + $ref: ../components/schemas/Metadata.yaml + description: Request schema for updating a build + responses: + '200': + description: Successfully updated build + content: + application/json: + schema: + $ref: ../components/schemas/Build.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml diff --git a/docs/openapi/apis/cf/latest/paths/Deployments.yaml b/docs/openapi/apis/cf/latest/paths/Deployments.yaml new file mode 100644 index 00000000000..c79e34ae9c6 --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/Deployments.yaml @@ -0,0 +1,368 @@ +/v3/deployments: + get: + summary: List deployments + description: Retrieve all deployments. + operationId: listDeployments + tags: + - Deployments + parameters: + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + - $ref: ../components/parameters/LabelSelector.yaml + - name: app_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of app GUIDs to filter by + - name: states + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of states to filter by + - name: status_reasons + in: query + schema: + type: array + items: + type: string + enum: + - DEPLOYING + - PAUSED + - CANCELING + - DEPLOYED + - CANCELED + - SUPERSEDED + description: Comma-delimited list of status reasons to filter by + - name: status_values + in: query + schema: + type: array + items: + type: string + enum: + - ACTIVE + - FINALIZED + description: Comma-delimited list of status values to filter by + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/DeploymentList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 1 + total_pages: 1 + first: + href: https://api.example.org?page=1&per_page=2 + last: + href: https://api.example.org?page=1&per_page=2 + next: null + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + status: + value: FINALIZED + reason: DEPLOYED + details: + last_successful_healthcheck: '2018-04-25T22:42:10Z' + last_status_change: '2018-04-25T22:42:10Z' + strategy: rolling + options: + max_in_flight: 1 + droplet: + guid: 123e4567-e89b-12d3-a456-426614174000 + previous_droplet: + guid: 123e4567-e89b-12d3-a456-426614174000 + new_processes: + - guid: 123e4567-e89b-12d3-a456-426614174000 + type: web-deployment-59c3d133-2b83-46f3-960e-7765a129aea4 + revision: + guid: 123e4567-e89b-12d3-a456-426614174000 + version: 1 + created_at: '2018-04-25T22:42:10Z' + updated_at: '2018-04-25T22:42:10Z' + metadata: + labels: {} + annotations: {} + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/deployments/59c3d133-2b83-46f3-960e-7765a129aea4 + app: + href: https://api.example.org/v3/apps/305cea31-5a44-45ca-b51b-e89c7a8ef8b2 + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + post: + summary: Create a deployment + description: When you create a new deployment you can either provide a specific droplet or revision to deploy. If no revision or droplet is provided, the droplet associated with the app is deployed. + operationId: createDeployment + tags: + - Deployments + requestBody: + description: Deployment object that needs to be created + required: true + content: + application/json: + schema: + type: object + properties: + relationships: + $ref: ../components/schemas/Relationships.yaml + strategy: + type: string + enum: + - rolling + - canary + options: + type: object + properties: + max_in_flight: + type: integer + description: The maximum number of instances that will be deployed simultaneously + default: 1 + minimum: 1 + web_instances: + type: integer + description: The number of instances for the web process of the new droplet + memory_in_mb: + type: integer + description: The amount of memory in megabytes to allocate for the web process + disk_in_mb: + type: integer + description: The amount of disk space in megabytes to allocate for the web process + log_rate_limit_in_bytes_per_second: + type: integer + description: The log rate limit in bytes per second for the web process. A value of -1 indicates unlimited, 0 prevents any logs from being emitted. + canary: + type: object + description: Canary steps to use for the deployment. Only available for deployments with strategy ‘canary’. + properties: + steps: + type: array + description: Array of steps defining the canary deployment progression + items: + type: object + properties: + instance_weight: + type: integer + description: The percentage of instances to be deployed as part of the canary process in this step + droplet: + $ref: ../components/schemas/Relationship.yaml + revision: + $ref: ../components/schemas/Relationship.yaml + metadata: + $ref: ../components/schemas/Metadata.yaml + examples: + default: + summary: default + value: + revision: + guid: 123e4567-e89b-12d3-a456-426614174000 + strategy: rolling + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + responses: + '201': + description: Successfully created deployment + content: + application/json: + schema: + $ref: ../components/schemas/Deployment.yaml + links: + app: + operationId: getApp + parameters: + guid: $response.body#/relationships/app/data/guid + description: Retrieve the app for this deployment + droplet: + operationId: getDroplet + parameters: + guid: $response.body#/droplet/data/guid + description: Retrieve the droplet for this deployment + previous_droplet: + operationId: getDroplet + parameters: + guid: $response.body#/previous_droplet/data/guid + description: Retrieve the previous droplet for this deployment + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/deployments/{guid}: + get: + summary: Get a deployment + description: Retrieve a deployment. + operationId: getDeployment + tags: + - Deployments + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: Successfully retrieved deployment + content: + application/json: + schema: + $ref: ../components/schemas/Deployment.yaml + links: + app: + operationId: getApp + parameters: + guid: $response.body#/relationships/app/data/guid + description: Retrieve the app for this deployment + droplet: + operationId: getDroplet + parameters: + guid: $response.body#/droplet/data/guid + description: Retrieve the droplet for this deployment + previous_droplet: + operationId: getDroplet + parameters: + guid: $response.body#/previous_droplet/data/guid + description: Retrieve the previous droplet for this deployment + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update a deployment + description: Update a deployment. + operationId: updateDeployment + tags: + - Deployments + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + description: Deployment object that needs to be updated + required: true + content: + application/json: + schema: + type: object + properties: + metadata: + $ref: ../components/schemas/Metadata.yaml + description: Request schema for updating a deployment + examples: + default: + summary: default + value: + metadata: + labels: + key: value + annotations: + note: detailed information + responses: + '200': + description: Successfully updated deployment + content: + application/json: + schema: + $ref: ../components/schemas/Deployment.yaml + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/deployments/{guid}/actions/cancel: + post: + summary: Cancel a deployment + description: Cancel a deployment. + operationId: cancelDeployment + tags: + - Deployments + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: Successfully canceled deployment + content: + application/json: + schema: + $ref: ../components/schemas/Deployment.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/deployments/{guid}/actions/continue: + post: + summary: Continue a deployment + description: Continue a deployment. + operationId: continueDeployment + tags: + - Deployments + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: Successfully continued deployment + content: + application/json: + schema: + $ref: ../components/schemas/Deployment.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml diff --git a/docs/openapi/apis/cf/latest/paths/Domains.yaml b/docs/openapi/apis/cf/latest/paths/Domains.yaml new file mode 100644 index 00000000000..06bf38364ac --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/Domains.yaml @@ -0,0 +1,444 @@ +/v3/domains: + get: + summary: List domains + description: Retrieve all domains the user has access to. + operationId: listDomains + tags: + - Domains + parameters: + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + - $ref: ../components/parameters/LabelSelector.yaml + - name: guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of GUIDs to filter by + - name: names + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of domain names to filter by + - name: organization_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of owning organization GUIDs to filter by + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/DomainList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 3 + total_pages: 2 + first: + href: https://api.example.org?page=1&per_page=2 + last: + href: https://api.example.org?page=2&per_page=2 + next: + href: https://api.example.org?page=2&per_page=2 + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2019-03-08T01:06:19Z' + updated_at: '2019-03-08T01:06:19Z' + name: test-domain.com + internal: false + router_group: + guid: 123e4567-e89b-12d3-a456-426614174000 + supported_protocols: + - tcp + metadata: + labels: {} + annotations: {} + relationships: + organization: + data: null + shared_organizations: + data: [] + links: + self: + href: https://api.example.org/v3/domains/3a5d3d89-3f89-4f05-8188-8a2b298c79d5 + route_reservations: + href: https://api.example.org/v3/domains/3a5d3d89-3f89-4f05-8188-8a2b298c79d5/route_reservations + router_group: + href: https://api.example.org/routing/v1/router_groups/5806148f-cce6-4d86-7fbd-aa269e3f6f3f + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + post: + summary: Create a domain + description: Create a domain. + operationId: createDomain + tags: + - Domains + requestBody: + $ref: ../components/requestBodies/DomainCreateRequestBody.yaml + responses: + '201': + description: Successfully created domain + content: + application/json: + schema: + $ref: ../components/schemas/Domain.yaml + links: + organization: + operationId: getOrganization + parameters: + guid: $response.body#/relationships/organization/data/guid + description: Retrieve the organization for this domain (private domains only) + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/domains/{guid}: + get: + summary: Get a domain + description: Retrieve a domain. + operationId: getDomain + tags: + - Domains + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: Successfully retrieved domain + content: + application/json: + schema: + $ref: ../components/schemas/Domain.yaml + links: + organization: + operationId: getOrganization + parameters: + guid: $response.body#/relationships/organization/data/guid + description: Retrieve the organization for this domain (private domains only) + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update a domain + description: Update a domain. + operationId: updateDomain + tags: + - Domains + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + description: Domain object that needs to be updated + required: true + content: + application/json: + schema: + type: object + properties: + metadata: + $ref: ../components/schemas/Metadata.yaml + description: Request schema for updating a domain + examples: + default: + summary: default + value: + metadata: + labels: + key: value + annotations: + note: detailed information + responses: + '200': + description: Successfully updated domain + content: + application/json: + schema: + $ref: ../components/schemas/Domain.yaml + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + delete: + summary: Delete a domain + description: Delete a domain. + operationId: deleteDomain + tags: + - Domains + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '202': + description: Accepted + headers: + Location: + description: URL of the job that is deleting the domain + schema: + type: string + format: uri + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml +/v3/domains/{guid}/relationships/shared_organizations: + post: + summary: Share a domain + description: This endpoint shares an organization-scoped domain to other organizations specified by a list of organization guids. This will allow any of the other organizations to use the organization-scoped domain. + operationId: shareDomain + tags: + - Domains + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + description: List of organizations to share the domain with + required: true + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + $ref: ../components/schemas/Relationship.yaml + description: Organization relationships; each organization will be entitled to manage this isolation segment + examples: + default: + summary: default + value: + data: + - guid: 123e4567-e89b-12d3-a456-426614174000 + - guid: 123e4567-e89b-12d3-a456-426614174000 + responses: + '200': + description: Successfully shared domain + content: + application/json: + schema: + type: object + properties: + data: + type: array + items: + type: object + properties: + guid: + type: string + format: uuid + examples: + default: + summary: default + value: + data: + - guid: 123e4567-e89b-12d3-a456-426614174000 + - guid: 123e4567-e89b-12d3-a456-426614174000 + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/organizations/{guid}/domains: + get: + summary: List domains for an organization + description: |- + Retrieve all domains available in an organization for the current user. This will return unscoped domains (those without an owning organization), domains that are scoped to the given organization (owned by the given organization), and domains that have been shared with the organization. + + To retrieve the default domain for an organization, use the [get default domain](#get-default-domain) endpoint. + operationId: listDomainsForOrganization + tags: + - Domains + parameters: + - $ref: ../components/parameters/Guid.yaml + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - name: names + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of domain names to filter by + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/DomainList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 3 + total_pages: 2 + first: + href: https://api.example.org?page=1&per_page=2 + last: + href: https://api.example.org?page=2&per_page=2 + next: + href: https://api.example.org?page=2&per_page=2 + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2019-03-08T01:06:19Z' + updated_at: '2019-03-08T01:06:19Z' + name: test-domain.com + internal: false + router_group: + guid: 123e4567-e89b-12d3-a456-426614174000 + supported_protocols: + - tcp + metadata: + labels: {} + annotations: {} + relationships: + organization: + data: null + shared_organizations: + data: [] + links: + self: + href: https://api.example.org/v3/domains/3a5d3d89-3f89-4f05-8188-8a2b298c79d5 + route_reservations: + href: https://api.example.org/v3/domains/3a5d3d89-3f89-4f05-8188-8a2b298c79d5/route_reservations + router_group: + href: https://api.example.org/routing/v1/router_groups/5806148f-cce6-4d86-7fbd-aa269e3f6f3f + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/domains/{guid}/route_reservations: + get: + summary: Check reserved routes for a domain + description: Check if a specific route for a domain exists, regardless of the user’s visibility for the route in case the route belongs to a space the user does not belong to. + operationId: checkReservedRoutesForDomain + tags: + - Domains + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: host + in: query + schema: + type: string + description: Hostname to filter by + - name: path + in: query + schema: + type: string + description: Path to filter by + - name: port + in: query + schema: + type: integer + description: Port to filter by + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + matching_route: + type: boolean + examples: + default: + summary: default + value: + matching_route: true + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/domains/{guid}/relationships/shared_organizations/{org_guid}: + delete: + summary: Unshare a domain + description: This endpoint removes an organization from the list of organizations an organization-scoped domain is shared with. This prevents the organization from using the organization-scoped domain. + operationId: unshareDomain + tags: + - Domains + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: org_guid + in: path + required: true + schema: + type: string + format: uuid + description: The GUID of the organization to unshare the domain from + responses: + '204': + description: Successfully unshared domain + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml diff --git a/docs/openapi/apis/cf/latest/paths/Droplets.yaml b/docs/openapi/apis/cf/latest/paths/Droplets.yaml new file mode 100644 index 00000000000..6a9870671af --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/Droplets.yaml @@ -0,0 +1,519 @@ +/v3/droplets: + get: + summary: List droplets + description: Retrieve all droplets. + operationId: listDroplets + tags: + - Droplets + parameters: + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + - $ref: ../components/parameters/LabelSelector.yaml + - name: guids + in: query + schema: + type: array + items: + type: string + description: | + Comma-delimited list of droplet GUIDs to filter by + - name: states + in: query + schema: + type: array + items: + type: string + enum: + - AWAITING_UPLOAD + - PROCESSING_UPLOAD + - STAGED + - COPYING + - FAILED + - EXPIRED + description: | + Comma-delimited list of droplet states to filter by + - name: app_guids + in: query + schema: + type: array + items: + type: string + description: | + Comma-delimited list of app GUIDs to filter by + - name: space_guids + in: query + schema: + type: array + items: + type: string + description: | + Comma-delimited list of space GUIDs to filter by + - name: organization_guids + in: query + schema: + type: array + items: + type: string + description: | + Comma-delimited list of organization GUIDs to filter by + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/DropletList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 2 + total_pages: 1 + first: + href: https://api.example.org?page=1&per_page=50 + last: + href: https://api.example.org?page=1&per_page=50 + next: null + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + state: STAGED + error: null + lifecycle: + type: buildpack + data: {} + image: null + execution_metadata: PRIVATE DATA HIDDEN + process_types: + redacted_message: 123e4567-e89b-12d3-a456-426614174000 + checksum: + type: sha256 + value: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 + buildpacks: + - name: ruby_buildpack + detect_output: ruby 1.6.14 + version: 1.1.1. + buildpack_name: ruby + stack: cflinuxfs4 + created_at: '2016-03-28T23:39:34Z' + updated_at: '2016-03-28T23:39:47Z' + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/droplets/585bc3c1-3743-497d-88b0-403ad6b56d16 + package: + href: https://api.example.org/v3/packages/8222f76a-9e09-4360-b3aa-1ed329945e92 + app: + href: https://api.example.org/v3/apps/7b34f1cf-7e73-428a-bb5a-8a17a8058396 + assign_current_droplet: + href: https://api.example.org/v3/apps/7b34f1cf-7e73-428a-bb5a-8a17a8058396/relationships/current_droplet + method: PATCH + download: + href: https://api.example.org/v3/droplets/585bc3c1-3743-497d-88b0-403ad6b56d16/download + metadata: + labels: {} + annotations: {} + - guid: 123e4567-e89b-12d3-a456-426614174000 + state: STAGED + error: null + lifecycle: + type: docker + data: {} + execution_metadata: 123e4567-e89b-12d3-a456-426614174000 + process_types: + redacted_message: 123e4567-e89b-12d3-a456-426614174000 + image: cloudfoundry/diego-docker-app-custom:latest + checksum: null + buildpacks: null + stack: null + created_at: '2016-03-17T00:00:01Z' + updated_at: '2016-03-17T21:41:32Z' + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/droplets/fdf3851c-def8-4de1-87f1-6d4543189e22 + package: + href: https://api.example.org/v3/packages/c5725684-a02f-4e59-bc67-8f36ae944688 + app: + href: https://api.example.org/v3/apps/7b34f1cf-7e73-428a-bb5a-8a17a8058396 + assign_current_droplet: + href: https://api.example.org/v3/apps/7b34f1cf-7e73-428a-bb5a-8a17a8058396/relationships/current_droplet + method: PATCH + metadata: + labels: {} + annotations: {} + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + post: + summary: Create a droplet + description: This endpoint is only for creating a droplet without a package. To create a droplet based on a package, see [Create a build](#create-a-build). + operationId: createDroplet + tags: + - Droplets + requestBody: + $ref: ../components/requestBodies/DropletCreateRequestBody.yaml + responses: + '201': + description: Droplet created + content: + application/json: + schema: + $ref: ../components/schemas/Droplet.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + state: AWAITING_UPLOAD + error: null + lifecycle: + type: buildpack + data: {} + execution_metadata: '' + process_types: + rake: bundle exec rake + web: bundle exec rackup config.ru -p $PORT + checksum: + type: sha256 + value: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 + buildpacks: + - name: ruby_buildpack + detect_output: ruby 1.6.14 + version: 1.1.1. + buildpack_name: ruby + stack: cflinuxfs4 + image: null + created_at: '2016-03-28T23:39:34Z' + updated_at: '2016-03-28T23:39:47Z' + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/droplets/585bc3c1-3743-497d-88b0-403ad6b56d16 + app: + href: https://api.example.org/v3/apps/7b34f1cf-7e73-428a-bb5a-8a17a8058396 + assign_current_droplet: + href: https://api.example.org/v3/apps/7b34f1cf-7e73-428a-bb5a-8a17a8058396/relationships/current_droplet + method: PATCH + upload: + href: https://api.example.org/v3/droplets/585bc3c1-3743-497d-88b0-403ad6b56d16/upload + method: POST + metadata: + labels: {} + annotations: {} + links: + app: + operationId: getApp + parameters: + guid: $response.body#/relationships/app/data/guid + description: Retrieve the app for this droplet + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/droplets/{guid}: + get: + summary: Get a droplet + description: Retrieve a droplet. + operationId: getDroplet + tags: + - Droplets + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: Droplet retrieved + content: + application/json: + schema: + $ref: ../components/schemas/Droplet.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + state: STAGED + error: null + lifecycle: + type: buildpack + data: {} + execution_metadata: '' + process_types: + rake: bundle exec rake + web: bundle exec rackup config.ru -p $PORT + checksum: + type: sha256 + value: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 + buildpacks: + - name: ruby_buildpack + detect_output: ruby 1.6.14 + version: 1.1.1. + buildpack_name: ruby + stack: cflinuxfs4 + image: null + created_at: '2016-03-28T23:39:34Z' + updated_at: '2016-03-28T23:39:47Z' + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/droplets/585bc3c1-3743-497d-88b0-403ad6b56d16 + package: + href: https://api.example.org/v3/packages/8222f76a-9e09-4360-b3aa-1ed329945e92 + app: + href: https://api.example.org/v3/apps/7b34f1cf-7e73-428a-bb5a-8a17a8058396 + assign_current_droplet: + href: https://api.example.org/v3/apps/7b34f1cf-7e73-428a-bb5a-8a17a8058396/relationships/current_droplet + method: PATCH + download: + href: https://api.example.org/v3/droplets/585bc3c1-3743-497d-88b0-403ad6b56d16/download + metadata: + labels: {} + annotations: {} + links: + app: + operationId: getApp + parameters: + guid: $response.body#/relationships/app/data/guid + description: Retrieve the app for this droplet + '400': + $ref: ../components/responses/BadRequest.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update a droplet + description: Update a droplet. + operationId: updateDroplet + tags: + - Droplets + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + description: Droplet object that needs to be updated + required: true + content: + application/json: + schema: + type: object + properties: + metadata: + $ref: ../components/schemas/Metadata.yaml + image: + type: string + description: Image reference where the built complete image was stored + required: [] + description: Request schema for updating a droplet + examples: + default: + summary: default + value: + metadata: + labels: + key: value + annotations: + note: detailed information + responses: + '200': + $ref: ../components/responses/DropletGetResponse.yaml + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + description: Unprocessable Entity + content: + application/json: + schema: + $ref: ../components/schemas/Error.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + delete: + summary: Delete a droplet + description: Delete a droplet. + operationId: deleteDroplet + tags: + - Droplets + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '202': + description: Accepted + headers: + Location: + description: URL of the job that is deleting the droplet + schema: + type: string + format: uri + content: + application/json: + schema: + $ref: ../components/schemas/Job.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml +/v3/droplets/{guid}/download: + get: + summary: Download droplet bits + description: |- + Download a gzip compressed tarball file containing a Cloud Foundry compatible droplet. + When using a remote blobstore, such as AWS, the response is a redirect to the actual location of the bits. If the client is automatically following redirects, then the OAuth token that was used to communicate with Cloud Controller will be relayed on the new redirect request. Some blobstores may reject the request in that case. Clients may need to follow the redirect without including the OAuth token. + Only droplets that are in the `STAGED` state and have lifecycle type `buildpack` can be downloaded. + operationId: downloadDroplet + tags: + - Droplets + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/octet-stream: + schema: + type: string + format: binary + text/html: + schema: + type: string + '302': + description: Redirect to download location + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '502': + $ref: ../components/responses/BadGateway.yaml +/v3/droplets/{guid}/upload: + post: + summary: Upload droplet bits + description: Upload a gzip compressed tarball file containing a Cloud Foundry compatible droplet. The file must be sent as part of a multi-part form. + operationId: uploadDroplet + tags: + - Droplets + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + description: The droplet file to be uploaded + required: true + content: + multipart/form-data: + schema: + type: object + properties: + bits: + type: string + format: binary + resources: + type: array + items: + type: object + properties: + path: + type: string + size_in_bytes: + type: integer + checksum: + type: object + properties: + value: + type: string + application/json: + schema: + type: object + properties: + resources: + type: array + items: + type: object + properties: + path: + type: string + size_in_bytes: + type: integer + checksum: + type: object + properties: + value: + type: string + responses: + '200': + $ref: ../components/responses/DropletGetResponse.yaml + '202': + description: Upload initiated + headers: + Location: + schema: + type: string + description: URL of the job tracking the upload + content: + application/json: + schema: + $ref: ../components/schemas/Droplet.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml diff --git a/docs/openapi/apis/cf/latest/paths/EnvironmentVariableGroups.yaml b/docs/openapi/apis/cf/latest/paths/EnvironmentVariableGroups.yaml new file mode 100644 index 00000000000..f3e7c26aa21 --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/EnvironmentVariableGroups.yaml @@ -0,0 +1,116 @@ +/v3/environment_variable_groups/{name}: + get: + summary: Get an environment variable group + description: Retrieve an environment variable group. + operationId: getEnvironmentVariableGroup + tags: + - Environment Variable Groups + parameters: + - name: name + in: path + required: true + schema: + type: string + enum: + - running + - staging + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/EnvironmentVariableGroup.yaml + examples: + default: + summary: default + value: + updated_at: '2016-05-04T17:00:41Z' + name: running + var: + foo: bar + links: + self: + href: https://api.example.org/v3/environment_variable_groups/running + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + patch: + summary: Update environment variable group + description: |- + Update the environment variable group. The variables given in the request will be merged with the existing environment variable group. Any requested variables with a value of `null` will be removed from the group. Environment variable names may not start with VCAP_. PORT is not a valid environment variable. + + Variables updated in the **running** environment variable group will not take effect until apps are restarted. + operationId: updateEnvironmentVariableGroup + tags: + - Environment Variable Groups + parameters: + - name: name + in: path + required: true + schema: + type: string + enum: + - running + - staging + requestBody: + description: The environment variables to update + required: true + content: + application/json: + schema: + type: object + properties: + var: + type: object + additionalProperties: + type: string + description: Environment variables to inject; keys and values must be strings + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/EnvironmentVariableGroup.yaml + examples: + default: + summary: default + value: + var: + RAILS_ENV: production + DEBUG: 'false' + links: + self: + href: https://api.example.org/v3/environment_variable_groups/[name] + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml diff --git a/docs/openapi/apis/cf/latest/paths/FeatureFlags.yaml b/docs/openapi/apis/cf/latest/paths/FeatureFlags.yaml new file mode 100644 index 00000000000..0e2c5af658f --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/FeatureFlags.yaml @@ -0,0 +1,213 @@ +/v3/feature_flags: + get: + summary: List feature flags + description: Retrieve all feature_flags. + operationId: listFeatureFlags + tags: + - Feature Flags + parameters: + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - name: updated_ats + in: query + required: false + schema: + type: string + description: | + Timestamp to filter by. When filtering on equality, several comma-delimited timestamps may be passed. + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/FeatureFlagList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 3 + total_pages: 2 + first: + href: https://api.example.org/v3/feature_flags?page=1&per_page=2 + last: + href: https://api.example.org/v3/feature_flags?page=2&per_page=2 + next: + href: https://api.example.org/v3/feature_flags?page=2&per_page=2 + previous: null + resources: + - name: my_feature_flag + enabled: true + updated_at: '2016-10-17T20:00:42Z' + custom_error_message: error message the user sees + links: + self: + href: https://api.example.org/v3/feature_flags/my_feature_flag + - name: my_second_feature_flag + enabled: false + updated_at: null + custom_error_message: null + links: + self: + href: https://api.example.org/v3/feature_flags/my_second_feature_flag + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/feature_flags/{name}: + get: + summary: Get a feature flag + description: Get a feature flag. + operationId: getFeatureFlag + tags: + - Feature Flags + parameters: + - name: name + in: path + required: true + schema: + type: string + enum: + - app_bits_upload + - app_scaling + - diego_docker + - diego_cnb + - env_var_visibility + - hide_marketplace_from_unauthenticated_users + - private_domain_creation + - resource_matching + - route_creation + - route_sharing + - service_instance_creation + - service_instance_sharing + - set_roles_by_username + - space_developer_env_var_visibility + - space_scoped_private_broker_creation + - task_creation + - unset_roles_by_username + - user_org_creation + description: The name of the feature flag + responses: + '200': + description: Successfully retrieved feature flag + content: + application/json: + schema: + $ref: ../components/schemas/FeatureFlag.yaml + examples: + default: + summary: default + value: + name: my_feature_flag + enabled: true + updated_at: '2016-10-17T20:00:42Z' + custom_error_message: error message the user sees + links: + self: + href: https://api.example.org/v3/feature_flags/my_feature_flag + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update a feature flag + description: Update a feature flag. + operationId: updateFeatureFlag + tags: + - Feature Flags + parameters: + - name: name + in: path + required: true + schema: + type: string + enum: + - app_bits_upload + - app_scaling + - diego_docker + - diego_cnb + - env_var_visibility + - hide_marketplace_from_unauthenticated_users + - private_domain_creation + - resource_matching + - route_creation + - route_sharing + - service_instance_creation + - service_instance_sharing + - set_roles_by_username + - space_developer_env_var_visibility + - space_scoped_private_broker_creation + - task_creation + - unset_roles_by_username + - user_org_creation + description: The name of the feature flag + requestBody: + description: Feature flag object that needs to be updated + required: true + content: + application/json: + schema: + type: object + properties: + enabled: + type: boolean + description: Whether the feature flag is enabled + custom_error_message: + type: string + description: The error string returned by the API when a client performs an action disabled by the feature flag + examples: + default: + summary: default + value: + enabled: true + custom_error_message: error message the user sees + responses: + '200': + description: Successfully updated feature flag + content: + application/json: + schema: + $ref: ../components/schemas/FeatureFlag.yaml + examples: + default: + summary: default + value: + name: my_feature_flag + enabled: true + updated_at: '2016-10-17T20:00:42Z' + custom_error_message: error message the user sees + links: + self: + href: https://api.example.org/v3/feature_flags/my_feature_flag + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml diff --git a/docs/openapi/apis/cf/latest/paths/Info.yaml b/docs/openapi/apis/cf/latest/paths/Info.yaml new file mode 100644 index 00000000000..328a7c3fc6f --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/Info.yaml @@ -0,0 +1,167 @@ +/v3/info: + get: + summary: Get platform info + description: Get information about the platform. + operationId: getPlatformInfo + tags: + - Info + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Name of the platform + build: + type: string + description: Build number of the platform + version: + type: integer + description: Version number of the platform + description: + type: string + description: Description of the platform + cli_version: + type: object + description: Minimum and recommended CLI versions + properties: + minimum: + type: string + description: Minimum CLI version + recommended: + type: string + description: Recommended CLI version + custom: + type: object + description: Custom information about the platform + additionalProperties: + type: string + links: + type: object + description: Links to related resources + properties: + self: + allOf: + - $ref: ../components/schemas/Link.yaml + - description: Link to the current endpoint + support: + allOf: + - $ref: ../components/schemas/Link.yaml + - description: Link to the support website for the platform + examples: + default: + summary: default + value: + build: '' + cli_version: + minimum: '' + recommended: '' + custom: {} + description: '' + name: '' + version: 0 + osbapi_version: '' + rate_limits: + enabled: false + general_limit: 2000 + reset_interval_in_minutes: 30 + links: + self: + href: http://api.example.com/v3/info + support: + href: '' + '400': + $ref: ../components/responses/BadRequest.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/info/usage_summary: + get: + summary: Get platform usage summary + description: This endpoint retrieves a high-level summary of usage across the entire Cloud Foundry installation. + operationId: getPlatformUsageSummary + tags: + - Info + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + usage_summary: + type: object + description: Usage summary + properties: + started_instances: + type: integer + description: Total number of process instances in the STARTED state + memory_in_mb: + type: integer + description: Sum of memory usage of all tasks in the RUNNING state and all process instances in the STARTED state + routes: + type: integer + description: Total number of routes + service_instances: + type: integer + description: Total number of managed service instances + reserved_ports: + type: integer + description: Total number of reserved ports + domains: + type: integer + description: Total number of private domains + per_app_tasks: + type: integer + description: Total number of running tasks + service_keys: + type: integer + description: Total number of service keys + links: + type: object + description: Links to related resources + properties: + self: + allOf: + - $ref: ../components/schemas/Link.yaml + - description: Link to the current endpoint + examples: + default: + summary: default + value: + usage_summary: + started_instances: 294 + memory_in_mb: 123945 + routes: 300 + service_instances: 50 + reserved_ports: 10 + domains: 5 + per_app_tasks: 0 + service_keys: 20 + links: + self: + href: http://api.example.com/v3/info/usage_summary + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '500': + $ref: ../components/responses/500.yaml diff --git a/docs/openapi/apis/cf/latest/paths/IsolationSegments.yaml b/docs/openapi/apis/cf/latest/paths/IsolationSegments.yaml new file mode 100644 index 00000000000..8cc67497399 --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/IsolationSegments.yaml @@ -0,0 +1,528 @@ +/v3/isolation_segments: + get: + summary: List isolation segments + description: Retrieves all isolation segments to which the user has access. For admin, this is all the isolation segments in the system. For anyone else, this is the isolation segments in the allowed list for any organization to which the user belongs. + operationId: listIsolationSegments + tags: + - Isolation Segments + parameters: + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + - $ref: ../components/parameters/LabelSelector.yaml + - name: guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of isolation segment guids to filter by. + - name: names + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of isolation segment names to filter by. + - name: organization_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of organization guids to filter by. + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/IsolationSegmentList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 11 + total_pages: 3 + first: + href: https://api.example.org/v3/isolation_segments?page=1&per_page=5 + last: + href: https://api.example.org/v3/isolation_segments?page=3&per_page=5 + next: + href: https://api.example.org/v3/isolation_segments?page=2&per_page=5 + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + name: an_isolation_segment + created_at: '2016-10-19T20:25:04Z' + updated_at: '2016-11-08T16:41:26Z' + links: + self: + href: https://api.example.org/v3/isolation_segments/b19f6525-cbd3-4155-b156-dc0c2a431b4c + organizations: + href: https://api.example.org/v3/isolation_segments/b19f6525-cbd3-4155-b156-dc0c2a431b4c/organizations + metadata: + annotations: {} + labels: {} + - guid: 123e4567-e89b-12d3-a456-426614174000 + name: an_isolation_segment1 + created_at: '2016-10-19T20:29:19Z' + updated_at: '2016-11-08T16:41:26Z' + links: + self: + href: https://api.example.org/v3/isolation_segments/68d54d31-9b3a-463b-ba94-e8e4c32edbac + organizations: + href: https://api.example.org/v3/isolation_segments/68d54d31-9b3a-463b-ba94-e8e4c32edbac/organizations + metadata: + annotations: {} + labels: {} + - guid: 123e4567-e89b-12d3-a456-426614174000 + name: an_isolation_segment2 + created_at: '2016-10-19T20:29:22Z' + updated_at: '2016-11-08T16:41:26Z' + links: + self: + href: https://api.example.org/v3/isolation_segments/ecdc67c3-a71e-43ff-bddf-048930b8cd03 + organizations: + href: https://api.example.org/v3/isolation_segments/ecdc67c3-a71e-43ff-bddf-048930b8cd03/organizations + metadata: + annotations: {} + labels: {} + - guid: 123e4567-e89b-12d3-a456-426614174000 + name: an_isolation_segment3 + created_at: '2016-10-19T20:29:27Z' + updated_at: '2016-11-08T16:41:26Z' + links: + self: + href: https://api.example.org/v3/isolation_segments/424c89e4-4353-46b7-9bf4-f90bd9bacac0 + organizations: + href: https://api.example.org/v3/isolation_segments/424c89e4-4353-46b7-9bf4-f90bd9bacac0/organizations + metadata: + annotations: {} + labels: {} + - guid: 123e4567-e89b-12d3-a456-426614174000 + name: an_isolation_segment4 + created_at: '2016-10-19T20:29:33Z' + updated_at: '2016-11-08T16:41:26Z' + links: + self: + href: https://api.example.org/v3/isolation_segments/0a79fcec-a648-4eb8-a6c3-2b5be39047c7 + organizations: + href: https://api.example.org/v3/isolation_segments/0a79fcec-a648-4eb8-a6c3-2b5be39047c7/organizations + metadata: + annotations: {} + labels: {} + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + post: + summary: Create an isolation segment + description: Create an isolation segment. + operationId: createIsolationSegment + tags: + - Isolation Segments + requestBody: + $ref: ../components/requestBodies/IsolationSegmentCreate.yaml + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: ../components/schemas/IsolationSegment.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: an_isolation_segment + created_at: '2016-10-19T20:25:04Z' + updated_at: '2016-11-08T16:41:26Z' + links: + self: + href: https://api.example.org/v3/isolation_segments/b19f6525-cbd3-4155-b156-dc0c2a431b4c + organizations: + href: https://api.example.org/v3/isolation_segments/b19f6525-cbd3-4155-b156-dc0c2a431b4c/organizations + metadata: + annotations: {} + labels: {} + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/isolation_segments/{guid}: + get: + summary: Get an isolation segment + description: Retrieve an isolation segment to which the user has access. For admin, this is any isolation segment in the system. For anyone else, this is an isolation segment in the allowed list for any organization to which the user belongs. + operationId: getIsolationSegment + tags: + - Isolation Segments + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/IsolationSegment.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: an_isolation_segment + created_at: '2016-10-19T20:25:04Z' + updated_at: '2016-11-08T16:41:26Z' + links: + self: + href: https://api.example.org/v3/isolation_segments/b19f6525-cbd3-4155-b156-dc0c2a431b4c + organizations: + href: https://api.example.org/v3/isolation_segments/b19f6525-cbd3-4155-b156-dc0c2a431b4c/organizations + metadata: + annotations: {} + labels: {} + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update an isolation segment + description: Update an isolation segment. + operationId: updateIsolationSegment + tags: + - Isolation Segments + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + description: Isolation segment to update + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: The name of the isolation segment + metadata: + $ref: ../components/schemas/Metadata.yaml + examples: + default: + summary: default + value: + name: my_isolation_segment + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/IsolationSegment.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: <%= name %> + created_at: '2016-10-19T20:25:04Z' + updated_at: '2016-11-08T16:41:26Z' + links: + self: + href: https://api.example.org/v3/isolation_segments/b19f6525-cbd3-4155-b156-dc0c2a431b4c + organizations: + href: https://api.example.org/v3/isolation_segments/b19f6525-cbd3-4155-b156-dc0c2a431b4c/organizations + metadata: + annotations: {} + labels: {} + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + delete: + summary: Delete an isolation segment + description: An isolation segment cannot be deleted if it is entitled to any organization. + operationId: deleteIsolationSegment + tags: + - Isolation Segments + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '204': + description: No Content + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml +/v3/isolation_segments/{guid}/relationships/organizations: + post: + summary: Entitle organizations for isolation segment + description: This endpoint entitles the specified organizations for the isolation segment. In the case where the specified isolation segment is the system-wide shared segment, and if an organization is not already entitled for any other isolation segment, then the shared isolation segment automatically gets assigned as the default for that organization. + operationId: entitleOrganizationsForIsolationSegment + tags: + - Isolation Segments + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + description: List of organizations to entitle + required: true + content: + application/json: + schema: + $ref: ../components/schemas/RelationshipToMany.yaml + examples: + default: + summary: default + value: + data: + - guid: 123e4567-e89b-12d3-a456-426614174000 + - guid: 123e4567-e89b-12d3-a456-426614174000 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/RelationshipToMany.yaml + examples: + default: + summary: default + value: + data: + - guid: 123e4567-e89b-12d3-a456-426614174000 + - guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/isolation_segments/bdeg4371-cbd3-4155-b156-dc0c2a431b4c/relationships/organizations + related: + href: https://api.example.org/v3/isolation_segments/bdeg4371-cbd3-4155-b156-dc0c2a431b4c/organizations + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + get: + summary: List organizations relationship + description: This endpoint lists the organizations entitled for the isolation segment. For an Admin, this will list all entitled organizations in the system. For any other user, this will list only the entitled organizations to which the user belongs. + operationId: listOrganizationsForIsolationSegment + tags: + - Isolation Segments + parameters: + - $ref: ../components/parameters/Guid.yaml + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/RelationshipToMany.yaml + examples: + default: + summary: default + value: + data: + - guid: 123e4567-e89b-12d3-a456-426614174000 + - guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/isolation_segments/bdeg4371-cbd3-4155-b156-dc0c2a431b4c/relationships/organizations + related: + href: https://api.example.org/v3/isolation_segments/bdeg4371-cbd3-4155-b156-dc0c2a431b4c/organizations + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/isolation_segments/{guid}/relationships/organizations/{org_guid}: + delete: + summary: Revoke entitlement to isolation segment for an organization + description: This endpoint revokes the entitlement for the specified organization to the isolation segment. If the isolation segment is assigned to a space within an organization, the entitlement cannot be revoked. If the isolation segment is the organization’s default, the entitlement cannot be revoked. + operationId: revokeIsolationSegmentForOrganization + tags: + - Isolation Segments + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: org_guid + in: path + required: true + schema: + type: string + format: uuid + description: The GUID of the organization to revoke entitlement from. + responses: + '204': + description: No Content + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/isolation_segments/{guid}/relationships/spaces: + get: + summary: List spaces relationship + description: This endpoint lists the spaces to which the isolation segment is assigned. For an Admin, this will list all associated spaces in the system. For an org manager, this will list only those associated spaces belonging to orgs for which the user is a manager. For any other user, this will list only those associated spaces to which the user has access. + operationId: listSpacesForIsolationSegment + tags: + - Isolation Segments + parameters: + - $ref: ../components/parameters/Guid.yaml + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/RelationshipToMany.yaml + examples: + default: + summary: default + value: + data: + - guid: 123e4567-e89b-12d3-a456-426614174000 + - guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/isolation_segments/bdeg4371-cbd3-4155-b156-dc0c2a431b4c/relationships/spaces + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/isolation_segments/{guid}/organizations: + get: + summary: List organizations for isolation segment + description: This endpoint lists the organizations entitled for the isolation segment. For an Admin, this will list all entitled organizations in the system. For any other user, this will list only the entitled organizations to which the user belongs. + operationId: listOrganizationsForIsolationSegmentShort + tags: + - Isolation Segments + parameters: + - $ref: ../components/parameters/Guid.yaml + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/OrganizationList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 2 + total_pages: 1 + first: + href: https://api.example.org/v3/isolation_segments/933b4c58-120b-499a-b85d-4b6fc9e2903b/organizations?page=1&per_page=50 + last: + href: https://api.example.org/v3/isolation_segments/933b4c58-120b-499a-b85d-4b6fc9e2903b/organizations?page=1&per_page=50 + next: null + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2017-02-01T01:33:58Z' + updated_at: '2017-02-01T01:33:58Z' + name: org1 + suspended: false + links: + self: + href: https://api.example.org/v3/organizations/885735b5-aea4-4cf5-8e44-961af0e41920 + domains: + href: https://api.example.org/v3/organizations/885735b5-aea4-4cf5-8e44-961af0e41920/domains + default_domain: + href: https://api.example.org/v3/organizations/885735b5-aea4-4cf5-8e44-961af0e41920/domains/default + quota: + href: https://api.example.org/v3/organization_quotas/b7887f5c-34bb-40c5-9778-577572e4fb2d + relationships: + quota: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + metadata: + labels: {} + annotations: {} + - guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2017-02-02T00:14:30Z' + updated_at: '2017-02-02T00:14:30Z' + name: org2 + suspended: false + relationships: + quota: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/organizations/d4c91047-7b29-4fda-b7f9-04033e5c9c9f + domains: + href: https://api.example.org/v3/organizations/d4c91047-7b29-4fda-b7f9-04033e5c9c9f/domains + default_domain: + href: https://api.example.org/v3/organizations/d4c91047-7b29-4fda-b7f9-04033e5c9c9f/domains/default + quota: + href: https://api.example.org/v3/organization_quotas/b7887f5c-34bb-40c5-9778-577572e4fb2d + metadata: + labels: {} + annotations: {} + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml diff --git a/docs/openapi/apis/cf/latest/paths/Jobs.yaml b/docs/openapi/apis/cf/latest/paths/Jobs.yaml new file mode 100644 index 00000000000..9513037ef4e --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/Jobs.yaml @@ -0,0 +1,54 @@ +/v3/jobs/{guid}: + get: + summary: Get a job + description: Retrieve a specific job. + operationId: getJob + tags: + - Jobs + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: Successfully retrieved job + content: + application/json: + schema: + $ref: ../components/schemas/Job.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2016-10-19T20:25:04Z' + updated_at: '2016-11-08T16:41:26Z' + operation: app.delete + state: FAILED + links: + self: + href: https://api.example.org/v3/jobs/b19ae525-cbd3-4155-b156-dc0c2a431b4c + app: + href: https://api.example.org/v3/apps/7b34f1cf-7e73-428a-bb5a-8a17a8058396 + errors: + - code: 10008 + title: CF-UnprocessableEntity + detail: something went wrong + warnings: + - detail: warning! warning! + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml diff --git a/docs/openapi/apis/cf/latest/paths/Manifests.yaml b/docs/openapi/apis/cf/latest/paths/Manifests.yaml new file mode 100644 index 00000000000..bb82a736c34 --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/Manifests.yaml @@ -0,0 +1,147 @@ +/v3/spaces/{guid}/actions/apply_manifest: + post: + summary: Apply a manifest to a space + description: 'Apply changes specified in a manifest to the named apps and their + underlying processes. The apps must reside in the space. These changes are additive + and will not modify any unspecified properties or remove any existing environment + variables, app features, routes, or services. + + + Apply manifest will only trigger an immediate update for the “instances” property + or routing changes. All other properties require an app restart to take effect.' + operationId: applyManifest + tags: + - Manifests + parameters: + - $ref: '../components/parameters/Guid.yaml' + requestBody: + content: + application/x-yaml: + schema: + type: string + responses: + '202': + description: Accepted + headers: + Location: + description: URL of the job that is applying the manifest + schema: + type: string + format: uri + '401': + $ref: '../components/responses/Unauthorized.yaml' + '404': + $ref: '../components/responses/NotFound.yaml' + '403': + $ref: '../components/responses/Forbidden.yaml' + '422': + $ref: '../components/responses/UnprocessableEntity.yaml' + '400': + $ref: '../components/responses/BadRequest.yaml' + '500': + $ref: '../components/responses/500.yaml' + '503': + $ref: '../components/responses/ServiceUnavailable.yaml' + '409': + $ref: '../components/responses/Conflict.yaml' +/v3/apps/{guid}/manifest: + get: + summary: Generate a manifest for an app + description: Generate a manifest for an app and its underlying processes. + operationId: generateManifest + tags: + - Manifests + parameters: + - $ref: '../components/parameters/Guid.yaml' + responses: + '200': + description: OK + content: + application/x-yaml: + schema: + type: string + '401': + $ref: '../components/responses/Unauthorized.yaml' + '404': + $ref: '../components/responses/NotFound.yaml' + '403': + $ref: '../components/responses/Forbidden.yaml' + '400': + $ref: '../components/responses/BadRequest.yaml' + '500': + $ref: '../components/responses/500.yaml' + '502': + $ref: '../components/responses/BadGateway.yaml' + '503': + $ref: '../components/responses/ServiceUnavailable.yaml' + '422': + $ref: '../components/responses/UnprocessableEntity.yaml' + '409': + $ref: '../components/responses/Conflict.yaml' +/v3/spaces/{guid}/manifest_diff: + post: + summary: Create a manifest diff for a space (experimental) + description: 'This endpoint returns a JSON representation of the difference between + the provided manifest and the current state of a space. + + + Currently, this endpoint can only diff [version 1](#the-manifest-schema) manifests.' + operationId: createManifestDiff + tags: + - Manifests + parameters: + - $ref: '../components/parameters/Guid.yaml' + requestBody: + content: + application/x-yaml: + schema: + type: string + responses: + '201': + description: Created + content: + application/json: + schema: + type: object + properties: + diff: + type: array + items: + type: object + properties: + op: + type: string + path: + type: string + was: + type: string + value: + type: string + '202': + description: Accepted + content: + application/json: + schema: + type: object + properties: + diff: + type: array + items: + type: object + properties: + op: + type: string + path: + type: string + was: + type: string + value: + type: string + '401': + $ref: '../components/responses/Unauthorized.yaml' + '404': + $ref: '../components/responses/NotFound.yaml' + '403': + $ref: '../components/responses/Forbidden.yaml' + '422': + $ref: '../components/responses/UnprocessableEntity.yaml' diff --git a/docs/openapi/apis/cf/latest/paths/OrganizationQuotas.yaml b/docs/openapi/apis/cf/latest/paths/OrganizationQuotas.yaml new file mode 100644 index 00000000000..9df1b0b11d8 --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/OrganizationQuotas.yaml @@ -0,0 +1,381 @@ +/v3/organization_quotas: + get: + summary: List organization quotas + description: This endpoint lists all organization quota resources. + operationId: listOrganizationQuotas + tags: + - Organization Quotas + parameters: + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - name: guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of organization quota guids to filter by + - name: names + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of organization quota names to filter by + - name: organization_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of organization guids to filter by + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/OrganizationQuotaList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 2 + total_pages: 1 + first: + href: https://api.example.org/v3/organization_quotas?page=1&per_page=50 + last: + href: https://api.example.org/v3/organization_quotas?page=1&per_page=50 + next: null + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2016-05-04T17:00:41Z' + updated_at: '2016-05-04T17:00:41Z' + name: don-quixote + apps: + total_memory_in_mb: 5120 + per_process_memory_in_mb: 1024 + log_rate_limit_in_bytes_per_second: 1024 + total_instances: 10 + per_app_tasks: 5 + services: + paid_services_allowed: true + total_service_instances: 10 + total_service_keys: 20 + routes: + total_routes: 8 + total_reserved_ports: 4 + domains: + total_domains: 7 + relationships: + organizations: + data: + - guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/organization_quotas/quota-1-guid + - guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2017-05-04T17:00:41Z' + updated_at: '2017-05-04T17:00:41Z' + name: sancho-panza + apps: + total_memory_in_mb: 2048 + per_process_memory_in_mb: 1024 + log_rate_limit_in_bytes_per_second: 1024 + total_instances: 5 + per_app_tasks: 2 + services: + paid_services_allowed: true + total_service_instances: 10 + total_service_keys: 20 + routes: + total_routes: 8 + total_reserved_ports: 4 + domains: + total_domains: 7 + relationships: + organizations: + data: [] + links: + self: + href: https://api.example.org/v3/organization_quotas/quota-2-guid + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + post: + summary: Create an organization quota + description: |- + This endpoint creates a new organization quota, but does not assign it to a specific organization unless an organization GUID is provided in the `relationships.organizations` parameter. + + To create an organization quota you must be an admin. + operationId: createOrganizationQuota + tags: + - Organization Quotas + requestBody: + $ref: ../components/requestBodies/OrganizationQuotaCreateRequestBody.yaml + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: ../components/schemas/OrganizationQuota.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2016-05-04T17:00:41Z' + updated_at: '2016-05-04T17:00:41Z' + name: don-quixote + apps: + total_memory_in_mb: 5120 + per_process_memory_in_mb: 1024 + log_rate_limit_in_bytes_per_second: 1024 + total_instances: 10 + per_app_tasks: 5 + services: + paid_services_allowed: true + total_service_instances: 10 + total_service_keys: 20 + routes: + total_routes: 8 + total_reserved_ports: 4 + domains: + total_domains: 7 + relationships: + organizations: + data: + - guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/organization_quotas/quota-guid + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/organization_quotas/{guid}: + get: + summary: Get an organization quota + description: This endpoint gets an individual organization quota resource. + operationId: getOrganizationQuota + tags: + - Organization Quotas + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/OrganizationQuota.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2016-05-04T17:00:41Z' + updated_at: '2016-05-04T17:00:41Z' + name: don-quixote + apps: + total_memory_in_mb: 5120 + per_process_memory_in_mb: 1024 + log_rate_limit_in_bytes_per_second: 1024 + total_instances: 10 + per_app_tasks: 5 + services: + paid_services_allowed: true + total_service_instances: 10 + total_service_keys: 20 + routes: + total_routes: 8 + total_reserved_ports: 4 + domains: + total_domains: 7 + relationships: + organizations: + data: + - guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/organization_quotas/quota-guid + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update an organization quota + description: This endpoint will only update the parameters specified in the request body. Any unspecified parameters will retain their existing values. + operationId: updateOrganizationQuota + tags: + - Organization Quotas + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + $ref: ../components/requestBodies/OrganizationQuotaUpdateRequestBody.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/OrganizationQuota.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2016-05-04T17:00:41Z' + updated_at: '2016-05-04T17:00:41Z' + name: don-quixote + apps: + total_memory_in_mb: 5120 + per_process_memory_in_mb: 1024 + log_rate_limit_in_bytes_per_second: 1024 + total_instances: 10 + per_app_tasks: 5 + services: + paid_services_allowed: true + total_service_instances: 10 + total_service_keys: 20 + routes: + total_routes: 8 + total_reserved_ports: 4 + domains: + total_domains: 7 + relationships: + organizations: + data: + - guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/organization_quotas/quota-guid + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + delete: + summary: Delete an organization quota + description: Organization quotas cannot be deleted when applied to any organizations. + operationId: deleteOrganizationQuota + tags: + - Organization Quotas + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '202': + description: Accepted + headers: + Location: + description: URL of the job that is deleting the organization quota + schema: + type: string + format: uri + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml +/v3/organization_quotas/{quota_guid}/relationships/organizations: + post: + summary: Apply an organization quota to an organization + description: |- + This endpoint applies an organization quota to one or more organizations. + + Only admin users can apply an organization quota to an organization. + operationId: applyOrganizationQuota + tags: + - Organization Quotas + parameters: + - name: quota_guid + in: path + required: true + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/RelationshipToMany.yaml + examples: + default: + summary: default + value: + data: + - guid: 123e4567-e89b-12d3-a456-426614174000 + - guid: 123e4567-e89b-12d3-a456-426614174000 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/RelationshipToMany.yaml + examples: + default: + summary: default + value: + data: + - guid: 123e4567-e89b-12d3-a456-426614174000 + - guid: 123e4567-e89b-12d3-a456-426614174000 + - guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/organization_quotas/quota-guid/relationships/organizations + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml diff --git a/docs/openapi/apis/cf/latest/paths/Organizations.yaml b/docs/openapi/apis/cf/latest/paths/Organizations.yaml new file mode 100644 index 00000000000..6312086350f --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/Organizations.yaml @@ -0,0 +1,539 @@ +/v3/organizations: + get: + summary: List organizations + description: Retrieve all organizations the user has access to. + operationId: listOrganizations + tags: + - Organizations + parameters: + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + - $ref: ../components/parameters/LabelSelector.yaml + - name: names + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of organization names to filter by + - name: guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of organization guids to filter by + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/OrganizationList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 2 + total_pages: 1 + first: + href: https://api.example.org/v3/organizations?page=1&per_page=50 + last: + href: https://api.example.org/v3/organizations?page=1&per_page=50 + next: null + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2017-02-01T01:33:58Z' + updated_at: '2017-02-01T01:33:58Z' + name: org1 + suspended: false + relationships: + quota: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/organizations/885735b5-aea4-4cf5-8e44-961af0e41920 + domains: + href: https://api.example.org/v3/organizations/885735b5-aea4-4cf5-8e44-961af0e41920/domains + default_domain: + href: https://api.example.org/v3/organizations/885735b5-aea4-4cf5-8e44-961af0e41920/domains/default + quota: + href: https://api.example.org/v3/organization_quotas/b7887f5c-34bb-40c5-9778-577572e4fb2d + metadata: + labels: {} + annotations: {} + - guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2017-02-02T00:14:30Z' + updated_at: '2017-02-02T00:14:30Z' + name: org2 + suspended: false + relationships: + quota: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/organizations/d4c91047-7b29-4fda-b7f9-04033e5c9c9f + domains: + href: https://api.example.org/v3/organizations/d4c91047-7b29-4fda-b7f9-04033e5c9c9f/domains + default_domain: + href: https://api.example.org/v3/organizations/d4c91047-7b29-4fda-b7f9-04033e5c9c9f/domains/default + quota: + href: https://api.example.org/v3/organization_quotas/b7887f5c-34bb-40c5-9778-577572e4fb2d + metadata: + labels: {} + annotations: {} + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + post: + summary: Create an organization + description: Create an organization. + operationId: createOrganization + tags: + - Organizations + requestBody: + $ref: ../components/requestBodies/OrganizationCreateRequestBody.yaml + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: ../components/schemas/Organization.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2017-02-01T01:33:58Z' + updated_at: '2017-02-01T01:33:58Z' + name: my-organization + suspended: false + relationships: + quota: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/organizations/24637893-3b77-489d-bb79-8466f0d88b52 + domains: + href: https://api.example.org/v3/organizations/24637893-3b77-489d-bb79-8466f0d88b52/domains + default_domain: + href: https://api.example.org/v3/organizations/24637893-3b77-489d-bb79-8466f0d88b52/domains/default + quota: + href: https://api.example.org/v3/organization_quotas/b7887f5c-34bb-40c5-9778-577572e4fb2d + metadata: + labels: {} + annotations: {} + links: + quota: + operationId: getOrganizationQuota + parameters: + guid: $response.body#/relationships/quota/data/guid + description: Retrieve the quota associated with this organization + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/organizations/{guid}: + get: + summary: Get an organization + description: This endpoint retrieves the specified organization object. + operationId: getOrganization + tags: + - Organizations + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/Organization.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2017-02-01T01:33:58Z' + updated_at: '2017-02-01T01:33:58Z' + name: my-organization + suspended: false + relationships: + quota: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/organizations/24637893-3b77-489d-bb79-8466f0d88b52 + domains: + href: https://api.example.org/v3/organizations/24637893-3b77-489d-bb79-8466f0d88b52/domains + default_domain: + href: https://api.example.org/v3/organizations/24637893-3b77-489d-bb79-8466f0d88b52/domains/default + quota: + href: https://api.example.org/v3/organization_quotas/b7887f5c-34bb-40c5-9778-577572e4fb2d + metadata: + labels: {} + annotations: {} + links: + quota: + operationId: getOrganizationQuota + parameters: + guid: $response.body#/relationships/quota/data/guid + description: Retrieve the quota associated with this organization + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update an organization + description: Update an organization. + operationId: updateOrganization + tags: + - Organizations + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + $ref: ../components/requestBodies/OrganizationUpdateRequestBody.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/Organization.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2017-02-01T01:33:58Z' + updated_at: '2017-02-01T01:33:58Z' + name: my-organization + suspended: false + relationships: + quota: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/organizations/24637893-3b77-489d-bb79-8466f0d88b52 + domains: + href: https://api.example.org/v3/organizations/24637893-3b77-489d-bb79-8466f0d88b52/domains + default_domain: + href: https://api.example.org/v3/organizations/24637893-3b77-489d-bb79-8466f0d88b52/domains/default + quota: + href: https://api.example.org/v3/organization_quotas/b7887f5c-34bb-40c5-9778-577572e4fb2d + metadata: + labels: {} + annotations: {} + links: + quota: + operationId: getOrganizationQuota + parameters: + guid: $response.body#/relationships/quota/data/guid + description: Retrieve the quota associated with this organization + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + delete: + summary: Delete an organization + description: When an organization is deleted, user roles associated with the organization will also be deleted. + operationId: deleteOrganization + tags: + - Organizations + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '202': + description: Accepted + headers: + location: + description: URL of the job to query the asynchronous operation + schema: + type: string + format: uri + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml +/v3/organizations/{guid}/domains/default: + get: + summary: Get default domain + description: Retrieve the default domain for a given organization. + operationId: getDefaultDomainForOrganization + tags: + - Organizations + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/Domain.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/organizations/{guid}/usage_summary: + get: + summary: Get usage summary + description: This endpoint retrieves the specified organization object's memory and app instance usage summary. + operationId: getUsageSummaryForOrganization + tags: + - Organizations + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + usage_summary: + type: object + properties: + started_instances: + type: integer + memory_in_mb: + type: integer + routes: + type: integer + service_instances: + type: integer + reserved_ports: + type: integer + domains: + type: integer + per_app_tasks: + type: integer + service_keys: + type: integer + links: + type: object + properties: + self: + $ref: ../components/schemas/Link.yaml + description: The URL to get this usage summary + organization: + $ref: ../components/schemas/Link.yaml + description: The URL to get the organization for this usage summary + examples: + default: + summary: default + value: + usage_summary: + started_instances: 3 + memory_in_mb: 50 + routes: 4 + service_instances: 2 + reserved_ports: 1 + domains: 4 + per_app_tasks: 2 + service_keys: 1 + links: + self: + href: https://api.example.org/v3/organizations/d4c91047-7b29-4fda-b7f9-04033e5c9c9f/usage_summary + organization: + href: https://api.example.org/v3/organizations/d4c91047-7b29-4fda-b7f9-04033e5c9c9f + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/organizations/{guid}/users: + get: + summary: List users for an organization + description: Retrieve all users with a role in the specified organization. + operationId: listUsersForOrganization + tags: + - Organizations + parameters: + - $ref: ../components/parameters/Guid.yaml + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - name: guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of user guids to filter by + - name: usernames + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of usernames to filter by + - name: origins + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of user origins to filter by + - name: partial_usernames + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of partial usernames to filter by + - $ref: ../components/parameters/LabelSelector.yaml + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/UserList.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/organizations/{guid}/relationships/default_isolation_segment: + get: + summary: Get default isolation segment + description: Retrieve the default isolation segment for a given organization. + operationId: getDefaultIsolationSegmentForOrganization + tags: + - Organizations + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/RelationshipToOne.yaml + examples: + default: + summary: default + value: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/organizations/d4c91047-7b29-4fda-b7f9-04033e5c9c9f/relationships/default_isolation_segment + related: + href: https://api.example.org/v3/isolation_segments/9d8e007c-ce52-4ea7-8a57-f2825d2c6b39 + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Assign default isolation segment + description: |- + Set the default isolation segment for a given organization. Only isolation segments that are entitled to the organization are eligible to be the default isolation segment. + + Apps will not run in the new default isolation segment until they are restarted. + operationId: assignDefaultIsolationSegmentForOrganization + tags: + - Organizations + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/RelationshipToOne.yaml + examples: + default: + summary: default + value: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/RelationshipToOne.yaml + examples: + default: + summary: default + value: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/organizations/d4c91047-7b29-4fda-b7f9-04033e5c9c9f/relationships/default_isolation_segment + related: + href: https://api.example.org/v3/isolation_segments/9d8e007c-ce52-4ea7-8a57-f2825d2c6b39 + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml diff --git a/docs/openapi/apis/cf/latest/paths/Packages.yaml b/docs/openapi/apis/cf/latest/paths/Packages.yaml new file mode 100644 index 00000000000..0986f03c768 --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/Packages.yaml @@ -0,0 +1,688 @@ +/v3/packages: + get: + summary: List packages + description: Retrieve all packages. + operationId: listPackages + tags: + - Packages + parameters: + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + - $ref: ../components/parameters/LabelSelector.yaml + - name: guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of package guids to filter by + - name: states + in: query + schema: + type: array + items: + type: string + enum: + - AWAITING_UPLOAD + - PROCESSING_UPLOAD + - READY + - FAILED + - COPYING + - EXPIRED + description: Comma-delimited list of package states to filter by + - name: types + in: query + schema: + type: array + items: + type: string + enum: + - bits + - docker + description: Comma-delimited list of package types to filter by + - name: app_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of app guids to filter by + - name: space_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of space guids to filter by + - name: organization_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of organization guids to filter by + responses: + '200': + description: List of packages + content: + application/json: + schema: + $ref: ../components/schemas/PackageList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 2 + total_pages: 1 + first: + href: https://api.example.org?types=bits%2Cdocker&page=1&per_page=2 + last: + href: https://api.example.org?types=bits%2Cdocker&page=1&per_page=2 + next: null + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + type: bits + data: + checksum: + type: sha256 + value: null + error: null + state: AWAITING_UPLOAD + created_at: '2015-11-03T00:53:54Z' + updated_at: '2016-06-08T16:41:26Z' + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/packages/a57fd932-85db-483a-a27e-b00efbb3b0a4 + upload: + href: https://api.example.org/v3/packages/a57fd932-85db-483a-a27e-b00efbb3b0a4/upload + method: POST + download: + href: https://api.example.org/v3/packages/a57fd932-85db-483a-a27e-b00efbb3b0a4/download + method: GET + app: + href: https://api.example.org/v3/apps/fa3558ce-1c4d-46fc-9776-54b9c8021745 + metadata: + labels: {} + annotations: {} + - guid: 123e4567-e89b-12d3-a456-426614174000 + type: docker + data: + image: registry/image:latest + username: username + password: '***' + state: READY + created_at: '2015-11-03T00:53:54Z' + updated_at: '2016-06-08T16:41:26Z' + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/packages/8f1f294d-cef8-4c11-9f0b-3bcdc0bd2691 + app: + href: https://api.example.org/v3/apps/fa3558ce-1c4d-46fc-9776-54b9c8021745 + metadata: + labels: {} + annotations: {} + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + post: + summary: Create a package + description: Create a package. + operationId: createPackage + tags: + - Packages + requestBody: + $ref: ../components/requestBodies/PackageCreateRequestBody.yaml + responses: + '201': + description: Successfully created package + content: + application/json: + schema: + $ref: ../components/schemas/Package.yaml + examples: + docker_app: + summary: Docker app + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + type: docker + data: + image: registry/image:latest + username: username + password: '***' + state: READY + created_at: '2015-11-03T00:53:54Z' + updated_at: '2016-06-08T16:41:26Z' + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/packages/4cb65058-f04f-458f-aca1-5f4e43de6407 + app: + href: https://api.example.org/v3/apps/d8b8148d-5798-44de-821a-64b85b15e968 + metadata: + labels: {} + annotations: {} + links: + app: + operationId: getApp + parameters: + guid: $response.body#/relationships/app/data/guid + description: Retrieve the app for this package + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/packages/{guid}: + get: + summary: Get a package + description: Retrieve a package. + operationId: getPackage + tags: + - Packages + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: Successfully retrieved package + content: + application/json: + schema: + $ref: ../components/schemas/Package.yaml + links: + app: + operationId: getApp + parameters: + guid: $response.body#/relationships/app/data/guid + description: Retrieve the app for this package + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + patch: + summary: Update a package + description: Update a package. + operationId: updatePackage + tags: + - Packages + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + description: Package object that needs to be updated + required: true + content: + application/json: + schema: + type: object + properties: + metadata: + $ref: ../components/schemas/Metadata.yaml + username: + type: string + description: The username for the image’s registry. Only possible for Docker package. + password: + type: string + description: The password for the image’s registry. Only possible for Docker package. + examples: + default: + summary: default + value: + metadata: + labels: + key: value + annotations: + note: detailed information + responses: + '200': + description: Successfully updated package + content: + application/json: + schema: + $ref: ../components/schemas/Package.yaml + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + delete: + summary: Delete a package + description: Delete a package. + operationId: deletePackage + tags: + - Packages + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '202': + description: Accepted + headers: + Location: + description: URL of the job that is deleting the package + schema: + type: string + format: uri + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml +/v3/packages/{guid}/droplets: + get: + summary: List droplets for a package + description: Retrieve a list of droplets belonging to a package. + operationId: listPackageDroplets + tags: + - Packages + - Droplets + parameters: + - $ref: ../components/parameters/Guid.yaml + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - $ref: ../components/parameters/LabelSelector.yaml + - name: guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of droplet guids to filter by + - name: states + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of droplet states to filter by + responses: + '200': + description: List of droplets for the package + content: + application/json: + schema: + $ref: ../components/schemas/DropletList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 2 + total_pages: 1 + first: + href: https://api.example.org?page=1&per_page=50 + last: + href: https://api.example.org?page=1&per_page=50 + next: null + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + state: STAGED + error: null + lifecycle: + type: buildpack + data: {} + image: null + execution_metadata: PRIVATE DATA HIDDEN + process_types: + redacted_message: 123e4567-e89b-12d3-a456-426614174000 + checksum: + type: sha256 + value: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 + buildpacks: + - name: ruby_buildpack + detect_output: ruby 1.6.14 + version: 1.1.1. + buildpack_name: ruby + stack: cflinuxfs4 + created_at: '2016-03-28T23:39:34Z' + updated_at: '2016-03-28T23:39:47Z' + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/droplets/585bc3c1-3743-497d-88b0-403ad6b56d16 + package: + href: https://api.example.org/v3/packages/8222f76a-9e09-4360-b3aa-1ed329945e92 + app: + href: https://api.example.org/v3/apps/7b34f1cf-7e73-428a-bb5a-8a17a8058396 + assign_current_droplet: + href: https://api.example.org/v3/apps/7b34f1cf-7e73-428a-bb5a-8a17a8058396/relationships/current_droplet + method: PATCH + download: + href: https://api.example.org/v3/droplets/585bc3c1-3743-497d-88b0-403ad6b56d16/download + metadata: + labels: {} + annotations: {} + - guid: 123e4567-e89b-12d3-a456-426614174000 + state: STAGED + error: null + lifecycle: + type: docker + data: {} + execution_metadata: 123e4567-e89b-12d3-a456-426614174000 + process_types: + redacted_message: 123e4567-e89b-12d3-a456-426614174000 + image: cloudfoundry/diego-docker-app-custom:latest + checksum: null + buildpacks: null + stack: null + created_at: '2016-03-17T00:00:01Z' + updated_at: '2016-03-17T21:41:32Z' + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/droplets/fdf3851c-def8-4de1-87f1-6d4543189e22 + package: + href: https://api.example.org/v3/packages/c5725684-a02f-4e59-bc67-8f36ae944688 + app: + href: https://api.example.org/v3/apps/7b34f1cf-7e73-428a-bb5a-8a17a8058396 + assign_current_droplet: + href: https://api.example.org/v3/apps/7b34f1cf-7e73-428a-bb5a-8a17a8058396/relationships/current_droplet + method: PATCH + metadata: + labels: {} + annotations: {} + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/packages/{guid}/upload: + post: + summary: Upload package bits + description: This upload endpoint takes a multi-part form requests for packages of type `bits`. The request requires either a [.zip file](https://en.wikipedia.org/wiki/Zip_(file_format)) uploaded under the `bits` field or a list of [resource match objects](#the-resource-match-object) under the `resources` field. These field may be used together. + operationId: uploadPackageBits + tags: + - Packages + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + content: + multipart/form-data: + schema: + type: object + properties: + bits: + type: string + format: binary + resources: + type: array + items: + type: object + properties: + path: + type: string + size_in_bytes: + type: integer + checksum: + type: object + properties: + value: + type: string + application/json: + schema: + type: object + properties: + resources: + type: array + items: + type: object + properties: + path: + type: string + size_in_bytes: + type: integer + checksum: + type: object + properties: + value: + type: string + responses: + '200': + description: Successfully uploaded package bits + content: + application/json: + schema: + $ref: ../components/schemas/Package.yaml + '202': + description: Upload initiated + headers: + Location: + schema: + type: string + description: URL of the job tracking the upload + content: + application/json: + schema: + $ref: ../components/schemas/Package.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/packages/{guid}/download: + get: + summary: Download package bits + description: |- + This endpoint downloads the bits of an existing package. + + When using a remote blobstore, such as AWS, the response is a redirect to the actual location of the bits. If the client is automatically following redirects, then the OAuth token that was used to communicate with Cloud Controller will be replayed on the new redirect request. Some blobstores may reject the request in that case. Clients may need to follow the redirect without including the OAuth token. + operationId: downloadPackageBits + tags: + - Packages + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '302': + description: Redirect to download location + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/packages?source_guid={source_guid}: + post: + summary: Copy a package + description: This endpoint copies the bits of a source package to a target package. + operationId: copyPackage + tags: + - Packages + parameters: + - name: source_guid + in: query + required: true + schema: + type: string + format: uuid + description: The GUID of the package to copy from + requestBody: + description: Destination app for the copied package + required: true + content: + application/json: + schema: + type: object + properties: + relationships: + $ref: ../components/schemas/Relationships.yaml + required: + - relationships + description: Request schema for copying a package + responses: + '201': + description: Successfully copied package + content: + application/json: + schema: + $ref: ../components/schemas/Package.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/apps/{guid}/packages: + get: + summary: List packages for an app + description: Retrieve packages for an app that the user has access to. + operationId: listAppPackages + tags: + - Packages + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of app GUIDs to filter by + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - name: states + in: query + schema: + type: array + items: + type: string + enum: + - AWAITING_UPLOAD + - PROCESSING_UPLOAD + - READY + - FAILED + - COPYING + - EXPIRED + description: Comma-delimited list of package states to filter by + - name: types + in: query + schema: + type: array + items: + type: string + enum: + - bits + - docker + description: Comma-delimited list of package types to filter by + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/PackageList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 1 + total_pages: 1 + first: + href: https://api.example.org/v3/apps/f2efe391-2b5b-4836-8518-ad93fa9ebf69/packages?states=READY&page=1&per_page=50 + last: + href: https://api.example.org/v3/apps/f2efe391-2b5b-4836-8518-ad93fa9ebf69/packages?states=READY&page=1&per_page=50 + next: null + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + type: bits + data: + error: null + checksum: + type: sha256 + value: null + state: READY + created_at: '2016-03-17T21:41:09Z' + updated_at: '2016-06-08T16:41:26Z' + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/packages/752edab0-2147-4f58-9c25-cd72ad8c3561 + upload: + href: https://api.example.org/v3/packages/752edab0-2147-4f58-9c25-cd72ad8c3561/upload + method: POST + download: + href: https://api.example.org/v3/packages/752edab0-2147-4f58-9c25-cd72ad8c3561/download + method: GET + app: + href: https://api.example.org/v3/apps/f2efe391-2b5b-4836-8518-ad93fa9ebf69 + metadata: + labels: {} + annotations: {} + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml diff --git a/docs/openapi/apis/cf/latest/paths/Processes.yaml b/docs/openapi/apis/cf/latest/paths/Processes.yaml new file mode 100644 index 00000000000..278fa7f5eed --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/Processes.yaml @@ -0,0 +1,640 @@ +/v3/processes: + get: + summary: List processes + description: Retrieve all processes. + operationId: listProcesses + tags: + - Processes + parameters: + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + - $ref: ../components/parameters/LabelSelector.yaml + - name: guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of process guids to filter by + - name: types + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of process types to filter by + - name: app_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of app guids to filter by + - name: space_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of space guids to filter by + - name: organization_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of organization guids to filter by + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/ProcessList.yaml + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/processes/{guid}: + get: + summary: Get a process + description: Get a process. + operationId: getProcess + tags: + - Processes + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/Process.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + type: web + command: rackup + user: vcap + instances: 5 + memory_in_mb: 256 + disk_in_mb: 1024 + log_rate_limit_in_bytes_per_second: 1024 + health_check: + type: port + data: + timeout: null + readiness_health_check: + type: process + data: + invocation_timeout: null + process_instances: + - index: 0 + state: RUNNING + since: 123456789 + - index: 1 + state: STARTING + since: 123 + - index: 2 + state: DOWN + since: 456 + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + revision: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + metadata: + labels: {} + annotations: {} + created_at: '2016-03-23T18:48:22Z' + updated_at: '2016-03-23T18:48:42Z' + version: e9df685c-0464-4aa7-b5f0-8ed843077c13 + links: + self: + href: https://api.example.org/v3/processes/6a901b7c-9417-4dc1-8189-d3234aa0ab82 + scale: + href: https://api.example.org/v3/processes/6a901b7c-9417-4dc1-8189-d3234aa0ab82/actions/scale + method: POST + app: + href: https://api.example.org/v3/apps/ccc25a0f-c8f4-4b39-9f1b-de9f328d0ee5 + space: + href: https://api.example.org/v3/spaces/2f35885d-0c9d-4423-83ad-fd05066f8576 + stats: + href: https://api.example.org/v3/processes/6a901b7c-9417-4dc1-8189-d3234aa0ab82/stats + process_instances: + href: https://api.example.org/v3/processes/6a901b7c-9417-4dc1-8189-d3234aa0ab82/process_instances + links: + app: + operationId: getApp + parameters: + guid: $response.body#/relationships/app/data/guid + description: Retrieve the app for this process + revision: + operationId: getRevision + parameters: + guid: $response.body#/relationships/revision/data/guid + description: Retrieve the revision for this process + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update a process + description: Update a process. + operationId: updateProcess + tags: + - Processes + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + $ref: ../components/requestBodies/ProcessUpdateRequestBody.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/Process.yaml + links: + app: + operationId: getApp + parameters: + guid: $response.body#/relationships/app/data/guid + description: Retrieve the app for this process + revision: + operationId: getRevision + parameters: + guid: $response.body#/relationships/revision/data/guid + description: Retrieve the revision for this process + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/processes/{guid}/process_instances: + get: + summary: List instances for a process + description: Retrieve the instances for a process. Unlike the stats endpoint, this returns a simplified view with only the index, state, and uptime of each instance. + operationId: listProcessInstances + tags: + - Processes + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + resources: + type: array + items: + type: object + properties: + index: + type: integer + state: + type: string + enum: + - RUNNING + - CRASHED + - STARTING + - DOWN + since: + type: number + format: double + links: + type: object + properties: + self: + $ref: ../components/schemas/Link.yaml + process: + $ref: ../components/schemas/Link.yaml + examples: + default: + summary: default + value: + resources: + - index: 0 + state: RUNNING + since: 123456789 + - index: 1 + state: STARTING + since: 123 + - index: 2 + state: DOWN + since: 456 + links: + self: + href: https://api.example.org/v3/processes/6a901b7c-9417-4dc1-8189-d3234aa0ab82/process_instances + process: + href: https://api.example.org/v3/processes/6a901b7c-9417-4dc1-8189-d3234aa0ab82 + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/processes/{guid}/stats: + get: + summary: Get stats for a process + description: Get stats for a process. + operationId: getProcessStats + tags: + - Processes + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/ProcessStats.yaml + examples: + default: + summary: default + value: + resources: + - type: web + index: 0 + instance_guid: 123e4567-e89b-12d3-a456-426614174000 + state: RUNNING + routable: true + usage: + time: '2016-03-23T23:17:30.476314154Z' + cpu: 0.00038711029163348665 + cpu_entitlement: 0.01117396940977856 + mem: 19177472 + disk: 69705728 + log_rate: 0 + host: 10.244.16.10 + instance_internal_ip: 10.255.93.167 + instance_ports: + - external: 64546 + internal: 8080 + external_tls_proxy_port: 61002 + internal_tls_proxy_port: 61003 + uptime: 9042 + mem_quota: 268435456 + disk_quota: 1073741824 + fds_quota: 16384 + isolation_segment: example_iso_segment + log_rate_limit: null + details: null + - type: web + index: 1 + state: STARTING + routable: false + usage: + cpu: 0 + cpu_entitlement: 0 + disk: 0 + log_rate: 0 + mem: 0 + time: '2016-03-23T21:34:04+00:00' + disk_quota: null + fds_quota: 16384 + host: '' + instance_internal_ip: '' + instance_ports: null + isolation_segment: null + log_rate_limit: null + mem_quota: null + uptime: 0 + details: null + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/processes/{guid}/actions/scale: + post: + summary: Scale a process + description: Scale a process. + operationId: scaleProcess + tags: + - Processes + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + content: + application/json: + schema: + properties: + instances: + type: + - integer + - 'null' + description: The number of instances to run + memory_in_mb: + type: + - integer + - 'null' + description: The memory in MB allocated per instance + disk_in_mb: + type: + - integer + - 'null' + description: The disk in MB allocated per instance + log_rate_limit_in_bytes_per_second: + type: + - integer + - 'null' + description: The log rate limit in bytes per second per instance + examples: + default: + summary: default + value: + instances: 5 + memory_in_mb: 256 + disk_in_mb: 1024 + log_rate_limit_in_bytes_per_second: 1024 + responses: + '202': + description: Accepted + content: + application/json: + schema: + $ref: ../components/schemas/Process.yaml + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/processes/{guid}/instances/{index}: + delete: + summary: Terminate a process instance + description: |- + Terminate an instance of a specific process. Health management will eventually restart the instance. + + This allows a user to stop a single misbehaving instance of a process. + operationId: terminateProcessInstance + tags: + - Processes + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: index + in: path + required: true + schema: + type: integer + responses: + '204': + description: No Content + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml +/v3/apps/{guid}/processes: + get: + summary: List processes for an app + description: Retrieves all processes belonging to an app. + operationId: listAppProcesses + tags: + - Processes + parameters: + - $ref: ../components/parameters/Guid.yaml + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/ProcessList.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/apps/{guid}/processes/{type}: + get: + summary: Get a process for an app + description: Get a specific process for an app. + operationId: getProcessForApp + tags: + - Processes + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: type + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/Process.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update a process for an app + description: Update a specific process for an app. + operationId: updateProcessForApp + tags: + - Processes + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: type + in: path + required: true + schema: + type: string + requestBody: + $ref: ../components/requestBodies/ProcessUpdateRequestBody.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/Process.yaml + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/apps/{guid}/processes/{type}/stats: + get: + summary: Get stats for a process for an app + description: Get stats for a specific process for an app. + operationId: getProcessStatsForApp + tags: + - Processes + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: type + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/ProcessStats.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/apps/{guid}/processes/{type}/actions/scale: + post: + summary: Scale a process for an app + description: Scale a specific process for an app. + operationId: scaleProcessForApp + tags: + - Processes + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: type + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + properties: + instances: + type: + - integer + - 'null' + description: The number of instances to run + memory_in_mb: + type: + - integer + - 'null' + description: The memory in MB allocated per instance + disk_in_mb: + type: + - integer + - 'null' + description: The disk in MB allocated per instance + log_rate_limit_in_bytes_per_second: + type: + - integer + - 'null' + description: The log rate limit in bytes per second per instance + responses: + '202': + description: Accepted + content: + application/json: + schema: + $ref: ../components/schemas/Process.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/apps/{guid}/processes/{type}/instances/{index}: + delete: + summary: Terminate a process instance for an app + description: Terminate a specific process instance for an app. + operationId: terminateProcessInstanceForApp + tags: + - Processes + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: type + in: path + required: true + schema: + type: string + - name: index + in: path + required: true + schema: + type: integer + responses: + '204': + description: No Content + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml diff --git a/docs/openapi/apis/cf/latest/paths/ResourceMatches.yaml b/docs/openapi/apis/cf/latest/paths/ResourceMatches.yaml new file mode 100644 index 00000000000..3cf82d8fda6 --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/ResourceMatches.yaml @@ -0,0 +1,85 @@ +/v3/resource_matches: + post: + summary: Create a resource match + description: |- + This endpoint returns a list of **cached** resources from the input list. + + This endpoint matches given resource SHA-1/file size pairs against the Cloud Controller cache and reports the subset that describes already cached files. This is usually used to avoid uploading duplicate files when pushing an app which has only been partially changed. The `path` and `mode` fields are not used when matching. + + When [uploading package bits](#upload-package-bits), the response from this endpoint should be used as the `resources` form field. As such, it is useful to include the `path` and `mode` fields for each resource even though they are not used when determining a resource match. + + Cloud Foundry operators may set minimum/maximum file sizes to match against. If the file size provided is outside this range, it will not be matched against. + + If the `resource_matching` [feature flag](#the-feature-flag-object) is disabled, resource matching will always return an empty array. + operationId: postResourceMatches + tags: + - Resource Matches + requestBody: + content: + application/json: + schema: + type: object + properties: + resources: + type: array + items: + type: object + properties: + checksum: + type: object + properties: + value: + type: string + size_in_bytes: + type: integer + path: + type: string + description: List of resources to check for in the resource cache + required: + - resources + examples: + default: + summary: default + value: + resources: + - checksum: + value: 002d760bea1be268e27077412e11a320d0f164d3 + size_in_bytes: 36 + path: C:\path\to\file + mode: '645' + - checksum: + value: a9993e364706816aba3e25717850c26c9cd0d89d + size_in_bytes: 1 + path: path/to/file + mode: '644' + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: ../components/schemas/ResourceMatch.yaml + examples: + default: + summary: default + value: + resources: + - checksum: + value: a9993e364706816aba3e25717850c26c9cd0d89d + size_in_bytes: 1 + path: path/to/file + mode: '644' + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml diff --git a/docs/openapi/apis/cf/latest/paths/Revisions.yaml b/docs/openapi/apis/cf/latest/paths/Revisions.yaml new file mode 100644 index 00000000000..a98e3025033 --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/Revisions.yaml @@ -0,0 +1,297 @@ +/v3/revisions/{guid}: + get: + summary: Get a revision + description: Retrieve a revision. + operationId: getRevision + tags: + - Revisions + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: Successfully retrieved revision + content: + application/json: + schema: + $ref: ../components/schemas/Revision.yaml + links: + app: + operationId: getApp + parameters: + guid: $response.body#/relationships/app/data/guid + description: Retrieve the app for this revision + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + patch: + summary: Update a revision + description: Update a revision. + operationId: updateRevision + tags: + - Revisions + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + description: Revision object that needs to be updated + required: true + content: + application/json: + schema: + type: object + properties: + metadata: + $ref: ../components/schemas/Metadata.yaml + description: Request schema for updating a revision + examples: + default: + summary: default + value: + metadata: + labels: + key: value + annotations: + note: detailed information + responses: + '200': + description: Successfully updated revision + content: + application/json: + schema: + $ref: ../components/schemas/Revision.yaml + links: + app: + operationId: getApp + parameters: + guid: $response.body#/relationships/app/data/guid + description: Retrieve the app for this revision + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/revisions/{guid}/environment_variables: + get: + summary: Get environment variables for a revision + description: Retrieve the environment variables that are associated with the revision. + operationId: getRevisionEnvironmentVariables + tags: + - Revisions + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: Successfully retrieved revision environment variables + content: + application/json: + schema: + type: object + properties: + var: + type: object + description: Environment variables for the revision + additionalProperties: + type: string + links: + type: object + properties: + self: + $ref: ../components/schemas/Link.yaml + revision: + $ref: ../components/schemas/Link.yaml + app: + $ref: ../components/schemas/Link.yaml + examples: + default: + summary: default + value: + var: + RAILS_ENV: production + links: + self: + href: https://api.example.org/v3/revisions/[guid]/environment_variables + revision: + href: https://api.example.org/v3/revisions/[guid] + app: + href: https://api.example.org/v3/apps/[app_guid] + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/apps/{guid}/revisions: + get: + summary: List revisions for an app + description: Retrieve revisions for an app the user has access to. + operationId: listRevisionsForApp + tags: + - Revisions + parameters: + - $ref: ../components/parameters/Guid.yaml + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - $ref: ../components/parameters/LabelSelector.yaml + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + - name: versions + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of revision versions to filter by + responses: + '200': + description: Successfully retrieved revisions for app + content: + application/json: + schema: + $ref: ../components/schemas/RevisionList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 1 + total_pages: 1 + first: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/revisions?page=1&per_page=50 + last: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/revisions?page=1&per_page=50 + next: null + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + version: 1 + droplet: + guid: 123e4567-e89b-12d3-a456-426614174000 + processes: + web: + command: bundle exec rackup + sidecars: + - name: auth-sidecar + command: bundle exec sidecar + process_types: + - web + memory_in_mb: 300 + description: Initial revision. + deployable: true + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2017-02-01T01:33:58Z' + updated_at: '2017-02-01T01:33:58Z' + metadata: + labels: {} + annotations: {} + links: + self: + href: https://api.example.org/v3/revisions/885735b5-aea4-4cf5-8e44-961af0e41920 + app: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446 + environment_variables: + href: https://api.example.org/v3/revisions/885735b5-aea4-4cf5-8e44-961af0e41920/environment_variables + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/apps/{guid}/revisions/deployed: + get: + summary: List deployed revisions for an app + description: Retrieve deployed revisions for an app the user has access to. Deployed revisions are revisions that are linked to started processes in the app. + operationId: listDeployedRevisionsForApp + tags: + - Revisions + parameters: + - $ref: ../components/parameters/Guid.yaml + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + responses: + '200': + description: Successfully retrieved deployed revisions for app + content: + application/json: + schema: + $ref: ../components/schemas/RevisionList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 1 + total_pages: 1 + first: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/revisions?page=1&per_page=50 + last: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/revisions?page=1&per_page=50 + next: null + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + version: 1 + droplet: + guid: 123e4567-e89b-12d3-a456-426614174000 + processes: + web: + command: bundle exec rackup + sidecars: + - name: auth-sidecar + command: bundle exec sidecar + process_types: + - web + memory_in_mb: 300 + description: Initial revision. + deployable: true + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2017-02-01T01:33:58Z' + updated_at: '2017-02-01T01:33:58Z' + metadata: + labels: {} + annotations: {} + links: + self: + href: https://api.example.org/v3/revisions/885735b5-aea4-4cf5-8e44-961af0e41920 + app: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446 + environment_variables: + href: https://api.example.org/v3/revisions/885735b5-aea4-4cf5-8e44-961af0e41920/environment_variables + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml diff --git a/docs/openapi/apis/cf/latest/paths/Roles.yaml b/docs/openapi/apis/cf/latest/paths/Roles.yaml new file mode 100644 index 00000000000..4742d278b75 --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/Roles.yaml @@ -0,0 +1,299 @@ +/v3/roles: + get: + summary: List roles + description: This endpoint lists roles that the user has access to. + operationId: listRoles + tags: + - Roles + parameters: + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + - $ref: ../components/parameters/LabelSelector.yaml + - name: guids + in: query + description: Comma-delimited list of role guids to filter by + schema: + type: array + items: + type: string + - name: types + in: query + description: Comma-delimited list of role types to filter by + schema: + type: array + items: + type: string + enum: + - organization_user + - organization_auditor + - organization_manager + - organization_billing_manager + - space_auditor + - space_developer + - space_manager + - space_supporter + - name: organization_guids + in: query + description: Comma-delimited list of organization guids to filter by + schema: + type: array + items: + type: string + - name: space_guids + in: query + description: Comma-delimited list of space guids to filter by + schema: + type: array + items: + type: string + - name: user_guids + in: query + description: Comma-delimited list of user guids to filter by + schema: + type: array + items: + type: string + - name: include + in: query + description: Optionally include additional related resources in the response; valid values are `user`, `space`, and `organization`. + schema: + type: array + items: + type: string + enum: + - user + - space + - organization + responses: + '200': + $ref: ../components/responses/RoleListResponse.yaml + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + post: + summary: Create a role + description: |- + This endpoint creates a new role for a user in an organization or space. + + To create an organization role you must be an admin or organization manager in the organization associated with the role. + + To create a space role you must be an admin, an organization manager in the parent organization of the space associated with the role, or a space manager in the space associated with the role. + + For a user to be assigned a space role, the user must already have an organization role in the parent organization. + + If the associated user is valid but does not exist in Cloud Controller’s database, a user resource will be created automatically. + + If CAPI property `cc.allow_user_creation_by_org_manager` is enabled, the organization role is being created by username + origin and the user does not exist in UAA yet, the user will be created. The origin must be different from `uaa` in this case. + operationId: createRole + tags: + - Roles + requestBody: + $ref: ../components/requestBodies/RoleCreate.yaml + responses: + '201': + description: Role created + content: + application/json: + schema: + $ref: ../components/schemas/Role.yaml + examples: + by_user_guid: + summary: by user guid + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2019-10-10T17:19:12Z' + updated_at: '2019-10-10T17:19:12Z' + type: organization_auditor + relationships: + user: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + user_group: + data: null + organization: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + space: + data: null + links: + self: + href: https://api.example.org/v3/roles/40557c70-d1bd-4976-a2ab-a85f5e882418 + user: + href: https://api.example.org/v3/users/59eadb5f-fc13-414f-84ba-77a35e239cc8 + organization: + href: https://api.example.org/v3/organizations/05c5da3b-6cbc-421c-87c3-20bb3c41ab7c + by_username_and_origin: + summary: by username and origin + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2019-10-10T17:19:12Z' + updated_at: '2019-10-10T17:19:12Z' + type: organization_auditor + relationships: + user: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + user_group: + data: null + organization: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + space: + data: null + links: + self: + href: https://api.example.org/v3/roles/40557c70-d1bd-4976-a2ab-a85f5e882418 + user: + href: https://api.example.org/v3/users/59eadb5f-fc13-414f-84ba-77a35e239cc8 + organization: + href: https://api.example.org/v3/organizations/05c5da3b-6cbc-421c-87c3-20bb3c41ab7c + links: + user: + operationId: getUser + parameters: + guid: $response.body#/relationships/user/data/guid + description: Retrieve the user for this role + organization: + operationId: getOrganization + parameters: + guid: $response.body#/relationships/organization/data/guid + description: Retrieve the organization for this role (if organization role) + space: + operationId: getSpace + parameters: + guid: $response.body#/relationships/space/data/guid + description: Retrieve the space for this role (if space role) + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '429': + $ref: ../components/responses/TooManyRequests.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/roles/{guid}: + get: + summary: Get a role + description: This endpoint gets an individual role resource. + operationId: getRole + tags: + - Roles + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: include + in: query + description: Optionally include additional related resources in the response; valid values are `user`, `space`, and `organization`. + schema: + type: array + items: + type: string + enum: + - user + - space + - organization + responses: + '200': + description: Role retrieved + content: + application/json: + schema: + $ref: ../components/schemas/Role.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2019-10-10T17:19:12Z' + updated_at: '2019-10-10T17:19:12Z' + type: organization_auditor + relationships: + user: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + user_group: + data: null + organization: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + space: + data: null + links: + self: + href: https://api.example.org/v3/roles/40557c70-d1bd-4976-a2ab-a85f5e882418 + user: + href: https://api.example.org/v3/users/59eadb5f-fc13-414f-84ba-77a35e239cc8 + organization: + href: https://api.example.org/v3/organizations/05c5da3b-6cbc-421c-87c3-20bb3c41ab7c + links: + user: + operationId: getUser + parameters: + guid: $response.body#/relationships/user/data/guid + description: Retrieve the user for this role + organization: + operationId: getOrganization + parameters: + guid: $response.body#/relationships/organization/data/guid + description: Retrieve the organization for this role (if organization role) + space: + operationId: getSpace + parameters: + guid: $response.body#/relationships/space/data/guid + description: Retrieve the space for this role (if space role) + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + delete: + summary: Delete a role + description: This endpoint deletes an individual role. + operationId: deleteRole + tags: + - Roles + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '202': + description: Accepted + headers: + Location: + description: URL of the job that is deleting the role + schema: + type: string + format: uri + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml diff --git a/docs/openapi/apis/cf/latest/paths/Root.yaml b/docs/openapi/apis/cf/latest/paths/Root.yaml new file mode 100644 index 00000000000..43d47b2cfe5 --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/Root.yaml @@ -0,0 +1,55 @@ +get: + summary: Global API Root + description: |- + This endpoint returns links to the APIs available on a given Cloud Foundry deployment. + operationId: getApiRoot + tags: + - Root + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + links: + type: object + description: Links to related resources + properties: + self: + allOf: + - $ref: '../components/schemas/IndexLink.yaml' + - description: Link to the current endpoint + cloud_controller_v2: + allOf: + - $ref: '../components/schemas/IndexLink.yaml' + - description: Link to the Cloud Controller V2 API + cloud_controller_v3: + allOf: + - $ref: '../components/schemas/IndexLink.yaml' + - description: Link to the Cloud Controller V3 API + network_policy_v1: + allOf: + - $ref: '../components/schemas/IndexLink.yaml' + - description: Link to the Network Policy V1 API + uaa: + allOf: + - $ref: '../components/schemas/IndexLink.yaml' + - description: Link to the UAA API + logging: + allOf: + - $ref: '../components/schemas/IndexLink.yaml' + - description: Link to the Logging API + log_cache: + allOf: + - $ref: '../components/schemas/IndexLink.yaml' + - description: Link to the Log Cache API + log_stream: + allOf: + - $ref: '../components/schemas/IndexLink.yaml' + - description: Link to the Log Stream API + '404': + $ref: '../components/responses/NotFound.yaml' + '500': + $ref: '../components/responses/500.yaml' diff --git a/docs/openapi/apis/cf/latest/paths/Routes.yaml b/docs/openapi/apis/cf/latest/paths/Routes.yaml new file mode 100644 index 00000000000..a9bd493f22e --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/Routes.yaml @@ -0,0 +1,793 @@ +/v3/routes: + get: + summary: List routes + description: Retrieve all routes the user has access to. + operationId: listRoutes + tags: + - Routes + parameters: + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + - $ref: ../components/parameters/LabelSelector.yaml + - name: protocols + in: query + schema: + type: array + items: + type: string + enum: + - http + - tcp + description: Comma-delimited list of protocols to filter by + - name: hosts + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of hosts to filter by + - name: paths + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of paths to filter by + - name: ports + in: query + schema: + type: array + items: + type: integer + description: Comma-delimited list of ports to filter by + - name: domain_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of domain GUIDs to filter by + - name: space_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of space GUIDs to filter by + - name: app_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of app GUIDs to filter by + - name: organization_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of organization GUIDs to filter by + - name: service_instance_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of service instance GUIDs to filter by + - name: include + in: query + schema: + type: array + items: + type: string + enum: + - domain + - space.organization + - space + description: Optionally include a list of unique related resources in the response + responses: + '200': + $ref: ../components/responses/RouteListResponse.yaml + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + post: + summary: Create a route + description: Create a route. + operationId: createRoute + tags: + - Routes + requestBody: + $ref: ../components/requestBodies/RouteCreateRequestBody.yaml + responses: + '201': + description: Route created + content: + application/json: + schema: + $ref: ../components/schemas/Route.yaml + links: + space: + operationId: getSpace + parameters: + guid: $response.body#/relationships/space/data/guid + description: Retrieve the space for this route + domain: + operationId: getDomain + parameters: + guid: $response.body#/relationships/domain/data/guid + description: Retrieve the domain for this route + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/routes/{guid}: + get: + summary: Get a route + description: Retrieve a route. + operationId: getRoute + tags: + - Routes + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: include + in: query + schema: + type: array + items: + type: string + enum: + - domain + - space + - space.organization + description: Optionally include a list of unique related resources in the response + responses: + '200': + description: Successfully retrieved route + content: + application/json: + schema: + $ref: ../components/schemas/Route.yaml + links: + space: + operationId: getSpace + parameters: + guid: $response.body#/relationships/space/data/guid + description: Retrieve the space for this route + domain: + operationId: getDomain + parameters: + guid: $response.body#/relationships/domain/data/guid + description: Retrieve the domain for this route + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update a route + description: Update a route. + operationId: updateRoute + tags: + - Routes + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + description: Route object that needs to be updated + required: true + content: + application/json: + schema: + type: object + properties: + metadata: + $ref: ../components/schemas/Metadata.yaml + description: Request schema for updating a route + responses: + '200': + description: Successfully updated route + content: + application/json: + schema: + $ref: ../components/schemas/Route.yaml + links: + space: + operationId: getSpace + parameters: + guid: $response.body#/relationships/space/data/guid + description: Retrieve the space for this route + domain: + operationId: getDomain + parameters: + guid: $response.body#/relationships/domain/data/guid + description: Retrieve the domain for this route + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + delete: + summary: Delete a route + description: Delete a route. + operationId: deleteRoute + tags: + - Routes + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '202': + description: Successfully deleted route + headers: + Location: + description: URL of the job that is deleting the route + schema: + type: string + format: uri + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml +/v3/apps/{guid}/routes: + get: + summary: List routes for an app + description: Retrieve all routes that have destinations that point to the given app. + operationId: listAppRoutes + tags: + - Routes + parameters: + - $ref: ../components/parameters/Guid.yaml + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - name: domain_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of domain guids to filter by + - name: hosts + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of hostnames to filter by + - name: paths + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of paths to filter by + - name: ports + in: query + schema: + type: array + items: + type: integer + description: Comma-delimited list of ports to filter by + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/RouteList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 3 + total_pages: 2 + first: + href: https://api.example.org<%= path %>?page=1&per_page=2 + last: + href: https://api.example.org<%= path %>?page=2&per_page=2 + next: + href: https://api.example.org<%= path %>?page=2&per_page=2 + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + protocol: http + created_at: '2019-05-10T17:17:48Z' + updated_at: '2019-05-10T17:17:48Z' + host: a-hostname + path: /some_path + url: a-hostname.a-domain.com/some_path + destinations: + - guid: 123e4567-e89b-12d3-a456-426614174000 + app: + guid: 123e4567-e89b-12d3-a456-426614174000 + process: + type: web + weight: null + port: 8080 + protocol: http1 + created_at: '2019-05-10T17:17:48Z' + updated_at: '2019-05-10T17:17:48Z' + - guid: 123e4567-e89b-12d3-a456-426614174000 + app: + guid: 123e4567-e89b-12d3-a456-426614174000 + process: + type: web + weight: null + port: 8080 + protocol: http1 + created_at: '2019-05-10T17:17:48Z' + updated_at: '2019-05-10T17:17:48Z' + options: + loadbalancing: round-robin + metadata: + labels: {} + annotations: {} + relationships: + space: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + domain: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/routes/cbad697f-cac1-48f4-9017-ac08f39dfb31 + space: + href: https://api.example.org/v3/spaces/885a8cb3-c07b-4856-b448-eeb10bf36236 + domain: + href: https://api.example.org/v3/domains/0b5f3633-194c-42d2-9408-972366617e0e + destinations: + href: https://api.example.org/v3/routes/cbad697f-cac1-48f4-9017-ac08f39dfb31/destinations + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/routes/{guid}/relationships/shared_spaces: + get: + summary: List shared spaces relationship + description: Lists the spaces that the route has been shared to. + operationId: listSharedSpacesRelationship + tags: + - Routes + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/RelationshipToMany.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + post: + summary: Share a route with other spaces (experimental) + description: This endpoint shares the route with the specified spaces. This allows users with read and write access in both the route’s space and a shared space to bind a route to an app in the shared space. In order to share into a space the requesting user must have write permission in the target space. + operationId: shareRoute + tags: + - Routes + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + description: List of spaces to share the route with + required: true + content: + application/json: + schema: + $ref: ../components/schemas/RelationshipToMany.yaml + examples: + default: + summary: default + value: + data: + - guid: 123e4567-e89b-12d3-a456-426614174000 + - guid: 123e4567-e89b-12d3-a456-426614174000 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/RelationshipToMany.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/routes/{guid}/relationships/shared_spaces/{space_guid}: + delete: + summary: Unshare a route that was shared with another space (experimental) + description: Unshares a route that was shared with another space. + operationId: unshareRoute + tags: + - Routes + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: space_guid + in: path + required: true + schema: + type: string + format: uuid + description: The GUID of the space to unshare the route from + responses: + '204': + description: No Content + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/routes/{guid}/relationships/space: + patch: + summary: Transfer ownership (experimental) + description: Transfers a the ownership of a route to a another space. Users must have write access for both spaces to perform this action. The original owning space will still retain access to the route as a [shared space](#share-a-route-with-other-spaces-experimental). To completely remove a space from a route, users will have to use [unshare route](#unshare-a-route-that-was-shared-with-another-space-experimental). + operationId: transferRouteOwnership + tags: + - Routes + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + description: The space to transfer ownership to + required: true + content: + application/json: + schema: + $ref: ../components/schemas/RelationshipToOne.yaml + responses: + '204': + description: No Content + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/routes/{guid}/destinations: + get: + summary: List destinations for a route + description: Retrieve all destinations associated with a route. + operationId: listDestinationsForRoute + tags: + - Routes + parameters: + - $ref: ../components/parameters/Guid.yaml + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + responses: + '200': + description: List of destinations for the route + content: + application/json: + schema: + $ref: ../components/schemas/RouteDestinationList.yaml + examples: + default: + summary: default + value: + destinations: + - guid: 123e4567-e89b-12d3-a456-426614174000 + app: + guid: 123e4567-e89b-12d3-a456-426614174000 + process: + type: web + weight: null + port: 8080 + protocol: http2 + created_at: '2019-05-10T17:17:48Z' + updated_at: '2019-05-10T17:17:48Z' + - guid: 123e4567-e89b-12d3-a456-426614174000 + app: + guid: 123e4567-e89b-12d3-a456-426614174000 + process: + type: api + weight: null + port: 9000 + protocol: http1 + created_at: '2019-05-10T17:17:48Z' + updated_at: '2019-05-10T17:17:48Z' + links: + self: + href: https://api.example.org/v3/routes/cbad697f-cac1-48f4-9017-ac08f39dfb31/destinations + route: + href: https://api.example.org/v3/routes/cbad697f-cac1-48f4-9017-ac08f39dfb31 + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + post: + summary: Insert destinations for a route + description: |- + Add one or more destinations to a route, preserving any existing destinations. + + Weighted destinations (deprecated) cannot be added with this endpoint. + operationId: insertDestinationsForRoute + tags: + - Routes + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + $ref: ../components/requestBodies/RouteDestinations.yaml + responses: + '200': + description: List of destinations for the route + content: + application/json: + schema: + $ref: ../components/schemas/RouteDestinationList.yaml + examples: + default: + summary: default + value: + destinations: + - guid: 123e4567-e89b-12d3-a456-426614174000 + app: + guid: 123e4567-e89b-12d3-a456-426614174000 + process: + type: web + weight: null + port: 8080 + protocol: http2 + created_at: '2019-05-10T17:17:48Z' + updated_at: '2019-05-10T17:17:48Z' + - guid: 123e4567-e89b-12d3-a456-426614174000 + app: + guid: 123e4567-e89b-12d3-a456-426614174000 + process: + type: api + weight: null + port: 9000 + protocol: http1 + created_at: '2019-05-10T17:17:48Z' + updated_at: '2019-05-10T17:17:48Z' + links: + self: + href: https://api.example.org/v3/routes/cbad697f-cac1-48f4-9017-ac08f39dfb31/destinations + route: + href: https://api.example.org/v3/routes/cbad697f-cac1-48f4-9017-ac08f39dfb31 + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + patch: + summary: Replace all destinations for a route + description: |- + Replaces all destinations for a route, removing any destinations not included in the provided list. + + Weighted destinations are **deprecated**. Development of the experimental Istio Service Mesh routing layer was discontinued in 2020 and is no longer supported by the platform. Specifying a `weight` for a destination will take no effect. + + If weighted destinations are provided, however, all destinations provided here must have a `weight` specified, and all weights for this route must sum to 100. If not, all provided destinations must not have a `weight`. Mixing weighted and unweighted destinations for a route is not allowed. + operationId: replaceDestinationsForRouteWithPatch + tags: + - Routes + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + $ref: ../components/requestBodies/RouteDestinations.yaml + responses: + '200': + description: List of destinations for the route + content: + application/json: + schema: + $ref: ../components/schemas/RouteDestinationList.yaml + examples: + default: + summary: default + value: + destinations: + - guid: 123e4567-e89b-12d3-a456-426614174000 + app: + guid: 123e4567-e89b-12d3-a456-426614174000 + process: + type: web + weight: 61 + port: 8080 + protocol: http2 + - guid: 123e4567-e89b-12d3-a456-426614174000 + app: + guid: 123e4567-e89b-12d3-a456-426614174000 + process: + type: api + weight: 39 + port: 9000 + protocol: http1 + links: + self: + href: https://api.example.org/v3/routes/cbad697f-cac1-48f4-9017-ac08f39dfb31/destinations + route: + href: https://api.example.org/v3/routes/cbad697f-cac1-48f4-9017-ac08f39dfb31 + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/routes/{guid}/destinations/{destination_guid}: + patch: + summary: Update a destination protocol for a route + description: This endpoint updates the protocol of a route destination (app, port and weight cannot be updated) + operationId: updateDestinationProtocolForRoute + tags: + - Routes + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: destination_guid + in: path + required: true + schema: + type: string + format: uuid + description: The GUID of the route destination + requestBody: + description: Protocol of the destination + required: true + content: + application/json: + schema: + type: object + properties: + protocol: + type: string + description: Protocol of the destination + enum: + - http1 + - http2 + required: + - protocol + examples: + default: + summary: default + value: + protocol: http2 + responses: + '200': + description: Successfully updated protocol of the destination + content: + application/json: + schema: + $ref: ../components/schemas/RouteDestination.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + app: + guid: 123e4567-e89b-12d3-a456-426614174000 + process: + type: web + weight: 61 + port: 8080 + protocol: http2 + links: + destinations: + href: https://api.example.org/v3/routes/cbad697f-cac1-48f4-9017-ac08f39dfb31/destinations + route: + href: https://api.example.org/v3/routes/cbad697f-cac1-48f4-9017-ac08f39dfb31 + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + delete: + summary: Remove destination for a route + description: Remove a destination from a route. + operationId: removeDestinationForRoute + tags: + - Routes + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: destination_guid + in: path + required: true + schema: + type: string + format: uuid + description: The GUID of the route destination to remove + responses: + '204': + description: Successfully removed destination from the route + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/spaces/{guid}/routes: + delete: + summary: Delete unmapped routes for a space + description: Deletes all routes in a space that are not mapped to any applications and not bound to any service instances. + operationId: deleteUnmappedRoutesForSpace + tags: + - Routes + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '204': + description: Successfully deleted unmapped routes from the space + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml diff --git a/docs/openapi/apis/cf/latest/paths/SecurityGroups.yaml b/docs/openapi/apis/cf/latest/paths/SecurityGroups.yaml new file mode 100644 index 00000000000..a75141648a8 --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/SecurityGroups.yaml @@ -0,0 +1,531 @@ +/v3/security_groups: + get: + summary: List security groups + description: List security groups. + operationId: listSecurityGroups + tags: + - Security Groups + parameters: + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + - name: guids + in: query + schema: + type: array + items: + type: string + description: Comma-separated list of resource GUIDs to filter by + - name: names + in: query + schema: + type: array + items: + type: string + description: Comma-separated list of names to filter by (case insensitive) + - name: globally_enabled_running + in: query + schema: + type: boolean + description: If true, only include the security groups that are enabled for running + - name: globally_enabled_staging + in: query + schema: + type: boolean + description: If true, only include the security groups that are enabled for staging + - name: running_space_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of space guids to filter by + - name: staging_space_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of space guids to filter by + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/SecurityGroupList.yaml + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + post: + summary: Create a security group + description: Create a security group. + operationId: createSecurityGroup + tags: + - Security Groups + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/SecurityGroupCreate.yaml + examples: + default: + summary: default + value: + name: my-group0 + rules: + - protocol: tcp + destination: 10.10.10.0/24 + ports: 443,80,8080 + - protocol: icmp + destination: 10.10.10.0/24 + type: 8 + code: 0 + description: Allow ping requests to private services + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: ../components/schemas/SecurityGroup.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2020-02-20T17:42:08Z' + updated_at: '2020-02-20T17:42:08Z' + name: my-group0 + globally_enabled: + running: true + staging: false + rules: + - protocol: tcp + destination: 10.10.10.0/24 + ports: 443,80,8080 + - protocol: icmp + destination: 10.10.10.0/24 + type: 8 + code: 0 + description: Allow ping requests to private services + - protocol: icmpv6 + destination: '::/0' + type: -1 + code: -1 + description: Allow all ICMPv6 traffic + - protocol: tcp + destination: 1.1.1.1,2.2.2.2/24,10.0.0.0-10.0.0.255 + ports: 80,443,8080 + description: Only valid if cc.security_groups.enable_comma_delimited_destinations is true + relationships: + staging_spaces: + data: + - guid: 123e4567-e89b-12d3-a456-426614174000 + - guid: 123e4567-e89b-12d3-a456-426614174000 + running_spaces: + data: [] + links: + self: + href: https://api.example.org/v3/security_groups/b85a788e-671f-4549-814d-e34cdb2f539a + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/security_groups/{guid}: + get: + summary: Get a security group + description: Get a security group. + operationId: getSecurityGroup + tags: + - Security Groups + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/SecurityGroup.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2020-02-20T17:42:08Z' + updated_at: '2020-02-20T17:42:08Z' + name: my-group0 + globally_enabled: + running: true + staging: false + rules: + - protocol: tcp + destination: 10.10.10.0/24 + ports: 443,80,8080 + - protocol: icmp + destination: 10.10.10.0/24 + type: 8 + code: 0 + description: Allow ping requests to private services + - protocol: icmpv6 + destination: '::/0' + type: -1 + code: -1 + description: Allow all ICMPv6 traffic + - protocol: tcp + destination: 1.1.1.1,2.2.2.2/24,10.0.0.0-10.0.0.255 + ports: 80,443,8080 + description: Only valid if cc.security_groups.enable_comma_delimited_destinations is true + relationships: + staging_spaces: + data: + - guid: 123e4567-e89b-12d3-a456-426614174000 + - guid: 123e4567-e89b-12d3-a456-426614174000 + running_spaces: + data: [] + links: + self: + href: https://api.example.org/v3/security_groups/b85a788e-671f-4549-814d-e34cdb2f539a + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update a security group + description: Update a security group. + operationId: updateSecurityGroup + tags: + - Security Groups + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/SecurityGroupUpdate.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/SecurityGroup.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2020-02-20T17:42:08Z' + updated_at: '2020-02-20T17:42:08Z' + name: my-group0 + globally_enabled: + running: true + staging: false + rules: + - protocol: tcp + destination: 10.10.10.0/24 + ports: 443,80,8080 + - protocol: icmp + destination: 10.10.10.0/24 + type: 8 + code: 0 + description: Allow ping requests to private services + - protocol: icmpv6 + destination: '::/0' + type: -1 + code: -1 + description: Allow all ICMPv6 traffic + - protocol: tcp + destination: 1.1.1.1,2.2.2.2/24,10.0.0.0-10.0.0.255 + ports: 80,443,8080 + description: Only valid if cc.security_groups.enable_comma_delimited_destinations is true + relationships: + staging_spaces: + data: + - guid: 123e4567-e89b-12d3-a456-426614174000 + - guid: 123e4567-e89b-12d3-a456-426614174000 + running_spaces: + data: [] + links: + self: + href: https://api.example.org/v3/security_groups/b85a788e-671f-4549-814d-e34cdb2f539a + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + delete: + summary: Delete a security group + description: Delete a security group. + operationId: deleteSecurityGroup + tags: + - Security Groups + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '202': + description: Accepted + headers: + Location: + description: URL of the job that is deleting the security group + schema: + type: string + format: uri + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '500': + $ref: ../components/responses/500.yaml +/v3/spaces/{guid}/running_security_groups: + get: + summary: List running security groups for a space + description: This endpoint returns security groups that are enabled for running globally or at the space level for the given space. + operationId: listRunningSecurityGroupsForSpaceBySpaceGuid + tags: + - Security Groups + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/SecurityGroupList.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/spaces/{guid}/staging_security_groups: + get: + summary: List staging security groups for a space + description: This endpoint returns security groups that are enabled for staging globally or at the space level for the given space. + operationId: listStagingSecurityGroupsForSpaceBySpaceGuid + tags: + - Security Groups + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/SecurityGroupList.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update a security group + description: This endpoint will only update the parameters specified in the request body. Any unspecified parameters will retain their existing values. Updates to the `rules` parameter will fully replace the current set of `rules` for the security group. Updates to the `globally_enabled` parameter will be merged with the existing configuration. For example, an update to the `globally_enabled.running` parameter will not affect the `globally_enabled.staging` configuration. + operationId: updateSecurityGroup + tags: + - Security Groups + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/SecurityGroup.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/SecurityGroup.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + delete: + summary: Delete a security group + description: Delete a security group. + operationId: deleteSecurityGroup + tags: + - Security Groups + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '202': + description: Accepted + headers: + Location: + description: URL of the job that is deleting the security group + schema: + type: string + format: uri + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/security_groups/{guid}/relationships/running_spaces: + post: + summary: Bind a running security group to spaces + description: This endpoint binds one or more spaces to a security group with the running lifecycle. Running app containers within these spaces will inherit the rules specified by this security group. Apps within these spaces must be restarted for these changes to take effect. Unless a security group is globally-enabled, an admin must add it to a space for it to be visible for the org and space managers. Once it's visible, org and space managers can add it to additional spaces. + operationId: bindRunningSecurityGroup + tags: + - Security Groups + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/RelationshipToMany.yaml + examples: + default: + summary: default + value: + data: + - guid: 123e4567-e89b-12d3-a456-426614174000 + - guid: 123e4567-e89b-12d3-a456-426614174000 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/RelationshipToMany.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/security_groups/{guid}/relationships/running_spaces/{space_guid}: + delete: + summary: Unbind a running security group from a space + description: This endpoint removes a space from a security group with the running lifecycle. Apps within this space must be restarted for these changes to take effect. + operationId: unbindRunningSecurityGroup + tags: + - Security Groups + parameters: + - $ref: ../components/parameters/Guid.yaml + - $ref: ../components/parameters/SpaceGuid.yaml + responses: + '204': + description: No Content + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/security_groups/{guid}/relationships/staging_spaces: + post: + summary: Bind a staging security group to spaces + description: This endpoint binds one or more spaces to a security group with the staging lifecycle. Staging app containers within these spaces will inherit the rules specified by this security group. Apps within these spaces must be restaged for these changes to take effect. Unless a security group is globally-enabled, an admin must add it to a space for it to be visible for the org and space managers. Once it's visible, org and space managers can add it to additional spaces. + operationId: bindStagingSecurityGroup + tags: + - Security Groups + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/RelationshipToMany.yaml + examples: + default: + summary: default + value: + data: + - guid: 123e4567-e89b-12d3-a456-426614174000 + - guid: 123e4567-e89b-12d3-a456-426614174000 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/RelationshipToMany.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/security_groups/{guid}/relationships/staging_spaces/{space_guid}: + delete: + summary: Unbind a staging security group from a space + description: This endpoint removes a space from a security group with the staging lifecycle. Apps within this space must be restaged for these changes to take effect. + operationId: unbindStagingSecurityGroup + tags: + - Security Groups + parameters: + - $ref: ../components/parameters/Guid.yaml + - $ref: ../components/parameters/SpaceGuid.yaml + responses: + '204': + description: No Content + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml diff --git a/docs/openapi/apis/cf/latest/paths/ServiceBrokers.yaml b/docs/openapi/apis/cf/latest/paths/ServiceBrokers.yaml new file mode 100644 index 00000000000..f4eb40f672b --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/ServiceBrokers.yaml @@ -0,0 +1,283 @@ +/v3/service_brokers: + get: + summary: List service brokers + description: This endpoint retrieves the service brokers the user has access to. + operationId: listServiceBrokers + tags: + - Service Brokers + parameters: + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - name: names + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of service broker names to filter by + - name: space_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of space guids to filter by + - $ref: ../components/parameters/LabelSelector.yaml + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/ServiceBrokerList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 3 + total_pages: 2 + first: + href: https://api.example.org?page=1&per_page=2 + last: + href: https://api.example.org?page=2&per_page=2 + next: + href: https://api.example.org?page=2&per_page=2 + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + name: my_service_broker + url: https://example.service-broker.com + created_at: '2015-11-13T17:02:56Z' + updated_at: '2016-06-08T16:41:26Z' + relationships: {} + metadata: + labels: {} + annotations: {} + links: + self: + href: https://api.example.org/v3/service_brokers/dde5ad2a-d8f4-44dc-a56f-0452d744f1c3 + service_offerings: + href: https://api.example.org/v3/service_offerings?service_broker_guids=dde5ad2a-d8f4-44dc-a56f-0452d744f1c3 + - guid: 123e4567-e89b-12d3-a456-426614174000 + name: another_service_broker + url: https://another-example.service-broker.com + created_at: '2015-11-13T17:02:56Z' + updated_at: '2016-06-08T16:41:26Z' + relationships: + space: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + metadata: + labels: {} + annotations: {} + links: + self: + href: https://api.example.org/v3/service_brokers/7aa37bad-6ccb-4ef9-ba48-9ce3a91b2b62 + service_offerings: + href: https://api.example.org/v3/service_offerings?service_broker_guids=7aa37bad-6ccb-4ef9-ba48-9ce3a91b2b62 + space: + href: https://api.example.org/v3/spaces/2f35885d-0c9d-4423-83ad-fd05066f8576 + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + post: + summary: Create a service broker + description: This endpoint creates a new service broker and a job to synchronize the service offerings and service plans with those in the broker’s catalog. The `Location` header refers to the created job which syncs the broker with the catalog. See [_Service broker jobs_](#service-broker-jobs) for more information and limitations. + operationId: createServiceBroker + tags: + - Service Brokers + requestBody: + $ref: ../components/requestBodies/ServiceBrokerCreate.yaml + responses: + '202': + description: Accepted + headers: + Location: + description: URL of the job that is creating the service broker + schema: + type: string + format: uri + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/service_brokers/{guid}: + get: + summary: Get a service broker + description: This endpoint retrieves the service broker by GUID. + operationId: getServiceBroker + tags: + - Service Brokers + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/ServiceBroker.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: my_service_broker + url: https://example.service-broker.com + created_at: '2015-11-13T17:02:56Z' + updated_at: '2016-06-08T16:41:26Z' + relationships: + space: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + metadata: + labels: + type: dev + annotations: {} + links: + self: + href: https://api.example.org/v3/service_brokers/dde5ad2a-d8f4-44dc-a56f-0452d744f1c3 + service_offerings: + href: https://api.example.org/v3/service_offerings?service_broker_guids=dde5ad2a-d8f4-44dc-a56f-0452d744f1c3 + space: + href: https://api.example.org/v3/spaces/2f35885d-0c9d-4423-83ad-fd05066f8576 + links: + space: + operationId: getSpace + parameters: + guid: $response.body#/relationships/space/data/guid + description: Retrieve the space for this service broker (space-scoped brokers only) + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update a service broker + description: |- + This endpoint updates a service broker. Depending on the parameters specified, the endpoint may respond with a background job, and it may synchronize the service offerings and service plans with those in the broker’s catalog. + + When a service broker has a synchronization job in progress, only updates with `metadata` are permitted until the synchronization job is complete. + operationId: updateServiceBroker + tags: + - Service Brokers + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + $ref: ../components/requestBodies/ServiceBrokerUpdateRequestBody.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/ServiceBroker.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: my_service_broker + url: https://example.service-broker.com + created_at: '2015-11-13T17:02:56Z' + updated_at: '2016-06-08T16:41:26Z' + relationships: + space: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + metadata: + labels: + type: dev + annotations: {} + links: + self: + href: https://api.example.org/v3/service_brokers/dde5ad2a-d8f4-44dc-a56f-0452d744f1c3 + service_offerings: + href: https://api.example.org/v3/service_offerings?service_broker_guids=dde5ad2a-d8f4-44dc-a56f-0452d744f1c3 + space: + href: https://api.example.org/v3/spaces/2f35885d-0c9d-4423-83ad-fd05066f8576 + links: + space: + operationId: getSpace + parameters: + guid: $response.body#/relationships/space/data/guid + description: Retrieve the space for this service broker (space-scoped brokers only) + '202': + description: Accepted + headers: + Location: + description: URL of the job that is updating the service broker + schema: + type: string + format: uri + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + delete: + summary: Delete a service broker + description: This endpoint creates a job to delete an existing service broker. The `Location` header refers to the created job. See [_Service broker jobs_](#service-broker-jobs) for more information and limitations. + operationId: deleteServiceBroker + tags: + - Service Brokers + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '202': + description: Accepted + headers: + Location: + description: URL of the job that is deleting the service broker + schema: + type: string + format: uri + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml diff --git a/docs/openapi/apis/cf/latest/paths/ServiceCredentialBindings.yaml b/docs/openapi/apis/cf/latest/paths/ServiceCredentialBindings.yaml new file mode 100644 index 00000000000..4542b906b8c --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/ServiceCredentialBindings.yaml @@ -0,0 +1,415 @@ +/v3/service_credential_bindings: + get: + summary: List service credential bindings + description: This endpoint retrieves the service credential bindings the user has access to. + operationId: listServiceCredentialBindings + tags: + - Service Credential Bindings + parameters: + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + - $ref: ../components/parameters/LabelSelector.yaml + - name: names + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of service credential binding names to filter by + - name: service_instance_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of service instance guids to filter by + - name: app_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of app guids to filter by + - name: type + in: query + schema: + type: string + enum: + - app + - key + description: Type of credential binding to filter by. Valid values are 'app' or 'key' + - name: service_instance_names + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of service instance names to filter by + - name: app_names + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of app names to filter by + - name: service_plan_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of service plan guids to filter by + - name: service_plan_names + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of service plan names to filter by + - name: service_offering_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of service offering guids to filter by + - name: service_offering_names + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of service offering names to filter by + - name: guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of service credential binding guids to filter by + - name: include + in: query + schema: + type: array + items: + type: string + enum: + - app + - service_instance + description: 'Optionally include a list of unique related resources in the response. Valid values are: `app`, `service_instance`' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/ServiceCredentialBindingList.yaml + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + post: + summary: Create a service credential binding + description: |- + This endpoint creates a new service credential binding. Service credential bindings can be of type `app` or `key`; `key` is only valid for managed service instances. + + If failures occur when creating a service credential binding for a managed service instances, the API might execute orphan mitigation steps accordingly to cases outlined in the [OSBAPI specification](https://github.com/openservicebrokerapi/servicebroker/blob/master/spec.md#orphan-mitigation) + operationId: createServiceCredentialBinding + tags: + - Service Credential Bindings + requestBody: + $ref: ../components/requestBodies/ServiceCredentialBindingCreateRequestBody.yaml + responses: + '201': + description: Created + content: + application/json: + schema: + oneOf: + - $ref: ../components/schemas/AppCredentialBinding.yaml + - $ref: ../components/schemas/KeyCredentialBinding.yaml + discriminator: + propertyName: type + mapping: + app: ../components/schemas/AppCredentialBinding.yaml + key: ../components/schemas/KeyCredentialBinding.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2015-11-13T17:02:56Z' + updated_at: '2016-06-08T16:41:26Z' + name: some-name + type: app + last_operation: + type: create + state: succeeded + created_at: '2015-11-13T17:02:56Z' + updated_at: '2016-06-08T16:41:26Z' + metadata: + annotations: + foo: bar + labels: + baz: qux + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + service_instance: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/service_credential_bindings/dde5ad2a-d8f4-44dc-a56f-0452d744f1c3 + details: + href: https://api.example.org/v3/service_credential_bindings/dde5ad2a-d8f4-44dc-a56f-0452d744f1c3/details + parameters: + href: https://api.example.org/v3/service_credential_bindings/dde5ad2a-d8f4-44dc-a56f-0452d744f1c3/parameters + service_instance: + href: https://api.example.org/v3/service_instances/8bfe4c1b-9e18-45b1-83be-124163f31f9e + app: + href: https://api.example.org/v3/apps/74f7c078-0934-470f-9883-4fddss5b8f13 + '202': + description: Accepted + headers: + Location: + description: URL of the job that is creating the service credential binding + schema: + type: string + format: uri + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/service_credential_bindings/{guid}: + get: + summary: Get a service credential binding + description: This endpoint retrieves the service credential binding by GUID. + operationId: getServiceCredentialBinding + tags: + - Service Credential Bindings + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: include + in: query + schema: + type: array + items: + type: string + enum: + - app + - service_instance + description: Optionally include a list of unique related resources in the response + responses: + '200': + description: OK + content: + application/json: + schema: + oneOf: + - $ref: ../components/schemas/AppCredentialBinding.yaml + - $ref: ../components/schemas/KeyCredentialBinding.yaml + discriminator: + propertyName: type + mapping: + app: ../components/schemas/AppCredentialBinding.yaml + key: ../components/schemas/KeyCredentialBinding.yaml + links: + app: + operationId: getApp + parameters: + guid: $response.body#/relationships/app/data/guid + description: Retrieve the app for this credential binding (app bindings only) + service_instance: + operationId: getServiceInstance + parameters: + guid: $response.body#/relationships/service_instance/data/guid + description: Retrieve the service instance for this credential binding + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update a service credential binding + description: This endpoint updates a service credential binding with labels and annotations. + operationId: updateServiceCredentialBinding + tags: + - Service Credential Bindings + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + $ref: ../components/requestBodies/ServiceCredentialBindingUpdateRequestBody.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + oneOf: + - $ref: ../components/schemas/AppCredentialBinding.yaml + - $ref: ../components/schemas/KeyCredentialBinding.yaml + discriminator: + propertyName: type + mapping: + app: ../components/schemas/AppCredentialBinding.yaml + key: ../components/schemas/KeyCredentialBinding.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2015-11-13T17:02:56Z' + updated_at: '2016-06-08T16:41:26Z' + name: some-name + type: app + last_operation: + type: create + state: succeeded + created_at: '2015-11-13T17:02:56Z' + updated_at: '2016-06-08T16:41:26Z' + metadata: + annotations: + foo: bar + labels: + baz: qux + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + service_instance: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/service_credential_bindings/dde5ad2a-d8f4-44dc-a56f-0452d744f1c3 + details: + href: https://api.example.org/v3/service_credential_bindings/dde5ad2a-d8f4-44dc-a56f-0452d744f1c3/details + parameters: + href: https://api.example.org/v3/service_credential_bindings/dde5ad2a-d8f4-44dc-a56f-0452d744f1c3/parameters + service_instance: + href: https://api.example.org/v3/service_instances/8bfe4c1b-9e18-45b1-83be-124163f31f9e + app: + href: https://api.example.org/v3/apps/74f7c078-0934-470f-9883-4fddss5b8f13 + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + delete: + summary: Delete a service credential binding + description: This endpoint deletes a service credential binding. When deleting credential bindings originated from user provided service instances, the delete operation does not require interactions with service brokers, therefore the API will respond synchronously to the delete request. + operationId: deleteServiceCredentialBinding + tags: + - Service Credential Bindings + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '202': + description: Accepted + headers: + Location: + description: URL of the job that is deleting the service credential binding + schema: + type: string + format: uri + '204': + description: No Content + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml +/v3/service_credential_bindings/{guid}/details: + get: + summary: Get a service credential binding details + description: This endpoint retrieves the service credential binding details. + operationId: getServiceCredentialBindingDetails + tags: + - Service Credential Bindings + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/service_credential_bindings/{guid}/parameters: + get: + summary: Get parameters for a service credential binding + description: Queries the Service Broker for the parameters associated with this service credential binding. The broker catalog must have enabled the `bindings_retrievable` feature for the Service Offering. Check the [Service Offering object](#the-service-offering-object) for the value of this feature flag. This endpoint is not available for User-Provided Service Instances. + operationId: getServiceCredentialBindingParameters + tags: + - Service Credential Bindings + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + examples: + default: + summary: default + value: + foo: bar + foz: baz + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml diff --git a/docs/openapi/apis/cf/latest/paths/ServiceInstances.yaml b/docs/openapi/apis/cf/latest/paths/ServiceInstances.yaml new file mode 100644 index 00000000000..ecdb77c9836 --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/ServiceInstances.yaml @@ -0,0 +1,634 @@ +/v3/service_instances: + get: + summary: List service instances + description: This endpoint retrieves the service instances the user has access to, including access granted by service instance sharing. + operationId: listServiceInstances + tags: + - Service Instances + parameters: + - name: names + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of service instance names to filter by + - name: guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of service instance guids to filter by + - name: type + in: query + schema: + type: string + enum: + - managed + - user-provided + description: Filter by type; valid values are 'managed' and 'user-provided' + - name: space_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of space guids to filter by + - name: organization_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of organization guids to filter by + - name: service_plan_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of service plan guids to filter by + - name: service_plan_names + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of service plan names to filter by + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - $ref: ../components/parameters/LabelSelector.yaml + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + - name: fields + in: query + schema: + type: object + description: Fields to include in the response + responses: + '200': + description: Request succeeded + content: + application/json: + schema: + $ref: ../components/schemas/ServiceInstanceList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 2 + total_pages: 1 + first: + href: https://api.example.org/v3/service_instances?page=1&per_page=50 + last: + href: https://api.example.org/v3/service_instances?page=1&per_page=50 + next: null + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2020-03-10T15:49:29Z' + updated_at: '2020-03-10T15:49:29Z' + name: my-managed-instance + tags: [] + type: managed + maintenance_info: + version: 1.0.0 + upgrade_available: false + dashboard_url: https://service-broker.example.org/dashboard + broker_provided_metadata: + labels: + service_engine_version: '16.6' + attributes: + max_connections: '100' + last_operation: + type: create + state: succeeded + description: Operation succeeded + updated_at: '2020-03-10T15:49:32Z' + created_at: '2020-03-10T15:49:29Z' + relationships: + service_plan: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + space: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + metadata: + labels: {} + annotations: {} + links: + self: + href: https://api.example.org/v3/service_instances/c89b3280-fe8d-4aa0-a42e-44465bb1c61c + service_plan: + href: https://api.example.org/v3/service_plans/5358d122-638e-11ea-afca-bf6e756684ac + space: + href: https://api.example.org/v3/spaces/5a84d315-9513-4d74-95e5-f6a5501eeef7 + parameters: + href: https://api.example.org/v3/service_instances/c89b3280-fe8d-4aa0-a42e-44465bb1c61c/parameters + shared_spaces: + href: https://api.example.org/v3/service_instances/c89b3280-fe8d-4aa0-a42e-44465bb1c61c/relationships/shared_spaces + service_credential_bindings: + href: https://api.example.org/v3/service_credential_bindings?service_instance_guids=c89b3280-fe8d-4aa0-a42e-44465bb1c61c + service_route_bindings: + href: https://api.example.org/v3/service_route_bindings?service_instance_guids=c89b3280-fe8d-4aa0-a42e-44465bb1c61c + - guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2020-03-10T15:56:08Z' + updated_at: '2020-03-10T15:56:08Z' + name: my-user-provided-instance + tags: + - sql + type: user-provided + syslog_drain_url: http://logs.com + route_service_url: https://routes.com + last_operation: + type: update + state: succeeded + description: Operation succeeded + updated_at: '2020-03-10T15:59:32Z' + created_at: '2020-03-10T15:59:29Z' + relationships: + space: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + metadata: + labels: {} + annotations: {} + links: + self: + href: https://api.example.org/v3/service_instances/88ce23e5-27c3-4381-a2df-32a28ec43133 + space: + href: https://api.example.org/v3/spaces/5a84d315-9513-4d74-95e5-f6a5501eeef7 + credentials: + href: https://api.example.org/v3/service_instances/88ce23e5-27c3-4381-a2df-32a28ec43133/credentials + service_credential_bindings: + href: https://api.example.org/v3/service_credential_bindings?service_instance_guids=88ce23e5-27c3-4381-a2df-32a28ec43133 + service_route_bindings: + href: https://api.example.org/v3/service_route_bindings?service_instance_guids=88ce23e5-27c3-4381-a2df-32a28ec43133 + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + post: + summary: Create a service instance + description: |- + This endpoint creates a new service instance. Service instances can be of type `managed` or `user-provided`, and the required parameters are different for each type. User provided service instances do not require interactions with service brokers. + + If failures occur when creating managed service instances, the API might execute orphan mitigation steps accordingly to cases outlined in the [OSBAPI specification](https://github.com/openservicebrokerapi/servicebroker/blob/master/spec.md#orphan-mitigation) + operationId: createServiceInstance + tags: + - Service Instances + requestBody: + $ref: ../components/requestBodies/ServiceInstanceCreateRequestBody.yaml + responses: + '201': + description: User Provided Service instance created + content: + application/json: + schema: + $ref: ../components/schemas/UserProvidedServiceInstance.yaml + links: + space: + operationId: getSpace + parameters: + guid: $response.body#/relationships/space/data/guid + description: Retrieve the space for this service instance + '202': + description: Service instance creation in progress + headers: + Location: + description: URL of the job that is creating the service instance + schema: + type: string + format: uri + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/service_instances/{guid}/credentials: + get: + summary: Get credentials for a user-provided service instance + description: Retrieves the credentials for a user-provided service instance. This endpoint is not available for managed service instances. + operationId: getServiceInstanceCredentials + tags: + - Service Instances + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + examples: + default: + summary: default + value: + username: my-username + password: super-secret + other: credential + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/service_instances/{guid}/relationships/shared_spaces/usage_summary: + get: + summary: Get usage summary in shared spaces + description: This endpoint returns the number of bound apps in spaces where the service instance has been shared to. + operationId: getServiceInstanceUsageSummaryInSharedSpaces + tags: + - Service Instances + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + usage_summary: + type: array + items: + type: object + properties: + space: + $ref: ../components/schemas/Relationship.yaml + bound_app_count: + type: integer + examples: + default: + summary: default + value: + usage_summary: + - space: + guid: 123e4567-e89b-12d3-a456-426614174000 + bound_app_count: 2 + - space: + guid: 123e4567-e89b-12d3-a456-426614174000 + bound_app_count: 0 + links: + self: + href: https://api.example.org/v3/service_instances/bdeg4371-cbd3-4155-b156-dc0c2a431b4c/relationships/shared_spaces/usage_summary + shared_spaces: + href: https://api.example.org/v3/service_instances/bdeg4371-cbd3-4155-b156-dc0c2a431b4c/relationships/shared_spaces + service_instance: + href: https://api.example.org/v3/service_instances/bdeg4371-cbd3-4155-b156-dc0c2a431b4c + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/service_instances/{guid}/relationships/shared_spaces: + get: + summary: List shared spaces relationship + description: This endpoint lists the spaces that the service instance has been shared to. + operationId: listServiceInstanceSharedSpaces + tags: + - Service Instances + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: fields + in: query + schema: + type: object + description: Fields to include in the response + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/RelationshipToMany.yaml + examples: + default: + summary: default + value: + data: + - guid: 123e4567-e89b-12d3-a456-426614174000 + - guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/service_instances/bdeg4371-cbd3-4155-b156-dc0c2a431b4c/relationships/shared_spaces + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + post: + summary: Share a service instance to other spaces + description: This endpoint shares the service instance with the specified spaces. In order to share into a space the requesting user must be a space developer in the target space. + operationId: shareServiceInstance + tags: + - Service Instances + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/RelationshipToMany.yaml + examples: + default: + summary: default + value: + data: + - guid: 123e4567-e89b-12d3-a456-426614174000 + - guid: 123e4567-e89b-12d3-a456-426614174000 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/RelationshipToMany.yaml + examples: + default: + summary: default + value: + data: + - guid: 123e4567-e89b-12d3-a456-426614174000 + - guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/service_instances/bdeg4371-cbd3-4155-b156-dc0c2a431b4c/relationships/shared_spaces + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/service_instances/{guid}/relationships/shared_spaces/{space_guid}: + delete: + summary: Unshare a service instance from another space + description: This endpoint unshares the service instance from the specified space. This will automatically unbind any applications bound to this service instance in the specified space. Unsharing a service instance from a space will not delete any service keys. + operationId: unshareServiceInstance + tags: + - Service Instances + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: space_guid + in: path + required: true + schema: + type: string + format: uuid + responses: + '204': + description: No Content + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml +/v3/service_instances/{guid}/parameters: + get: + summary: Get parameters for a managed service instance + description: Queries the Service Broker for the parameters associated with this service instance. The broker catalog must have enabled the `instances_retrievable` feature for the Service Offering. Check the [Service Offering object](#the-service-offering-object) for the value of this feature flag. + operationId: getServiceInstanceParameters + tags: + - Service Instances + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + examples: + default: + summary: default + value: + key_1: value_1 + key_2: value_2 + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/service_instances/{guid}/permissions: + get: + summary: Get permissions for a service instance + description: |- + Get the current user’s permissions for the given service instance. If a user can get a service instance then they can ‘read’ it. Users who can update a service instance can ‘manage’ it. + + This endpoint’s primary purpose is to enable third-party service dashboards to determine the permissions of a given Cloud Foundry user that has authenticated with the dashboard via single sign-on (SSO). For more information, see the Cloud Foundry documentation on [Dashboard Single Sign-On](https://docs.cloudfoundry.org/services/dashboard-sso.html). + operationId: getServiceInstancePermissions + tags: + - Service Instances + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + read: + type: boolean + manage: + type: boolean + examples: + default: + summary: default + value: + read: true + manage: false + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/service_instances/{guid}: + get: + summary: Get a service instance + description: This endpoint retrieves the service instance by GUID. + operationId: getServiceInstance + tags: + - Service Instances + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: fields + in: query + schema: + type: object + description: Fields to include in the response + responses: + '200': + description: OK + content: + application/json: + schema: + oneOf: + - $ref: ../components/schemas/ManagedServiceInstance.yaml + - $ref: ../components/schemas/UserProvidedServiceInstance.yaml + discriminator: + propertyName: type + mapping: + managed: ../components/schemas/ManagedServiceInstance.yaml + user-provided: ../components/schemas/UserProvidedServiceInstance.yaml + links: + space: + operationId: getSpace + parameters: + guid: $response.body#/relationships/space/data/guid + description: Retrieve the space for this service instance + service_plan: + operationId: getServicePlan + parameters: + guid: $response.body#/relationships/service_plan/data/guid + description: Retrieve the service plan for this service instance (managed instances only) + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update a service instance + description: |- + Some updates can be performed entirely within the Cloud Controller in which case the response is synchronous. Some updates require communication with the service broker, in which case the response will be asynchronous. The response will be asynchronous if any of these parameters are specified: + * `parameters` + * `service_plan` + * `maintenance_info` + * `name` - when the service offering has `allow_context_updates` feature enabled + + Otherwise the response will be synchronous. + operationId: updateServiceInstance + tags: + - Service Instances + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + $ref: ../components/requestBodies/ServiceInstanceUpdateRequestBody.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + oneOf: + - $ref: ../components/schemas/ManagedServiceInstance.yaml + - $ref: ../components/schemas/UserProvidedServiceInstance.yaml + discriminator: + propertyName: type + mapping: + managed: ../components/schemas/ManagedServiceInstance.yaml + user-provided: ../components/schemas/UserProvidedServiceInstance.yaml + links: + space: + operationId: getSpace + parameters: + guid: $response.body#/relationships/space/data/guid + description: Retrieve the space for this service instance + service_plan: + operationId: getServicePlan + parameters: + guid: $response.body#/relationships/service_plan/data/guid + description: Retrieve the service plan for this service instance (managed instances only) + '202': + description: Accepted + headers: + Location: + description: URL of the job that is updating the service instance + schema: + type: string + format: uri + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + delete: + summary: Delete a service instance + description: |- + This endpoint deletes a service instance and any associated service credential + bindings or service route bindings. The service instance is removed from all + spaces where it is available. User provided service instances do not require interactions with service brokers, + therefore the API will respond synchronously to the delete request. For managed service instances, the API will respond asynchronously. + If a service credential binding or service route binding cannot be deleted + synchronously, then the operation will fail, and the deletion of the binding + will continue in the background. The operation can be retried until it is successful. + operationId: deleteServiceInstance + tags: + - Service Instances + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: purge + in: query + schema: + type: boolean + description: If `true`, deletes the service instance and all associated resources without any interaction with the service broker. + responses: + '202': + description: Accepted + headers: + Location: + description: URL of the job that is deleting the service instance + schema: + type: string + format: uri + '204': + description: No Content + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml diff --git a/docs/openapi/apis/cf/latest/paths/ServiceOfferings.yaml b/docs/openapi/apis/cf/latest/paths/ServiceOfferings.yaml new file mode 100644 index 00000000000..c4683e78d16 --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/ServiceOfferings.yaml @@ -0,0 +1,346 @@ +/v3/service_offerings: + get: + summary: List service offerings + description: This endpoint retrieves the service offerings the user has access to. + operationId: listServiceOfferings + tags: + - Service Offerings + parameters: + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - name: names + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of service offering names to filter by + - name: available + in: query + schema: + type: boolean + description: Filter by the `available` property; valid values are `true` or `false` + - name: service_broker_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of service broker GUIDs to filter by + - name: space_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of space guids to filter by + - name: organization_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of organization guids to filter by + - name: service_broker_names + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of service broker names to filter by + - $ref: ../components/parameters/LabelSelector.yaml + - name: fields + in: query + schema: + type: object + description: Fields to include in the response + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/ServiceOfferingList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 3 + total_pages: 2 + first: + href: https://api.example.org?page=1&per_page=2 + last: + href: https://api.example.org?page=2&per_page=2 + next: + href: https://api.example.org?page=2&per_page=2 + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + name: my_service_offering + description: Provides my service + available: true + tags: + - relational + - caching + requires: [] + created_at: '2019-11-28T13:44:02Z' + updated_at: '2019-11-28T13:44:02Z' + shareable: true + documentation_url: https://some-documentation-link.io + broker_catalog: + id: db730a8c-11e5-11ea-838a-0f4fff3b1cfb + metadata: + shareable: true + features: + plan_updateable: true + bindable: true + instances_retrievable: true + bindings_retrievable: true + allow_context_updates: false + relationships: + service_broker: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + metadata: + labels: {} + annotations: {} + links: + self: + href: https://api.example.org/v3/service_offerings/bf7eb420-11e5-11ea-b7db-4b5d5e7976a + service_plans: + href: https://api.example.org/v3/service_plans?service_offering_guids=bf7eb420-11e5-11ea-b7db-4b5d5e7976a + service_broker: + href: https://api.example.org/v3/service_brokers/13c60e38-11e7-11ea-9106-33ee3c5bd4d7 + - guid: 123e4567-e89b-12d3-a456-426614174000 + name: other_service_offering + description: Provides another service + available: true + tags: + - caching + requires: [] + created_at: '2019-11-29T16:44:02Z' + updated_at: '2019-11-29T16:44:02Z' + shareable: true + documentation_url: https://some-other-documentation-link.io + broker_catalog: + id: 3cb11822-12bb-11ea-beb1-a350dc7453b9 + metadata: + shareable: true + features: + plan_updateable: true + bindable: true + instances_retrievable: true + bindings_retrievable: true + allow_context_updates: false + relationships: + service_broker: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + metadata: + labels: {} + annotations: {} + links: + self: + href: https://api.example.org/v3/service_offerings/20e6cd62-12bb-11ea-90d1-7bfec2c75bcd + service_plans: + href: https://api.example.org/v3/service_plans?service_offering_guids=20e6cd62-12bb-11ea-90d1-7bfec2c75bcd + service_broker: + href: https://api.example.org/v3/service_brokers/13c60e38-11e7-11ea-9106-33ee3c5bd4d7 + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/service_offerings/{guid}: + get: + summary: Get a service offering + description: This endpoint retrieves the service offering by GUID. + operationId: getServiceOffering + tags: + - Service Offerings + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/ServiceOffering.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: my_service_offering + description: Provides my service + available: true + tags: + - relational + - caching + requires: [] + created_at: '2019-11-28T13:44:02Z' + updated_at: '2019-11-28T13:44:02Z' + shareable: true + documentation_url: https://some-documentation-link.io + broker_catalog: + id: db730a8c-11e5-11ea-838a-0f4fff3b1cfb + metadata: + shareable: true + features: + plan_updateable: true + bindable: true + instances_retrievable: true + bindings_retrievable: true + allow_context_updates: false + relationships: + service_broker: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + metadata: + labels: {} + annotations: {} + links: + self: + href: https://api.example.org/v3/service_offerings/bf7eb420-11e5-11ea-b7db-4b5d5e7976a + service_plans: + href: https://api.example.org/v3/service_plans?service_offering_guids=bf7eb420-11e5-11ea-b7db-4b5d5e7976a + service_broker: + href: https://api.example.org/v3/service_brokers/13c60e38-11e7-11ea-9106-33ee3c5bd4d7 + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update a service offering + description: This endpoint updates a service offering with labels and annotations. + operationId: updateServiceOffering + tags: + - Service Offerings + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + content: + application/json: + schema: + properties: + metadata: + $ref: ../components/schemas/Metadata.yaml + examples: + default: + summary: default + value: + metadata: + labels: + key: value + annotations: + note: detailed information + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/ServiceOffering.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: my_service_offering + description: Provides my service + available: true + tags: + - relational + - caching + requires: [] + created_at: '2019-11-28T13:44:02Z' + updated_at: '2019-11-28T13:44:02Z' + shareable: true + documentation_url: https://some-documentation-link.io + broker_catalog: + id: db730a8c-11e5-11ea-838a-0f4fff3b1cfb + metadata: + shareable: true + features: + plan_updateable: true + bindable: true + instances_retrievable: true + bindings_retrievable: true + allow_context_updates: false + relationships: + service_broker: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + metadata: + labels: {} + annotations: {} + links: + self: + href: https://api.example.org/v3/service_offerings/bf7eb420-11e5-11ea-b7db-4b5d5e7976a + service_plans: + href: https://api.example.org/v3/service_plans?service_offering_guids=bf7eb420-11e5-11ea-b7db-4b5d5e7976a + service_broker: + href: https://api.example.org/v3/service_brokers/13c60e38-11e7-11ea-9106-33ee3c5bd4d7 + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + delete: + summary: Delete a service offering + description: |- + This endpoint deletes a service offering. This is typically used to remove orphan service offerings from the Cloud Foundry database when they have been removed from the service broker catalog, or when the service broker has been removed. + + Note that this operation only affects the Cloud Foundry database, and no attempt is made to contact the service broker. + operationId: deleteServiceOffering + tags: + - Service Offerings + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: purge + in: query + schema: + type: boolean + description: If `true`, any service plans, instances, and bindings associated with this service offering will also be deleted + responses: + '204': + description: No Content + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml diff --git a/docs/openapi/apis/cf/latest/paths/ServicePlans.yaml b/docs/openapi/apis/cf/latest/paths/ServicePlans.yaml new file mode 100644 index 00000000000..d95c021e73b --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/ServicePlans.yaml @@ -0,0 +1,385 @@ +/v3/service_plans: + get: + summary: List service plans + description: This endpoint retrieves the service plans the user has access to. + operationId: listServicePlans + tags: + - Service Plans + parameters: + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - name: names + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of service plan names to filter by + - name: available + in: query + schema: + type: boolean + description: Filter by the `available` property; valid values are `true` or `false` + - name: service_offering_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of service offering guids to filter by + - name: service_instance_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of service instance guids to filter by + - name: space_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of space guids to filter by + - name: organization_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of organization guids to filter by + - name: broker_catalog_ids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of broker catalog IDs to filter by + - name: service_broker_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of service broker GUIDs to filter by + - name: service_broker_names + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of service broker names to filter by + - name: service_offering_names + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of service offering names to filter by + - name: include + in: query + schema: + type: array + items: + type: string + enum: + - space.organization + - service_offering + description: Optionally include a list of unique related resources in the response + - $ref: ../components/parameters/LabelSelector.yaml + - name: fields + in: query + schema: + type: object + description: Fields to include in the response + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/ServicePlanList.yaml + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/service_plans/{guid}: + get: + summary: Get a service plan + description: This endpoint retrieves the service plan by GUID. + operationId: getServicePlan + tags: + - Service Plans + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: include + in: query + schema: + type: array + items: + type: string + enum: + - space.organization + - service_offering + description: Optionally include a list of unique related resources in the response + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/ServicePlan.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: my_big_service_plan + description: Big + visibility_type: public + available: true + free: false + costs: + - currency: USD + amount: 199.99 + unit: Monthly + created_at: '2019-11-28T13:44:02Z' + updated_at: '2019-11-28T13:44:02Z' + maintenance_info: + version: 1.0.0+dev4 + description: Database version 7.8.0 + broker_catalog: + id: db730a8c-11e5-11ea-838a-0f4fff3b1cfb + metadata: + custom-key: custom-information + maximum_polling_duration: null + features: + plan_updateable: true + bindable: true + schemas: + service_instance: + create: + parameters: + $schema: http://json-schema.org/draft-04/schema# + type: object + properties: + billing-account: + description: Billing account number used to charge use of shared fake server. + type: string + update: + parameters: {} + service_binding: + create: + parameters: {} + relationships: + service_offering: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + metadata: + labels: {} + annotations: {} + links: + self: + href: https://api.example.org/v3/service_plans/bf7eb420-11e5-11ea-b7db-4b5d5e7976a9 + service_offering: + href: https://api.example.org/v3/service_offerings/13c60e38-11e7-11ea-9106-33ee3c5bd4d7 + visibility: + href: https://api.example.org/v3/service_plans/bf7eb420-11e5-11ea-b7db-4b5d5e7976a9/visibility + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update a service plan + description: This endpoint updates a service plan with labels and annotations. + operationId: updateServicePlan + tags: + - Service Plans + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + content: + application/json: + schema: + properties: + metadata: + $ref: ../components/schemas/Metadata.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/ServicePlan.yaml + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + delete: + summary: Delete a service plan + description: |- + This endpoint deletes a service plan. This is used to remove service plans from the Cloud Foundry database when they + are no longer provided by the service broker. + operationId: deleteServicePlan + tags: + - Service Plans + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '204': + description: No Content + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml +/v3/service_plans/{guid}/visibility: + get: + summary: Get a service plan visibility + description: This endpoint retrieves the service plan visibility for a given plan. + operationId: getServicePlanVisibility + tags: + - Service Plans + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/ServicePlanVisibility.yaml + examples: + default: + summary: default + value: + type: public + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update a service plan visibility + description: This endpoint updates a service plan visibility. It behaves similar to the [POST service plan visibility endpoint](#apply-a-service-plan-visibility) but this endpoint will replace the existing list of organizations when the service plan is `organization` visible. + operationId: updateServicePlanVisibility + tags: + - Service Plans + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + $ref: ../components/requestBodies/ServicePlanVisibilityUpdateRequestBody.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/ServicePlanVisibility.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + post: + summary: Apply a service plan visibility + description: This endpoint applies a service plan visibility. It behaves similar to the [PATCH service plan visibility endpoint](#update-a-service-plan-visibility) but this endpoint will append to the existing list of organizations when the service plan is `organization` visible. + operationId: applyServicePlanVisibility + tags: + - Service Plans + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + $ref: ../components/requestBodies/ServicePlanVisibilityCreateRequestBody.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/ServicePlanVisibility.yaml + examples: + default: + summary: default + value: + type: organization + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/service_plans/{guid}/visibility/{organization_guid}: + delete: + summary: Remove organization from a service plan visibility + description: This endpoint removes an organization from a service plan visibility list of organizations. It is only defined for service plans which are org-restricted. It will fail with a HTTP status code of 422 for any other visibility type (e.g. Public). + operationId: removeOrganizationFromServicePlanVisibility + tags: + - Service Plans + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: organization_guid + in: path + required: true + schema: + type: string + format: uuid + responses: + '204': + description: No Content + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml diff --git a/docs/openapi/apis/cf/latest/paths/ServiceRouteBindings.yaml b/docs/openapi/apis/cf/latest/paths/ServiceRouteBindings.yaml new file mode 100644 index 00000000000..a5ac423cc8c --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/ServiceRouteBindings.yaml @@ -0,0 +1,402 @@ +/v3/service_route_bindings: + get: + summary: List service route bindings + description: This endpoint retrieves the service route bindings the user has access to. + operationId: listServiceRouteBindings + tags: + - Service Route Bindings + parameters: + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - name: route_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of route guids to filter by + - name: service_instance_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of service instance guids to filter by + - name: service_instance_names + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of service instance names to filter by + - $ref: ../components/parameters/LabelSelector.yaml + - name: guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of service route binding guids to filter by + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + - name: include + in: query + schema: + type: array + items: + type: string + enum: + - route + - service_instance + description: 'Optionally include a list of unique related resources in the response. Valid values are: `route`, `service_instance`' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/ServiceRouteBindingList.yaml + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + post: + summary: Create a service route binding + description: |- + This endpoint creates a new route service binding. The service instance and the route must be in the same space. + + To bind a route to a user-provided service instance, the service instance must have the `route_service_url` property set. + + To bind a route to a managed service instance, the service offering must be bindable, and the service offering must have `route_forwarding` set in the `requires` property. + operationId: createServiceRouteBinding + tags: + - Service Route Bindings + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/ServiceRouteBindingCreate.yaml + examples: + default: + summary: default + value: + metadata: + annotations: + foo: bar + labels: + baz: qux + relationships: + route: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + service_instance: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + parameters: + key1: value1 + key2: value2 + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: ../components/schemas/ServiceRouteBinding.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2015-11-13T17:02:56Z' + updated_at: '2016-06-08T16:41:26Z' + route_service_url: https://route-service-url.io + last_operation: + type: create + state: succeeded + description: Operation succeeded + updated_at: '2020-03-10T15:49:32Z' + created_at: '2020-03-10T15:49:29Z' + metadata: + annotations: + foo: bar + labels: + baz: qux + relationships: + service_instance: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + route: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/service_route_bindings/dde5ad2a-d8f4-44dc-a56f-0452d744f1c3 + service_instance: + href: https://api.example.org/v3/service_instances/8bfe4c1b-9e18-45b1-83be-124163f31f9e + route: + href: https://api.example.org/v3/routes/74f7c078-0934-470f-9883-4fddss5b8f13 + parameters: + href: https://api.example.org/v3/service_route_bindings/b3536566-63e2-428f-8f87-a1b99864ada6/parameters + links: + route: + operationId: getRoute + parameters: + guid: $response.body#/relationships/route/data/guid + description: Retrieve the route for this service route binding + service_instance: + operationId: getServiceInstance + parameters: + guid: $response.body#/relationships/service_instance/data/guid + description: Retrieve the service instance for this service route binding + '202': + description: Accepted + headers: + Location: + description: URL of the job that is creating the service route binding + schema: + type: string + format: uri + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/service_route_bindings/{guid}: + get: + summary: Get a service route binding + description: This endpoint retrieves the service route binding by GUID. + operationId: getServiceRouteBinding + tags: + - Service Route Bindings + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: include + in: query + schema: + type: array + items: + type: string + enum: + - route + - service_instance + description: Optionally include a list of unique related resources in the response + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/ServiceRouteBinding.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2015-11-13T17:02:56Z' + updated_at: '2016-06-08T16:41:26Z' + route_service_url: https://route-service-url.io + last_operation: + type: create + state: succeeded + description: Operation succeeded + updated_at: '2020-03-10T15:49:32Z' + created_at: '2020-03-10T15:49:29Z' + metadata: + annotations: + foo: bar + labels: + baz: qux + relationships: + service_instance: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + route: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/service_route_bindings/dde5ad2a-d8f4-44dc-a56f-0452d744f1c3 + service_instance: + href: https://api.example.org/v3/service_instances/8bfe4c1b-9e18-45b1-83be-124163f31f9e + route: + href: https://api.example.org/v3/routes/74f7c078-0934-470f-9883-4fddss5b8f13 + parameters: + href: https://api.example.org/v3/service_route_bindings/b3536566-63e2-428f-8f87-a1b99864ada6/parameters + links: + route: + operationId: getRoute + parameters: + guid: $response.body#/relationships/route/data/guid + description: Retrieve the route for this service route binding + service_instance: + operationId: getServiceInstance + parameters: + guid: $response.body#/relationships/service_instance/data/guid + description: Retrieve the service instance for this service route binding + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update a service route binding + description: This endpoint updates a service route binding with labels and annotations. + operationId: updateServiceRouteBinding + tags: + - Service Route Bindings + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + content: + application/json: + schema: + properties: + metadata: + $ref: ../components/schemas/Metadata.yaml + examples: + default: + summary: default + value: + metadata: + labels: + key: value + annotations: + note: detailed information + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/ServiceRouteBinding.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2015-11-13T17:02:56Z' + updated_at: '2016-06-08T16:41:26Z' + route_service_url: https://route-service-url.io + last_operation: + type: create + state: succeeded + description: Operation succeeded + updated_at: '2020-03-10T15:49:32Z' + created_at: '2020-03-10T15:49:29Z' + metadata: + annotations: + foo: bar + labels: + baz: qux + relationships: + service_instance: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + route: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/service_route_bindings/dde5ad2a-d8f4-44dc-a56f-0452d744f1c3 + service_instance: + href: https://api.example.org/v3/service_instances/8bfe4c1b-9e18-45b1-83be-124163f31f9e + route: + href: https://api.example.org/v3/routes/74f7c078-0934-470f-9883-4fddss5b8f13 + parameters: + href: https://api.example.org/v3/service_route_bindings/b3536566-63e2-428f-8f87-a1b99864ada6/parameters + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + delete: + summary: Delete a service route binding + description: This endpoint deletes a service route binding. When deleting route bindings originating from user provided service instances, the delete operation does not require interactions with service brokers, therefore the API will respond synchronously to the delete request. Consequently, deleting route bindings from managed service instances responds with a job which can be used to track the progress of the delete operation. + operationId: deleteServiceRouteBinding + tags: + - Service Route Bindings + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '202': + description: Accepted + headers: + Location: + description: URL of the job that is deleting the service route binding + schema: + type: string + format: uri + '204': + description: No Content + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml +/v3/service_route_bindings/{guid}/parameters: + get: + summary: Get parameters for a route binding + description: Queries the Service Broker for the parameters associated with this service route binding. The broker catalog must have enabled the `bindings_retrievable` feature for the Service Offering. Check the [Service Offering object](#the-service-offering-object) for the value of this feature flag. This endpoint is not available for User-Provided Service Instances. + operationId: getServiceRouteBindingParameters + tags: + - Service Route Bindings + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + examples: + default: + summary: default + value: + foo: bar + foz: baz + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml diff --git a/docs/openapi/apis/cf/latest/paths/ServiceUsageEvents.yaml b/docs/openapi/apis/cf/latest/paths/ServiceUsageEvents.yaml new file mode 100644 index 00000000000..c4707880390 --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/ServiceUsageEvents.yaml @@ -0,0 +1,181 @@ +/v3/service_usage_events: + get: + summary: List service usage events + description: Retrieve all service usage events the user has access to. + operationId: listServiceUsageEvents + tags: + - Service Usage Events + parameters: + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - $ref: ../components/parameters/CreatedAts.yaml + - name: after_guid + in: query + description: Filters out events before and including the event with the given guid. + schema: + type: string + - name: guids + in: query + description: Comma-delimited list of usage event guids to filter by. + schema: + type: array + items: + type: string + - name: service_instance_types + in: query + description: Comma-delimited list of service instance types to filter by; valid values are `managed_service_instance` and `user_provided_service_instance` + schema: + type: array + items: + type: string + enum: + - managed_service_instance + - user_provided_service_instance + - name: service_offering_guids + in: query + description: Comma-delimited list of service offering guids to filter by + schema: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/ServiceUsageEventList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 2 + total_pages: 2 + first: + href: https://api.example.org<%= path %>?page=1&per_page=1 + last: + href: https://api.example.org<%= path %>?page=2&per_page=1 + next: + href: https://api.example.org<%= path %>?page=2&per_page=1 + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2020-05-28T12:34:56Z' + updated_at: '2020-05-28T12:34:56Z' + state: CREATED + space: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: name-1664 + organization: + guid: 123e4567-e89b-12d3-a456-426614174000 + service_instance: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: name-1982 + type: managed_service_instance + service_plan: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: name-1983 + service_offering: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: label-64 + service_broker: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: name-2929 + links: + self: + href: https://api.example.org/v3/service_usage_events/c9976002-96f4-435a-888e-db1e1178df62 + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/service_usage_events/{guid}: + get: + summary: Get a service usage event + description: Retrieve a service usage event. + operationId: getServiceUsageEvent + tags: + - Service Usage Events + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/ServiceUsageEvent.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2020-05-28T12:34:56Z' + updated_at: '2020-05-28T12:34:56Z' + state: CREATED + space: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: name-1664 + organization: + guid: 123e4567-e89b-12d3-a456-426614174000 + service_instance: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: name-1982 + type: managed_service_instance + service_plan: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: name-1983 + service_offering: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: label-64 + service_broker: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: name-2929 + links: + self: + href: https://api.example.org/v3/service_usage_events/c9976002-96f4-435a-888e-db1e1178df62 + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/service_usage_events/actions/destructively_purge_all_and_reseed: + post: + summary: Purge and seed service usage events + description: Destroys all existing events. Populates new usage events, one for each existing service instance. All populated events will have a `created_at` value of current time. There is the potential race condition if service instances are currently being created or deleted. The seeded usage events will have the same guid as the service instance. + operationId: purgeAndSeedServiceUsageEvents + tags: + - Service Usage Events + responses: + '200': + description: OK + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml diff --git a/docs/openapi/apis/cf/latest/paths/Sidecars.yaml b/docs/openapi/apis/cf/latest/paths/Sidecars.yaml new file mode 100644 index 00000000000..5e38c8e2004 --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/Sidecars.yaml @@ -0,0 +1,321 @@ +/v3/sidecars/{guid}: + get: + summary: Get a sidecar + description: Get a sidecar. + operationId: getSidecar + tags: + - Sidecars + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/Sidecar.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: auth-sidecar + command: bundle exec rackup + process_types: + - web + - worker + memory_in_mb: 300 + origin: user + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2017-02-01T01:33:58Z' + updated_at: '2017-02-01T01:33:58Z' + links: + app: + operationId: getApp + parameters: + guid: $response.body#/relationships/app/data/guid + description: Retrieve the app for this sidecar + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + patch: + summary: Update a sidecar + description: Update a sidecar. + operationId: updateSidecar + tags: + - Sidecars + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + $ref: ../components/requestBodies/SidecarUpdateRequestBody.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/Sidecar.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: auth-sidecar + command: bundle exec rackup + process_types: + - web + - worker + memory_in_mb: 300 + origin: user + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2017-02-01T01:33:58Z' + updated_at: '2017-02-01T01:33:58Z' + links: + app: + operationId: getApp + parameters: + guid: $response.body#/relationships/app/data/guid + description: Retrieve the app for this sidecar + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + delete: + summary: Delete a sidecar + description: Delete a sidecar. + operationId: deleteSidecar + tags: + - Sidecars + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '204': + description: No Content + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml +/v3/apps/{guid}/sidecars: + get: + summary: List sidecars for app + description: Retrieves all sidecars associated with a app. + operationId: listAppSidecars + tags: + - Sidecars + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/SidecarList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 3 + total_pages: 2 + first: + href: https://api.example.org?page=1&per_page=2 + last: + href: https://api.example.org?page=2&per_page=2 + next: + href: https://api.example.org?page=2&per_page=2 + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + name: auth-sidecar + command: bundle exec rackup + process_types: + - web + - worker + memory_in_mb: 300 + origin: user + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2017-02-01T01:33:58Z' + updated_at: '2017-02-01T01:33:58Z' + - guid: 123e4567-e89b-12d3-a456-426614174000 + name: echo-sidecar + command: start-echo-server + process_types: + - web + memory_in_mb: 300 + origin: user + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2017-02-01T01:33:59Z' + updated_at: '2017-02-01T01:33:59Z' + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + post: + summary: Create a sidecar associated with an app + description: Create a sidecar associated with an app. + operationId: createSidecar + tags: + - Sidecars + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + $ref: ../components/requestBodies/SidecarCreate.yaml + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: ../components/schemas/Sidecar.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + name: auth-sidecar + command: bundle exec rackup + process_types: + - web + - worker + memory_in_mb: 300 + origin: user + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2017-02-01T01:33:58Z' + updated_at: '2017-02-01T01:33:58Z' + links: + app: + operationId: getApp + parameters: + guid: $response.body#/relationships/app/data/guid + description: Retrieve the app for this sidecar + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/processes/{guid}/sidecars: + get: + summary: List sidecars for process + description: Retrieves all sidecars associated with a process. + operationId: listProcessSidecars + tags: + - Sidecars + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/SidecarList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 3 + total_pages: 2 + first: + href: https://api.example.org?page=1&per_page=2 + last: + href: https://api.example.org?page=2&per_page=2 + next: + href: https://api.example.org?page=2&per_page=2 + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + name: auth-sidecar + command: bundle exec rackup + process_types: + - web + - worker + memory_in_mb: 300 + origin: user + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2017-02-01T01:33:58Z' + updated_at: '2017-02-01T01:33:58Z' + - guid: 123e4567-e89b-12d3-a456-426614174000 + name: echo-sidecar + command: start-echo-server + process_types: + - web + memory_in_mb: 300 + origin: user + relationships: + app: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2017-02-01T01:33:59Z' + updated_at: '2017-02-01T01:33:59Z' + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml diff --git a/docs/openapi/apis/cf/latest/paths/SpaceQuotas.yaml b/docs/openapi/apis/cf/latest/paths/SpaceQuotas.yaml new file mode 100644 index 00000000000..6f410fa3526 --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/SpaceQuotas.yaml @@ -0,0 +1,476 @@ +/v3/space_quotas: + get: + summary: List space quotas + description: This endpoint lists all space quota resources that the user has permission to view. + operationId: listSpaceQuotas + tags: + - Space Quotas + parameters: + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - name: guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of space quota guids to filter by + - name: names + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of space quota names to filter by + - name: organization_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of organization guids to filter by + - name: space_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of space guids to filter by + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/SpaceQuotaList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 2 + total_pages: 1 + first: + href: https://api.example.org/v3/space_quotas?page=1&per_page=50 + last: + href: https://api.example.org/v3/space_quotas?page=1&per_page=50 + next: null + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2016-05-04T17:00:41Z' + updated_at: '2016-05-04T17:00:41Z' + name: don-quixote + apps: + total_memory_in_mb: 5120 + per_process_memory_in_mb: 1024 + log_rate_limit_in_bytes_per_second: 1024 + total_instances: 10 + per_app_tasks: null + services: + paid_services_allowed: true + total_service_instances: 10 + total_service_keys: 20 + routes: + total_routes: 8 + total_reserved_ports: 20 + relationships: + organizations: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + spaces: + data: + - guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/space_quotas/f919ef8a-e333-472a-8172-baaf2c30d301 + organization: + href: https://api.example.org/v3/organizations/9b370018-c38e-44c9-86d6-155c76801104 + - guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2017-05-04T17:00:41Z' + updated_at: '2017-05-04T17:00:41Z' + name: sancho-panza + apps: + total_memory_in_mb: 2048 + per_process_memory_in_mb: 1024 + log_rate_limit_in_bytes_per_second: 1024 + total_instances: 5 + per_app_tasks: 2 + services: + paid_services_allowed: true + total_service_instances: 10 + total_service_keys: 20 + routes: + total_routes: 8 + total_reserved_ports: 4 + relationships: + organizations: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + spaces: + data: [] + links: + self: + href: https://api.example.org/v3/space_quotas/554bcf32-7032-4cb0-92bc-738f9d2089d3 + organization: + href: https://api.example.org/v3/organizations/9b370018-c38e-44c9-86d6-155c76801104 + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + post: + summary: Create a space quota + description: This endpoint creates a new space quota scoped to a specific organization. + operationId: createSpaceQuota + tags: + - Space Quotas + requestBody: + $ref: ../components/requestBodies/SpaceQuotaCreate.yaml + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: ../components/schemas/SpaceQuota.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2016-05-04T17:00:41Z' + updated_at: '2016-05-04T17:00:41Z' + name: don-quixote + apps: + total_memory_in_mb: 5120 + per_process_memory_in_mb: 1024 + log_rate_limit_in_bytes_per_second: 1024 + total_instances: 10 + per_app_tasks: null + services: + paid_services_allowed: true + total_service_instances: 10 + total_service_keys: 20 + routes: + total_routes: 8 + total_reserved_ports: 20 + relationships: + organization: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + spaces: + data: + - guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/space_quotas/f919ef8a-e333-472a-8172-baaf2c30d301 + organization: + href: https://api.example.org/v3/organizations/9b370018-c38e-44c9-86d6-155c76801104 + links: + organization: + operationId: getOrganization + parameters: + guid: $response.body#/relationships/organization/data/guid + description: Retrieve the organization for this space quota + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/space_quotas/{guid}: + get: + summary: Get a space quota + description: Get a space quota + operationId: getSpaceQuota + tags: + - Space Quotas + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/SpaceQuota.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2016-05-04T17:00:41Z' + updated_at: '2016-05-04T17:00:41Z' + name: don-quixote + apps: + total_memory_in_mb: 5120 + per_process_memory_in_mb: 1024 + log_rate_limit_in_bytes_per_second: 1024 + total_instances: 10 + per_app_tasks: null + services: + paid_services_allowed: true + total_service_instances: 10 + total_service_keys: 20 + routes: + total_routes: 8 + total_reserved_ports: 20 + relationships: + organization: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + spaces: + data: + - guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/space_quotas/f919ef8a-e333-472a-8172-baaf2c30d301 + organization: + href: https://api.example.org/v3/organizations/9b370018-c38e-44c9-86d6-155c76801104 + links: + organization: + operationId: getOrganization + parameters: + guid: $response.body#/relationships/organization/data/guid + description: Retrieve the organization for this space quota + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update a space quota + description: This endpoint will only update the parameters specified in the request body. Any unspecified parameters will retain their existing values. + operationId: updateSpaceQuota + tags: + - Space Quotas + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + $ref: ../components/requestBodies/SpaceQuotaUpdate.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/SpaceQuota.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2016-05-04T17:00:41Z' + updated_at: '2016-05-04T17:00:41Z' + name: don-quixote + apps: + total_memory_in_mb: 5120 + per_process_memory_in_mb: 1024 + log_rate_limit_in_bytes_per_second: 1024 + total_instances: 10 + per_app_tasks: null + services: + paid_services_allowed: true + total_service_instances: 10 + total_service_keys: 20 + routes: + total_routes: 8 + total_reserved_ports: 20 + relationships: + organization: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + spaces: + data: + - guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/space_quotas/f919ef8a-e333-472a-8172-baaf2c30d301 + organization: + href: https://api.example.org/v3/organizations/9b370018-c38e-44c9-86d6-155c76801104 + links: + organization: + operationId: getOrganization + parameters: + guid: $response.body#/relationships/organization/data/guid + description: Retrieve the organization for this space quota + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + delete: + summary: Delete a space quota + description: Space quotas cannot be deleted when applied to any spaces. + operationId: deleteSpaceQuota + tags: + - Space Quotas + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '202': + description: Accepted + headers: + Location: + description: URL of the job that is deleting the space quota + schema: + type: string + format: uri + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml +/v3/space_quotas/{quota_guid}/relationships/spaces: + post: + summary: Apply a space quota to a space + description: |- + This endpoint applies a space quota to one or more spaces. + + Only an admin or an org manager in the quota’s parent organization can apply a space quota to a space. + operationId: applySpaceQuota + tags: + - Space Quotas + parameters: + - name: quota_guid + in: path + required: true + schema: + type: string + format: uuid + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/RelationshipToMany.yaml + examples: + default: + summary: default + value: + data: + - guid: 123e4567-e89b-12d3-a456-426614174000 + - guid: 123e4567-e89b-12d3-a456-426614174000 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/RelationshipToMany.yaml + examples: + default: + summary: default + value: + data: + - guid: 123e4567-e89b-12d3-a456-426614174000 + - guid: 123e4567-e89b-12d3-a456-426614174000 + - guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/space_quotas/quota-guid/relationships/spaces + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/space_quotas/{guid}/relationships/spaces/{space_guid}: + delete: + summary: Remove a space quota from a space + description: |- + This endpoint removes a space quota from a space. + + Only an admin or an org manager in the quota’s parent organization can remove a space quota from a space. + operationId: removeSpaceQuotaFromSpace + tags: + - Space Quotas + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: space_guid + in: path + required: true + schema: + type: string + format: uuid + responses: + '204': + description: No Content + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/space_quotas/{guid}/relationships/spaces/{space_guid}/: + delete: + summary: Remove a space quota from a space (with trailing slash) + description: |- + This endpoint removes a space quota from a space. + + Only an admin or an org manager in the quota’s parent organization can remove a space quota from a space. + operationId: removeSpaceQuotaFromSpaceWithSlash + tags: + - Space Quotas + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: space_guid + in: path + required: true + schema: + type: string + format: uuid + responses: + '204': + description: No Content + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml diff --git a/docs/openapi/apis/cf/latest/paths/Spaces.yaml b/docs/openapi/apis/cf/latest/paths/Spaces.yaml new file mode 100644 index 00000000000..c06f998ad0d --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/Spaces.yaml @@ -0,0 +1,812 @@ +/v3/spaces: + get: + summary: List spaces + description: Retrieve all spaces the user has access to. + operationId: listSpaces + tags: + - Spaces + parameters: + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + - $ref: ../components/parameters/LabelSelector.yaml + - name: names + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of space names to filter by + - name: guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of space guids to filter by + - name: organization_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of organization guids to filter by + - name: include + in: query + schema: + type: array + items: + type: string + enum: + - organization + description: Optionally include a list of unique related resources in the response + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/SpaceList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 2 + total_pages: 1 + first: + href: https://api.example.org/v3/spaces?page=1&per_page=50 + last: + href: https://api.example.org/v3/spaces?page=1&per_page=50 + next: null + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2017-02-01T01:33:58Z' + updated_at: '2017-02-01T01:33:58Z' + name: space1 + relationships: + organization: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + quota: + data: null + links: + self: + href: https://api.example.org/v3/spaces/885735b5-aea4-4cf5-8e44-961af0e41920 + features: + href: https://api.example.org/v3/spaces/885735b5-aea4-4cf5-8e44-961af0e41920/features + organization: + href: https://api.example.org/v3/organizations/e00705b9-7b42-4561-ae97-2520399d2133 + apply_manifest: + href: https://api.example.org/v3/spaces/885735b5-aea4-4cf5-8e44-961af0e41920/actions/apply_manifest + method: POST + metadata: + labels: {} + annotations: {} + - guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2017-02-02T00:14:30Z' + updated_at: '2017-02-02T00:14:30Z' + name: space2 + relationships: + organization: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + quota: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/spaces/d4c91047-7b29-4fda-b7f9-04033e5c9c9f + features: + href: https://api.example.org/v3/spaces/d4c91047-7b29-4fda-b7f9-04033e5c9c9f/features + organization: + href: https://api.example.org/v3/organizations/b4ce91bd-31df-4b7d-8fd4-21a6b533276b + quota: + href: https://api.example.org/v3/space_quotas/6da62599-4890-4a08-8b6f-180a4f47e46b + apply_manifest: + href: https://api.example.org/v3/spaces/d4c91047-7b29-4fda-b7f9-04033e5c9c9/actions/apply_manifest + method: POST + metadata: + labels: {} + annotations: {} + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '429': + $ref: ../components/responses/TooManyRequests.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + post: + summary: Create a space + description: Create a space. + operationId: createSpace + tags: + - Spaces + requestBody: + $ref: ../components/requestBodies/SpaceCreateRequestBody.yaml + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: ../components/schemas/Space.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2017-02-01T01:33:58Z' + updated_at: '2017-02-01T01:33:58Z' + name: my-space + relationships: + organization: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + quota: + data: null + links: + self: + href: https://api.example.org/v3/spaces/885735b5-aea4-4cf5-8e44-961af0e41920 + features: + href: https://api.example.org/v3/spaces/885735b5-aea4-4cf5-8e44-961af0e41920/features + organization: + href: https://api.example.org/v3/organizations/e00705b9-7b42-4561-ae97-2520399d2133 + apply_manifest: + href: https://api.example.org/v3/spaces/885735b5-aea4-4cf5-8e44-961af0e41920/actions/apply_manifest + method: POST + metadata: + labels: {} + annotations: {} + links: + organization: + operationId: getOrganization + parameters: + guid: $response.body#/relationships/organization/data/guid + description: Retrieve the organization for this space + quota: + operationId: getSpaceQuota + parameters: + guid: $response.body#/relationships/quota/data/guid + description: Retrieve the quota associated with this space + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/spaces/{guid}: + get: + summary: Get a space + description: This endpoint retrieves the specified space object. + operationId: getSpace + tags: + - Spaces + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: include + in: query + schema: + type: array + items: + type: string + enum: + - organization + description: Optionally include additional related resources in the response + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/Space.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2017-02-01T01:33:58Z' + updated_at: '2017-02-01T01:33:58Z' + name: my-space + relationships: + organization: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + quota: + data: null + links: + self: + href: https://api.example.org/v3/spaces/885735b5-aea4-4cf5-8e44-961af0e41920 + features: + href: https://api.example.org/v3/spaces/885735b5-aea4-4cf5-8e44-961af0e41920/features + organization: + href: https://api.example.org/v3/organizations/e00705b9-7b42-4561-ae97-2520399d2133 + apply_manifest: + href: https://api.example.org/v3/spaces/885735b5-aea4-4cf5-8e44-961af0e41920/actions/apply_manifest + method: POST + metadata: + labels: {} + annotations: {} + links: + organization: + operationId: getOrganization + parameters: + guid: $response.body#/relationships/organization/data/guid + description: Retrieve the organization for this space + quota: + operationId: getSpaceQuota + parameters: + guid: $response.body#/relationships/quota/data/guid + description: Retrieve the quota associated with this space + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update a space + description: Update a space + operationId: updateSpace + tags: + - Spaces + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + $ref: ../components/requestBodies/SpaceUpdateRequestBody.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/Space.yaml + examples: + default: + summary: default + value: + guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2017-02-01T01:33:58Z' + updated_at: '2017-02-01T01:33:58Z' + name: my-space + relationships: + organization: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + quota: + data: null + links: + self: + href: https://api.example.org/v3/spaces/885735b5-aea4-4cf5-8e44-961af0e41920 + features: + href: https://api.example.org/v3/spaces/885735b5-aea4-4cf5-8e44-961af0e41920/features + organization: + href: https://api.example.org/v3/organizations/e00705b9-7b42-4561-ae97-2520399d2133 + apply_manifest: + href: https://api.example.org/v3/spaces/885735b5-aea4-4cf5-8e44-961af0e41920/actions/apply_manifest + method: POST + metadata: + labels: {} + annotations: {} + links: + organization: + operationId: getOrganization + parameters: + guid: $response.body#/relationships/organization/data/guid + description: Retrieve the organization for this space + quota: + operationId: getSpaceQuota + parameters: + guid: $response.body#/relationships/quota/data/guid + description: Retrieve the quota associated with this space + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + delete: + summary: Delete a space + description: When a space is deleted, the user roles associated with the space will be deleted. + operationId: deleteSpace + tags: + - Spaces + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '202': + description: Accepted + headers: + location: + description: URL of the job to query the asynchronous operation + schema: + type: string + format: uri + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml +/v3/spaces/{guid}/actions/apply_manifest: + post: + summary: Apply a manifest to a space + description: |- + Apply changes specified in a manifest to the named apps and their underlying processes. The apps must reside in the space. These changes are additive and will not modify any unspecified properties or remove any existing environment variables, app features, routes, or services. + + Apply manifest will only trigger an immediate update for the “instances” property or routing changes. All other properties require an app restart to take effect. + operationId: applyManifestToSpace + tags: + - Spaces + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + content: + application/x-yaml: + schema: + type: string + responses: + '202': + description: Accepted + headers: + Location: + description: URL of the job that is applying the manifest + schema: + type: string + format: uri + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/spaces/{guid}/features: + get: + summary: List space features + description: This endpoint retrieves the list of features for the specified space. Currently, the only feature on spaces is the SSH feature. + operationId: listSpaceFeatures + tags: + - Spaces + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/SpaceFeature.yaml + examples: + default: + summary: default + value: + resources: + - name: ssh + description: Enable SSHing into apps in the space. + enabled: true + - name: diego_docker + description: Allow Docker image support for the space. + enabled: false + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/spaces/{guid}/features/{name}: + get: + summary: Get a space feature + description: Get a space feature + operationId: getSpaceFeature + tags: + - Spaces + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: name + in: path + required: true + schema: + type: string + enum: + - ssh + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/SpaceFeature.yaml + examples: + default: + summary: default + value: + name: ssh + description: Enable SSHing into apps in the space. + enabled: true + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update a space feature + description: Update a space feature. + operationId: updateSpaceFeature + tags: + - Spaces + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: name + in: path + required: true + schema: + type: string + enum: + - ssh + requestBody: + content: + application/json: + schema: + properties: + enabled: + type: boolean + examples: + default: + summary: default + value: + enabled: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/SpaceFeature.yaml + examples: + default: + summary: default + value: + name: ssh + description: Enable SSHing into apps in the space. + enabled: true + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/spaces/{guid}/manifest_diff: + post: + summary: Create a manifest diff for a space (experimental) + description: |- + This endpoint returns a JSON representation of the difference between the provided manifest and the current state of a space. + + Currently, this endpoint can only diff [version 1](#the-manifest-schema) manifests. + operationId: createManifestDiffForSpace + tags: + - Spaces + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + content: + application/x-yaml: + schema: + type: string + responses: + '201': + description: Accepted + headers: + Location: + description: URL of the job that is creating the manifest diff + schema: + type: string + format: uri + '202': + description: Accepted + headers: + Location: + description: URL of the job that is creating the manifest diff + schema: + type: string + format: uri + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/spaces/{guid}/relationships/isolation_segment: + get: + summary: Get assigned isolation segment + description: Get assigned isolation segment + operationId: getAssignedIsolationSegmentForSpace + tags: + - Spaces + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/RelationshipToOne.yaml + examples: + default: + summary: default + value: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/spaces/885735b5-aea4-4cf5-8e44-961af0e41920/relationships/isolation_segment + related: + href: https://api.example.org/v3/isolation_segments/e4c91047-3b29-4fda-b7f9-04033e5a9c9f + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Manage isolation segment + description: |- + This endpoint assigns an isolation segment to the space. The isolation segment must be [entitled](#entitle-organizations-for-an-isolation-segment) to the space’s parent organization. + + Apps will not run in the newly assigned isolation segment until they are restarted. + operationId: manageIsolationSegmentForSpace + tags: + - Spaces + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + content: + application/json: + schema: + $ref: ../components/schemas/RelationshipToOne.yaml + examples: + default: + summary: default + value: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/RelationshipToOne.yaml + examples: + default: + summary: default + value: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/spaces/885735b5-aea4-4cf5-8e44-961af0e41920/relationships/isolation_segment + related: + href: https://api.example.org/v3/isolation_segments/e4c91047-3b29-4fda-b7f9-04033e5a9c9f + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/spaces/{guid}/routes: + delete: + summary: Delete unmapped routes for a space + description: Deletes all routes in a space that are not mapped to any applications and not bound to any service instances. + operationId: deleteUnmappedRoutesForSpace + tags: + - Spaces + parameters: + - $ref: ../components/parameters/Guid.yaml + - name: unmapped + in: query + required: true + schema: + type: boolean + enum: + - true + description: Filter to only delete unmapped routes + responses: + '202': + description: Accepted + headers: + Location: + description: URL of the job that is deleting unmapped routes + schema: + type: string + format: uri + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml +/v3/spaces/{guid}/usage_summary: + get: + summary: Get usage summary for a space + description: This endpoint retrieves the specified space's memory and app instance usage summary. + operationId: getUsageSummaryForSpace + tags: + - Spaces + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + usage_summary: + type: object + properties: + started_instances: + type: integer + memory_in_mb: + type: integer + routes: + type: integer + service_instances: + type: integer + reserved_ports: + type: integer + domains: + type: integer + per_app_tasks: + type: integer + service_keys: + type: integer + links: + type: object + properties: + self: + $ref: ../components/schemas/Link.yaml + description: The URL to get this usage summary + space: + $ref: ../components/schemas/Link.yaml + description: The URL to get the space for this usage summary + examples: + default: + summary: default + value: + usage_summary: + started_instances: 3 + memory_in_mb: 3072 + routes: 3 + service_instances: 2 + reserved_ports: 1 + domains: 1 + per_app_tasks: 0 + service_keys: 1 + links: + self: + href: https://api.example.org/v3/spaces/f47ac10b-58cc-4372-a567-0e02b2c3d479/usage_summary + organization: + href: https://api.example.org/v3/spaces/f47ac10b-58cc-4372-a567-0e02b2c3d479 + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/spaces/{guid}/running_security_groups: + get: + summary: List running security groups for a space + description: This endpoint returns security groups that are enabled for running globally or at the space level for the given space. + operationId: listRunningSecurityGroupsForSpace + tags: + - Spaces + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/SecurityGroupList.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/spaces/{guid}/staging_security_groups: + get: + summary: List staging security groups for a space + description: This endpoint returns security groups that are enabled for staging globally or at the space level for the given space. + operationId: listStagingSecurityGroupsForSpace + tags: + - Spaces + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/SecurityGroupList.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml +/v3/spaces/{guid}/users: + get: + summary: List users for a space + description: Retrieve all users with a role in the specified space. + operationId: listUsersForSpace + tags: + - Spaces + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/UserList.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml diff --git a/docs/openapi/apis/cf/latest/paths/Stacks.yaml b/docs/openapi/apis/cf/latest/paths/Stacks.yaml new file mode 100644 index 00000000000..c69c09e0e66 --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/Stacks.yaml @@ -0,0 +1,357 @@ +/v3/stacks: + get: + summary: List stacks + description: Retrieve all stacks. + operationId: listStacks + tags: + - Stacks + parameters: + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + - $ref: ../components/parameters/LabelSelector.yaml + - name: names + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of stack names to filter by + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/StackList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 3 + total_pages: 2 + first: + href: https://api.example.org?page=1&per_page=2 + last: + href: https://api.example.org?page=2&per_page=2 + next: + href: https://api.example.org?page=2&per_page=2 + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2018-11-09T22:43:28Z' + updated_at: '2018-11-09T22:43:28Z' + name: my-stack-1 + build_rootfs_image: my-stack-1-build + run_rootfs_image: my-stack-1-run + description: This is my first stack! + state: ACTIVE + state_reason: null + default: true + metadata: + labels: {} + annotations: {} + links: + self: + href: https://api.example.org/11c916c9-c2f9-440e-8e73-102e79c4704d + - guid: 123e4567-e89b-12d3-a456-426614174000 + created_at: '2018-11-09T22:43:29Z' + updated_at: '2018-11-09T22:43:29Z' + name: my-stack-2 + description: This is my second stack! + build_rootfs_image: my-stack-2-build + run_rootfs_image: my-stack-2-run + state: DEPRECATED + state_reason: Stack deprecated and will be removed in future release + default: false + metadata: + labels: {} + annotations: {} + links: + self: + href: https://api.example.org/81c916c9-c2f9-440e-8e73-102e79c4704h + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + post: + summary: Create a stack + description: Create a stack. + operationId: createStack + tags: + - Stacks + requestBody: + $ref: ../components/requestBodies/StackCreateRequestBody.yaml + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: ../components/schemas/Stack.yaml + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/stacks/{guid}: + get: + summary: Get a stack + description: Get a stack. + operationId: getStack + tags: + - Stacks + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/Stack.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update a stack + description: Update a stack. + operationId: updateStack + tags: + - Stacks + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + content: + application/json: + schema: + properties: + metadata: + $ref: ../components/schemas/Metadata.yaml + examples: + default: + summary: default + value: + metadata: + labels: + key: value + annotations: + note: detailed information + state: ACTIVE + state_reason: Optional plain text describing the stack state change + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/Stack.yaml + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml + delete: + summary: Delete a stack + description: Delete a stack. + operationId: deleteStack + tags: + - Stacks + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '204': + description: No Content + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml +/v3/stacks/{guid}/apps: + get: + summary: List apps on a stack + description: Retrieve all apps using a given stack. + operationId: listAppsOnStack + tags: + - Stacks + parameters: + - $ref: ../components/parameters/Guid.yaml + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + - $ref: ../components/parameters/LabelSelector.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/AppList.yaml + examples: + default: + summary: default + value: + pagination: + total_results: 3 + total_pages: 2 + first: + href: https://api.example.org?page=1&per_page=2 + last: + href: https://api.example.org?page=2&per_page=2 + next: + href: https://api.example.org?page=2&per_page=2 + previous: null + resources: + - guid: 123e4567-e89b-12d3-a456-426614174000 + name: my_app + state: STARTED + created_at: '2016-03-17T21:41:30Z' + updated_at: '2016-03-18T11:32:30Z' + lifecycle: + type: buildpack + data: + buildpacks: + - java_buildpack + stack: cflinuxfs4 + relationships: + space: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + current_droplet: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446 + space: + href: https://api.example.org/v3/spaces/2f35885d-0c9d-4423-83ad-fd05066f8576 + processes: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/processes + packages: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/packages + environment_variables: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/environment_variables + current_droplet: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/droplets/current + droplets: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/droplets + tasks: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/tasks + start: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/actions/start + method: POST + stop: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/actions/stop + method: POST + revisions: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/revisions + deployed_revisions: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/revisions/deployed + features: + href: https://api.example.org/v3/apps/1cb006ee-fb05-47e1-b541-c34179ddc446/features + metadata: + labels: {} + annotations: {} + - guid: 123e4567-e89b-12d3-a456-426614174000 + name: my_app2 + state: STOPPED + created_at: '1970-01-01T00:00:02Z' + updated_at: '2016-06-08T16:41:26Z' + lifecycle: + type: buildpack + data: + buildpacks: + - ruby_buildpack + stack: cflinuxfs4 + relationships: + space: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + droplet: + data: + guid: 123e4567-e89b-12d3-a456-426614174000 + links: + self: + href: https://api.example.org/02b4ec9b-94c7-4468-9c23-4e906191a0f8 + space: + href: https://api.example.org/v3/spaces/2f35885d-0c9d-4423-83ad-fd05066f8576 + processes: + href: https://api.example.org/02b4ec9b-94c7-4468-9c23-4e906191a0f8/processes + packages: + href: https://api.example.org/02b4ec9b-94c7-4468-9c23-4e906191a0f8/packages + environment_variables: + href: https://api.example.org/02b4ec9b-94c7-4468-9c23-4e906191a0f8/environment_variables + current_droplet: + href: https://api.example.org/02b4ec9b-94c7-4468-9c23-4e906191a0f8/droplets/current + droplets: + href: https://api.example.org/02b4ec9b-94c7-4468-9c23-4e906191a0f8/droplets + tasks: + href: https://api.example.org/02b4ec9b-94c7-4468-9c23-4e906191a0f8/tasks + start: + href: https://api.example.org/02b4ec9b-94c7-4468-9c23-4e906191a0f8/actions/start + method: POST + stop: + href: https://api.example.org/02b4ec9b-94c7-4468-9c23-4e906191a0f8/actions/stop + method: POST + revisions: + href: https://api.example.org//02b4ec9b-94c7-4468-9c23-4e906191a0f8/revisions + deployed_revisions: + href: https://api.example.org//02b4ec9b-94c7-4468-9c23-4e906191a0f8/revisions/deployed + features: + href: https://api.example.org//02b4ec9b-94c7-4468-9c23-4e906191a0f8/features + metadata: + labels: {} + annotations: {} + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml diff --git a/docs/openapi/apis/cf/latest/paths/Tasks.yaml b/docs/openapi/apis/cf/latest/paths/Tasks.yaml new file mode 100644 index 00000000000..e8056d0a36d --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/Tasks.yaml @@ -0,0 +1,353 @@ +/v3/tasks: + get: + summary: List tasks + description: Retrieve all tasks the user has access to. The `command` field is excluded in the response. + operationId: listTasks + tags: + - Tasks + parameters: + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + - $ref: ../components/parameters/LabelSelector.yaml + - name: guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of task guids to filter by + - name: names + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of task names to filter by + - name: states + in: query + schema: + type: array + items: + type: string + enum: + - PENDING + - RUNNING + - SUCCEEDED + - CANCELING + - FAILED + description: Comma-delimited list of task states to filter by + - name: app_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of app guids to filter by + - name: space_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of space guids to filter by + - name: organization_guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of organization guids to filter by + - name: sequence_ids + in: query + schema: + type: array + items: + type: integer + description: Comma-delimited list of sequence ids to filter by + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/TaskList.yaml + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '502': + $ref: ../components/responses/BadGateway.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/apps/{guid}/tasks: + get: + summary: List tasks for an app + description: Retrieve tasks for an app. + operationId: listAppTasks + tags: + - Tasks + parameters: + - $ref: ../components/parameters/Guid.yaml + - $ref: ../components/parameters/Page.yaml + - $ref: ../components/parameters/PerPage.yaml + - $ref: ../components/parameters/OrderBy.yaml + - $ref: ../components/parameters/CreatedAts.yaml + - $ref: ../components/parameters/UpdatedAts.yaml + - $ref: ../components/parameters/LabelSelector.yaml + - name: guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of task guids to filter by + - name: names + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of task names to filter by + - name: states + in: query + schema: + type: array + items: + type: string + enum: + - PENDING + - RUNNING + - SUCCEEDED + - CANCELING + - FAILED + description: Comma-delimited list of task states to filter by + - name: sequence_ids + in: query + schema: + type: array + items: + type: integer + description: Comma-delimited list of sequence ids to filter by + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/TaskList.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + post: + summary: Create a task + description: Create a task. + operationId: createTask + tags: + - Tasks + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + $ref: ../components/requestBodies/TaskCreateRequestBody.yaml + responses: + '202': + description: Accepted + content: + application/json: + schema: + $ref: ../components/schemas/Task.yaml + links: + app: + operationId: getApp + parameters: + guid: $response.body#/relationships/app/data/guid + description: Retrieve the app for this task + droplet: + operationId: getDroplet + parameters: + guid: $response.body#/droplet_guid + description: Retrieve the droplet for this task + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/tasks/{guid}: + get: + summary: Get a task + description: Retrieve a task. The `command` field may be excluded in the response based on the user’s role. + operationId: getTask + tags: + - Tasks + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/Task.yaml + links: + app: + operationId: getApp + parameters: + guid: $response.body#/relationships/app/data/guid + description: Retrieve the app for this task + droplet: + operationId: getDroplet + parameters: + guid: $response.body#/droplet_guid + description: Retrieve the droplet for this task + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + patch: + summary: Update a task + description: Update a task. + operationId: updateTask + tags: + - Tasks + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + content: + application/json: + schema: + properties: + metadata: + $ref: ../components/schemas/Metadata.yaml + examples: + default: + summary: default + value: + metadata: + labels: + key: value + annotations: + note: detailed information + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/Task.yaml + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '409': + $ref: ../components/responses/Conflict.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml + '503': + $ref: ../components/responses/ServiceUnavailable.yaml +/v3/tasks/{guid}/actions/cancel: + post: + summary: Cancel a task + description: Cancels a running task. Canceled tasks will initially be in state `CANCELING` and will move to state `FAILED` once the cancel request has been processed. Cancel requests are idempotent and will be processed according to the state of the task when the request is executed. Canceling a task that is in `SUCCEEDED` or `FAILED` state will return an error. + operationId: cancelTask + tags: + - Tasks + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '202': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/Task.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + put: + summary: Cancel a task (PUT) + description: Cancels a running task using PUT method. Canceled tasks will initially be in state `CANCELING` and will move to state `FAILED` once the cancel request has been processed. Cancel requests are idempotent and will be processed according to the state of the task when the request is executed. Canceling a task that is in `SUCCEEDED` or `FAILED` state will return an error. + operationId: cancelTaskPut + tags: + - Tasks + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '202': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/Task.yaml + '400': + $ref: ../components/responses/BadRequest.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml + '500': + $ref: ../components/responses/500.yaml +/v3/tasks/{guid}/cancel: + put: + summary: DEPRECATED - Cancel a task (short path) + description: DEPRECATED - Use /v3/tasks/{guid}/actions/cancel instead. + operationId: cancelTaskShort + tags: + - Tasks + parameters: + - $ref: ../components/parameters/Guid.yaml + responses: + '202': + description: OK + content: + application/json: + schema: + $ref: ../components/schemas/Task.yaml + '401': + $ref: ../components/responses/Unauthorized.yaml + '403': + $ref: ../components/responses/Forbidden.yaml + '404': + $ref: ../components/responses/NotFound.yaml + '422': + $ref: ../components/responses/UnprocessableEntity.yaml diff --git a/docs/openapi/apis/cf/latest/paths/Users.yaml b/docs/openapi/apis/cf/latest/paths/Users.yaml new file mode 100644 index 00000000000..f844746ebd3 --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/Users.yaml @@ -0,0 +1,183 @@ +/v3/users: + get: + summary: List users + description: Retrieve all users that the current user can see. + operationId: listUsers + tags: + - Users + parameters: + - $ref: '../components/parameters/Page.yaml' + - $ref: '../components/parameters/PerPage.yaml' + - $ref: '../components/parameters/OrderBy.yaml' + - $ref: '../components/parameters/CreatedAts.yaml' + - $ref: '../components/parameters/UpdatedAts.yaml' + - $ref: '../components/parameters/LabelSelector.yaml' + - name: guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of user guids to filter by (can include UAA user IDs or client IDs) + - name: usernames + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of usernames to filter by + - name: origins + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of user origins to filter by + - name: partial_usernames + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of partial usernames to filter by + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '../components/schemas/UserList.yaml' + '400': + $ref: '../components/responses/BadRequest.yaml' + '401': + $ref: '../components/responses/Unauthorized.yaml' + '403': + $ref: '../components/responses/Forbidden.yaml' + '500': + $ref: '../components/responses/500.yaml' + '503': + $ref: '../components/responses/ServiceUnavailable.yaml' + '422': + $ref: '../components/responses/UnprocessableEntity.yaml' + '502': + $ref: '../components/responses/BadGateway.yaml' + '409': + $ref: '../components/responses/Conflict.yaml' + post: + summary: Create a user + description: 'Creating a user requires one value, a GUID. This creates a user + in the Cloud Controller database. + + + Generally, the GUID should match the GUID of an already-created user in the + UAA database, though this is not required. Creating a user by guid is only permitted + by admins. + + + If CAPI property `cc.allow_user_creation_by_org_manager` is enabled, a UAA user + will be automatically created if it does not exist yet. The UAA user will be + only created when `username` and `origin` have been provided instead of a guid. + Additionally `origin` must be different from `uaa`. Admins and OrgManagers can + make use of the UAA user creation.' + operationId: createUser + tags: + - Users + requestBody: + $ref: '../components/requestBodies/UserCreate.yaml' + responses: + '201': + $ref: '../components/responses/UserCreateResponse.yaml' + '400': + $ref: '../components/responses/BadRequest.yaml' + '401': + $ref: '../components/responses/Unauthorized.yaml' + '403': + $ref: '../components/responses/Forbidden.yaml' + '500': + $ref: '../components/responses/500.yaml' + '422': + $ref: '../components/responses/UnprocessableEntity.yaml' + '429': + $ref: '../components/responses/TooManyRequests.yaml' + '503': + $ref: '../components/responses/ServiceUnavailable.yaml' + '409': + $ref: '../components/responses/Conflict.yaml' +/v3/users/{guid}: + get: + summary: Get a user + description: Retrieve a user. + operationId: getUser + tags: + - Users + parameters: + - $ref: '../components/parameters/UserGuid.yaml' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '../components/schemas/User.yaml' + '401': + $ref: '../components/responses/Unauthorized.yaml' + '404': + $ref: '../components/responses/NotFound.yaml' + '403': + $ref: '../components/responses/Forbidden.yaml' + patch: + summary: Update a user + description: Update a user's metadata. + operationId: updateUser + tags: + - Users + parameters: + - $ref: '../components/parameters/UserGuid.yaml' + requestBody: + $ref: '../components/requestBodies/UserUpdate.yaml' + responses: + '200': + $ref: '../components/responses/UserUpdateResponse.yaml' + '401': + $ref: '../components/responses/Unauthorized.yaml' + '404': + $ref: '../components/responses/NotFound.yaml' + '403': + $ref: '../components/responses/Forbidden.yaml' + '422': + $ref: '../components/responses/UnprocessableEntity.yaml' + '400': + $ref: '../components/responses/BadRequest.yaml' + '500': + $ref: '../components/responses/500.yaml' + '503': + $ref: '../components/responses/ServiceUnavailable.yaml' + '409': + $ref: '../components/responses/Conflict.yaml' + delete: + summary: Delete a user + description: All roles associated with a user will be deleted if the user is deleted. + operationId: deleteUser + tags: + - Users + parameters: + - $ref: '../components/parameters/UserGuid.yaml' + responses: + '202': + description: Accepted + headers: + Location: + description: URL of the job that is deleting the user + schema: + type: string + format: uri + '401': + $ref: '../components/responses/Unauthorized.yaml' + '404': + $ref: '../components/responses/NotFound.yaml' + '403': + $ref: '../components/responses/Forbidden.yaml' + '422': + $ref: '../components/responses/UnprocessableEntity.yaml' + '500': + $ref: '../components/responses/500.yaml' diff --git a/docs/openapi/apis/cf/latest/paths/V3.yaml b/docs/openapi/apis/cf/latest/paths/V3.yaml new file mode 100644 index 00000000000..13181f70e22 --- /dev/null +++ b/docs/openapi/apis/cf/latest/paths/V3.yaml @@ -0,0 +1,115 @@ +get: + summary: Get V3 API root + description: |- + Returns the V3 API root endpoint information. + operationId: getV3ApiRoot + tags: + - Root + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + links: + type: object + description: Links to related resources + properties: + self: + allOf: + - $ref: '../components/schemas/Link.yaml' + - description: Link to the current endpoint + apps: + allOf: + - $ref: '../components/schemas/Link.yaml' + - description: Link to the apps endpoint + builds: + allOf: + - $ref: '../components/schemas/Link.yaml' + - description: Link to the builds endpoint + deployments: + allOf: + - $ref: '../components/schemas/Link.yaml' + - description: Link to the deployments endpoint + domains: + allOf: + - $ref: '../components/schemas/Link.yaml' + - description: Link to the domains endpoint + droplets: + allOf: + - $ref: '../components/schemas/Link.yaml' + - description: Link to the droplets endpoint + feature_flags: + allOf: + - $ref: '../components/schemas/Link.yaml' + - description: Link to the feature flags endpoint + info: + allOf: + - $ref: '../components/schemas/Link.yaml' + - description: Link to the info endpoint + isolation_segments: + allOf: + - $ref: '../components/schemas/Link.yaml' + - description: Link to the isolation segments endpoint + organizations: + allOf: + - $ref: '../components/schemas/Link.yaml' + - description: Link to the organizations endpoint + packages: + allOf: + - $ref: '../components/schemas/Link.yaml' + - description: Link to the packages endpoint + processes: + allOf: + - $ref: '../components/schemas/Link.yaml' + - description: Link to the processes endpoint + roles: + allOf: + - $ref: '../components/schemas/Link.yaml' + - description: Link to the roles endpoint + routes: + allOf: + - $ref: '../components/schemas/Link.yaml' + - description: Link to the routes endpoint + security_groups: + allOf: + - $ref: '../components/schemas/Link.yaml' + - description: Link to the security groups endpoint + service_brokers: + allOf: + - $ref: '../components/schemas/Link.yaml' + - description: Link to the service brokers endpoint + service_instances: + allOf: + - $ref: '../components/schemas/Link.yaml' + - description: Link to the service instances endpoint + service_offerings: + allOf: + - $ref: '../components/schemas/Link.yaml' + - description: Link to the service offerings endpoint + service_plans: + allOf: + - $ref: '../components/schemas/Link.yaml' + - description: Link to the service plans endpoint + spaces: + allOf: + - $ref: '../components/schemas/Link.yaml' + - description: Link to the spaces endpoint + stacks: + allOf: + - $ref: '../components/schemas/Link.yaml' + - description: Link to the stacks endpoint + tasks: + allOf: + - $ref: '../components/schemas/Link.yaml' + - description: Link to the tasks endpoint + users: + allOf: + - $ref: '../components/schemas/Link.yaml' + - description: Link to the users endpoint + '404': + $ref: '../components/responses/NotFound.yaml' + '500': + $ref: '../components/responses/500.yaml' diff --git a/docs/openapi/apis/logcache/.gitkeep b/docs/openapi/apis/logcache/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/docs/openapi/bin/build.js b/docs/openapi/bin/build.js new file mode 100644 index 00000000000..baba3b2fe94 --- /dev/null +++ b/docs/openapi/bin/build.js @@ -0,0 +1,148 @@ +const fs = require('fs-extra'); +const path = require('path'); +const { spawn } = require('child_process'); + +const apisDir = path.join(process.cwd(), 'apis', 'cf'); +const distDir = path.join(process.cwd(), 'dist'); + +function runCommand(command, args, options = {}) { + return new Promise((resolve) => { + const cmd = `${command} ${args.join(' ')}`; + const cwd = options.cwd || process.cwd(); + console.log(`> ${cmd}${options.cwd ? ` (in ${options.cwd})` : ''}`); + const child = spawn(command, args, { ...options }); + + let stdout = ''; + let stderr = ''; + + child.stdout.on('data', (data) => { + stdout += data.toString(); + }); + + child.stderr.on('data', (data) => { + stderr += data.toString(); + }); + + child.on('close', (code) => { + resolve({ + command: cmd, + code, + stdout, + stderr, + }); + }); + + child.on('error', (err) => { + resolve({ + command: cmd, + code: 1, + stdout: '', + stderr: err.message, + }); + }); + }); +} + +async function build() { + await fs.ensureDir(distDir); + + const apiVersions = await fs.readdir(apisDir); + + const promises = []; + const scalarConfigs = []; + + for (const version of apiVersions) { + const apiVersionDir = path.join(apisDir, version); + const stats = await fs.stat(apiVersionDir); + + if (stats.isDirectory()) { + const openapiFile = path.join(apiVersionDir, 'openapi.yaml'); + if (await fs.pathExists(openapiFile)) { + const distApiDir = path.join(distDir, version); + await fs.ensureDir(distApiDir); + + const outputFile = path.join(distApiDir, 'openapi.yaml'); + // Run redocly bundle from the API directory + promises.push(runCommand('redocly', ['bundle', 'openapi.yaml', '-o', path.resolve(outputFile)], { + cwd: apiVersionDir + }).then(async (result) => { + return result; + })); + + const config = { + title: `Cloud Foundry V3 (CAPI ${version})`, + slug: `cf-api-${version}`, + url: `${version}/openapi.yaml`, + }; + + if (version === 'latest') { + config.default = true; + } + + scalarConfigs.push(config); + } + } + } + + const results = await Promise.all(promises); + + let hasErrors = false; + for (const result of results) { + if (result.code !== 0) { + hasErrors = true; + console.error(`\nCommand failed: ${result.command}`); + if (result.stdout) { + console.log(result.stdout); + } + if (result.stderr) { + console.error(result.stderr); + } + } else { + console.log(`\nCommand successful: ${result.command}`); + if (result.stdout) { + console.log(result.stdout); + } + if (result.stderr) { + console.error(result.stderr); + } + } + } + + if (hasErrors) { + console.error('\nBuild failed.'); + process.exit(1); + } + + const indexHtml = ` + + + + + Scalar API Reference + + + + + +
+ + + + + + + + + +`; + + await fs.writeFile(path.join(distDir, 'index.html'), indexHtml); + console.log('Successfully generated dist/index.html'); +} + +build().catch(err => { + console.error(err); + process.exit(1); +}); \ No newline at end of file diff --git a/docs/openapi/bin/create-version.js b/docs/openapi/bin/create-version.js new file mode 100644 index 00000000000..64c3400fbda --- /dev/null +++ b/docs/openapi/bin/create-version.js @@ -0,0 +1,52 @@ +const fs = require('fs-extra'); +const path = require('path'); +const yaml = require('js-yaml'); + +const version = process.argv[2]; + +if (!version) { + console.error('Please provide a version number.'); + process.exit(1); +} + +const apisDir = path.join(process.cwd(), 'apis', 'cf'); +const latestDir = path.join(apisDir, 'latest'); +const versionDir = path.join(apisDir, version); + +async function createVersion() { + console.log(`Creating version ${version}...`); + + // Copy latest directory to new version directory + await fs.copy(latestDir, versionDir); + console.log(`Copied 'latest' to '${version}'`); + + // Update redocly.yaml + const redoclyConfigFile = path.join(process.cwd(), 'redocly.yaml'); + const redoclyConfig = yaml.load(await fs.readFile(redoclyConfigFile, 'utf8')); + + if (!redoclyConfig.apis) { + redoclyConfig.apis = {}; + } + + const apiName = `cf@${version}`; + redoclyConfig.apis[apiName] = { + root: `apis/cf/${version}/openapi.yaml`, + }; + + await fs.writeFile(redoclyConfigFile, yaml.dump(redoclyConfig)); + console.log(`Updated redocly.yaml with version ${version}`); + + // Update openapi.yaml with new version + const openapiFile = path.join(versionDir, 'openapi.yaml'); + const openapiContent = await fs.readFile(openapiFile, 'utf8'); + const updatedOpenapiContent = openapiContent.replace(/version: latest/g, `version: ${version}`); + await fs.writeFile(openapiFile, updatedOpenapiContent); + console.log(`Updated openapi.yaml in '${version}' directory with new version`); + + console.log('Version creation complete.'); +} + +createVersion().catch(err => { + console.error(err); + process.exit(1); +}); diff --git a/docs/openapi/bin/test-compliance.js b/docs/openapi/bin/test-compliance.js new file mode 100644 index 00000000000..147ff41c5ba --- /dev/null +++ b/docs/openapi/bin/test-compliance.js @@ -0,0 +1,625 @@ +const { spawn } = require('child_process'); +const fs = require('fs-extra'); +const path = require('path'); +const net = require('net'); +const http = require('http'); +const httpProxy = require('http-proxy'); + +const serverUrl = process.env.CF_API_URL; +const appsDomain = process.env.CF_APPS_DOMAIN; +const specFile = process.argv[2]; +const adminUser = process.env.CF_ADMIN_USER; +const adminPassword = process.env.CF_ADMIN_PASSWORD; +const nodeCount = process.env.THREADS || '6'; + +if (!serverUrl || !specFile || !adminUser || !adminPassword || !appsDomain) { + console.error('Usage: node bin/test-compliance.js '); + console.error('Please also set CF_API_URL, CF_APPS_DOMAIN, CF_ADMIN_USER, and CF_ADMIN_PASSWORD environment variables.'); + console.error('Optional: TEST_NODES (default: 6) - Number of test nodes to run in parallel'); + process.exit(1); +} + +function runCommand(command, args, options = {}) { + return new Promise((resolve, reject) => { + console.log(`> ${command} ${args.join(' ')}`); + + const child = spawn(command, args, { + stdio: options.captureOutput ? ['ignore', 'pipe', 'pipe'] : 'inherit', + ...options + }); + + // Track the child process for cleanup if needed + if (options.trackProcess !== false && global.testCompliance_childProcesses) { + global.testCompliance_childProcesses.push(child); + } + + let stdout = ''; + let stderr = ''; + + if (options.captureOutput) { + child.stdout.on('data', (data) => { + const output = data.toString(); + stdout += output; + if (options.logOutput !== false) { + process.stdout.write(output); + } + }); + + child.stderr.on('data', (data) => { + const output = data.toString(); + stderr += output; + if (options.logOutput !== false) { + process.stderr.write(output); + } + }); + } + + child.on('close', (code) => { + // Remove from tracking when process closes + if (global.testCompliance_childProcesses) { + const index = global.testCompliance_childProcesses.indexOf(child); + if (index > -1) { + global.testCompliance_childProcesses.splice(index, 1); + } + } + + if (code === 0) { + resolve({ code, stdout, stderr }); + } else { + const error = new Error(`Command failed with exit code ${code}`); + error.code = code; + error.stdout = stdout; + error.stderr = stderr; + reject(error); + } + }); + + child.on('error', (err) => { + // Remove from tracking on error + if (global.testCompliance_childProcesses) { + const index = global.testCompliance_childProcesses.indexOf(child); + if (index > -1) { + global.testCompliance_childProcesses.splice(index, 1); + } + } + + err.stdout = stdout; + err.stderr = stderr; + reject(err); + }); + }); +} + +async function checkGoExists() { + try { + await runCommand('go', ['version'], { captureOutput: true, logOutput: false }); + } catch (error) { + console.error('Go is not installed or not in your PATH. Please install Go to run the compliance tests.'); + process.exit(1); + } +} + +async function killOrphanedProcesses() { + console.log('Checking for orphaned wiretap processes...'); + try { + // Kill any existing wiretap processes + const result = await runCommand('pkill', ['-f', 'wiretap'], { + captureOutput: true, + logOutput: false, + trackProcess: false + }); + if (result.stdout || result.stderr) { + console.log('Cleaned up orphaned wiretap processes.'); + } + } catch (error) { + // pkill returns non-zero exit code when no processes are found, which is fine + if (error.code !== 1) { + console.warn(`Warning: Could not check for orphaned processes: ${error.message}`); + } + } +} + +function waitForPort(port, retries = 30, delay = 2000) { + return new Promise((resolve, reject) => { + const tryConnect = (attempt) => { + const socket = new net.Socket(); + socket.setTimeout(5000); + + socket.once('connect', () => { + socket.end(); + resolve(); + }); + + socket.once('error', (err) => { + socket.destroy(); + if (err.code === 'ECONNREFUSED' && attempt < retries) { + console.log(`Port ${port} not ready, retrying in ${delay}ms (attempt ${attempt + 1}/${retries})...`); + setTimeout(() => tryConnect(attempt + 1), delay); + } else { + reject(err); + } + }); + + socket.once('timeout', () => { + socket.destroy(); + if (attempt < retries) { + console.log(`Port ${port} timeout, retrying in ${delay}ms (attempt ${attempt + 1}/${retries})...`); + setTimeout(() => tryConnect(attempt + 1), delay); + } else { + reject(new Error(`Timeout waiting for port ${port}`)); + } + }); + + socket.connect(port, '127.0.0.1'); + }; + tryConnect(0); + }); +} + +function createProxyServer() { + const proxy = httpProxy.createProxyServer({ + timeout: 30000, + proxyTimeout: 30000 + }); + const target = serverUrl; + + proxy.on('error', (err, req, res) => { + console.error(`Proxy error: ${err.message}`); + if (res && !res.headersSent) { + res.writeHead(502, { + 'Content-Type': 'text/plain' + }); + res.end('Bad Gateway - Wiretap may not be ready yet'); + } + }); + + const server = http.createServer((req, res) => { + if (req.url.startsWith('/v2/')) { + // Always proxy v2 requests to the actual CF API + proxy.web(req, res, { target, secure: false, changeOrigin: true }); + } else if (req.headers['content-type'] && req.headers['content-type'].includes('multipart/form-data')) { + // Always proxy multipart requests to the actual CF API + proxy.web(req, res, { target, secure: false, changeOrigin: true }); + } else { + // Try to proxy to wiretap first, fall back to direct CF API on failure + proxy.web(req, res, { + target: 'http://localhost:9090', + secure: false, + timeout: 5000 + }, (proxyErr) => { + if (proxyErr) { + console.log(`Wiretap proxy failed, falling back to direct CF API: ${proxyErr.message}`); + // Fallback: proxy directly to CF API + proxy.web(req, res, { target, secure: false, changeOrigin: true }); + } + }); + } + }); + + return server; +} + +async function startWiretap(wiretapProxyPort, serverUrl, specFile, reportFile) { + console.log('Starting wiretap in the background...'); + console.log(`Wiretap UI will be available at http://localhost:9091`); + + // Ensure log directory exists + const logDir = path.join('out', 'logs'); + await fs.ensureDir(logDir); + const stdoutLogFile = path.join(logDir, 'wiretap-stdout.log'); + const stderrLogFile = path.join(logDir, 'wiretap-stderr.log'); + + return new Promise((resolve, reject) => { + // Use npx to ensure we get the right wiretap binary + const wiretapProcess = spawn('npx', ['wiretap', '-p', wiretapProxyPort, '-u', serverUrl, '-s', specFile, '--hard-validation=false', '--stream-report', "--report-filename", reportFile], { + detached: true, + stdio: ['ignore', 'pipe', 'pipe'], + // Create a new process group so we can kill the entire group + // This ensures child processes of wiretap are also terminated + }); + + // Ensure the process doesn't keep the parent alive + wiretapProcess.unref(); + + let startupOutput = ''; + let startupErrors = ''; + let hasStarted = false; + + // Create write streams for logging + const stdoutStream = fs.createWriteStream(stdoutLogFile, { flags: 'w' }); + const stderrStream = fs.createWriteStream(stderrLogFile, { flags: 'w' }); + + // Log wiretap output for debugging and to files + wiretapProcess.stdout.on('data', (data) => { + const output = data.toString(); + startupOutput += output; + + // Log to console (with timestamp) + const timestamp = new Date().toISOString(); + console.log(`[${timestamp}] wiretap stdout: ${output.trim()}`); + + // Log to file + stdoutStream.write(`[${timestamp}] ${output}`); + + // Look for the success message indicating wiretap is ready + if (output.includes('wiretap is online!') && !hasStarted) { + hasStarted = true; + resolve(wiretapProcess); + } + }); + + wiretapProcess.stderr.on('data', (data) => { + const error = data.toString(); + startupErrors += error; + + // Log to console (with timestamp) + const timestamp = new Date().toISOString(); + console.error(`[${timestamp}] wiretap stderr: ${error.trim()}`); + + // Log to file + stderrStream.write(`[${timestamp}] ${error}`); + }); + + wiretapProcess.on('exit', (code, signal) => { + const timestamp = new Date().toISOString(); + const exitMessage = `wiretap process exited with code ${code}, signal ${signal}`; + console.log(`[${timestamp}] ${exitMessage}`); + + // Close log streams + stdoutStream.end(); + stderrStream.end(); + + if (!hasStarted) { + // Create detailed error message with captured output + let errorMessage = `Wiretap failed to start (exit code: ${code})`; + if (startupOutput) { + errorMessage += `\n\nStdout output:\n${startupOutput}`; + } + if (startupErrors) { + errorMessage += `\n\nStderr output:\n${startupErrors}`; + } + errorMessage += `\n\nFull logs available at:\n- ${stdoutLogFile}\n- ${stderrLogFile}`; + + reject(new Error(errorMessage)); + } + }); + + wiretapProcess.on('error', (error) => { + const timestamp = new Date().toISOString(); + console.error(`[${timestamp}] Wiretap process error:`, error); + + // Close log streams + stdoutStream.end(); + stderrStream.end(); + + if (!hasStarted) { + let errorMessage = `Wiretap process error: ${error.message}`; + if (startupOutput) { + errorMessage += `\n\nStdout output:\n${startupOutput}`; + } + if (startupErrors) { + errorMessage += `\n\nStderr output:\n${startupErrors}`; + } + errorMessage += `\n\nFull logs available at:\n- ${stdoutLogFile}\n- ${stderrLogFile}`; + + reject(new Error(errorMessage)); + } + }); + + console.log(`wiretap started with PID: ${wiretapProcess.pid}`); + console.log(`Wiretap logs will be written to:\n- stdout: ${stdoutLogFile}\n- stderr: ${stderrLogFile}`); + + // Timeout after 30 seconds if wiretap doesn't start + setTimeout(() => { + if (!hasStarted) { + const timestamp = new Date().toISOString(); + console.warn(`[${timestamp}] Wiretap startup timeout - continuing without wiretap monitoring`); + + // Close log streams + stdoutStream.end(); + stderrStream.end(); + + // Log timeout details + let timeoutMessage = 'Wiretap startup timeout (30 seconds)'; + if (startupOutput) { + timeoutMessage += `\n\nStdout output during startup:\n${startupOutput}`; + } + if (startupErrors) { + timeoutMessage += `\n\nStderr output during startup:\n${startupErrors}`; + } + timeoutMessage += `\n\nFull logs available at:\n- ${stdoutLogFile}\n- ${stderrLogFile}`; + + console.warn(timeoutMessage); + + // Don't reject, just resolve with null to continue without wiretap + resolve(null); + } + }, 30000); + }); +} + +async function testCompliance() { + await checkGoExists(); + await killOrphanedProcesses(); + + let wiretapProcess, proxyServer; + + // Initialize global child process tracking + global.testCompliance_childProcesses = []; + + const cleanup = async (signal = 'SIGTERM') => { + console.log(`\nCleaning up processes due to ${signal}...`); + + // Stop wiretap process and its children + if (wiretapProcess && wiretapProcess.pid) { + console.log(`Stopping wiretap process group (PID: ${wiretapProcess.pid})...`); + try { + // Kill the entire process group since wiretap was started detached + process.kill(-wiretapProcess.pid, 'SIGTERM'); + console.log('Wiretap process group terminated.'); + } catch (e) { + console.warn(`Failed to kill wiretap process group ${wiretapProcess.pid}: ${e.message}`); + // Try to kill just the main process as fallback + try { + process.kill(wiretapProcess.pid, 'SIGKILL'); + console.log('Wiretap main process force killed.'); + } catch (e2) { + console.error(`Failed to force kill wiretap process ${wiretapProcess.pid}: ${e2.message}`); + } + } + } + + // Stop proxy server + if (proxyServer) { + console.log('Stopping proxy server...'); + return new Promise((resolve) => { + try { + proxyServer.close((err) => { + if (err) { + console.error(`Error closing proxy server: ${err.message}`); + } else { + console.log('Proxy server stopped.'); + } + resolve(); + }); + + // Force close after 5 seconds + setTimeout(() => { + console.warn('Force closing proxy server...'); + try { + proxyServer.closeAllConnections?.(); + } catch (e) { + console.warn(`Error force closing proxy: ${e.message}`); + } + resolve(); + }, 5000); + } catch (e) { + console.error(`Failed to stop proxy server: ${e.message}`); + resolve(); + } + }); + } + + // Clean up any other tracked child processes + const childProcesses = global.testCompliance_childProcesses || []; + for (const child of childProcesses) { + if (child && child.pid && !child.killed) { + try { + console.log(`Terminating child process ${child.pid}...`); + child.kill('SIGTERM'); + } catch (e) { + console.warn(`Failed to terminate child process ${child.pid}: ${e.message}`); + } + } + } + + // Clear the tracking array + if (global.testCompliance_childProcesses) { + global.testCompliance_childProcesses.length = 0; + } + }; + + // Enhanced signal handling + const signalHandler = (signal) => { + console.log(`\nReceived ${signal}, initiating cleanup...`); + cleanup(signal).then(() => { + console.log('Cleanup completed.'); + process.exit(signal === 'SIGTERM' ? 0 : 1); + }).catch((err) => { + console.error(`Cleanup failed: ${err.message}`); + process.exit(1); + }); + }; + + // Register signal handlers + process.on('SIGINT', () => signalHandler('SIGINT')); + process.on('SIGTERM', () => signalHandler('SIGTERM')); + process.on('SIGHUP', () => signalHandler('SIGHUP')); + process.on('SIGQUIT', () => signalHandler('SIGQUIT')); + + // Handle uncaught exceptions and unhandled rejections + process.on('uncaughtException', (err) => { + console.error('Uncaught Exception:', err); + cleanup('uncaughtException').then(() => process.exit(1)); + }); + + process.on('unhandledRejection', (reason, promise) => { + console.error('Unhandled Rejection at:', promise, 'reason:', reason); + cleanup('unhandledRejection').then(() => process.exit(1)); + }); + + // Cleanup on normal exit + process.on('exit', () => { + console.log('Process exiting, final cleanup...'); + // Note: exit event cannot perform async operations + if (wiretapProcess?.pid) { + try { + process.kill(-wiretapProcess.pid, 'SIGKILL'); + } catch (e) { + // Ignore errors during final cleanup + } + } + }); + + const tempDir = path.join(process.cwd(), '.tmp', 'capi-bara-tests'); + const wiretapProxyPort = 9090; + const wiretapApiHost = `http://127.0.0.1:9999`; + + try { + const reportDir = path.join('out'); + await fs.ensureDir(reportDir); + const reportFile = path.join(reportDir, 'wiretap-report.json'); + + // Start wiretap with improved error handling - allow it to fail gracefully + try { + wiretapProcess = await startWiretap(wiretapProxyPort, serverUrl, specFile, reportFile); + + if (wiretapProcess) { + console.log(`Waiting for wiretap to be ready on port ${wiretapProxyPort}...`); + await waitForPort(wiretapProxyPort); + console.log('Wiretap is ready.'); + } else { + console.warn('Continuing without wiretap - tests will run against CF API directly'); + } + } catch (wiretapError) { + console.warn(`Failed to start wiretap: ${wiretapError.message}`); + console.warn('Continuing without wiretap - tests will run against CF API directly'); + wiretapProcess = null; + } + + console.log('Starting integrated proxy server...'); + proxyServer = createProxyServer(); + proxyServer.listen(9999, () => { + console.log('Integrated proxy server listening on port 9999'); + }); + + console.log('Waiting for proxy server to be ready on port 9999...'); + await waitForPort(9999); + console.log('Proxy server is ready.'); + + // Check if capi-bara-tests repository already exists + const repoExists = await fs.pathExists(tempDir); + if (repoExists) { + console.log('capi-bara-tests repository already exists, skipping clone...'); + } else { + console.log('Cloning capi-bara-tests repository...'); + await fs.ensureDir(path.dirname(tempDir)); + await runCommand('git', ['clone', '-b', 'allow-local-api', 'https://github.com/cloudfoundry/capi-bara-tests.git', tempDir]); + } + + console.log('Populating vendor dependencies...'); + await runCommand('go', ['mod', 'vendor'], { cwd: tempDir }); + + console.log('Configuring capi-bara-tests to point to wiretap proxy...'); + const integrationConfig = { + api: wiretapApiHost, + protocol: wiretapApiHost.startsWith('https') ? 'https' : 'http', + apps_domain: appsDomain, + admin_user: adminUser, + admin_password: adminPassword, + skip_ssl_validation: true, + timeout_scale: 5.0, + }; + const configPath = path.join(tempDir, 'integration_config.json'); + await fs.writeJson(configPath, integrationConfig, { spaces: 2 }); + + const testEnv = { ...process.env }; + delete testEnv.CF_API_URL; + testEnv.CONFIG = configPath; + + console.log(`Running capi-bara-tests with ${nodeCount} nodes...`); + + // Prepare test output logging + const testLogFile = path.join(reportDir, 'capi-bara-tests.log'); + const testErrorLogFile = path.join(reportDir, 'capi-bara-tests-error.log'); + + try { + const testResult = await runCommand('./bin/test', [`-nodes=${nodeCount}`], { + cwd: tempDir, + env: testEnv, + captureOutput: true + }); + + // Write successful test output to log file + if (testResult.stdout) { + await fs.writeFile(testLogFile, testResult.stdout, 'utf8'); + console.log(`Test output logged to: ${testLogFile}`); + } + + console.log('Tests completed successfully.'); + console.log(`Report file available at: ${reportFile}`); + process.exit(0); + + } catch (testError) { + // Enhanced error logging for test failures + const timestamp = new Date().toISOString(); + console.error(`[${timestamp}] capi-bara-tests failed with exit code: ${testError.code}`); + + // Log test output and errors to files + if (testError.stdout) { + await fs.writeFile(testLogFile, testError.stdout, 'utf8'); + console.log(`Test stdout logged to: ${testLogFile}`); + } + + if (testError.stderr) { + await fs.writeFile(testErrorLogFile, testError.stderr, 'utf8'); + console.log(`Test stderr logged to: ${testErrorLogFile}`); + } + + // Provide detailed error information + console.error('\n=== TEST FAILURE SUMMARY ==='); + console.error(`Exit code: ${testError.code}`); + + if (testError.stdout && testError.stdout.length > 0) { + console.error('\nLast 50 lines of stdout:'); + const stdoutLines = testError.stdout.split('\n'); + const lastLines = stdoutLines.slice(-50); + console.error(lastLines.join('\n')); + } + + if (testError.stderr && testError.stderr.length > 0) { + console.error('\nStderr output:'); + console.error(testError.stderr); + } + + console.error(`\nFull test logs available at:\n- stdout: ${testLogFile}\n- stderr: ${testErrorLogFile}`); + console.error('============================\n'); + + throw testError; + } + + } catch (error) { + console.error('\n=== COMPLIANCE TEST FAILURE ==='); + console.error('Compliance test failed:'); + console.error(`Error: ${error.message}`); + + if (error.code) { + console.error(`Exit code: ${error.code}`); + } + + if (error.stdout) { + console.error('\nStdout output:'); + console.error(error.stdout); + } + + if (error.stderr) { + console.error('\nStderr output:'); + console.error(error.stderr); + } + + // Check for common wiretap issues and provide helpful suggestions + if (error.message.includes('wiretap') || error.message.includes('ECONNREFUSED')) { + console.error('\n=== TROUBLESHOOTING SUGGESTIONS ==='); + console.error('This appears to be a wiretap-related issue. Try:'); + console.error('1. Check if wiretap is properly installed: npx wiretap --version'); + console.error('2. Verify the OpenAPI spec file is valid'); + console.error('3. Check network connectivity to CF API'); + console.error('4. Review wiretap logs in out/logs/ directory'); + } + + console.error('====================================\n'); + process.exit(1); + } +} + +testCompliance(); diff --git a/docs/openapi/bin/test-mockserver.js b/docs/openapi/bin/test-mockserver.js new file mode 100644 index 00000000000..f4d203f148f --- /dev/null +++ b/docs/openapi/bin/test-mockserver.js @@ -0,0 +1,42 @@ +const { spawn } = require('child_process'); +const fs = require('fs-extra'); +const path = require('path'); + +const specFile = process.argv[2]; + +if (!specFile) { + console.error('Usage: yarn test:mockserver '); + process.exit(1); +} + +function runCommand(command, args) { + return new Promise((resolve, reject) => { + console.log(`> ${command} ${args.join(' ')}`); + const child = spawn(command, args, { stdio: 'inherit' }); + + child.on('close', (code) => { + if (code === 0) { + resolve(); + } else { + reject(new Error(`Command failed with exit code ${code}`)); + } + }); + + child.on('error', (err) => { + reject(err); + }); + }); +} + +async function testContract() { + try { + const reportDir = path.join(process.cwd(), 'out'); + await fs.ensureDir(reportDir); + await runCommand('wiretap', ['-s', specFile, '-x', '-u', 'http://localhost:9090', '--report-file', 'out/wiretap-mockserver.json']); + } catch (error) { + console.error(error.message); + process.exit(1); + } +} + +testContract(); diff --git a/docs/openapi/package.json b/docs/openapi/package.json new file mode 100644 index 00000000000..da9ff8162ad --- /dev/null +++ b/docs/openapi/package.json @@ -0,0 +1,26 @@ +{ + "name": "capi-openapi-spec", + "version": "1.0.0", + "description": "Cloud Foundry CAPI OpenAPI specification generation and validation", + "scripts": { + "lint": "redocly lint", + "build": "node bin/build.js", + "preview": "node bin/build.js && http-server dist", + "create-version": "node bin/create-version.js", + "test:compliance": "node bin/build.js && node bin/test-compliance.js dist/latest/openapi.yaml", + "test:mockserver": "node bin/test-mockserver.js" + }, + "author": "Cloud Foundry Community", + "license": "Apache-2.0", + "dependencies": { + "@redocly/cli": "^2.0.2", + "fs-extra": "^11.3.1", + "js-yaml": "^4.1.0" + }, + "devDependencies": { + "@pb33f/wiretap": "^0.4.5", + "http-proxy": "^1.18.1", + "http-server": "^14.1.1", + "wait-on": "^7.0.1" + } +} \ No newline at end of file diff --git a/docs/openapi/redocly.yaml b/docs/openapi/redocly.yaml new file mode 100644 index 00000000000..aaa348e0863 --- /dev/null +++ b/docs/openapi/redocly.yaml @@ -0,0 +1,8 @@ +apis: + cf@latest: + root: apis/cf/latest/openapi.yaml +extends: + - recommended +ignore: + - scripts + - bin diff --git a/docs/openapi/scripts/enpoints.txt b/docs/openapi/scripts/enpoints.txt new file mode 100644 index 00000000000..7632943d44c --- /dev/null +++ b/docs/openapi/scripts/enpoints.txt @@ -0,0 +1,103 @@ +POST /v3/admin/actions/clear_buildpack_cache +POST /v3/apps +GET /v3/apps/:guid +GET /v3/apps +PATCH /v3/apps/:guid +DELETE /v3/apps/:guid +GET /v3/apps/:guid/droplets/current +GET /v3/apps/:guid/relationships/current_droplet +GET /v3/apps/:guid/env +GET /v3/apps/:guid/environment_variables +GET /v3/apps/:guid/permissions +PATCH /v3/apps/:guid/relationships/current_droplet +GET /v3/apps/:guid/ssh_enabled +POST /v3/apps/:guid/actions/start +POST /v3/apps/:guid/actions/stop +POST /v3/apps/:guid/actions/restart +POST /v3/apps/:guid/actions/clear_buildpack_cache +PATCH /v3/apps/:guid/environment_variables +GET /v3/apps/:guid/features/:name +GET /v3/apps/:guid/features +PATCH /v3/apps/:guid/features/:name +GET /v3/app_usage_events/:guid +GET /v3/app_usage_events +GET /v3/audit_events/:guid +GET /v3/audit_events +POST /v3/builds +GET /v3/builds/:guid +GET /v3/builds +GET /v3/apps/:guid/builds +PATCH /v3/builds/:guid +POST /v3/buildpacks +GET /v3/buildpacks/:guid +GET /v3/buildpacks +PATCH /v3/buildpacks/:guid +DELETE /v3/buildpacks/:guid +POST /v3/buildpacks/:guid/upload +POST /v3/deployments +GET /v3/deployments/:guid +GET /v3/deployments +PATCH /v3/deployments/:guid +POST /v3/deployments/:guid/actions/cancel +POST /v3/deployments/:guid/actions/continue +POST /v3/domains +GET /v3/domains/:guid +GET /v3/domains +GET /v3/organizations/:guid/domains +PATCH /v3/domains/:guid +DELETE /v3/domains/:guid +POST /v3/domains/:guid/relationships/shared_organizations +POST /v3/droplets +GET /v3/droplets/:guid +GET /v3/droplets +GET /v3/packages/:guid/droplets +GET /v3/apps/:guid/droplets +PATCH /v3/droplets/:guid +DELETE /v3/droplets/:guid +POST /v3/droplets?source_guid=:guid +GET /v3/droplets/:guid/download +POST /v3/droplets/:guid/upload +GET /v3/environment_variable_groups/:name +PATCH /v3/environment_variable_groups/:name +GET /v3/feature_flags/:name +GET /v3/feature_flags +PATCH /v3/feature_flags/:name +GET /v3/info +GET /v3/info/usage_summary +POST /v3/isolation_segments +GET /v3/isolation_segments/:guid +GET /v3/isolation_segments +GET /v3/isolation_segments/:guid/relationships/organizations +GET /v3/isolation_segments/:guid/relationships/spaces +PATCH /v3/isolation_segments/:guid +DELETE /v3/isolation_segments/:guid +POST /v3/isolation_segments/:guid/relationships/organizations +GET /v3/jobs/:guid +POST /v3/spaces/:guid/actions/apply_manifest +GET /v3/apps/:guid/manifest +POST /v3/spaces/:guid/manifest_diff +POST /v3/organizations +GET /v3/organizations/:guid +GET /v3/organizations +GET /v3/isolation_segments/:guid/organizations +PATCH /v3/organizations/:guid +DELETE /v3/organizations/:guid +GET /v3/organizations/:guid/domains/default +GET /v3/organizations/:guid/usage_summary +GET /v3/organizations/:guid/users +POST /v3/organization_quotas +GET /v3/organization_quotas/:guid +GET /v3/organization_quotas +DELETE /v3/organization_quotas/:guid +PATCH /v3/organization_quotas/:guid +POST /v3/packages +GET /v3/packages/:guid +GET /v3/packages +GET /v3/apps/:guid/packages +PATCH /v3/packages/:guid +DELETE /v3/packages/:guid +POST /v3/packages?source_guid=:guid +GET /v3/packages/:guid/download +POST /v3/packages/:guid/upload +GET /v3/processes/:guid +GET /v3/apps/:guid/processes/:type \ No newline at end of file diff --git a/docs/openapi/scripts/manage_issues.js b/docs/openapi/scripts/manage_issues.js new file mode 100755 index 00000000000..68de6d89f39 --- /dev/null +++ b/docs/openapi/scripts/manage_issues.js @@ -0,0 +1,454 @@ +#!/usr/bin/env node + +const { execSync, exec } = require('child_process'); +const { promisify } = require('util'); +const fs = require('fs'); +const path = require('path'); +const os = require('os'); + +const execAsync = promisify(exec); +const WORKER_COUNT = 3; // Reduced from 5 to help with rate limiting +const RATE_LIMIT_DELAY = 10000; // 10 seconds between API calls +const MAX_RETRIES = 10; + +const endpoints = fs.readFileSync(path.join(__dirname, 'enpoints.txt'), 'utf-8'); +const args = process.argv.slice(2); +const repoIndex = args.findIndex(arg => !arg.startsWith('-')); +const repo = repoIndex !== -1 ? args[repoIndex] : null; +const verbose = args.includes('-v'); +const recolor = args.includes('--recolor'); + +if (!repo) { + console.error('Please provide a GitHub repository as an argument (e.g., owner/repo).'); + console.error(''); + console.error('Usage:'); + console.error(' node manage_issues.js [options]'); + console.error(''); + console.error('Options:'); + console.error(' -v Verbose output'); + console.error(' --recolor Recolor existing labels'); + console.error(''); + console.error('Examples:'); + console.error(' node manage_issues.js my-org/my-repo'); + console.error(' node manage_issues.js my-org/my-repo -v'); + console.error(' node manage_issues.js my-org/my-repo --recolor'); + process.exit(1); +} + +// Helper function to process tasks in parallel with limited concurrency +async function processTasksInParallel(tasks, processingFunction, concurrency = WORKER_COUNT) { + const results = []; + const executing = []; + + for (const task of tasks) { + const promise = processingFunction(task).then(result => { + executing.splice(executing.indexOf(promise), 1); + return result; + }).catch(error => { + executing.splice(executing.indexOf(promise), 1); + throw error; + }); + + results.push(promise); + executing.push(promise); + + if (executing.length >= concurrency) { + await Promise.race(executing); + } + } + + return Promise.allSettled(results); +} + +// Rate limiting helper +function delay(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + +// Retry wrapper for GitHub API calls with exponential backoff +async function retryGitHubCommand(command, maxRetries = MAX_RETRIES) { + for (let attempt = 1; attempt <= maxRetries; attempt++) { + try { + const result = await execAsync(command); + return result; + } catch (error) { + const isRateLimit = error.message.includes('was submitted too quickly') || + error.message.includes('rate limit') || + error.message.includes('API rate limit'); + + if (isRateLimit && attempt < maxRetries) { + const delayMs = RATE_LIMIT_DELAY * Math.pow(2, attempt - 1); // Exponential backoff + console.log(`Rate limit hit, retrying in ${delayMs}ms (attempt ${attempt}/${maxRetries})`); + await delay(delayMs); + continue; + } + throw error; + } + } +} async function getExistingLabels(repo) { + try { + const { stdout } = await execAsync(`gh label list --repo ${repo} --json name`); + const labelsJson = stdout.trim(); + if (!labelsJson) { + return []; + } + return JSON.parse(labelsJson).map(label => label.name); + } catch (error) { + console.error(`Failed to fetch labels for repo ${repo}: ${error.message}`); + return []; + } +} + +async function ensureLabelExists(label, repo, existingLabels) { + if (!existingLabels.includes(label)) { + try { + let color = Math.floor(Math.random() * 16777215).toString(16); + color = color.padStart(6, '0'); + const command = `gh label create "${label}" --repo ${repo} --color "${color}" --description "Auto-generated label"`; + if (verbose) console.log(command); + await retryGitHubCommand(command); + existingLabels.push(label); + console.log(`Created label: ${label}`); + await delay(200); // Small delay between label operations + } catch (error) { + if (!error.message.includes("already exists")) { + console.error(`Failed to create label ${label}: ${error.message}`); + } + } + } +} + +// Extract resource group from path more safely +function extractResourceGroup(endpointPath) { + const pathParts = endpointPath.split('?')[0].split('/').filter(part => part); + // Skip 'v3' and get the next meaningful part + if (pathParts.length > 1 && pathParts[0] === 'v3') { + let resourcePart = pathParts[1]; + // Handle admin paths + if (resourcePart === 'admin' && pathParts.length > 2) { + resourcePart = pathParts[2]; + } + return resourcePart || 'unknown'; + } + return pathParts[0] || 'unknown'; +} + +// Build all tasks and labels +function buildTasksAndLabels() { + const allLabels = new Set(); + const tasks = []; + + endpoints.split('\n').forEach(line => { + const trimmedLine = line.trim(); + if (!trimmedLine) return; + + const [method, endpointPath] = trimmedLine.split(' '); + if (!method || !endpointPath) return; + + const aspects = getAspects(); + aspects.forEach(aspect => { + allLabels.add("OpenAPI"); + allLabels.add("Quality Check"); + allLabels.add(`Method: ${method}`); + allLabels.add(`Aspect: ${aspect.title}`); + const resourceGroup = extractResourceGroup(endpointPath); + allLabels.add(`Resource: ${resourceGroup}`); + tasks.push({ method, path: endpointPath, aspect }); + }); + }); + + return { allLabels: Array.from(allLabels), tasks }; +} + + +async function processTask(task, repo, verbose) { + const { method, path: endpointPath, aspect } = task; + const endpointName = `${method} ${endpointPath}`; + const aspectTitle = aspect.title.toLowerCase().replace(/ /g, '-'); + const issueId = ``; + const title = `SpecCheck: ${endpointName} - ${aspect.title}`; + const body = `Check and validate the correctness of the openapi specification for \`${endpointName}\`\n\n**Aspect:** ${aspect.body}\n\n**Details:**\n${aspect.details}\n\n${issueId}`; + const resourceGroup = extractResourceGroup(endpointPath); + const labels = ["OpenAPI", "Quality Check", `Method: ${method}`, `Aspect: ${aspect.title}`, `Resource: ${resourceGroup}`]; + + try { + const searchCommand = `gh issue list --repo ${repo} --search "in:body '${issueId}'" --json number,state,labels`; + if (verbose) console.log(searchCommand); + const { stdout } = await retryGitHubCommand(searchCommand); + const existingIssues = JSON.parse(stdout.trim()); + + if (existingIssues.length > 0) { + const issue = existingIssues[0]; + if (issue.state === 'OPEN') { + // Update issue body using temporary file approach + const tempFile = path.join(os.tmpdir(), `issue-body-${Date.now()}-${Math.random().toString(36).substr(2, 9)}.txt`); + fs.writeFileSync(tempFile, body); + + try { + const editCommand = `gh issue edit ${issue.number} --repo ${repo} --title ${JSON.stringify(title)} --body-file "${tempFile}"`; + if (verbose) console.log(editCommand); + await retryGitHubCommand(editCommand); + + const issueLabels = issue.labels.map(l => l.name); + const labelsToAdd = labels.filter(l => !issueLabels.includes(l)); + const labelsToRemove = issueLabels.filter(l => !labels.includes(l)); + + if (labelsToAdd.length > 0) { + const addLabelCommand = `gh issue edit ${issue.number} --repo ${repo} --add-label "${labelsToAdd.join(',')}"`; + if (verbose) console.log(addLabelCommand); + await retryGitHubCommand(addLabelCommand); + } + if (labelsToRemove.length > 0) { + const removeLabelCommand = `gh issue edit ${issue.number} --repo ${repo} --remove-label "${labelsToRemove.join(',')}"`; + if (verbose) console.log(removeLabelCommand); + await retryGitHubCommand(removeLabelCommand); + } + + console.log(`✓ Updated issue for ${endpointName} - ${aspect.title}`); + } finally { + // Clean up temp file + if (fs.existsSync(tempFile)) { + fs.unlinkSync(tempFile); + } + } + } else { + console.log(`⊝ Skipping closed issue for ${endpointName} - ${aspect.title}`); + } + } else { + // Create new issue using temporary file approach + const tempFile = path.join(os.tmpdir(), `issue-body-${Date.now()}-${Math.random().toString(36).substr(2, 9)}.txt`); + fs.writeFileSync(tempFile, body); + + try { + const createCommand = `gh issue create --repo ${repo} --title ${JSON.stringify(title)} --body-file "${tempFile}" --label "${labels.join(',')}"`; + if (verbose) console.log(createCommand); + await retryGitHubCommand(createCommand); + console.log(`✓ Created issue for ${endpointName} - ${aspect.title}`); + + // Add a small delay after creating an issue to help with rate limiting + await delay(500); + } finally { + // Clean up temp file + if (fs.existsSync(tempFile)) { + fs.unlinkSync(tempFile); + } + } + } + } catch (error) { + console.error(`✗ Failed to process issue for ${endpointName} - ${aspect.title}: ${error.message}`); + throw error; // Re-throw to handle in calling function + } +} + +// Main execution function +async function main() { + try { + console.log(`Starting issue management for repository: ${repo}`); + console.log(`Using ${WORKER_COUNT} parallel workers with rate limiting`); + console.log(`Rate limit delay: ${RATE_LIMIT_DELAY}ms, Max retries: ${MAX_RETRIES}`); + + // Check if gh CLI is available + try { + await execAsync('gh --version'); + } catch (error) { + console.error('Error: GitHub CLI (gh) is not installed or not in PATH'); + console.error('Please install it from: https://cli.github.com/'); + process.exit(1); + } + + // Verify repository access + try { + await execAsync(`gh repo view ${repo} --json name`); + } catch (error) { + console.error(`Error: Cannot access repository ${repo}`); + console.error('Please check that the repository exists and you have access to it'); + process.exit(1); + } + + // Get existing labels + console.log('Fetching existing labels...'); + const existingLabels = await getExistingLabels(repo); + + // Build tasks and labels + console.log('Building tasks and labels...'); + const { allLabels, tasks } = buildTasksAndLabels(); + console.log(`Found ${tasks.length} tasks to process`); + + // Handle recoloring if requested + if (recolor) { + console.log('Recoloring existing labels...'); + const recolorTasks = existingLabels.map(label => async () => { + try { + let color = Math.floor(Math.random() * 16777215).toString(16); + color = color.padStart(6, '0'); + const command = `gh label edit "${label}" --repo ${repo} --color "${color}"`; + if (verbose) console.log(command); + await retryGitHubCommand(command); + console.log(`Recolored label: ${label}`); + await delay(200); // Small delay between operations + } catch (error) { + console.error(`Failed to recolor label ${label}: ${error.message}`); + } + }); + + await processTasksInParallel(recolorTasks, task => task(), WORKER_COUNT); + } + + // Ensure all labels exist + console.log('Ensuring all required labels exist...'); + const labelTasks = allLabels.map(label => + () => ensureLabelExists(label, repo, existingLabels) + ); + const labelResults = await processTasksInParallel(labelTasks, task => task(), WORKER_COUNT); + const labelErrors = labelResults.filter(r => r.status === 'rejected').length; + if (labelErrors > 0) { + console.warn(`Warning: ${labelErrors} label operations failed`); + } + + // Process all issue tasks + console.log(`Processing ${tasks.length} issue tasks with ${WORKER_COUNT} workers...`); + let processed = 0; + let errors = 0; + + const issueTasks = tasks.map(task => async () => { + try { + await processTask(task, repo, verbose); + processed++; + if (processed % 10 === 0) { + console.log(`Progress: ${processed}/${tasks.length} tasks completed`); + } + return { success: true }; + } catch (error) { + errors++; + return { success: false, error: error.message }; + } + }); + + const issueResults = await processTasksInParallel(issueTasks, task => task(), WORKER_COUNT); + + // Count actual successes and failures + const successful = issueResults.filter(r => r.status === 'fulfilled' && r.value?.success).length; + const failed = issueResults.length - successful; + + console.log(`\n=== Summary ===`); + console.log(`Total tasks: ${tasks.length}`); + console.log(`Successfully processed: ${successful}`); + console.log(`Errors: ${failed}`); + console.log(`Success rate: ${((successful / tasks.length) * 100).toFixed(1)}%`); + + if (failed > 0) { + console.warn(`Warning: ${failed} tasks failed. Check the error messages above.`); + process.exit(1); + } else { + console.log('✓ All tasks completed successfully!'); + } + + } catch (error) { + console.error(`Fatal error: ${error.message}`); + process.exit(1); + } +} + +// Run main function +main(); + + +function getAspects() { + return [ + { + title: 'Path', + body: 'Verify the endpoint path and its parameters.', + details: ` +- [ ] **Path Correctness**: Ensure the path is correct and follows RESTful conventions. For example, for a resource, the path should be plural (e.g., \`/v3/apps\`). +- [ ] **Path Templating**: Check that path parameters are correctly defined using curly braces (e.g., \`/v3/apps/{guid}\`). +- [ ] **Parameter Definition**: Verify that each path parameter is defined in the \`parameters\` section of the Path Item Object. +- [ ] **Character Encoding**: Ensure that path parameter values do not contain unescaped characters like \`/\`, \`?\`, or \`#\`.` + }, + { + title: 'Request Schema', + body: 'Verify the request body schema.', + details: ` +- [ ] **Schema Validation**: Validate the request body schema against the actual implementation. +- [ ] **Data Types**: Check for correct data types (e.g., \`string\`, \`number\`, \`boolean\`, \`array\`, \`object\`). +- [ ] **Required Fields**: Ensure all required fields are marked as such in the schema. +- [ ] **Constraints**: Verify constraints like \`minimum\`, \`maximum\`, \`minLength\`, \`maxLength\`, and \`pattern\`. +- [ ] **Examples**: Ensure that examples provided in the schema are valid and helpful.` + }, + { + title: 'Request Parameters', + body: 'Verify the request parameters for the endpoint.', + details: ` +- [ ] **Parameter Naming**: Check for consistent and descriptive parameter names. +- [ ] **Parameter Location**: Verify the parameter location (\`in\`: \`query\`, \`header\`, \`path\`, \`cookie\`). +- [ ] **Required Flag**: Ensure the \`required\` flag is set correctly for each parameter. +- [ ] **Schema Definition**: Verify that each parameter has a well-defined schema with the correct type and format. +- [ ] **Style and Explode**: Check the \`style\` and \`explode\` keywords for proper serialization of complex parameters.` + }, + { + title: 'Request Headers', + body: 'Verify the request headers.', + details: ` +- [ ] **Standard Headers**: Check for the presence of standard headers like \`Content-Type\` and \`Authorization\`. +- [ ] **Custom Headers**: Verify that any custom headers are correctly defined and documented. +- [ ] **Case-Insensitivity**: Remember that header names are case-insensitive as per RFC7230.` + }, + { + title: 'Response Body', + body: 'Verify the response body for all possible response codes.', + details: ` +- [ ] **Schema per Response Code**: Validate the schema for the body of each response code (e.g., \`200\`, \`201\`, \`404\`). +- [ ] **Data Types and Structures**: Check for correct data types and object structures in the response. +- [ ] **Examples**: Ensure that examples are accurate, helpful, and match the defined schema. +- [ ] **Links Object**: Verify that the \`links\` object provides correct and useful URLs to related resources.` + }, + { + title: 'Response Headers', + body: 'Verify the response headers.', + details: ` +- [ ] **Standard Headers**: Check for standard response headers like \`Content-Type\`, \`ETag\`, and \`Location\`. +- [ ] **Custom Headers**: Verify that custom headers are correctly defined in the \`headers\` section of the Response Object. +- [ ] **Rate Limiting Headers**: If applicable, check for headers like \`X-Rate-Limit-Limit\`, \`X-Rate-Limit-Remaining\`, and \`X-Rate-Limit-Reset\`.` + }, + { + title: 'Response Codes', + body: 'Verify the HTTP response status codes.', + details: ` +- [ ] **Success Codes**: Ensure all possible success codes are documented (e.g., \`200 OK\`, \`201 Created\`, \`202 Accepted\`, \`204 No Content\`). +- [ ] **Error Codes**: Ensure that appropriate error codes are used for client and server errors (\`4xx\` and \`5xx\` ranges). +- [ ] **Default Response**: Check if a \`default\` response is defined for unexpected errors.` + }, + { + title: 'Error Handling', + body: 'Verify the error responses for the endpoint.', + details: ` +- [ ] **Error Response Schema**: Ensure a consistent error response body schema is used across all error responses. +- [ ] **Error Codes and Titles**: Verify that the error \`code\` and \`title\` are informative and consistent. +- [ ] **Error Details**: Check that the \`detail\` message provides a clear explanation of the error.` + }, + { + title: 'Summary and Description', + body: 'Verify the summary and description for the operation.', + details: ` +- [ ] **Clarity and Accuracy**: Check for clarity, accuracy, and completeness in the summary and description. +- [ ] **Concise Summary**: Ensure the \`summary\` provides a short, easy-to-understand overview of the operation. +- [ ] **Detailed Description**: Verify the \`description\` provides enough detail, including any specific behaviors or constraints. +- [ ] **GithubMarkdown Syntax**: Ensure that GithubMarkdown syntax is used correctly for rich text representation.` + }, + { + title: 'Tags', + body: 'Verify the tags associated with the operation.', + details: ` +- [ ] **Relevance**: Ensure tags are relevant to the operation and group it logically with other operations. +- [ ] **Consistency**: Check for consistent use of tags across the API. +- [ ] **Declaration**: Verify that tags used in operations are declared in the global \`tags\` section of the OpenAPI document.` + }, + { + title: 'Security', + body: 'Verify the security requirements for the endpoint.', + details: ` +- [ ] **Security Scheme**: Verify that the correct security scheme is applied (e.g., \`OAuth2\`, \`API Key\`). +- [ ] **Scopes**: Ensure that the required OAuth2 scopes are correctly defined for the operation. +- [ ] **Permissions**: Cross-reference with the Cloud Foundry documentation to ensure the roles and permissions required for the endpoint are accurately reflected.` + }, + ]; +} diff --git a/docs/openapi/yarn.lock b/docs/openapi/yarn.lock new file mode 100644 index 00000000000..adca8551b86 --- /dev/null +++ b/docs/openapi/yarn.lock @@ -0,0 +1,2267 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.16.0": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" + integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== + dependencies: + "@babel/helper-validator-identifier" "^7.27.1" + js-tokens "^4.0.0" + picocolors "^1.1.1" + +"@babel/helper-validator-identifier@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" + integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== + +"@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3": + version "7.28.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.3.tgz#75c5034b55ba868121668be5d5bb31cc64e6e61a" + integrity sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA== + +"@emotion/is-prop-valid@1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz#d4175076679c6a26faa92b03bb786f9e52612337" + integrity sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw== + dependencies: + "@emotion/memoize" "^0.8.1" + +"@emotion/memoize@^0.8.1": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" + integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== + +"@emotion/unitless@0.8.1": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" + integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== + +"@exodus/schemasafe@^1.0.0-rc.2": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@exodus/schemasafe/-/schemasafe-1.3.0.tgz#731656abe21e8e769a7f70a4d833e6312fe59b7f" + integrity sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw== + +"@faker-js/faker@^7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-7.6.0.tgz#9ea331766084288634a9247fcd8b84f16ff4ba07" + integrity sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw== + +"@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0": + version "9.3.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" + integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== + +"@hapi/topo@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" + integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@humanwhocodes/momoa@^2.0.2": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@humanwhocodes/momoa/-/momoa-2.0.4.tgz#8b9e7a629651d15009c3587d07a222deeb829385" + integrity sha512-RE815I4arJFtt+FVeU1Tgp9/Xvecacji8w/V6XtXsWWH/wz/eNkNbhb+ny/+PlVZjV0rxQpRSQKNKE3lcktHEA== + +"@isaacs/balanced-match@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz#3081dadbc3460661b751e7591d7faea5df39dd29" + integrity sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ== + +"@isaacs/brace-expansion@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz#4b3dabab7d8e75a429414a96bd67bf4c1d13e0f3" + integrity sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA== + dependencies: + "@isaacs/balanced-match" "^4.0.1" + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jsep-plugin/assignment@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@jsep-plugin/assignment/-/assignment-1.3.0.tgz#fcfc5417a04933f7ceee786e8ab498aa3ce2b242" + integrity sha512-VVgV+CXrhbMI3aSusQyclHkenWSAm95WaiKrMxRFam3JSUiIaQjoMIw2sEs/OX4XifnqeQUN4DYbJjlA8EfktQ== + +"@jsep-plugin/regex@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@jsep-plugin/regex/-/regex-1.0.4.tgz#cb2fc423220fa71c609323b9ba7f7d344a755fcc" + integrity sha512-q7qL4Mgjs1vByCaTnDFcBnV9HS7GVPJX5vyVoCgZHNSC9rjwIlmbXG5sUuorR5ndfHAIlJ8pVStxvjXHbNvtUg== + +"@noble/hashes@^1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.8.0.tgz#cee43d801fcef9644b11b8194857695acd5f815a" + integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== + +"@opentelemetry/api-logs@0.202.0": + version "0.202.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.202.0.tgz#78ddb3b4a30232fd0916b99f27777b1936355d03" + integrity sha512-fTBjMqKCfotFWfLzaKyhjLvyEyq5vDKTTFfBmx21btv3gvy8Lq6N5Dh2OzqeuN4DjtpSvNT1uNVfg08eD2Rfxw== + dependencies: + "@opentelemetry/api" "^1.3.0" + +"@opentelemetry/api@^1.3.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.0.tgz#d03eba68273dc0f7509e2a3d5cba21eae10379fe" + integrity sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg== + +"@opentelemetry/context-async-hooks@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-2.0.1.tgz#4416bc2df780c1dda1129afb9392d55831dd861d" + integrity sha512-XuY23lSI3d4PEqKA+7SLtAgwqIfc6E/E9eAQWLN1vlpC53ybO3o6jW4BsXo1xvz9lYyyWItfQDDLzezER01mCw== + +"@opentelemetry/core@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-2.0.1.tgz#44e1149d5666a4743cde943ef89841db3ce0f8bc" + integrity sha512-MaZk9SJIDgo1peKevlbhP6+IwIiNPNmswNL4AF0WaQJLbHXjr9SrZMgS12+iqr9ToV4ZVosCcc0f8Rg67LXjxw== + dependencies: + "@opentelemetry/semantic-conventions" "^1.29.0" + +"@opentelemetry/exporter-trace-otlp-http@0.202.0": + version "0.202.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.202.0.tgz#5587696379696bf14f6bfb3ad63e489ac56d9e13" + integrity sha512-/hKE8DaFCJuaQqE1IxpgkcjOolUIwgi3TgHElPVKGdGRBSmJMTmN/cr6vWa55pCJIXPyhKvcMrbrya7DZ3VmzA== + dependencies: + "@opentelemetry/core" "2.0.1" + "@opentelemetry/otlp-exporter-base" "0.202.0" + "@opentelemetry/otlp-transformer" "0.202.0" + "@opentelemetry/resources" "2.0.1" + "@opentelemetry/sdk-trace-base" "2.0.1" + +"@opentelemetry/otlp-exporter-base@0.202.0": + version "0.202.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.202.0.tgz#f5d9904c2f37a6eed31d73178485138dbe6cb1f1" + integrity sha512-nMEOzel+pUFYuBJg2znGmHJWbmvMbdX5/RhoKNKowguMbURhz0fwik5tUKplLcUtl8wKPL1y9zPnPxeBn65N0Q== + dependencies: + "@opentelemetry/core" "2.0.1" + "@opentelemetry/otlp-transformer" "0.202.0" + +"@opentelemetry/otlp-transformer@0.202.0": + version "0.202.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-transformer/-/otlp-transformer-0.202.0.tgz#0df9b419e68b726f6de9b85ee3ba3e373ef041b7" + integrity sha512-5XO77QFzs9WkexvJQL9ksxL8oVFb/dfi9NWQSq7Sv0Efr9x3N+nb1iklP1TeVgxqJ7m1xWiC/Uv3wupiQGevMw== + dependencies: + "@opentelemetry/api-logs" "0.202.0" + "@opentelemetry/core" "2.0.1" + "@opentelemetry/resources" "2.0.1" + "@opentelemetry/sdk-logs" "0.202.0" + "@opentelemetry/sdk-metrics" "2.0.1" + "@opentelemetry/sdk-trace-base" "2.0.1" + protobufjs "^7.3.0" + +"@opentelemetry/resources@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-2.0.1.tgz#0365d134291c0ed18d96444a1e21d0e6a481c840" + integrity sha512-dZOB3R6zvBwDKnHDTB4X1xtMArB/d324VsbiPkX/Yu0Q8T2xceRthoIVFhJdvgVM2QhGVUyX9tzwiNxGtoBJUw== + dependencies: + "@opentelemetry/core" "2.0.1" + "@opentelemetry/semantic-conventions" "^1.29.0" + +"@opentelemetry/sdk-logs@0.202.0": + version "0.202.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-logs/-/sdk-logs-0.202.0.tgz#7caab8f764d5c95e5809a42f5df3ff1ad5ebd862" + integrity sha512-pv8QiQLQzk4X909YKm0lnW4hpuQg4zHwJ4XBd5bZiXcd9urvrJNoNVKnxGHPiDVX/GiLFvr5DMYsDBQbZCypRQ== + dependencies: + "@opentelemetry/api-logs" "0.202.0" + "@opentelemetry/core" "2.0.1" + "@opentelemetry/resources" "2.0.1" + +"@opentelemetry/sdk-metrics@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-2.0.1.tgz#efb6e9349e8a9038ac622e172692bfcdcad8010b" + integrity sha512-wf8OaJoSnujMAHWR3g+/hGvNcsC16rf9s1So4JlMiFaFHiE4HpIA3oUh+uWZQ7CNuK8gVW/pQSkgoa5HkkOl0g== + dependencies: + "@opentelemetry/core" "2.0.1" + "@opentelemetry/resources" "2.0.1" + +"@opentelemetry/sdk-trace-base@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.0.1.tgz#25808bb6a3d08a501ad840249e4d43d3493eb6e5" + integrity sha512-xYLlvk/xdScGx1aEqvxLwf6sXQLXCjk3/1SQT9X9AoN5rXRhkdvIFShuNNmtTEPRBqcsMbS4p/gJLNI2wXaDuQ== + dependencies: + "@opentelemetry/core" "2.0.1" + "@opentelemetry/resources" "2.0.1" + "@opentelemetry/semantic-conventions" "^1.29.0" + +"@opentelemetry/sdk-trace-node@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-node/-/sdk-trace-node-2.0.1.tgz#bbb9bdb4985d7930941b3d4023e1661ba46f60c1" + integrity sha512-UhdbPF19pMpBtCWYP5lHbTogLWx9N0EBxtdagvkn5YtsAnCBZzL7SjktG+ZmupRgifsHMjwUaCCaVmqGfSADmA== + dependencies: + "@opentelemetry/context-async-hooks" "2.0.1" + "@opentelemetry/core" "2.0.1" + "@opentelemetry/sdk-trace-base" "2.0.1" + +"@opentelemetry/semantic-conventions@1.34.0": + version "1.34.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.34.0.tgz#8b6a46681b38a4d5947214033ac48128328c1738" + integrity sha512-aKcOkyrorBGlajjRdVoJWHTxfxO1vCNHLJVlSDaRHDIdjU+pX8IYQPvPDkYiujKLbRnWU+1TBwEt0QRgSm4SGA== + +"@opentelemetry/semantic-conventions@^1.29.0": + version "1.36.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.36.0.tgz#149449bd4df4d0464220915ad4164121e0d75d4d" + integrity sha512-TtxJSRD8Ohxp6bKkhrm27JRHAxPczQA7idtcTOMYI+wQRRrfgqxHv1cFbCApcSnNjtXkmzFozn6jQtFrOmbjPQ== + +"@pb33f/wiretap@^0.4.5": + version "0.4.5" + resolved "https://registry.yarnpkg.com/@pb33f/wiretap/-/wiretap-0.4.5.tgz#ce2b146f5037a5a0662814ac1ffe1697fd1b9c4e" + integrity sha512-tWMqZZnp4sc7Nyh/9cfKx5pJhnd1cgKm2MuUY5F+D3WSnRVUp4NWQzTTgK4agSIPADTSHKnpAlATJEEDvJbZbw== + dependencies: + "@stomp/stompjs" "^7.0.0" + global "^4.4.0" + node-fetch "^3.3.1" + tar "^6.1.15" + +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== + +"@redocly/ajv@8.11.2": + version "8.11.2" + resolved "https://registry.yarnpkg.com/@redocly/ajv/-/ajv-8.11.2.tgz#46e1bf321ec0ac1e0fd31dea41a3d1fcbdcda0b5" + integrity sha512-io1JpnwtIcvojV7QKDUSIuMN/ikdOUd1ReEnUnMKGfDVridQZ31J0MmIuqwuRjWDZfmvr+Q0MqCcfHM2gTivOg== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js-replace "^1.0.1" + +"@redocly/ajv@^8.11.2": + version "8.11.3" + resolved "https://registry.yarnpkg.com/@redocly/ajv/-/ajv-8.11.3.tgz#4f148d1cec14ef3fd9d0efecedaa504159c959a6" + integrity sha512-4P3iZse91TkBiY+Dx5DUgxQ9GXkVJf++cmI0MOyLDxV9b5MUBI4II6ES8zA5JCbO72nKAJxWrw4PUPW+YP3ZDQ== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js-replace "^1.0.1" + +"@redocly/cli@^2.0.2": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@redocly/cli/-/cli-2.0.6.tgz#d17135bc6b3e16a586f4b6d497d630d96a9865cc" + integrity sha512-Hffc/ts8hArT2KQwrqvtYALoYDUp+kD1mbm2el0iAsD1beI8AwqdHHPPnIQef0vBpsNXijfklT/C/ipPjB5fVw== + dependencies: + "@opentelemetry/exporter-trace-otlp-http" "0.202.0" + "@opentelemetry/resources" "2.0.1" + "@opentelemetry/sdk-trace-node" "2.0.1" + "@opentelemetry/semantic-conventions" "1.34.0" + "@redocly/openapi-core" "2.0.6" + "@redocly/respect-core" "2.0.6" + abort-controller "^3.0.0" + chokidar "^3.5.1" + colorette "^1.2.0" + cookie "^0.7.2" + dotenv "16.4.7" + form-data "^4.0.4" + glob "^11.0.1" + handlebars "^4.7.6" + https-proxy-agent "^7.0.5" + mobx "^6.0.4" + pluralize "^8.0.0" + react "^17.0.0 || ^18.2.0 || ^19.0.0" + react-dom "^17.0.0 || ^18.2.0 || ^19.0.0" + redoc "2.5.0" + semver "^7.5.2" + set-cookie-parser "^2.3.5" + simple-websocket "^9.0.0" + styled-components "^6.0.7" + undici "^6.21.1" + yargs "17.0.1" + +"@redocly/config@^0.22.0": + version "0.22.2" + resolved "https://registry.yarnpkg.com/@redocly/config/-/config-0.22.2.tgz#9a05e694816d53a5236cf8768d3cad0e49d8b116" + integrity sha512-roRDai8/zr2S9YfmzUfNhKjOF0NdcOIqF7bhf4MVC5UxpjIysDjyudvlAiVbpPHp3eDRWbdzUgtkK1a7YiDNyQ== + +"@redocly/config@^0.28.0": + version "0.28.0" + resolved "https://registry.yarnpkg.com/@redocly/config/-/config-0.28.0.tgz#4992ed126892c1de1d395563830c21f4bff35c05" + integrity sha512-IdY4bSX9bbjXkDX91oO1OVwCzB00UNF0ozoygacTpS5Exa3ewYCB/6BcbA0tGCAvKDIwSY9Jor2cWQ/ycQfBTg== + dependencies: + json-schema-to-ts "2.7.2" + +"@redocly/openapi-core@2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@redocly/openapi-core/-/openapi-core-2.0.6.tgz#d9879d8c71110a073846ed6d781172fd0ee81211" + integrity sha512-1C/WGrU5focCcPduTPEP22SoziNMk+DGo0iM+c3eb8dolRbASt998u0Qw9EpGkjU/y9ig4brQnIQu63tE6IcWg== + dependencies: + "@redocly/ajv" "^8.11.2" + "@redocly/config" "^0.28.0" + ajv-formats "^2.1.1" + colorette "^1.2.0" + js-levenshtein "^1.1.6" + js-yaml "^4.1.0" + minimatch "^10.0.1" + pluralize "^8.0.0" + yaml-ast-parser "0.0.43" + +"@redocly/openapi-core@^1.4.0": + version "1.34.5" + resolved "https://registry.yarnpkg.com/@redocly/openapi-core/-/openapi-core-1.34.5.tgz#9c2cf901d1098ceb626e789e2065c762fe63727f" + integrity sha512-0EbE8LRbkogtcCXU7liAyC00n9uNG9hJ+eMyHFdUsy9lB/WGqnEBgwjA9q2cyzAVcdTkQqTBBU1XePNnN3OijA== + dependencies: + "@redocly/ajv" "^8.11.2" + "@redocly/config" "^0.22.0" + colorette "^1.2.0" + https-proxy-agent "^7.0.5" + js-levenshtein "^1.1.6" + js-yaml "^4.1.0" + minimatch "^5.0.1" + pluralize "^8.0.0" + yaml-ast-parser "0.0.43" + +"@redocly/respect-core@2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@redocly/respect-core/-/respect-core-2.0.6.tgz#a3c92bb955a1f8ea7a9cd0703047e83f419b293d" + integrity sha512-nDJGOC+2eRP/MjB5ftdw4736GA7cL1qGwLswlAQtBICWV9BRiAnjvqFienUnpn0nqS5p4f2Ejhwpf4FDhrlDsg== + dependencies: + "@faker-js/faker" "^7.6.0" + "@noble/hashes" "^1.8.0" + "@redocly/ajv" "8.11.2" + "@redocly/openapi-core" "2.0.6" + better-ajv-errors "^1.2.0" + colorette "^2.0.20" + jest-diff "^29.3.1" + jest-matcher-utils "^29.3.1" + json-pointer "^0.6.2" + jsonpath-plus "^10.0.6" + openapi-sampler "^1.6.1" + outdent "^0.8.0" + +"@sideway/address@^4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.5.tgz#4bc149a0076623ced99ca8208ba780d65a99b9d5" + integrity sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f" + integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" + integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +"@stomp/stompjs@^7.0.0": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@stomp/stompjs/-/stompjs-7.1.1.tgz#9a836da33bed5b76c72a8f17f0594de98120f6d6" + integrity sha512-chcDs6YkAnKp1FqzwhGvh3i7v0+/ytzqWdKYw6XzINEKAzke/iD00dNgFPWSZEqktHOK+C1gSzXhLkLbARIaZw== + +"@types/json-schema@^7.0.7", "@types/json-schema@^7.0.9": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/node@>=13.7.0": + version "24.3.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-24.3.0.tgz#89b09f45cb9a8ee69466f18ee5864e4c3eb84dec" + integrity sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow== + dependencies: + undici-types "~7.10.0" + +"@types/stylis@4.2.5": + version "4.2.5" + resolved "https://registry.yarnpkg.com/@types/stylis/-/stylis-4.2.5.tgz#1daa6456f40959d06157698a653a9ab0a70281df" + integrity sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw== + +"@types/trusted-types@^2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" + integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +agent-base@^7.1.2: + version "7.1.4" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.4.tgz#e3cd76d4c548ee895d3c3fd8dc1f6c5b9032e7a8" + integrity sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ== + +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv@^8.0.0: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.2.0.tgz#2f302e7550431b1b7762705fffb52cf1ffa20447" + integrity sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +async@^3.2.6: + version "3.2.6" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" + integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +axios@^1.6.1: + version "1.11.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.11.0.tgz#c2ec219e35e414c025b2095e8b8280278478fdb6" + integrity sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.4" + proxy-from-env "^1.1.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +basic-auth@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" + integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== + dependencies: + safe-buffer "5.1.2" + +better-ajv-errors@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/better-ajv-errors/-/better-ajv-errors-1.2.0.tgz#6412d58fa4d460ff6ccbd9e65c5fef9781cc5286" + integrity sha512-UW+IsFycygIo7bclP9h5ugkNH8EjCSgqyFB/yQ4Hqqa1OEYDtb0uFIkYE0b6+CjkgJYVM5UKI/pJPxjYe9EZlA== + dependencies: + "@babel/code-frame" "^7.16.0" + "@humanwhocodes/momoa" "^2.0.2" + chalk "^4.1.2" + jsonpointer "^5.0.0" + leven "^3.1.0 < 4" + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +brace-expansion@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7" + integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== + dependencies: + balanced-match "^1.0.0" + +braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + +call-bound@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== + dependencies: + call-bind-apply-helpers "^1.0.2" + get-intrinsic "^1.3.0" + +call-me-maybe@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.2.tgz#03f964f19522ba643b1b0693acb9152fe2074baa" + integrity sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ== + +camelize@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" + integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== + +chalk@^4.0.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chokidar@^3.5.1: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +classnames@^2.3.2: + version "2.5.1" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b" + integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow== + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clsx@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" + integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colorette@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" + integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== + +colorette@^2.0.20: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +cookie@^0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7" + integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== + +corser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87" + integrity sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ== + +cross-spawn@^7.0.6: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +css-color-keywords@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" + integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== + +css-to-react-native@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.2.0.tgz#cdd8099f71024e149e4f6fe17a7d46ecd55f1e32" + integrity sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ== + dependencies: + camelize "^1.0.0" + css-color-keywords "^1.0.0" + postcss-value-parser "^4.0.2" + +csstype@3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + +data-uri-to-buffer@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" + integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== + +debug@4, debug@^4.3.1, debug@^4.3.6: + version "4.4.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" + integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== + dependencies: + ms "^2.1.3" + +decko@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decko/-/decko-1.2.0.tgz#fd43c735e967b8013306884a56fbe665996b6817" + integrity sha512-m8FnyHXV1QX+S1cl+KPFDIl6NMkxtKsy6+U/aYyjrOqWMuwAwYWu7ePqrsUHtDR5Y8Yk2pi/KIDSgF+vT4cPOQ== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== + +dom-walk@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== + +dompurify@^3.2.4: + version "3.2.6" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.2.6.tgz#ca040a6ad2b88e2a92dc45f38c79f84a714a1cad" + integrity sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ== + optionalDependencies: + "@types/trusted-types" "^2.0.7" + +dotenv@16.4.7: + version "16.4.7" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26" + integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== + +dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + +es-set-tostringtag@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" + integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== + dependencies: + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + +es6-promise@^3.2.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" + integrity sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg== + +escalade@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-safe-stringify@^2.0.7: + version "2.1.1" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== + +fast-uri@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.6.tgz#88f130b77cfaea2378d56bf970dea21257a68748" + integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw== + +fast-xml-parser@^4.5.0: + version "4.5.3" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz#c54d6b35aa0f23dc1ea60b6c884340c006dc6efb" + integrity sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig== + dependencies: + strnum "^1.1.1" + +fetch-blob@^3.1.2, fetch-blob@^3.1.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9" + integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ== + dependencies: + node-domexception "^1.0.0" + web-streams-polyfill "^3.0.3" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +follow-redirects@^1.0.0, follow-redirects@^1.15.6: + version "1.15.11" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340" + integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== + +foreach@^2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.6.tgz#87bcc8a1a0e74000ff2bf9802110708cfb02eb6e" + integrity sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg== + +foreground-child@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f" + integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== + dependencies: + cross-spawn "^7.0.6" + signal-exit "^4.0.1" + +form-data@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.4.tgz#784cdcce0669a9d68e94d11ac4eea98088edd2c4" + integrity sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + hasown "^2.0.2" + mime-types "^2.1.12" + +formdata-polyfill@^4.0.10: + version "4.0.10" + resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" + integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== + dependencies: + fetch-blob "^3.1.2" + +fs-extra@^11.3.1: + version "11.3.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.1.tgz#ba7a1f97a85f94c6db2e52ff69570db3671d5a74" + integrity sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + +get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@^11.0.1: + version "11.0.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-11.0.3.tgz#9d8087e6d72ddb3c4707b1d2778f80ea3eaefcd6" + integrity sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA== + dependencies: + foreground-child "^3.3.1" + jackspeak "^4.1.1" + minimatch "^10.0.3" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^2.0.0" + +global@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== + dependencies: + min-document "^2.19.0" + process "^0.11.10" + +gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + +graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +handlebars@^4.7.6: + version "4.7.8" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" + integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.2" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.3, has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + +has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +html-encoding-sniffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" + integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== + dependencies: + whatwg-encoding "^2.0.0" + +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-server@^14.1.1: + version "14.1.1" + resolved "https://registry.yarnpkg.com/http-server/-/http-server-14.1.1.tgz#d60fbb37d7c2fdff0f0fbff0d0ee6670bd285e2e" + integrity sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A== + dependencies: + basic-auth "^2.0.1" + chalk "^4.1.2" + corser "^2.0.1" + he "^1.2.0" + html-encoding-sniffer "^3.0.0" + http-proxy "^1.18.1" + mime "^1.6.0" + minimist "^1.2.6" + opener "^1.5.1" + portfinder "^1.0.28" + secure-compare "3.0.1" + union "~0.5.0" + url-join "^4.0.1" + +http2-client@^1.2.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/http2-client/-/http2-client-1.3.5.tgz#20c9dc909e3cc98284dd20af2432c524086df181" + integrity sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA== + +https-proxy-agent@^7.0.5: + version "7.0.6" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9" + integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw== + dependencies: + agent-base "^7.1.2" + debug "4" + +iconv-lite@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +inherits@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +jackspeak@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-4.1.1.tgz#96876030f450502047fc7e8c7fcf8ce8124e43ae" + integrity sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ== + dependencies: + "@isaacs/cliui" "^8.0.2" + +jest-diff@^29.3.1, jest-diff@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" + integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== + +jest-matcher-utils@^29.3.1: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" + integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== + dependencies: + chalk "^4.0.0" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +joi@^17.11.0: + version "17.13.3" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.13.3.tgz#0f5cc1169c999b30d344366d384b12d92558bcec" + integrity sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA== + dependencies: + "@hapi/hoek" "^9.3.0" + "@hapi/topo" "^5.1.0" + "@sideway/address" "^4.1.5" + "@sideway/formula" "^3.0.1" + "@sideway/pinpoint" "^2.0.0" + +js-levenshtein@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" + integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsep@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/jsep/-/jsep-1.4.0.tgz#19feccbfa51d8a79f72480b4b8e40ce2e17152f0" + integrity sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw== + +json-pointer@0.6.2, json-pointer@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/json-pointer/-/json-pointer-0.6.2.tgz#f97bd7550be5e9ea901f8c9264c9d436a22a93cd" + integrity sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw== + dependencies: + foreach "^2.0.4" + +json-schema-to-ts@2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/json-schema-to-ts/-/json-schema-to-ts-2.7.2.tgz#e8df41d7153e5517f0e68dbe57be12bb3609d6d5" + integrity sha512-R1JfqKqbBR4qE8UyBR56Ms30LL62/nlhoz+1UkfI/VE7p54Awu919FZ6ZUPG8zIa3XB65usPJgr1ONVncUGSaQ== + dependencies: + "@babel/runtime" "^7.18.3" + "@types/json-schema" "^7.0.9" + ts-algebra "^1.2.0" + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +jsonfile@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.2.0.tgz#7c265bd1b65de6977478300087c99f1c84383f62" + integrity sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonpath-plus@^10.0.6: + version "10.3.0" + resolved "https://registry.yarnpkg.com/jsonpath-plus/-/jsonpath-plus-10.3.0.tgz#59e22e4fa2298c68dfcd70659bb47f0cad525238" + integrity sha512-8TNmfeTCk2Le33A3vRRwtuworG/L5RrgMvdjhKZxvyShO+mBu2fP50OWUjRLNtvw344DdDarFh9buFAZs5ujeA== + dependencies: + "@jsep-plugin/assignment" "^1.3.0" + "@jsep-plugin/regex" "^1.0.4" + jsep "^1.4.0" + +jsonpointer@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" + integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== + +"leven@^3.1.0 < 4": + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +long@^5.0.0: + version "5.3.2" + resolved "https://registry.yarnpkg.com/long/-/long-5.3.2.tgz#1d84463095999262d7d7b7f8bfd4a8cc55167f83" + integrity sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA== + +loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^11.0.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.1.0.tgz#afafb060607108132dbc1cf8ae661afb69486117" + integrity sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A== + +lunr@^2.3.9: + version "2.3.9" + resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" + integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== + +mark.js@^8.11.1: + version "8.11.1" + resolved "https://registry.yarnpkg.com/mark.js/-/mark.js-8.11.1.tgz#180f1f9ebef8b0e638e4166ad52db879beb2ffc5" + integrity sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ== + +marked@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/marked/-/marked-4.3.0.tgz#796362821b019f734054582038b116481b456cf3" + integrity sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A== + +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== + dependencies: + dom-walk "^0.1.0" + +minimatch@^10.0.1, minimatch@^10.0.3: + version "10.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.0.3.tgz#cf7a0314a16c4d9ab73a7730a0e8e3c3502d47aa" + integrity sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw== + dependencies: + "@isaacs/brace-expansion" "^5.0.0" + +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +minipass@^3.0.0: + version "3.3.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + +minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mkdirp@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mobx-react-lite@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/mobx-react-lite/-/mobx-react-lite-4.1.0.tgz#6a03ed2d94150848213cfebd7d172e123528a972" + integrity sha512-QEP10dpHHBeQNv1pks3WnHRCem2Zp636lq54M2nKO2Sarr13pL4u6diQXf65yzXUn0mkk18SyIDCm9UOJYTi1w== + dependencies: + use-sync-external-store "^1.4.0" + +mobx-react@^9.1.1: + version "9.2.0" + resolved "https://registry.yarnpkg.com/mobx-react/-/mobx-react-9.2.0.tgz#c1e4d1ed406f6664d9de0787c948bac3a7ed5893" + integrity sha512-dkGWCx+S0/1mfiuFfHRH8D9cplmwhxOV5CkXMp38u6rQGG2Pv3FWYztS0M7ncR6TyPRQKaTG/pnitInoYE9Vrw== + dependencies: + mobx-react-lite "^4.1.0" + +mobx@^6.0.4: + version "6.13.7" + resolved "https://registry.yarnpkg.com/mobx/-/mobx-6.13.7.tgz#70e5dda7a45da947f773b3cd3b065dfe7c8a75de" + integrity sha512-aChaVU/DO5aRPmk1GX8L+whocagUUpBQqoPtJk+cm7UOXUk87J4PeWCh6nNmTTIfEhiR9DI/+FnA8dln/hTK7g== + +ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +nanoid@^3.3.7: + version "3.3.11" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" + integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +node-domexception@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" + integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== + +node-fetch-h2@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/node-fetch-h2/-/node-fetch-h2-2.3.0.tgz#c6188325f9bd3d834020bf0f2d6dc17ced2241ac" + integrity sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg== + dependencies: + http2-client "^1.2.5" + +node-fetch@^2.6.1: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-fetch@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b" + integrity sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA== + dependencies: + data-uri-to-buffer "^4.0.0" + fetch-blob "^3.1.4" + formdata-polyfill "^4.0.10" + +node-readfiles@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/node-readfiles/-/node-readfiles-0.2.0.tgz#dbbd4af12134e2e635c245ef93ffcf6f60673a5d" + integrity sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA== + dependencies: + es6-promise "^3.2.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +oas-kit-common@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/oas-kit-common/-/oas-kit-common-1.0.8.tgz#6d8cacf6e9097967a4c7ea8bcbcbd77018e1f535" + integrity sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ== + dependencies: + fast-safe-stringify "^2.0.7" + +oas-linter@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/oas-linter/-/oas-linter-3.2.2.tgz#ab6a33736313490659035ca6802dc4b35d48aa1e" + integrity sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ== + dependencies: + "@exodus/schemasafe" "^1.0.0-rc.2" + should "^13.2.1" + yaml "^1.10.0" + +oas-resolver@^2.5.6: + version "2.5.6" + resolved "https://registry.yarnpkg.com/oas-resolver/-/oas-resolver-2.5.6.tgz#10430569cb7daca56115c915e611ebc5515c561b" + integrity sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ== + dependencies: + node-fetch-h2 "^2.3.0" + oas-kit-common "^1.0.8" + reftools "^1.1.9" + yaml "^1.10.0" + yargs "^17.0.1" + +oas-schema-walker@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/oas-schema-walker/-/oas-schema-walker-1.1.5.tgz#74c3cd47b70ff8e0b19adada14455b5d3ac38a22" + integrity sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ== + +oas-validator@^5.0.8: + version "5.0.8" + resolved "https://registry.yarnpkg.com/oas-validator/-/oas-validator-5.0.8.tgz#387e90df7cafa2d3ffc83b5fb976052b87e73c28" + integrity sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw== + dependencies: + call-me-maybe "^1.0.1" + oas-kit-common "^1.0.8" + oas-linter "^3.2.2" + oas-resolver "^2.5.6" + oas-schema-walker "^1.1.5" + reftools "^1.1.9" + should "^13.2.1" + yaml "^1.10.0" + +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.13.3: + version "1.13.4" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" + integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== + +openapi-sampler@^1.5.0, openapi-sampler@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/openapi-sampler/-/openapi-sampler-1.6.1.tgz#fa1839cd372d1789e12cd3cce46b0511d3f5c79e" + integrity sha512-s1cIatOqrrhSj2tmJ4abFYZQK6l5v+V4toO5q1Pa0DyN8mtyqy2I+Qrj5W9vOELEtybIMQs/TBZGVO/DtTFK8w== + dependencies: + "@types/json-schema" "^7.0.7" + fast-xml-parser "^4.5.0" + json-pointer "0.6.2" + +opener@^1.5.1: + version "1.5.2" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" + integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== + +outdent@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/outdent/-/outdent-0.8.0.tgz#2ebc3e77bf49912543f1008100ff8e7f44428eb0" + integrity sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A== + +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + +path-browserify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-scurry@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.0.tgz#9f052289f23ad8bf9397a2a0425e7b8615c58580" + integrity sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg== + dependencies: + lru-cache "^11.0.0" + minipass "^7.1.2" + +perfect-scrollbar@^1.5.5: + version "1.5.6" + resolved "https://registry.yarnpkg.com/perfect-scrollbar/-/perfect-scrollbar-1.5.6.tgz#f1aead2588ba896435ee41b246812b2080573b7c" + integrity sha512-rixgxw3SxyJbCaSpo1n35A/fwI1r2rdwMKOTCg/AcG+xOEyZcE8UHVjpZMFCVImzsFoCZeJTT+M/rdEIQYO2nw== + +picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^2.0.4, picomatch@^2.2.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pluralize@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" + integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== + +polished@^4.2.2: + version "4.3.1" + resolved "https://registry.yarnpkg.com/polished/-/polished-4.3.1.tgz#5a00ae32715609f83d89f6f31d0f0261c6170548" + integrity sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA== + dependencies: + "@babel/runtime" "^7.17.8" + +portfinder@^1.0.28: + version "1.0.37" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.37.tgz#92b754ef89a11801c8efe4b0e5cd845b0064c212" + integrity sha512-yuGIEjDAYnnOex9ddMnKZEMFE0CcGo6zbfzDklkmT1m5z734ss6JMzN9rNB3+RR7iS+F10D4/BVIaXOyh8PQKw== + dependencies: + async "^3.2.6" + debug "^4.3.6" + +postcss-value-parser@^4.0.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@8.4.49: + version "8.4.49" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.49.tgz#4ea479048ab059ab3ae61d082190fabfd994fe19" + integrity sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA== + dependencies: + nanoid "^3.3.7" + picocolors "^1.1.1" + source-map-js "^1.2.1" + +pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== + dependencies: + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +prismjs@^1.29.0: + version "1.30.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.30.0.tgz#d9709969d9d4e16403f6f348c63553b19f0975a9" + integrity sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + +prop-types@^15.5.0, prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +protobufjs@^7.3.0: + version "7.5.4" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.5.4.tgz#885d31fe9c4b37f25d1bb600da30b1c5b37d286a" + integrity sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/node" ">=13.7.0" + long "^5.0.0" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +qs@^6.4.0: + version "6.14.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930" + integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w== + dependencies: + side-channel "^1.1.0" + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +"react-dom@^17.0.0 || ^18.2.0 || ^19.0.0": + version "19.1.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.1.1.tgz#2daa9ff7f3ae384aeb30e76d5ee38c046dc89893" + integrity sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw== + dependencies: + scheduler "^0.26.0" + +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^18.0.0: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== + +react-tabs@^6.0.2: + version "6.1.0" + resolved "https://registry.yarnpkg.com/react-tabs/-/react-tabs-6.1.0.tgz#a1fc9d9b8db4c6e7bb327a1b6783bc51a1c457a1" + integrity sha512-6QtbTRDKM+jA/MZTTefvigNxo0zz+gnBTVFw2CFVvq+f2BuH0nF0vDLNClL045nuTAdOoK/IL1vTP0ZLX0DAyQ== + dependencies: + clsx "^2.0.0" + prop-types "^15.5.0" + +"react@^17.0.0 || ^18.2.0 || ^19.0.0": + version "19.1.1" + resolved "https://registry.yarnpkg.com/react/-/react-19.1.1.tgz#06d9149ec5e083a67f9a1e39ce97b06a03b644af" + integrity sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ== + +readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +redoc@2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/redoc/-/redoc-2.5.0.tgz#6b44c55f705e13a57272c5a227cc3fd0d1a06495" + integrity sha512-NpYsOZ1PD9qFdjbLVBZJWptqE+4Y6TkUuvEOqPUmoH7AKOmPcE+hYjotLxQNTqVoWL4z0T2uxILmcc8JGDci+Q== + dependencies: + "@redocly/openapi-core" "^1.4.0" + classnames "^2.3.2" + decko "^1.2.0" + dompurify "^3.2.4" + eventemitter3 "^5.0.1" + json-pointer "^0.6.2" + lunr "^2.3.9" + mark.js "^8.11.1" + marked "^4.3.0" + mobx-react "^9.1.1" + openapi-sampler "^1.5.0" + path-browserify "^1.0.1" + perfect-scrollbar "^1.5.5" + polished "^4.2.2" + prismjs "^1.29.0" + prop-types "^15.8.1" + react-tabs "^6.0.2" + slugify "~1.4.7" + stickyfill "^1.1.1" + swagger2openapi "^7.0.8" + url-template "^2.0.8" + +reftools@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/reftools/-/reftools-1.1.9.tgz#e16e19f662ccd4648605312c06d34e5da3a2b77e" + integrity sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w== + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +rxjs@^7.8.1: + version "7.8.2" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.2.tgz#955bc473ed8af11a002a2be52071bf475638607b" + integrity sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA== + dependencies: + tslib "^2.1.0" + +safe-buffer@5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@^5.1.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +scheduler@^0.26.0: + version "0.26.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.26.0.tgz#4ce8a8c2a2095f13ea11bf9a445be50c555d6337" + integrity sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA== + +secure-compare@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/secure-compare/-/secure-compare-3.0.1.tgz#f1a0329b308b221fae37b9974f3d578d0ca999e3" + integrity sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw== + +semver@^7.5.2: + version "7.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" + integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== + +set-cookie-parser@^2.3.5: + version "2.7.1" + resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz#3016f150072202dfbe90fadee053573cc89d2943" + integrity sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ== + +shallowequal@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +should-equal@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/should-equal/-/should-equal-2.0.0.tgz#6072cf83047360867e68e98b09d71143d04ee0c3" + integrity sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA== + dependencies: + should-type "^1.4.0" + +should-format@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/should-format/-/should-format-3.0.3.tgz#9bfc8f74fa39205c53d38c34d717303e277124f1" + integrity sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q== + dependencies: + should-type "^1.3.0" + should-type-adaptors "^1.0.1" + +should-type-adaptors@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz#401e7f33b5533033944d5cd8bf2b65027792e27a" + integrity sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA== + dependencies: + should-type "^1.3.0" + should-util "^1.0.0" + +should-type@^1.3.0, should-type@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/should-type/-/should-type-1.4.0.tgz#0756d8ce846dfd09843a6947719dfa0d4cff5cf3" + integrity sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ== + +should-util@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/should-util/-/should-util-1.0.1.tgz#fb0d71338f532a3a149213639e2d32cbea8bcb28" + integrity sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g== + +should@^13.2.1: + version "13.2.3" + resolved "https://registry.yarnpkg.com/should/-/should-13.2.3.tgz#96d8e5acf3e97b49d89b51feaa5ae8d07ef58f10" + integrity sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ== + dependencies: + should-equal "^2.0.0" + should-format "^3.0.3" + should-type "^1.4.0" + should-type-adaptors "^1.0.1" + should-util "^1.0.0" + +side-channel-list@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" + integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + +side-channel-map@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" + integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + +side-channel-weakmap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" + integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + side-channel-map "^1.0.1" + +side-channel@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" + integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + side-channel-list "^1.0.0" + side-channel-map "^1.0.1" + side-channel-weakmap "^1.0.2" + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +simple-websocket@^9.0.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/simple-websocket/-/simple-websocket-9.1.0.tgz#91cbb39eafefbe7e66979da6c639109352786a7f" + integrity sha512-8MJPnjRN6A8UCp1I+H/dSFyjwJhp6wta4hsVRhjf8w9qBHRzxYt14RaOcjvQnhD1N4yKOddEjflwMnQM4VtXjQ== + dependencies: + debug "^4.3.1" + queue-microtask "^1.2.2" + randombytes "^2.1.0" + readable-stream "^3.6.0" + ws "^7.4.2" + +slugify@~1.4.7: + version "1.4.7" + resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.4.7.tgz#e42359d505afd84a44513280868e31202a79a628" + integrity sha512-tf+h5W1IrjNm/9rKKj0JU2MDMruiopx0jjVA5zCdBtcGjfp0+c5rHw/zADLC3IeKlGHtVbHtpfzvYA0OYT+HKg== + +source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + +source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +stickyfill@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stickyfill/-/stickyfill-1.1.1.tgz#39413fee9d025c74a7e59ceecb23784cc0f17f02" + integrity sha512-GCp7vHAfpao+Qh/3Flh9DXEJ/qSi0KJwJw6zYlZOtRYXWUIpMM6mC2rIep/dK8RQqwW0KxGJIllmjPIBOGN8AA== + +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strnum@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.1.2.tgz#57bca4fbaa6f271081715dbc9ed7cee5493e28e4" + integrity sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA== + +styled-components@^6.0.7: + version "6.1.19" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-6.1.19.tgz#9a41b4db79a3b7a2477daecabe8dd917235263d6" + integrity sha512-1v/e3Dl1BknC37cXMhwGomhO8AkYmN41CqyX9xhUDxry1ns3BFQy2lLDRQXJRdVVWB9OHemv/53xaStimvWyuA== + dependencies: + "@emotion/is-prop-valid" "1.2.2" + "@emotion/unitless" "0.8.1" + "@types/stylis" "4.2.5" + css-to-react-native "3.2.0" + csstype "3.1.3" + postcss "8.4.49" + shallowequal "1.1.0" + stylis "4.3.2" + tslib "2.6.2" + +stylis@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.2.tgz#8f76b70777dd53eb669c6f58c997bf0a9972e444" + integrity sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg== + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +swagger2openapi@^7.0.8: + version "7.0.8" + resolved "https://registry.yarnpkg.com/swagger2openapi/-/swagger2openapi-7.0.8.tgz#12c88d5de776cb1cbba758994930f40ad0afac59" + integrity sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g== + dependencies: + call-me-maybe "^1.0.1" + node-fetch "^2.6.1" + node-fetch-h2 "^2.3.0" + node-readfiles "^0.2.0" + oas-kit-common "^1.0.8" + oas-resolver "^2.5.6" + oas-schema-walker "^1.1.5" + oas-validator "^5.0.8" + reftools "^1.1.9" + yaml "^1.10.0" + yargs "^17.0.1" + +tar@^6.1.15: + version "6.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" + integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^5.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +ts-algebra@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/ts-algebra/-/ts-algebra-1.2.2.tgz#b75d301c28cd4126cd344760a47b43e48e2872e0" + integrity sha512-kloPhf1hq3JbCPOTYoOWDKxebWjNb2o/LKnNfkWhxVVisFFmMJPPdJeGoGmM+iRLyoXAR61e08Pb+vUXINg8aA== + +tslib@2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +tslib@^2.1.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + +uglify-js@^3.1.4: + version "3.19.3" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.19.3.tgz#82315e9bbc6f2b25888858acd1fff8441035b77f" + integrity sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ== + +undici-types@~7.10.0: + version "7.10.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.10.0.tgz#4ac2e058ce56b462b056e629cc6a02393d3ff350" + integrity sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag== + +undici@^6.21.1: + version "6.21.3" + resolved "https://registry.yarnpkg.com/undici/-/undici-6.21.3.tgz#185752ad92c3d0efe7a7d1f6854a50f83b552d7a" + integrity sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw== + +union@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/union/-/union-0.5.0.tgz#b2c11be84f60538537b846edb9ba266ba0090075" + integrity sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA== + dependencies: + qs "^6.4.0" + +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + +uri-js-replace@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uri-js-replace/-/uri-js-replace-1.0.1.tgz#c285bb352b701c9dfdaeffc4da5be77f936c9048" + integrity sha512-W+C9NWNLFOoBI2QWDp4UT9pv65r2w5Cx+3sTYFvtMdDBxkKt1syCqsUdSFAChbEe1uK5TfS04wt/nGwmaeIQ0g== + +url-join@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" + integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== + +url-template@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21" + integrity sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw== + +use-sync-external-store@^1.4.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz#55122e2a3edd2a6c106174c27485e0fd59bcfca0" + integrity sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A== + +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +wait-on@^7.0.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-7.2.0.tgz#d76b20ed3fc1e2bebc051fae5c1ff93be7892928" + integrity sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ== + dependencies: + axios "^1.6.1" + joi "^17.11.0" + lodash "^4.17.21" + minimist "^1.2.8" + rxjs "^7.8.1" + +web-streams-polyfill@^3.0.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b" + integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw== + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-encoding@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" + integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== + dependencies: + iconv-lite "0.6.3" + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +ws@^7.4.2: + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml-ast-parser@0.0.43: + version "0.0.43" + resolved "https://registry.yarnpkg.com/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz#e8a23e6fb4c38076ab92995c5dca33f3d3d7c9bb" + integrity sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A== + +yaml@^1.10.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.0.1.tgz#6a1ced4ed5ee0b388010ba9fd67af83b9362e0bb" + integrity sha512-xBBulfCc8Y6gLFcrPvtqKz9hz8SO0l1Ni8GgDekvBX2ro0HRQImDGnikfc33cgzcYUSncapnNcZDjVFIH3f6KQ== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yargs@^17.0.1: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1"