openapi: 3.0.1
info:
title: Upsun.com Rest Add-ons Project Settings API
version: '1.0'
contact:
name: Support
url: https://upsun.com/contact-us/
termsOfService: https://upsun.com/trust-center/legal/tos/
description: "# Introduction\n\nUpsun, formerly Platform.sh, is a container-based Platform-as-a-Service. Our main API\nis simply Git. With a single `git push` and a couple of YAML files in\nyour repository you can deploy an arbitrarily complex cluster.\nEvery [**Project**](#tag/Project) can have multiple applications (PHP,\nNode.js, Python, Ruby, Go, etc.) and managed, automatically\nprovisioned services (databases, message queues, etc.).\n\nEach project also comes with multiple concurrent\nlive staging/development [**Environments**](#tag/Environment).\nThese ephemeral development environments\nare automatically created every time you push a new branch or create a\npull request, and each has a full copy of the data of its parent branch,\nwhich is created on-the-fly in seconds.\n\nOur Git implementation supports integrations with third party Git\nproviders such as GitHub, Bitbucket, or GitLab, allowing you to simply\nintegrate Upsun into your existing workflow.\n\n## Using the REST API\n\nIn addition to the Git API, we also offer a REST API that allows you to manage\nevery aspect of the platform, from managing projects and environments,\nto accessing accounts and subscriptions, to creating robust workflows\nand integrations with your CI systems and internal services.\n\nThese API docs are generated from a standard **OpenAPI (Swagger)** Specification document\nwhich you can find here in [YAML](openapispec-upsun.yaml) and in [JSON](openapispec-upsun.json) formats.\n\nThis RESTful API consumes and produces HAL-style JSON over HTTPS,\nand any REST library can be used to access it. On GitHub, we also host\na few API libraries that you can use to make API access easier, such as our\n[PHP API client](https://github.com/upsun/upsun-sdk-php).\n\nIn order to use the API you will first need to have an [Upsun account](https://auth.upsun.com/register/) \nand [create an API Token](https://docs.upsun.com/anchors/cli/api-token/).\n\n# Authentication\n\n## OAuth2\n\nAPI authentication is done with OAuth2 access tokens.\n\n### API tokens\n\nYou can use an API token as one way to get an OAuth2 access token. This\nis particularly useful in scripts, e.g. for CI pipelines.\n\nTo create an API token, go to the \"API Tokens\" section\nof the \"Account Settings\" tab on the [Console](https://console.upsun.com).\n\nTo exchange this API token for an access token, a `POST` request\nmust be made to `https://auth.upsun.com/oauth2/token`.\n\nThe request will look like this in cURL:\n\n<pre>\ncurl -u platform-api-user: \\\n -d 'grant_type=api_token&api_token=<em><b>API_TOKEN</b></em>' \\\n https://auth.upsun.com/oauth2/token\n</pre>\n\nThis will return a \"Bearer\" access token that\ncan be used to authenticate further API requests, for example:\n\n<pre>\n{\n \"access_token\": \"<em><b>abcdefghij1234567890</b></em>\",\n \"expires_in\": 900,\n \"token_type\": \"bearer\"\n}\n</pre>\n\n### Using the Access Token\n\nTo authenticate further API requests, include this returned bearer token\nin the `Authorization` header. For example, to retrieve a list of\n[Projects](#tag/Project)\naccessible by the current user, you can make the following request\n(substituting the dummy token for your own):\n\n<pre>\ncurl -H \"Authorization: Bearer <em><b>abcdefghij1234567890</b></em>\" \\\n https://api.upsun.com/projects\n</pre>\n\n# HAL Links\n\nMost endpoints in the API return fields which defines a HAL\n(Hypertext Application Language) schema for the requested endpoint.\nThe particular objects returns and their contents can vary by endpoint.\nThe payload examples we give here for the requests do not show these\nelements. These links can allow you to create a fully dynamic API client\nthat does not need to hardcode any method or schema.\n\nUnless they are used for pagination we do not show the HAL links in the\npayload examples in this documentation for brevity and as their content\nis contextual (based on the permissions of the user).\n\n## _links Objects\n\nMost endpoints that respond to `GET` requests will include a `_links` object\nin their response. The `_links` object contains a key-object pair labelled `self`, which defines\ntwo further key-value pairs:\n\n* `href` - A URL string referring to the fully qualified name of the returned object. For many endpoints, this will be the direct link to the API endpoint on the region gateway, rather than on the general API gateway. This means it may reference a host of, for example, `eu-2.platform.sh` rather than `api.upsun.com`.\n* `meta` - An object defining the OpenAPI Specification (OAS) [schema object](https://swagger.io/specification/#schemaObject) of the component returned by the endpoint.\n\nThere may be zero or more other fields in the `_links` object resembling fragment identifiers\nbeginning with a hash mark, e.g. `#edit` or `#delete`. Each of these keys\nrefers to a JSON object containing two key-value pairs:\n\n* `href` - A URL string referring to the path name of endpoint which can perform the action named in the key.\n* `meta` - An object defining the OAS schema of the endpoint. This consists of a key-value pair, with the key defining an HTTP method and the value defining the [operation object](https://swagger.io/specification/#operationObject) of the endpoint.\n\nTo use one of these HAL links, you must send a new request to the URL defined\nin the `href` field which contains a body defined the schema object in the `meta` field.\n\nFor example, if you make a request such as `GET /projects/abcdefghij1234567890`, the `_links`\nobject in the returned response will include the key `#delete`. That object\nwill look something like this fragment:\n\n```\n\"#delete\": {\n \"href\": \"/api/projects/abcdefghij1234567890\",\n \"meta\": {\n \"delete\": {\n \"responses\": {\n . . . // Response definition omitted for space\n },\n \"parameters\": []\n }\n }\n}\n```\n\nTo use this information to delete a project, you would then send a `DELETE`\nrequest to the endpoint `https://api.upsun.com/api/projects/abcdefghij1234567890`\nwith no body or parameters to delete the project that was originally requested.\n\n## _embedded Objects\n\nRequests to endpoints which create or modify objects, such as `POST`, `PATCH`, or `DELETE`\nrequests, will include an `_embedded` key in their response. The object\nrepresented by this key will contain the created or modified object. This\nobject is identical to what would be returned by a subsequent `GET` request\nfor the object referred to by the endpoint.\n"
x-logo:
url: https://docs.upsun.com/images/upsun-api.svg
href: https://upsun.com/#section/Introduction
altText: Upsun logo
servers:
- url: '{schemes}://api.upsun.com'
description: The Upsun.com API gateway
variables:
schemes:
default: https
security:
- OAuth2: []
tags:
- name: Project Settings
description: 'These endpoints can be used to retrieve and manipulate project-level
settings. Only the `initialize` property can be set by end users. It is used
to initialize a project from an existing Git repository.
The other properties can only be set by a privileged user.
'
paths:
/projects/{projectId}/settings:
get:
parameters:
- in: path
required: true
schema:
type: string
name: projectId
operationId: get-projects-settings
responses:
default:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectSettings'
tags:
- Project Settings
summary: Get list of project settings
description: Retrieve the global settings for a project.
patch:
requestBody:
description: ''
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ProjectSettingsPatch'
parameters:
- in: path
required: true
schema:
type: string
name: projectId
operationId: update-projects-settings
responses:
default:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/AcceptedResponse'
tags:
- Project Settings
summary: Update a project setting
description: Update one or more project-level settings.
components:
schemas:
ProjectSettings:
type: object
properties:
initialize:
type: object
title: Initialization key
description: ''
product_name:
type: string
title: Product Name
description: The name of the product.
product_code:
type: string
title: Product Code
description: The lowercase ASCII code of the product.
ui_uri_template:
type: string
title: UI URI Template
description: The template of the project UI uri
variables_prefix:
type: string
title: Variables Prefix
description: The prefix of the generated environment variables.
bot_email:
type: string
title: Bot Email
description: The email of the bot.
application_config_file:
type: string
title: Application Config File
description: The name of the application-specific configuration file.
project_config_dir:
type: string
title: Project Config Directory
description: The name of the project configuration directory.
use_drupal_defaults:
type: boolean
title: Use Drupal Defaults
description: Whether to use the default Drupal-centric configuration files when missing from the repository.
use_legacy_subdomains:
type: boolean
title: Use Legacy Subdomains
description: Whether to use legacy subdomain scheme, that replaces `.` by `---` in development subdomains.
development_service_size:
type: string
enum:
- 2XL
- 4XL
- L
- M
- S
- XL
title: Development Service Size
description: The size of development services.
development_application_size:
type: string
enum:
- 2XL
- 4XL
- L
- M
- S
- XL
title: Development Application Size
description: The size of development applications.
enable_certificate_provisioning:
type: boolean
title: Enable Certificate Provisioning
description: Enable automatic certificate provisioning.
certificate_style:
type: string
enum:
- ecdsa
- rsa
title: Certificate Style
description: ''
certificate_renewal_activity:
type: boolean
title: Certificate Renewal Activity
description: Create an activity for certificate renewal
development_domain_template:
type: string
nullable: true
title: Development Domain Template
description: The template of the development domain, can include {project} and {environment} placeholders.
enable_state_api_deployments:
type: boolean
title: Enable State API Deployments
description: Enable the State API-driven deployments on regions that support them.
temporary_disk_size:
type: integer
nullable: true
title: Temporary Disk Size
description: Set the size of the temporary disk (/tmp, in MB).
local_disk_size:
type: integer
nullable: true
title: Local Disk Size
description: Set the size of the instance disk (in MB).
cron_minimum_interval:
type: integer
title: Minimum cron interval
description: Minimum interval between cron runs (in minutes)
cron_maximum_jitter:
type: integer
title: Maximum cron jitter
description: Maximum jitter inserted in cron runs (in minutes)
cron_production_expiry_interval:
type: integer
title: Cron Production Expiry Interval
description: The interval (in days) for which cron activity and logs are kept around
cron_non_production_expiry_interval:
type: integer
title: Cron Non-Production Expiry Interval
description: The interval (in days) for which cron activity and logs are kept around
concurrency_limits:
type: object
additionalProperties:
type: integer
nullable: true
title: Concurrency Limits
description: The concurrency limits applied to different kind of activities
flexible_build_cache:
type: boolean
title: Enable Flexible Build Cache
description: Enable the flexible build cache implementation
strict_configuration:
type: boolean
title: Enable Strict Configuration
description: Strict configuration validation.
has_sleepy_crons:
type: boolean
title: Enable sleepy crons.
description: ''
crons_in_git:
type: boolean
title: Enable crons from git.
description: ''
custom_error_template:
type: string
nullable: true
title: Custom error template
description: Custom error template for the router.
app_error_page_template:
type: string
nullable: true
title: Application error template
description: Custom error template for the application.
environment_name_strategy:
type: string
enum:
- hash
- name-and-hash
title: Environment Name Strategy
description: The strategy used to generate environment machine names
data_retention:
type: object
additionalProperties:
type: object
properties:
max_backups:
type: integer
title: Maximum Backups
description: The maximum number of backups per environment
default_config:
type: object
properties:
manual_count:
type: integer
title: Manual Count
description: The number of manual backups to keep.
schedule:
type: array
items:
type: object
properties:
interval:
type: string
title: Interval
description: The policy interval specification.
count:
type: integer
title: Count
description: The number of backups to keep under this interval.
required:
- interval
- count
additionalProperties: false
title: Schedule
description: The backup schedule specification.
required:
- manual_count
- schedule
additionalProperties: false
title: Default Config
description: ''
x-stability: EXPERIMENTAL
required:
- max_backups
- default_config
additionalProperties: false
nullable: true
title: Data retention configuration
description: Data retention configuration
enable_codesource_integration_push:
type: boolean
title: Enable pushing commits
description: Enable pushing commits to codesource integration.
enforce_mfa:
type: boolean
title: Enforce multi-factor authentication.
description: Enforce multi-factor authentication.
systemd:
type: boolean
title: Use systemd
description: Use systemd images.
router_gen2:
type: boolean
title: Router v2
description: Use the router v2 image.
build_resources:
type: object
properties:
cpu:
type: number
format: float
title: CPU
description: ''
memory:
type: integer
title: Memory
description: ''
required:
- cpu
- memory
additionalProperties: false
title: Build Resources
description: ''
outbound_restrictions_default_policy:
type: string
enum:
- allow
- deny
title: Outbound Restrictions Default Policy
description: The default policy for firewall outbound restrictions
self_upgrade:
type: boolean
title: Self Upgrade
description: Whether self-upgrades are enabled
self_upgrade_latest_major:
type: boolean
title: Whether to check for n+1 major version when self-upgrades are enabled
description: ''
additional_hosts:
type: object
additionalProperties:
type: string
title: Additional Hosts
description: A mapping of hostname to ip address to be added to the container's hosts file
max_allowed_routes:
type: integer
title: Maximum allowed routes
description: Maximum number of routes allowed
max_allowed_redirects_paths:
type: integer
title: Maximum allowed redirect paths
description: Maximum number of redirect paths allowed
enable_incremental_backups:
type: boolean
title: Enable incremental backups
description: Enable incremental backups on regions that support them.
sizing_api_enabled:
type: boolean
title: Enable sizing api
description: Enable sizing api.
enable_cache_grace_period:
type: boolean
title: Enable cache grace period
description: Enable cache grace period.
enable_zero_downtime_deployments:
type: boolean
title: Enable zero-downtime deployments
description: Enable zero-downtime deployments for resource-only changes.
enable_admin_agent:
type: boolean
title: Enable admin agent
description: ''
certifier_url:
type: string
title: Certifier URL
description: The certifier url
centralized_permissions:
type: boolean
title: Centralized Permissions
description: Whether centralized permissions are enabled
glue_server_max_request_size:
type: integer
title: Glue Server Max Request Size
description: Maximum size of request to glue-server (in MB)
persistent_endpoints_ssh:
type: boolean
title: Persistent Endpoints SSH
description: Enable SSH access update with persistent endpoint
persistent_endpoints_ssl_certificates:
type: boolean
title: Persistent Endpoints SSL Certificates
description: Enable SSL certificate update with persistent endpoint
enable_disk_health_monitoring:
type: boolean
title: Enable disk health monitoring
description: ''
enable_paused_environments:
type: boolean
title: Enable paused environments
description: ''
enable_unified_configuration:
type: boolean
title: Enable unified configuration files
description: ''
enable_routes_tracing:
type: boolean
title: Enable routes tracing
description: Enable tracing support in routes
image_deployment_validation:
type: boolean
title: Image Deployment Validation
description: Enable extended deployment validation by images
support_generic_images:
type: boolean
title: Support composable images
description: ''
enable_github_app_token_exchange:
type: boolean
title: Enable GitHub App token exchange
description: Enable fetching the GitHub App token from SIA.
continuous_profiling:
type: object
properties:
supported_runtimes:
type: array
items:
type: string
title: Supported runtimes
description: List of images supported for continuous profiling
required:
- supported_runtimes
additionalProperties: false
title: Continuous profiling configuration
description: The continuous profiling configuration
disable_agent_error_reporter:
type: boolean
title: Disable agent error reporter
description: ''
requires_domain_ownership:
type: boolean
title: Require domain ownership
description: Require ownership proof before domains are added to environments.
enable_guaranteed_resources:
type: boolean
title: Enable guaranteed resources feature
description: Enable guaranteed resources feature
git_server:
type: object
properties:
push_size_hard_limit:
type: integer
title: Push Size Hard Limit
description: Push Size Reject Limit
required:
- push_size_hard_limit
additionalProperties: false
title: Git Server configuration
description: ''
activity_logs_max_size:
type: integer
title: Activity Logs Max Size
description: The maximum size of activity logs in bytes. This limit is applied on the pre-compressed log size.
allow_manual_deployments:
type: boolean
title: Allow Manual Deployments
description: If deployments can be manual, i.e. explicitly triggered by user.
allow_rolling_deployments:
type: boolean
title: Allow Rolling Deployments
description: If the project can use rolling deployments.
allow_burst:
type: boolean
title: Allow burst
description: ''
router_resources:
type: object
properties:
baseline_cpu:
type: number
format: float
title: Baseline CPU
description: Router baseline CPU for flex plan
baseline_memory:
type: integer
title: Baseline Memory
description: Router baseline memory (MB) for flex plan
max_cpu:
type: number
format: float
title: Max CPU
description: Router max CPU for flex plan
max_memory:
type: integer
title: Max Memory
description: Router max memory (MB) for flex plan
required:
- baseline_cpu
- baseline_memory
- max_cpu
- max_memory
additionalProperties: false
title: Router Resources
description: Router resource settings for flex plan
required:
- initialize
- product_name
- product_code
- ui_uri_template
- variables_prefix
- bot_email
- application_config_file
- project_config_dir
- use_drupal_defaults
- use_legacy_subdomains
- development_service_size
- development_application_size
- enable_certificate_provisioning
- certificate_style
- certificate_renewal_activity
- development_domain_template
- enable_state_api_deployments
- temporary_disk_size
- local_disk_size
- cron_minimum_interval
- cron_maximum_jitter
- cron_production_expiry_interval
- cron_non_production_expiry_interval
- concurrency_limits
- flexible_build_cache
- strict_configuration
- has_sleepy_crons
- crons_in_git
- custom_error_template
- app_error_page_template
- environment_name_strategy
- data_retention
- enable_codesource_integration_push
- enforce_mfa
- systemd
- router_gen2
- build_resources
- outbound_restrictions_default_policy
- self_upgrade
- self_upgrade_latest_major
- additional_hosts
- max_allowed_routes
- max_allowed_redirects_paths
- enable_incremental_backups
- sizing_api_enabled
- enable_cache_grace_period
- enable_zero_downtime_deployments
- enable_admin_agent
- certifier_url
- centralized_permissions
- glue_server_max_request_size
- persistent_endpoints_ssh
- persistent_endpoints_ssl_certificates
- enable_disk_health_monitoring
- enable_paused_environments
- enable_unified_configuration
- enable_routes_tracing
- image_deployment_validation
- support_generic_images
- enable_github_app_token_exchange
- continuous_profiling
- disable_agent_error_reporter
- requires_domain_ownership
- enable_guaranteed_resources
- git_server
- activity_logs_max_size
- allow_manual_deployments
- allow_rolling_deployments
- allow_burst
- router_resources
additionalProperties: false
ProjectSettingsPatch:
type: object
properties:
initialize:
type: object
title: Initialization key
description: ''
data_retention:
type: object
additionalProperties:
type: object
properties:
max_backups:
type: integer
title: Maximum Backups
description: The maximum number of backups per environment
default_config:
type: object
properties:
manual_count:
type: integer
title: Manual Count
description: The number of manual backups to keep.
schedule:
type: array
items:
type: object
properties:
interval:
type: string
title: Interval
description: The policy interval specification.
count:
type: integer
title: Count
description: The number of backups to keep under this interval.
required:
- interval
- count
additionalProperties: false
title: Schedule
description: The backup schedule specification.
additionalProperties: false
title: Default Config
description: ''
x-stability: EXPERIMENTAL
required:
- default_config
additionalProperties: false
nullable: true
title: Data retention configuration
description: Data retention configuration
build_resources:
type: object
properties:
cpu:
type: number
format: float
title: CPU
description: ''
memory:
type: integer
title: Memory
description: ''
additionalProperties: false
title: Build Resources
description: ''
additionalProperties: false
AcceptedResponse:
type: object
properties:
status:
type: string
title: Status text
description: The status text of the response
code:
type: integer
title: Status code
description: The status code of the response
required:
- status
- code
additionalProperties: false
securitySchemes:
OAuth2:
type: oauth2
flows:
authorizationCode:
tokenUrl: https://auth.api.platform.sh/oauth2/token
refreshUrl: https://auth.api.platform.sh/oauth2/token
scopes: {}
authorizationUrl: https://auth.api.platform.sh/oauth2/authorize
description: ''
OAuth2Admin:
type: oauth2
flows:
clientCredentials:
tokenUrl: https://auth.api.platform.sh/oauth2/token
refreshUrl: ''
scopes:
admin: administrative operations
description: ''
x-tagGroups:
- name: Organization Administration
tags:
- Organizations
- Organization Members
- Organization Invitations
- Organization Projects
- Add-ons
- name: Project Administration
tags:
- Project
- Domain Management
- Cert Management
- Certificate Provisioner
- Project Variables
- Repository
- Third-Party Integrations
- Support
- name: Environments
tags:
- Environment
- Environment Backups
- Environment Type
- Environment Variables
- Routing
- Source Operations
- Runtime Operations
- Deployment
- Autoscaling
- name: User Activity
tags:
- Project Activity
- Environment Activity
- name: Project Access
tags:
- Project Invitations
- Teams
- Team Access
- User Access
- name: Account Management
tags:
- API Tokens
- Connections
- MFA
- Users
- User Profiles
- SSH Keys
- Plans
- name: Billing
tags:
- Organization Management
- Subscriptions
- Orders
- Invoices
- Discounts
- Vouchers
- Records
- Profiles
- name: Global Info
tags:
- Project Discovery
- References
- Regions
- name: Internal APIs
tags:
- Project Settings
- Environment Settings
- Deployment Target
- System Information
- Container Profile