/** * This file was auto-generated by openapi-typescript. * Do not make direct changes to the file. */ export interface paths { "/organization/{id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read an organization * @description Retrieves information about the organization */ get: operations["organization:read"]; /** * Update an organization * @description Updates information for an organization */ put: operations["organization:write"]; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/account": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List accounts * @description Lists accounts inside an organization, example: `GET /account?organization_id=1234`. */ get: operations["account:list"]; put?: never; /** * Create an account * @description Creates a new account in an organization */ post: operations["account:create"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/account/{id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read an account * @description Provides information about the account */ get: operations["account:read"]; /** * Update an account * @description Updates information for the account */ put: operations["account:write"]; post?: never; /** * Delete an account * @description Remove an account by id */ delete: operations["account:delete"]; options?: never; head?: never; patch?: never; trace?: never; }; "/build": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List builds * @description Lists builds inside an application, example: `GET /build?application_id=1234`. */ get: operations["build:list"]; put?: never; /** * Create a build * @description Creates a new build for an application */ post: operations["build:create"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/build/{id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read a build * @description Provides information about the build */ get: operations["build:read"]; put?: never; post?: never; delete?: never; options?: never; head?: never; /** * Update a build * @description Updates information for a build */ patch: operations["build:update"]; trace?: never; }; "/build/{id}/asset_url": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Generate asset URL * @description Generates a URL for uploading build assets */ post: operations["build:generate-asset-url"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/namespace": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List namespaces * @description Lists namespaces inside an account, example: `GET /namespace?account_id=1234`. */ get: operations["namespace:list"]; put?: never; /** * Create a namespace * @description Create a new namespace in an existing account. */ post: operations["namespace:create"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/namespace/{id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read a namespace * @description Provides information about the namespace */ get: operations["namespace:read"]; /** * Update a namespace * @description Updates information for a namespace */ put: operations["namespace:write"]; post?: never; /** * Delete a namespace * @description Remove a namespace by id */ delete: operations["namespace:delete"]; options?: never; head?: never; patch?: never; trace?: never; }; "/application": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List applications * @description Lists applications inside a namespace, example: `GET /application?namespace_id=1234`. */ get: operations["application:list"]; put?: never; /** * Create an application * @description Create a new application in an existing namespace. */ post: operations["application:create"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/application/{id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read an application * @description Provides information about the application */ get: operations["application:read"]; /** * Update an application * @description Updates information for an application */ put: operations["application:write"]; post?: never; delete?: never; options?: never; head?: never; /** * Update an application * @description Updates information for an application */ patch: operations["application:update"]; trace?: never; }; "/dimension": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List dimensions * @description List runtime configuration dimensions by NRN */ get: operations["dimension:list"]; put?: never; /** * Create a dimension * @description Creates a dimension. */ post: operations["dimension:create"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/dimension/{id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read a dimension * @description Read a dimension */ get: operations["dimension:read"]; put?: never; post?: never; /** * Remove a dimension * @description Remove a dimension by ID. */ delete: operations["dimension:delete"]; options?: never; head?: never; /** * Update a dimension * @description Updates a runtime configuration dimension. */ patch: operations["dimension:write"]; trace?: never; }; "/dimension/value": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List dimension values * @description List dimension values by NRN */ get: operations["dimension:list-values"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/dimension/{dimensionId}/value": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Create a dimension value * @description Creates dimension value. */ post: operations["dimension:create-value"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/dimension/{dimensionId}/value/{id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read a dimension value * @description Read a dimension value */ get: operations["dimension:read-value"]; put?: never; post?: never; /** * Remove a dimension value * @description Remove a dimension value by ID. */ delete: operations["dimension:delete-value"]; options?: never; head?: never; /** * Update a dimension value * @description Updates a dimension value. */ patch: operations["dimension:write-value"]; trace?: never; }; "/release": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List releases * @description Lists releases inside an application, example: `GET /release?application_id=1234`. */ get: operations["release:list"]; put?: never; /** * Create a release * @description Create a new release in an existing application. */ post: operations["release:create"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/release/{id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read a release * @description Provides information about the release */ get: operations["release:read"]; /** * Update a release * @description Updates information for a release */ put: operations["release:write"]; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/deployment": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List deployments * @description Lists deployments that belongs to an application or scope, example: `GET /deployment?scope_id=1234`. */ get: operations["deployment:list"]; put?: never; /** * Create a deployment * @description Create a new deployment in an existing scope */ post: operations["deployment:create"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/deployment/{id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read a deployment * @description Provides information about the deployment */ get: operations["deployment:read"]; put?: never; post?: never; delete?: never; options?: never; head?: never; /** * Update a deployment * @description Updates information for a deployment */ patch: operations["deployment:write"]; trace?: never; }; "/template": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * List technology templates * @description List all technology templates available in your organization. */ get: { parameters: { query?: { /** * @description The starting point for pagination. Defaults to 0 if not provided. * @example 0 */ offset?: number; /** * @description The maximum number of results to return per page. * @example 30 */ limit?: number; /** * @description Filter by NRN. * @example organization=1:account=2:namespace=3 */ target_nrn?: string; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description The operation was successful. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["TechnologyTemplate:list"]; }; }; }; }; put?: never; /** * Create a technology template * @description Create a technology template designed to serve as a starter or skeleton for new applications */ post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["TechnologyTemplate:create"]; }; }; responses: { /** @description Technology Template created successfully. */ 200: { headers: { [name: string]: unknown; }; content?: never; }; }; }; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/template/{id}": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Read a technology template * @description Read a specific technology template. */ get: { parameters: { query?: never; header?: never; path: { /** * @description The unique ID for the technology template. * @example 123 */ id: number; }; cookie?: never; }; requestBody?: never; responses: { /** @description The operation was successful. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["TechnologyTemplate"]; }; }; }; }; put?: never; post?: never; /** * Delete a technology template * @description Deletes a specific technology template. */ delete: { parameters: { query?: never; header?: never; path: { /** * @description The unique ID for the technology template. * @example 123 */ id: number; }; cookie?: never; }; requestBody?: never; responses: { /** @description The operation was successful. */ 200: { headers: { [name: string]: unknown; }; content?: never; }; }; }; options?: never; head?: never; /** * Update a technology template * @description Updates a technology template. */ patch: { parameters: { query?: never; header?: never; path: { /** * @description The unique ID for the technology template. * @example 123 */ id: number; }; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["TechnologyTemplate:update"]; }; }; responses: { /** @description The operation was successful. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["TechnologyTemplate"]; }; }; }; }; trace?: never; }; "/asset": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Create an asset * @description After uploading our files to a URL, se can create an asset with its type so that it can be deployable through Nullplatform */ post: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": components["schemas"]["asset"]; }; }; responses: { /** @description Asset successfully created */ 200: { headers: { [name: string]: unknown; }; content?: never; }; /** @description Invalid asset parameters */ 400: { headers: { [name: string]: unknown; }; content?: never; }; }; }; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; } export type webhooks = Record; export interface components { schemas: { organization: { /** * @description A system-wide unique ID for the organization * @example 9823413412 */ id: number; /** * @description The organization name * @example Crypto Inc. */ name: string; /** * @description The organization slug * @example crypto-inc */ slug: string; /** * @example active * @enum {string} */ status: "active" | "inactive"; metadata?: components["schemas"]["MetadataComponent"]; }; account: { /** @description A system-wide unique ID for the account */ id: number; /** @description The account name */ name: string; /** @description An organization-wide unique slug for the account */ slug: string; /** @description The ID of the organization that owns this account */ organization_id: number; /** @enum {string} */ repository_provider: "github"; repository_prefix: string; /** * @description The status of the account. 'deleted' is only returned in responses to GET /account/{id}?show_deleted=true and cannot be set on write. * @enum {string} */ status: "active" | "inactive" | "deleted"; /** * Format: date-time * @description Timestamp at which the account was soft-deleted, or null if active. Only populated when requested via show_deleted=true. */ deleted_at?: string | null; metadata?: components["schemas"]["MetadataComponent"]; }; "account:write": { /** @description The name of the account */ name?: string; /** * @description Status of the organization * @enum {string} */ status?: "active" | "inactive"; }; namespace: { /** @description A system-wide unique ID for the namespace */ id: number; /** @description The namespace name */ name: string; /** @enum {string} */ status: "active" | "inactive"; /** @description An account-wide unique slug for the namespace */ slug: string; /** @description The ID of the account that owns this namespace */ account_id: number; metadata?: components["schemas"]["MetadataComponent"]; }; "namespace:create": { /** * @description The namespace name. Use it to represent a department, team, or logical unit in your organization. * @example billing */ name: string; /** * @description The ID of the account that will own this namespace * @example 1234 */ account_id: number; }; "namespace:write": { name?: string; /** @enum {string} */ status?: "active" | "inactive"; }; application: { /** * @description A system-wide unique ID for the application * @example 1234 */ id: number; /** * @description The application name * @example Billing API */ name: string; /** * @description A namespace-wide unique slug for the application * @example billing-api */ slug: string; /** * @description The ID of the namespace that owns this application * @example 2345 */ namespace_id: number; /** * @example active * @enum {string} */ status: | "pending" | "creating" | "updating" | "active" | "inactive" | "failed"; /** * @description The URL of the repository that holds this application (eg: https://github.com/myorg/myapp/) * @example https://github.com/crypto-inc/accounting-billing-api */ repository_url: string; /** * @description The folder where the application is located inside a monorepo. * @example null */ repository_app_path?: string; /** * @description True if the application shares the repository with other apps, false otherwise. * @example false */ is_mono_repo: boolean; /** * @description True if the application must be deployed immediately after being created, false otherwise. * @example false */ auto_deploy_on_creation: boolean; /** * @description The ID of the template that was used to create this application * @example 3456 */ template_id: number; metadata?: components["schemas"]["MetadataComponent"]; settings?: components["schemas"]["application:settings"]; }; "application:create": { /** * @description The application name * @example Billing API */ name: string; /** * @description The ID of the namespace that owns this application * @example 1234 */ namespace_id: number; /** * @description The URL of the repository that holds this application (eg: https://github.com/myorg/myapp/). Without template_id the repository must already exist: nullplatform provisions CI credentials into it, and a URL that does not resolve leaves the application in status 'failed'. With template_id nullplatform creates the repository from the template at this URL. * @example https://github.com/crypto-inc/accounting-billing-api */ repository_url: string; /** * @description The folder where the application is located inside a monorepo. * @example null */ repository_app_path?: string; /** * @description The ID of the template that was used to create this application * @example 2345 */ template_id?: number; /** * @description True if the application must be deployed immediately after being created, false otherwise. * @example false, */ auto_deploy_on_creation?: boolean; settings?: components["schemas"]["application:settings"]; }; "application:write": { /** * @description The application name. * Note that changing the name of the application **will not alter the slug** (otherwise running applications * and systems would lose connectivity to the running scopes). * @example Billing API */ name?: string; /** * @example active * @enum {string} */ status?: | "pending" | "creating" | "updating" | "active" | "inactive" | "failed"; /** * @description The URL of the repository that holds this application * @example https://github.com/crypto-inc/accounting-billing-api */ repository_url?: string; settings?: components["schemas"]["application:settings"]; }; /** @description Configuration settings for the application. When updating via PATCH, follows RFC 7396 (JSON Merge Patch): keys with null values are deleted, keys with non-null values are updated/created, omitted keys are preserved. */ "application:settings": { /** @description Default values for application settings. */ defaults?: { /** @description Default branch name for the application. */ branch?: string; /** @description Default environment name for the application. */ environment?: string; }; /** @description Default settings for application assets. */ asset?: { /** @description Default settings for docker server assets. */ docker_server?: { /** @description Default location for docker server assets. */ uri?: string; }; /** @description Amazon ECR settings for application assets. */ ecr?: { /** @description ECR repository URI for the application assets. */ uri?: string; /** @description ECR repository ARN for the application assets. */ arn?: string; }; }; /** @description Code repository provider configuration. */ code_repository?: { /** @description Unique identifier of the code repository specification. */ specification_id?: string; /** @description Slug of the code repository specification. */ specification_slug?: string; /** @description Display name of the code repository specification. */ specification_name?: string; /** @description Icon identifier for the code repository specification. */ specification_icon?: string; /** @description Unique identifier of the code repository provider. */ provider_id?: string; }; }; runtime_configuration_dimension: { /** * @description A system-wide unique ID representing the value * @example 1234 */ id?: number; /** @description The name of the dimension */ name?: string; /** * @description The status of this runtime configuration dimension * @example active */ status?: string; /** @description A name-derived string representing the dimension */ slug?: string; /** * @description NRN (at or below) where the dimension applies * @example organization=1:account=2:namespace=3:application=4 */ nrn?: string; /** @description The priority this dimension will have whenever runtime configuration values are merged (lower prelates higher numbers) */ order?: number; /** @description The values available for this dimension */ values?: components["schemas"]["runtime_configuration_dimension_value"]; }; "runtime_configuration_dimension:create": { /** * @description The name of the dimension * @example environment */ name?: string; /** * @description NRN (at or below) where the dimension applies * @example organization=1:account=2:namespace=3:application=4 */ nrn?: string; /** * @description The priority this dimension will have whenever runtime configuration values are merged (lower prelates higher numbers) * @example 1 */ order?: number; }; "runtime_configuration_dimension:write": { /** @enum {string} */ status?: "active" | "inactive"; /** * @description The priority this dimension will have whenever runtime configuration values are merged (lower prelates higher numbers) * @example 1 */ order?: number; }; runtime_configuration_dimension_list: { paging?: { /** @description The start of the paging window. Minimum is 0. */ offset?: number; /** @description Maximum number of elements to retrieve per call. Maximum is 200. */ limit?: number; /** @description Total number of elements that can be retrieved */ total?: number; }; results?: components["schemas"]["runtime_configuration_dimension"][]; }; runtime_configuration_dimension_value_list: { paging?: { /** @description The start of the paging window. Minimum is 0. */ offset?: number; /** @description Maximum number of elements to retrieve per call. Maximum is 200. */ limit?: number; /** @description Total number of elements that can be retrieved. */ total?: number; }; results?: { /** * @description A system-wide unique ID representing the value. * @example 1234 */ id?: number; /** @description The name of the dimension value. */ name?: string; /** * @description The status of this runtime configuration dimension value. * @example active */ status?: string; /** @description A string representing the dimension value. */ slug?: string; /** * @description NRN (at or below) where the dimension value applies. * @example organization=1:account=2:namespace=3:application=4 */ nrn?: string; }[]; }; runtime_configuration_dimension_value: { /** * @description A system-wide unique ID representing the value * @example 1234 */ id?: number; /** @description The name of the dimension value */ name?: string; /** * @description The status of this runtime configuration dimension value * @example active */ status?: string; /** @description A string representing the dimension value */ slug?: string; /** * @description NRN (at or below) where the dimension value applies * @example organization=1:account=2:namespace=3:application=4 */ nrn?: string; }; "runtime_configuration_dimension_value:create": { /** * @description The name of the dimension value * @example development */ name?: string; /** * @description NRN (at or below) where the dimension value applies * @example organization=1:account=2:namespace=3:application=4 */ nrn?: string; }; "runtime_configuration_dimension_value:write": { /** * @description The name of the dimension value * @example development */ name?: string; /** * @example active * @enum {string} */ status?: "active" | "inactive"; }; release: { /** * @description A system-wide unique ID for the release * @example 11223344 */ id: number; semver: components["schemas"]["semver"]; /** * @description The ID of the build that will be released * @example 12345123 */ buildId: number; status: components["schemas"]["release:status"]; asset: components["schemas"]["asset"]; created_at: components["schemas"]["date"]; updated_at: components["schemas"]["date"]; }; "release:create": { status: components["schemas"]["release:status"]; /** * @description The ID of the build to which this release belongs * @example 12341234 */ build_id: number; /** * @description The ID of the application to which this release belongs * @example 43214321 */ application_id: number; semver: components["schemas"]["semver"]; }; "release:write": { status?: components["schemas"]["release:status"]; asset?: components["schemas"]["asset"]; }; "release:read": { /** * @description A system-wide unique ID for the release * @example 11223344 */ id: number; semver: components["schemas"]["semver"]; /** * @description The ID of the build that will be released * @example 12345123 */ buildId: number; status: components["schemas"]["release:status"]; asset: components["schemas"]["asset"]; created_at: components["schemas"]["date"]; updated_at: components["schemas"]["date"]; }; /** @example active */ "release:status": ("active" | "pending" | "deprecated" | "failed")[]; "deployment:create": { scope_id: number; release_id: number; }; "deployment:write": { status?: string; strategy_data?: { /** @description Percentage of desired traffic going to the new version */ desired_switched_traffic?: number; }; }; deployment: { id: number; scope_id: number; release_id: number; status: string; status_in_scope?: string; strategy: string; strategy_data: { switched_traffic?: number; desired_switched_traffic?: number; amount_instances_to_wait?: number; healthy_instances?: number; launched_instances?: number; switch_traffic_step?: boolean; }; /** Format: date-time */ created_at: string; /** Format: date-time */ updated_at: string; messages: components["schemas"]["deployment:message"][]; deployment_token: string; nrn: string; }; "deployment:message": { level: string; message: string; code?: string; timestamp: number; }; /** * @description ISO 8859 UTC date representing when the entity was created * @example 2022-09-06T07:56:50.071Z */ date: string; /** * @description A "semantic version"-compatible identifier * @example 1.0.1-rc1 */ semver: string; asset: { /** * @description A system-wide unique ID for the asset * @example 11223344 */ id: number; /** * @description The build to which this asset belongs to * @example 11223344 */ buildId: number; /** @description A string identifying the asset type */ type: string; /** @description To string to easily identify our asset */ name?: string; /** @description A URL locator for the asset */ url: string; /** @description Arbitrary data that acts as companion for this resource */ metadata: string; }; Organizations: components["schemas"]["organization"][]; Error: { /** Format: int32 */ code: number; message: string; }; /** @enum {string} */ ActiveInactiveStatus: "active" | "inactive"; List: { paging: { offset: number; limit: number; }; results: Record[]; }; "TechnologyTemplate:list": components["schemas"]["TechnologyTemplate"][]; /** * @example { * "name": "Next.JS 13", * "organization": 9481245653, * "account": 2345431135, * "status": "active", * "url": "https://github.com/nullplatform/technology-templates-nextjs", * "provider": { * "repository": "technology-templates-nextjs" * }, * "components": [ * { * "type": "language", * "id": "javascript", * "version": "es6" * }, * { * "type": "framework", * "id": "next.js", * "version": "13" * } * ], * "rules": { * "application_name": "^(.*)-api$", * "repository_path": "s/^(.*)-(.*)$/${namespace.slug}/${2}/nextjs/${1}/g" * }, * "tags": [ * "javascript", * "frontend", * "nextjs" * ] * } */ TechnologyTemplate: { /** @description The name of the template (e.g., node, java-spring, go, kotlin-ktor) */ name: string; /** @description The URL of the template on the repository */ url: string; provider: { /** @description The repository name within the provider. (e.g. if URL is https://github.com/nullplatform/technology-templates-nginx then repository should be: technology-templates-nginx) */ repository?: string; }; /** @description The organization ID */ organization: number; /** @description The account ID */ account?: number; /** @description The status of the template (e.g., active, inactive) */ status?: string; components?: components["schemas"]["TemplateComponent"][]; /** @description Tags associated with the template (e.g., node, nextjs, frontend) */ tags?: string[]; rules?: components["schemas"]["TemplateRules"]; }; /** * @description The metadata loaded via metadata api * @example { * "key": "value" * } */ MetadataComponent: { /** @description The key of the metadata */ key?: string; /** @description The value of the metadata */ value?: string; /** @description Additional properties of the metadata */ additional_properties?: { /** @description The json schemas of the metadata */ schemas?: unknown[]; tags?: { key?: string; value?: string; }[]; }; }; /** * @example { * "name": "Next.JS 13", * "organization": 234, * "account": 345, * "status": "active", * "url": "https://github.com/nullplatform/technology-templates-nextjs", * "provider": { * "repository": "technology-templates-nextjs" * }, * "components": [ * { * "type": "language", * "id": "javascript", * "version": "es6" * }, * { * "type": "framework", * "id": "next.js", * "version": "13" * } * ], * "rules": { * "application_name": "^(.*)-api$", * "repository_path": "s/^(.*)-(.*)$/${namespace.slug}-golang-${1}-${2}/g" * }, * "tags": [ * "javascript", * "frontend", * "nextjs" * ], * "metadata": { * "key": "value", * "schemas": [ * { * "schema": "schema1" * }, * { * "schema": "schema2" * } * ], * "tags": [ * { * "key": "tag1", * "value": "value1" * }, * { * "key": "tag2", * "value": "value2" * } * ] * } * } */ "TechnologyTemplate:update": { /** * @description The name of the technology template (e.g., node, java-spring, go, kotlin-ktor). * @example Next.JS 13 template */ name?: string; /** * @description The URL of the template in the repository. * @example https://github.com/nullplatform/technology-templates-nextjs */ url?: string; provider?: { /** * @description The name of the repository within the provider. * * > For example, if the URL is `https://github.com/nullplatform/technology-templates-nextjs`, * the repository name should be `technology-templates-nextjs`. * @example technology-templates-nextjs */ repository?: string; }; /** * @description The ID of the organization. * @example 234 */ organization?: number; /** * @description The ID of account. * @example 345 */ account?: number; /** * @description The status of the template. * @example active * @enum {string} */ status?: "active" | "inactive"; /** @description The components of the template. */ components?: components["schemas"]["TemplateComponent"][]; /** * @description Tags associated with the template (e.g., node, nextjs, frontend) * @example frontend */ tags?: string[]; /** @description Defines rules for enforcing naming conventions and structuring repository paths. */ rules?: Record; metadata?: components["schemas"]["MetadataComponent"]; }; /** * @example { * "name": "Next.JS 13", * "organization": 234, * "account": 345, * "status": "active", * "url": "https://github.com/nullplatform/technology-templates-nextjs", * "provider": { * "repository": "technology-templates-nextjs" * }, * "components": [ * { * "type": "language", * "id": "javascript", * "version": "es6" * }, * { * "type": "framework", * "id": "next.js", * "version": "13" * } * ], * "rules": { * "application_name": "^(.*)-api$", * "repository_path": "s/^(.*)-(.*)$/${namespace.slug}-golang-${1}-${2}/g" * }, * "tags": [ * "javascript", * "frontend", * "nextjs" * ] * } */ "TechnologyTemplate:create": { /** * @description The name of the technology template (e.g., node, java-spring, go, kotlin-ktor). * @example Next.JS 13 template */ name: string; /** * @description The URL of the template in the repository. * @example https://github.com/nullplatform/technology-templates-nextjs */ url: string; provider: { /** * @description The name of the repository within the provider. * * > For example, if the URL is `https://github.com/nullplatform/technology-templates-nextjs`, * the repository name should be `technology-templates-nextjs`. * @example technology-templates-nextjs */ repository?: string; }; /** * @description The ID of the organization. * @example 234 */ organization: number; /** * @description The ID of account. * @example 345 */ account?: number; /** * @description The status of the template. * @example active * @enum {string} */ status?: "active" | "inactive"; /** @description The components of the template. */ components?: components["schemas"]["TemplateComponent"][]; /** * @description Tags associated with the template (e.g., node, nextjs, frontend) * @example frontend */ tags?: string[]; /** @description Defines rules for enforcing naming conventions and structuring repository paths. */ rules?: Record; }; TemplateComponent: { /** @description The type of component (e.g., language, framework) */ type?: string; /** @description The ID of the component (e.g., javascript, golang, java) */ id?: string; /** @description The version of the component (e.g., 20.2, 1.18, 17) */ version?: string; }; TemplateRules: { /** * Format: regex * @description A regular expression pattern used to validate the format of the application name. This field allows you to define naming conventions for applications, ensuring consistency across repository naming. For example, to require the application name to end with `-api`, use a pattern like `^(.*)-api$`. * @example ^(.*)-api$ */ application_name?: string; /** * Format: regex * @description A substitution expression defining the custom structure of the repository path based on matched groups from the application name. This field uses a syntax similar to `sed` substitution (`s/regex/replacement/flags`), enabling you to dynamically construct repository paths. For instance, to rearrange parts of the application name with a new directory structure, use a pattern like `s/^(.*)-(.*)$/${namespace.slug}/${2}/golang/${1}/g`. * @example s/^(.*)-(.*)$/${namespace.slug}/${2}/golang/${1}/g */ repository_path?: string; }; /** @description A build of an application (patched in: the upstream spec references it without defining it). */ build: { id?: number; status?: string; application_id?: number; commit?: { [key: string]: unknown; }; assets?: { [key: string]: unknown; }[]; } & { [key: string]: unknown; }; "build:write": { [key: string]: unknown; }; }; responses: never; parameters: { /** * @description Comma-separated properties that should be included in the metadata response. Available values: [schemas, tags]. * @example schemas,tags */ metadataIncludes: string; /** @description The start of the paging window. Minimum is 0. */ offsetParam: number; /** @description Maximum number of elements to retrieve per call. Maximum is 200. */ limitParam: number; }; requestBodies: never; headers: never; pathItems: never; } export type $defs = Record; export interface operations { "organization:read": { parameters: { query?: { /** * @description Comma-separated properties that should be included in the metadata response. Available values: [schemas, tags]. * @example schemas,tags */ metadata_include?: components["parameters"]["metadataIncludes"]; }; header?: never; path: { /** @description The ID of the organization to read */ id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description An object representing the organization */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["organization"]; }; }; }; }; "organization:write": { parameters: { query?: never; header?: never; path: { /** @description The ID of the organization to update */ id: string; }; cookie?: never; }; requestBody?: { content: { "application/json": { /** @description The name of the organization */ name?: string; /** @description Status of the organization */ status?: components["schemas"]["ActiveInactiveStatus"]; }; }; }; responses: { /** @description The operation was successful */ 204: { headers: { [name: string]: unknown; }; content?: never; }; }; }; "account:list": { parameters: { query?: { /** @description The start of the paging window. Minimum is 0. */ offset?: number; /** @description Maximum number of elements to retrieve per call. Maximum is 200. */ limit?: number; }; header?: never; path: { /** @description the organization for the account we're listing */ organization_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description The list of accounts matching the query */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["List"]; }; }; }; }; "account:create": { parameters: { query: { /** @description The organization ID where the account will be created */ organization_id: string; }; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": { /** * @description The name of the account * @example Development Account */ name: string; /** * @description A description for the account * @example Account for development team */ description?: string; }; }; }; responses: { /** @description The created account */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["account"]; }; }; }; }; "account:read": { parameters: { query?: { /** @description When true, returns the account even if it has been soft-deleted. Soft-deleted accounts are identified by a non-null deleted_at field. */ show_deleted?: boolean; }; header?: never; path: { /** @description The ID of the account to read */ id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description An object representing the account */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["account"]; }; }; }; }; "account:write": { parameters: { query?: never; header?: never; path: { /** @description The ID of the account */ id: string; }; cookie?: never; }; requestBody?: { content: { "application/json": components["schemas"]["account:write"]; }; }; responses: { /** @description The operation was successful */ 204: { headers: { [name: string]: unknown; }; content?: never; }; }; }; "account:delete": { parameters: { query?: never; header?: never; path: { /** @description The ID of the account to delete */ id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description The operation was successful */ 200: { headers: { [name: string]: unknown; }; content?: never; }; /** @description The account has associated namespaces */ 400: { headers: { [name: string]: unknown; }; content?: never; }; }; }; "build:list": { parameters: { query?: { /** @description The application ID to filter builds */ application_id?: string; /** @description Filter by commit ID */ "commit.id"?: string; /** @description Filter by commit permalink */ "commit.permalink"?: string; /** @description Filter by build description */ description?: string; /** @description Filter by branch name */ branch?: string; /** @description The start of the paging window. Minimum is 0. */ offset?: number; /** @description Maximum number of elements to retrieve per call. Maximum is 200. */ limit?: number; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description The list of builds matching the query */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["List"]; }; }; }; }; "build:create": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody: { content: { "application/json": { /** @description The ID of the application this build belongs to */ application_id: number; commit?: { /** @description The commit ID */ id?: string; /** @description The commit permalink URL */ permalink?: string; }; /** @description Description of the build */ description?: string; /** @description The branch name */ branch?: string; }; }; }; responses: { /** @description The created build */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["build"]; }; }; }; }; "build:read": { parameters: { query?: never; header?: never; path: { /** @description The ID of the build to read */ id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description An object representing the build */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["build"]; }; }; }; }; "build:update": { parameters: { query?: never; header?: never; path: { /** @description The ID of the build to update */ id: string; }; cookie?: never; }; requestBody?: { content: { "application/json": components["schemas"]["build:write"]; }; }; responses: { /** @description The operation was successful */ 204: { headers: { [name: string]: unknown; }; content?: never; }; }; }; "build:generate-asset-url": { parameters: { query?: never; header?: never; path: { /** @description The ID of the build */ id: string; }; cookie?: never; }; requestBody: { content: { "application/json": { /** @description The name of the asset */ name: string; /** @description The type of the asset */ type: string; }; }; }; responses: { /** @description The generated asset URL */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @description The URL where the asset can be uploaded */ asset_url?: string; }; }; }; }; }; "namespace:list": { parameters: { query?: { /** @description The start of the paging window. Minimum is 0. */ offset?: number; /** @description Maximum number of elements to retrieve per call. Maximum is 200. */ limit?: number; }; header?: never; path: { /** @description the account for the namespaces we're listing, allows up to 10 comma separated values */ account_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description The list of namespaces matching the query */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["List"]; }; }; }; }; "namespace:create": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: { content: { "application/json": components["schemas"]["namespace:create"]; }; }; responses: { /** @description The operation was successful */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["namespace"]; }; }; }; }; "namespace:read": { parameters: { query?: never; header?: never; path: { /** @description The ID of the namespace to read */ id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description An object representing the namespace */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["namespace"]; }; }; }; }; "namespace:write": { parameters: { query?: never; header?: never; path: { /** @description The ID of the namespace to update */ id: string; }; cookie?: never; }; requestBody?: { content: { "application/json": components["schemas"]["namespace:write"]; }; }; responses: { /** @description The operation was successful */ 204: { headers: { [name: string]: unknown; }; content?: never; }; }; }; "namespace:delete": { parameters: { query?: never; header?: never; path: { /** @description The ID of the namespace to delete */ id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description The operation was successful */ 200: { headers: { [name: string]: unknown; }; content?: never; }; /** @description The namespace has associated applications */ 400: { headers: { [name: string]: unknown; }; content?: never; }; }; }; "application:list": { parameters: { query?: { /** @description The start of the paging window. Minimum is 0. */ offset?: number; /** @description Maximum number of elements to retrieve per call. Maximum is 200. */ limit?: number; }; header?: never; path: { /** @description Narrow the result to one or more namespaces (up to 10 comma-separated values). With no filter, returns every application you can read. Get one from 'np namespace list'. */ namespace_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description The list of applications matching the query */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["List"]; }; }; }; }; "application:create": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: { content: { "application/json": components["schemas"]["application:create"]; }; }; responses: { /** @description The operation was successful */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["application"]; }; }; }; }; "application:read": { parameters: { query?: never; header?: never; path: { /** @description The ID of the application to read */ id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description An object representing the application */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["application"]; }; }; }; }; "application:write": { parameters: { query?: never; header?: never; path: { /** @description The ID of the application to update */ id: string; }; cookie?: never; }; requestBody?: { content: { "application/json": components["schemas"]["application:write"]; }; }; responses: { /** @description The operation was successful */ 204: { headers: { [name: string]: unknown; }; content?: never; }; }; }; "application:update": { parameters: { query?: never; header?: never; path: { /** @description The ID of the application to update */ id: string; }; cookie?: never; }; requestBody?: { content: { "application/json": components["schemas"]["application:write"]; }; }; responses: { /** @description The operation was successful */ 204: { headers: { [name: string]: unknown; }; content?: never; }; }; }; "dimension:list": { parameters: { query: { /** @description Use this parameters to filter by NRN that are at or above the one you're specifying. Format: organization=1:account=2:namespace=3:application=4:scope=5 (trailing levels optional). Read one from an entity's nrn field, e.g. 'np application read --id --query .nrn'. */ nrn: string; /** @description The start of the paging window. Minimum is 0. */ offset?: number; /** @description Maximum number of elements to retrieve per call. Maximum is 200. */ limit?: number; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["runtime_configuration_dimension_list"]; }; }; }; }; "dimension:create": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: { content: { "application/json": components["schemas"]["runtime_configuration_dimension:create"]; }; }; responses: { /** @description The operation was successful */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["runtime_configuration_dimension"]; }; }; }; }; "dimension:read": { parameters: { query?: never; header?: never; path: { /** @description The ID of the dimension to read */ id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Dimension */ 200: { headers: { [name: string]: unknown; }; content: { /** * @example { * "name": "Environment", * "nrn": "organization=4", * "order": 1 * } */ "application/json": components["schemas"]["runtime_configuration_dimension"]; }; }; }; }; "dimension:delete": { parameters: { query?: never; header?: never; path: { /** @description The ID of the dimension to delete */ id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description The operation was successful */ 204: { headers: { [name: string]: unknown; }; content?: never; }; }; }; "dimension:write": { parameters: { query?: never; header?: never; path: { /** @description The ID of the dimension to update */ id: string; }; cookie?: never; }; requestBody?: { content: { "application/json": components["schemas"]["runtime_configuration_dimension:write"]; }; }; responses: { /** @description The operation was successful */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["runtime_configuration_dimension"]; }; }; }; }; "dimension:list-values": { parameters: { query: { /** @description Use this parameter to filter by NRN that are at or above the one you're specifying. Format: organization=1:account=2:namespace=3:application=4:scope=5 (trailing levels optional). Read one from an entity's nrn field, e.g. 'np application read --id --query .nrn'. */ nrn: string; /** @description The start of the paging window. Minimum is 0. */ offset?: number; /** @description Maximum number of elements to retrieve per call. Maximum is 200. */ limit?: number; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Parameters */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["runtime_configuration_dimension_value_list"]; }; }; }; }; "dimension:create-value": { parameters: { query?: never; header?: never; path: { /** @description The ID of the dimension to create the value for */ dimensionId: string; }; cookie?: never; }; requestBody?: { content: { "application/json": components["schemas"]["runtime_configuration_dimension_value:create"]; }; }; responses: { /** @description The operation was successful */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["runtime_configuration_dimension_value"]; }; }; }; }; "dimension:read-value": { parameters: { query?: never; header?: never; path: { /** @description The ID of the dimension */ dimensionId: string; /** @description The ID of the dimension value */ id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description Runtime configuration */ 200: { headers: { [name: string]: unknown; }; content: { /** * @example { * "id": 1234, * "name": "development", * "status": "active", * "slug": "development", * "nrn": "organization=1:account=2:namespace=3" * } */ "application/json": components["schemas"]["runtime_configuration_dimension_value"]; }; }; }; }; "dimension:delete-value": { parameters: { query?: never; header?: never; path: { /** @description The ID of the dimension */ dimensionId: string; /** @description The ID of the dimension value to delete */ id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description The operation was successful */ 204: { headers: { [name: string]: unknown; }; content?: never; }; }; }; "dimension:write-value": { parameters: { query?: never; header?: never; path: { /** @description The ID of the dimension */ dimensionId: string; /** @description The ID of the dimension value to update */ id: string; }; cookie?: never; }; requestBody?: { content: { "application/json": components["schemas"]["runtime_configuration_dimension_value:write"]; }; }; responses: { /** @description The operation was successful */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["runtime_configuration_dimension_value"]; }; }; }; }; "release:list": { parameters: { query?: { /** @description The start of the paging window. Minimum is 0. */ offset?: number; /** @description Maximum number of elements to retrieve per call. Maximum is 200. */ limit?: number; }; header?: never; path: { /** @description the application for the releases we're listing, allows up to 10 comma separated values */ application_id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description The list of releases matching the query */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["List"]; }; }; }; }; "release:create": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: { content: { "application/json": components["schemas"]["release:create"]; }; }; responses: { /** @description The operation was successful */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["release"]; }; }; }; }; "release:read": { parameters: { query?: never; header?: never; path: { /** @description The ID of the release to read */ id: string; }; cookie?: never; }; requestBody?: never; responses: { /** @description An object representing the release */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["release"]; }; }; }; }; "release:write": { parameters: { query?: never; header?: never; path: { /** @description The ID of the release to update */ id: string; }; cookie?: never; }; requestBody?: { content: { "application/json": components["schemas"]["release:write"]; }; }; responses: { /** @description The operation was successful */ 204: { headers: { [name: string]: unknown; }; content?: never; }; }; }; "deployment:list": { parameters: { query?: { /** @description The start of the paging window. Minimum is 0. */ offset?: number; /** @description Maximum number of elements to retrieve per call. Maximum is 200. */ limit?: number; status_in_scope?: "active" | "inactive" | "candidate"; }; header?: never; path: { /** @description the scope for the deployment we're listing, allows up to 10 comma separated values */ scope_id: string; /** @description the application for the deployment we're listing, allows up to 1 value */ application_id: string; /** @description If true, messages will be added to the response */ include_messages: boolean; }; cookie?: never; }; requestBody?: never; responses: { /** @description The list of releases matching the query */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["List"]; }; }; }; }; "deployment:create": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: { content: { "application/json": components["schemas"]["deployment:create"]; }; }; responses: { /** @description The operation was successful */ 201: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["deployment"]; }; }; }; }; "deployment:read": { parameters: { query?: never; header?: never; path: { /** @description The ID of the deployment to read */ id: string; /** @description If true, messages will be added to the response */ include_messages: boolean; }; cookie?: never; }; requestBody?: never; responses: { /** @description An object representing the deployment */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["deployment"]; }; }; }; }; "deployment:write": { parameters: { query?: never; header?: never; path: { /** @description The ID of the deployment to update */ id: string; }; cookie?: never; }; requestBody?: { content: { "application/json": components["schemas"]["deployment:write"]; }; }; responses: { /** @description The operation was successful */ 204: { headers: { [name: string]: unknown; }; content?: never; }; }; }; }