diff --git a/spec/openapi.infra.yaml b/spec/openapi.infra.yaml index 8979f5ee5..f49e8f789 100644 --- a/spec/openapi.infra.yaml +++ b/spec/openapi.infra.yaml @@ -75,6 +75,13 @@ components: required: true schema: type: string + tag: + name: tag + in: path + required: true + schema: + type: string + description: Tag name paginationLimit: name: limit in: query @@ -95,42 +102,42 @@ components: type: string responses: - "400": + '400': description: Bad request content: application/json: schema: - $ref: "#/components/schemas/Error" - "401": + $ref: '#/components/schemas/Error' + '401': description: Authentication error content: application/json: schema: - $ref: "#/components/schemas/Error" - "403": + $ref: '#/components/schemas/Error' + '403': description: Forbidden content: application/json: schema: - $ref: "#/components/schemas/Error" - "404": + $ref: '#/components/schemas/Error' + '404': description: Not found content: application/json: schema: - $ref: "#/components/schemas/Error" - "409": + $ref: '#/components/schemas/Error' + '409': description: Conflict content: application/json: schema: - $ref: "#/components/schemas/Error" - "500": + $ref: '#/components/schemas/Error' + '500': description: Server error content: application/json: schema: - $ref: "#/components/schemas/Error" + $ref: '#/components/schemas/Error' schemas: Team: @@ -172,6 +179,16 @@ components: type: boolean description: Whether the template is public or only accessible by the team + TemplateUpdateResponse: + required: + - names + properties: + names: + type: array + description: Names of the template (namespace/alias format when namespaced) + items: + type: string + CPUCount: type: integer format: int32 @@ -267,7 +284,7 @@ components: type: string description: Log message content level: - $ref: "#/components/schemas/LogLevel" + $ref: '#/components/schemas/LogLevel' fields: type: object additionalProperties: @@ -282,12 +299,12 @@ components: description: Logs of the sandbox type: array items: - $ref: "#/components/schemas/SandboxLog" + $ref: '#/components/schemas/SandboxLog' logEntries: description: Structured logs of the sandbox type: array items: - $ref: "#/components/schemas/SandboxLogEntry" + $ref: '#/components/schemas/SandboxLogEntry' SandboxMetric: description: Metric entry with timestamp and line @@ -356,7 +373,7 @@ components: deprecated: true description: Identifier of the client envdVersion: - $ref: "#/components/schemas/EnvdVersion" + $ref: '#/components/schemas/EnvdVersion' envdAccessToken: type: string description: Access token used for envd communication @@ -404,7 +421,7 @@ components: format: date-time description: Time when the sandbox will expire envdVersion: - $ref: "#/components/schemas/EnvdVersion" + $ref: '#/components/schemas/EnvdVersion' envdAccessToken: type: string description: Access token used for envd communication @@ -413,15 +430,15 @@ components: nullable: true description: Base domain where the sandbox traffic is accessible cpuCount: - $ref: "#/components/schemas/CPUCount" + $ref: '#/components/schemas/CPUCount' memoryMB: - $ref: "#/components/schemas/MemoryMB" + $ref: '#/components/schemas/MemoryMB' diskSizeMB: - $ref: "#/components/schemas/DiskSizeMB" + $ref: '#/components/schemas/DiskSizeMB' metadata: - $ref: "#/components/schemas/SandboxMetadata" + $ref: '#/components/schemas/SandboxMetadata' state: - $ref: "#/components/schemas/SandboxState" + $ref: '#/components/schemas/SandboxState' ListedSandbox: required: @@ -458,17 +475,17 @@ components: format: date-time description: Time when the sandbox will expire cpuCount: - $ref: "#/components/schemas/CPUCount" + $ref: '#/components/schemas/CPUCount' memoryMB: - $ref: "#/components/schemas/MemoryMB" + $ref: '#/components/schemas/MemoryMB' diskSizeMB: - $ref: "#/components/schemas/DiskSizeMB" + $ref: '#/components/schemas/DiskSizeMB' metadata: - $ref: "#/components/schemas/SandboxMetadata" + $ref: '#/components/schemas/SandboxMetadata' state: - $ref: "#/components/schemas/SandboxState" + $ref: '#/components/schemas/SandboxState' envdVersion: - $ref: "#/components/schemas/EnvdVersion" + $ref: '#/components/schemas/EnvdVersion' SandboxesWithMetrics: required: @@ -476,7 +493,7 @@ components: properties: sandboxes: additionalProperties: - $ref: "#/components/schemas/SandboxMetric" + $ref: '#/components/schemas/SandboxMetric' NewSandbox: required: @@ -504,13 +521,13 @@ components: Allow sandbox to access the internet. When set to false, it behaves the same as specifying denyOut to 0.0.0.0/0 in the network config. network: - $ref: "#/components/schemas/SandboxNetworkConfig" + $ref: '#/components/schemas/SandboxNetworkConfig' metadata: - $ref: "#/components/schemas/SandboxMetadata" + $ref: '#/components/schemas/SandboxMetadata' envVars: - $ref: "#/components/schemas/EnvVars" + $ref: '#/components/schemas/EnvVars' mcp: - $ref: "#/components/schemas/Mcp" + $ref: '#/components/schemas/Mcp' ResumedSandbox: properties: @@ -610,6 +627,7 @@ components: - buildCount - envdVersion - aliases + - names - buildStatus properties: templateID: @@ -619,17 +637,23 @@ components: type: string description: Identifier of the last successful build for given template cpuCount: - $ref: "#/components/schemas/CPUCount" + $ref: '#/components/schemas/CPUCount' memoryMB: - $ref: "#/components/schemas/MemoryMB" + $ref: '#/components/schemas/MemoryMB' diskSizeMB: - $ref: "#/components/schemas/DiskSizeMB" + $ref: '#/components/schemas/DiskSizeMB' public: type: boolean description: Whether the template is public or only accessible by the team aliases: type: array description: Aliases of the template + deprecated: true + items: + type: string + names: + type: array + description: Names of the template (namespace/alias format when namespaced) items: type: string createdAt: @@ -642,7 +666,7 @@ components: description: Time when the template was last updated createdBy: allOf: - - $ref: "#/components/schemas/TeamUser" + - $ref: '#/components/schemas/TeamUser' nullable: true lastSpawnedAt: type: string @@ -658,9 +682,9 @@ components: format: int32 description: Number of times the template was built envdVersion: - $ref: "#/components/schemas/EnvdVersion" + $ref: '#/components/schemas/EnvdVersion' buildStatus: - $ref: "#/components/schemas/TemplateBuildStatus" + $ref: '#/components/schemas/TemplateBuildStatus' TemplateRequestResponseV3: required: @@ -668,6 +692,8 @@ components: - buildID - public - aliases + - names + - tags properties: templateID: type: string @@ -678,9 +704,20 @@ components: public: type: boolean description: Whether the template is public or only accessible by the team + names: + type: array + description: Names of the template + items: + type: string + tags: + type: array + description: Tags assigned to the template build + items: + type: string aliases: type: array description: Aliases of the template + deprecated: true items: type: string @@ -708,11 +745,11 @@ components: type: string description: Identifier of the last successful build for given template cpuCount: - $ref: "#/components/schemas/CPUCount" + $ref: '#/components/schemas/CPUCount' memoryMB: - $ref: "#/components/schemas/MemoryMB" + $ref: '#/components/schemas/MemoryMB' diskSizeMB: - $ref: "#/components/schemas/DiskSizeMB" + $ref: '#/components/schemas/DiskSizeMB' public: type: boolean description: Whether the template is public or only accessible by the team @@ -731,7 +768,7 @@ components: description: Time when the template was last updated createdBy: allOf: - - $ref: "#/components/schemas/TeamUser" + - $ref: '#/components/schemas/TeamUser' nullable: true lastSpawnedAt: type: string @@ -747,7 +784,7 @@ components: format: int32 description: Number of times the template was built envdVersion: - $ref: "#/components/schemas/EnvdVersion" + $ref: '#/components/schemas/EnvdVersion' TemplateBuild: required: @@ -763,7 +800,7 @@ components: format: uuid description: Identifier of the build status: - $ref: "#/components/schemas/TemplateBuildStatus" + $ref: '#/components/schemas/TemplateBuildStatus' createdAt: type: string format: date-time @@ -777,19 +814,20 @@ components: format: date-time description: Time when the build was finished cpuCount: - $ref: "#/components/schemas/CPUCount" + $ref: '#/components/schemas/CPUCount' memoryMB: - $ref: "#/components/schemas/MemoryMB" + $ref: '#/components/schemas/MemoryMB' diskSizeMB: - $ref: "#/components/schemas/DiskSizeMB" + $ref: '#/components/schemas/DiskSizeMB' envdVersion: - $ref: "#/components/schemas/EnvdVersion" + $ref: '#/components/schemas/EnvdVersion' TemplateWithBuilds: required: - templateID - public - aliases + - names - createdAt - updatedAt - lastSpawnedAt @@ -805,6 +843,12 @@ components: aliases: type: array description: Aliases of the template + deprecated: true + items: + type: string + names: + type: array + description: Names of the template (namespace/alias format when namespaced) items: type: string createdAt: @@ -828,7 +872,19 @@ components: type: array description: List of builds for the template items: - $ref: "#/components/schemas/TemplateBuild" + $ref: '#/components/schemas/TemplateBuild' + + TemplateAliasResponse: + required: + - templateID + - public + properties: + templateID: + type: string + description: Identifier of the template + public: + type: boolean + description: Whether the template is public or only accessible by the team TemplateBuildRequest: required: @@ -850,9 +906,9 @@ components: description: Ready check command to execute in the template after the build type: string cpuCount: - $ref: "#/components/schemas/CPUCount" + $ref: '#/components/schemas/CPUCount' memoryMB: - $ref: "#/components/schemas/MemoryMB" + $ref: '#/components/schemas/MemoryMB' TemplateStep: description: Step in the template build process @@ -877,19 +933,27 @@ components: description: Whether the step should be forced to run regardless of the cache TemplateBuildRequestV3: - required: - - alias properties: + name: + description: Name of the template. Can include a tag with colon separator (e.g. "my-template" or "my-template:v1"). If tag is included, it will be treated as if the tag was provided in the tags array. + type: string + tags: + type: array + description: Tags to assign to the template build + items: + type: string alias: - description: Alias of the template + description: Alias of the template. Deprecated, use name instead. type: string + deprecated: true teamID: + deprecated: true type: string description: Identifier of the team cpuCount: - $ref: "#/components/schemas/CPUCount" + $ref: '#/components/schemas/CPUCount' memoryMB: - $ref: "#/components/schemas/MemoryMB" + $ref: '#/components/schemas/MemoryMB' TemplateBuildRequestV2: required: @@ -899,24 +963,25 @@ components: description: Alias of the template type: string teamID: + deprecated: true type: string description: Identifier of the team cpuCount: - $ref: "#/components/schemas/CPUCount" + $ref: '#/components/schemas/CPUCount' memoryMB: - $ref: "#/components/schemas/MemoryMB" + $ref: '#/components/schemas/MemoryMB' FromImageRegistry: oneOf: - - $ref: "#/components/schemas/AWSRegistry" - - $ref: "#/components/schemas/GCPRegistry" - - $ref: "#/components/schemas/GeneralRegistry" + - $ref: '#/components/schemas/AWSRegistry' + - $ref: '#/components/schemas/GCPRegistry' + - $ref: '#/components/schemas/GeneralRegistry' discriminator: propertyName: type mapping: - aws: "#/components/schemas/AWSRegistry" - gcp: "#/components/schemas/GCPRegistry" - registry: "#/components/schemas/GeneralRegistry" + aws: '#/components/schemas/AWSRegistry' + gcp: '#/components/schemas/GCPRegistry' + registry: '#/components/schemas/GeneralRegistry' AWSRegistry: type: object @@ -982,7 +1047,7 @@ components: type: string description: Template to use as a base for the template build fromImageRegistry: - $ref: "#/components/schemas/FromImageRegistry" + $ref: '#/components/schemas/FromImageRegistry' force: default: false type: boolean @@ -992,7 +1057,7 @@ components: description: List of steps to execute in the template build type: array items: - $ref: "#/components/schemas/TemplateStep" + $ref: '#/components/schemas/TemplateStep' startCmd: description: Start command to execute in the template after the build type: string @@ -1034,7 +1099,7 @@ components: type: string description: Log message content level: - $ref: "#/components/schemas/LogLevel" + $ref: '#/components/schemas/LogLevel' step: type: string description: Step in the build process related to the log entry @@ -1054,7 +1119,7 @@ components: description: Log entries related to the status reason type: array items: - $ref: "#/components/schemas/BuildLogEntry" + $ref: '#/components/schemas/BuildLogEntry' TemplateBuildStatus: type: string @@ -1084,7 +1149,7 @@ components: description: Build logs structured type: array items: - $ref: "#/components/schemas/BuildLogEntry" + $ref: '#/components/schemas/BuildLogEntry' templateID: type: string description: Identifier of the template @@ -1092,9 +1157,9 @@ components: type: string description: Identifier of the build status: - $ref: "#/components/schemas/TemplateBuildStatus" + $ref: '#/components/schemas/TemplateBuildStatus' reason: - $ref: "#/components/schemas/BuildStatusReason" + $ref: '#/components/schemas/BuildStatusReason' TemplateBuildLogsResponse: required: @@ -1105,7 +1170,7 @@ components: description: Build logs structured type: array items: - $ref: "#/components/schemas/BuildLogEntry" + $ref: '#/components/schemas/BuildLogEntry' LogsDirection: type: string @@ -1150,7 +1215,7 @@ components: format: uuid description: Identifier of the cluster status: - $ref: "#/components/schemas/NodeStatus" + $ref: '#/components/schemas/NodeStatus' DiskMetrics: required: @@ -1217,7 +1282,7 @@ components: type: array description: Detailed metrics for each disk/mount point items: - $ref: "#/components/schemas/DiskMetrics" + $ref: '#/components/schemas/DiskMetrics' MachineInfo: required: - cpuFamily @@ -1274,15 +1339,15 @@ components: type: string description: Identifier of the cluster machineInfo: - $ref: "#/components/schemas/MachineInfo" + $ref: '#/components/schemas/MachineInfo' status: - $ref: "#/components/schemas/NodeStatus" + $ref: '#/components/schemas/NodeStatus' sandboxCount: type: integer format: uint32 description: Number of sandboxes running on the node metrics: - $ref: "#/components/schemas/NodeMetrics" + $ref: '#/components/schemas/NodeMetrics' createSuccesses: type: integer format: uint64 @@ -1332,16 +1397,16 @@ components: deprecated: true description: Identifier of the nomad node machineInfo: - $ref: "#/components/schemas/MachineInfo" + $ref: '#/components/schemas/MachineInfo' status: - $ref: "#/components/schemas/NodeStatus" + $ref: '#/components/schemas/NodeStatus' sandboxes: type: array description: List of sandboxes running on the node items: - $ref: "#/components/schemas/ListedSandbox" + $ref: '#/components/schemas/ListedSandbox' metrics: - $ref: "#/components/schemas/NodeMetrics" + $ref: '#/components/schemas/NodeMetrics' cachedBuilds: type: array description: List of cached builds id on the node @@ -1375,7 +1440,7 @@ components: type: string description: The fully created access token mask: - $ref: "#/components/schemas/IdentifierMaskingDetails" + $ref: '#/components/schemas/IdentifierMaskingDetails' createdAt: type: string format: date-time @@ -1404,14 +1469,14 @@ components: type: string description: Name of the API key mask: - $ref: "#/components/schemas/IdentifierMaskingDetails" + $ref: '#/components/schemas/IdentifierMaskingDetails' createdAt: type: string format: date-time description: Timestamp of API key creation createdBy: allOf: - - $ref: "#/components/schemas/TeamUser" + - $ref: '#/components/schemas/TeamUser' nullable: true lastUsed: type: string @@ -1435,7 +1500,7 @@ components: type: string description: Raw value of the API key mask: - $ref: "#/components/schemas/IdentifierMaskingDetails" + $ref: '#/components/schemas/IdentifierMaskingDetails' name: type: string description: Name of the API key @@ -1445,7 +1510,7 @@ components: description: Timestamp of API key creation createdBy: allOf: - - $ref: "#/components/schemas/TeamUser" + - $ref: '#/components/schemas/TeamUser' nullable: true lastUsed: type: string @@ -1469,6 +1534,49 @@ components: type: string description: New name for the API key + AssignedTemplateTags: + required: + - tags + - buildID + properties: + tags: + type: array + items: + type: string + description: Assigned tags of the template + buildID: + type: string + format: uuid + description: Identifier of the build associated with these tags + + AssignTemplateTagsRequest: + required: + - target + - tags + properties: + target: + type: string + description: Target template in "name:tag" format + tags: + description: Tags to assign to the template + type: array + items: + type: string + + DeleteTemplateTagsRequest: + required: + - name + - tags + properties: + name: + type: string + description: Name of the template + tags: + description: Tags to delete + type: array + items: + type: string + Error: required: - code @@ -1508,16 +1616,17 @@ tags: - name: auth - name: access-tokens - name: api-keys + - name: tags paths: /health: get: description: Health check responses: - "200": + '200': description: Request was successful - "401": - $ref: "#/components/responses/401" + '401': + $ref: '#/components/responses/401' /teams: get: @@ -1527,7 +1636,7 @@ paths: - AccessTokenAuth: [] - Supabase1TokenAuth: [] responses: - "200": + '200': description: Successfully returned all teams content: application/json: @@ -1535,11 +1644,11 @@ paths: type: array items: allOf: - - $ref: "#/components/schemas/Team" - "401": - $ref: "#/components/responses/401" - "500": - $ref: "#/components/responses/500" + - $ref: '#/components/schemas/Team' + '401': + $ref: '#/components/responses/401' + '500': + $ref: '#/components/responses/500' /teams/{teamID}/metrics: get: @@ -1550,7 +1659,7 @@ paths: - Supabase1TokenAuth: [] Supabase2TeamAuth: [] parameters: - - $ref: "#/components/parameters/teamID" + - $ref: '#/components/parameters/teamID' - in: query name: start schema: @@ -1566,22 +1675,22 @@ paths: minimum: 0 description: Unix timestamp for the end of the interval, in seconds, for which the metrics responses: - "200": + '200': description: Successfully returned the team metrics content: application/json: schema: type: array items: - $ref: "#/components/schemas/TeamMetric" - "400": - $ref: "#/components/responses/400" - "401": - $ref: "#/components/responses/401" - "403": - $ref: "#/components/responses/403" - "500": - $ref: "#/components/responses/500" + $ref: '#/components/schemas/TeamMetric' + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '500': + $ref: '#/components/responses/500' /teams/{teamID}/metrics/max: get: @@ -1592,7 +1701,7 @@ paths: - Supabase1TokenAuth: [] Supabase2TeamAuth: [] parameters: - - $ref: "#/components/parameters/teamID" + - $ref: '#/components/parameters/teamID' - in: query name: start schema: @@ -1615,20 +1724,20 @@ paths: enum: [concurrent_sandboxes, sandbox_start_rate] description: Metric to retrieve the maximum value for responses: - "200": + '200': description: Successfully returned the team metrics content: application/json: schema: - $ref: "#/components/schemas/MaxTeamMetric" - "400": - $ref: "#/components/responses/400" - "401": - $ref: "#/components/responses/401" - "403": - $ref: "#/components/responses/403" - "500": - $ref: "#/components/responses/500" + $ref: '#/components/schemas/MaxTeamMetric' + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '500': + $ref: '#/components/responses/500' /sandboxes: get: @@ -1646,7 +1755,7 @@ paths: schema: type: string responses: - "200": + '200': description: Successfully returned all running sandboxes content: application/json: @@ -1654,13 +1763,13 @@ paths: type: array items: allOf: - - $ref: "#/components/schemas/ListedSandbox" - "401": - $ref: "#/components/responses/401" - "400": - $ref: "#/components/responses/400" - "500": - $ref: "#/components/responses/500" + - $ref: '#/components/schemas/ListedSandbox' + '401': + $ref: '#/components/responses/401' + '400': + $ref: '#/components/responses/400' + '500': + $ref: '#/components/responses/500' post: description: Create a sandbox from the template tags: [sandboxes] @@ -1673,20 +1782,20 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/NewSandbox" + $ref: '#/components/schemas/NewSandbox' responses: - "201": + '201': description: The sandbox was created successfully content: application/json: schema: - $ref: "#/components/schemas/Sandbox" - "401": - $ref: "#/components/responses/401" - "400": - $ref: "#/components/responses/400" - "500": - $ref: "#/components/responses/500" + $ref: '#/components/schemas/Sandbox' + '401': + $ref: '#/components/responses/401' + '400': + $ref: '#/components/responses/400' + '500': + $ref: '#/components/responses/500' /v2/sandboxes: get: @@ -1710,13 +1819,13 @@ paths: schema: type: array items: - $ref: "#/components/schemas/SandboxState" + $ref: '#/components/schemas/SandboxState' style: form explode: false - - $ref: "#/components/parameters/paginationNextToken" - - $ref: "#/components/parameters/paginationLimit" + - $ref: '#/components/parameters/paginationNextToken' + - $ref: '#/components/parameters/paginationLimit' responses: - "200": + '200': description: Successfully returned all running sandboxes content: application/json: @@ -1724,13 +1833,13 @@ paths: type: array items: allOf: - - $ref: "#/components/schemas/ListedSandbox" - "401": - $ref: "#/components/responses/401" - "400": - $ref: "#/components/responses/400" - "500": - $ref: "#/components/responses/500" + - $ref: '#/components/schemas/ListedSandbox' + '401': + $ref: '#/components/responses/401' + '400': + $ref: '#/components/responses/400' + '500': + $ref: '#/components/responses/500' /sandboxes/metrics: get: @@ -1753,18 +1862,18 @@ paths: maxItems: 100 uniqueItems: true responses: - "200": + '200': description: Successfully returned all running sandboxes with metrics content: application/json: schema: - $ref: "#/components/schemas/SandboxesWithMetrics" - "401": - $ref: "#/components/responses/401" - "400": - $ref: "#/components/responses/400" - "500": - $ref: "#/components/responses/500" + $ref: '#/components/schemas/SandboxesWithMetrics' + '401': + $ref: '#/components/responses/401' + '400': + $ref: '#/components/responses/400' + '500': + $ref: '#/components/responses/500' /sandboxes/{sandboxID}/logs: get: @@ -1775,7 +1884,7 @@ paths: - Supabase1TokenAuth: [] Supabase2TeamAuth: [] parameters: - - $ref: "#/components/parameters/sandboxID" + - $ref: '#/components/parameters/sandboxID' - in: query name: start schema: @@ -1792,18 +1901,18 @@ paths: type: integer description: Maximum number of logs that should be returned responses: - "200": + '200': description: Successfully returned the sandbox logs content: application/json: schema: - $ref: "#/components/schemas/SandboxLogs" - "404": - $ref: "#/components/responses/404" - "401": - $ref: "#/components/responses/401" - "500": - $ref: "#/components/responses/500" + $ref: '#/components/schemas/SandboxLogs' + '404': + $ref: '#/components/responses/404' + '401': + $ref: '#/components/responses/401' + '500': + $ref: '#/components/responses/500' /sandboxes/{sandboxID}: get: @@ -1814,20 +1923,20 @@ paths: - Supabase1TokenAuth: [] Supabase2TeamAuth: [] parameters: - - $ref: "#/components/parameters/sandboxID" + - $ref: '#/components/parameters/sandboxID' responses: - "200": + '200': description: Successfully returned the sandbox content: application/json: schema: - $ref: "#/components/schemas/SandboxDetail" - "404": - $ref: "#/components/responses/404" - "401": - $ref: "#/components/responses/401" - "500": - $ref: "#/components/responses/500" + $ref: '#/components/schemas/SandboxDetail' + '404': + $ref: '#/components/responses/404' + '401': + $ref: '#/components/responses/401' + '500': + $ref: '#/components/responses/500' delete: description: Kill a sandbox @@ -1837,16 +1946,16 @@ paths: - Supabase1TokenAuth: [] Supabase2TeamAuth: [] parameters: - - $ref: "#/components/parameters/sandboxID" + - $ref: '#/components/parameters/sandboxID' responses: - "204": + '204': description: The sandbox was killed successfully - "404": - $ref: "#/components/responses/404" - "401": - $ref: "#/components/responses/401" - "500": - $ref: "#/components/responses/500" + '404': + $ref: '#/components/responses/404' + '401': + $ref: '#/components/responses/401' + '500': + $ref: '#/components/responses/500' /sandboxes/{sandboxID}/metrics: get: @@ -1857,7 +1966,7 @@ paths: - Supabase1TokenAuth: [] Supabase2TeamAuth: [] parameters: - - $ref: "#/components/parameters/sandboxID" + - $ref: '#/components/parameters/sandboxID' - in: query name: start schema: @@ -1874,22 +1983,22 @@ paths: description: Unix timestamp for the end of the interval, in seconds, for which the metrics responses: - "200": + '200': description: Successfully returned the sandbox metrics content: application/json: schema: type: array items: - $ref: "#/components/schemas/SandboxMetric" - "400": - $ref: "#/components/responses/400" - "401": - $ref: "#/components/responses/401" - "404": - $ref: "#/components/responses/404" - "500": - $ref: "#/components/responses/500" + $ref: '#/components/schemas/SandboxMetric' + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' # TODO: Pause and resume might be exposed as POST /sandboxes/{sandboxID}/snapshot and then POST /sandboxes with specified snapshotting setup /sandboxes/{sandboxID}/pause: @@ -1901,18 +2010,18 @@ paths: - Supabase1TokenAuth: [] Supabase2TeamAuth: [] parameters: - - $ref: "#/components/parameters/sandboxID" + - $ref: '#/components/parameters/sandboxID' responses: - "204": + '204': description: The sandbox was paused successfully and can be resumed - "409": - $ref: "#/components/responses/409" - "404": - $ref: "#/components/responses/404" - "401": - $ref: "#/components/responses/401" - "500": - $ref: "#/components/responses/500" + '409': + $ref: '#/components/responses/409' + '404': + $ref: '#/components/responses/404' + '401': + $ref: '#/components/responses/401' + '500': + $ref: '#/components/responses/500' /sandboxes/{sandboxID}/resume: post: @@ -1924,28 +2033,28 @@ paths: - Supabase1TokenAuth: [] Supabase2TeamAuth: [] parameters: - - $ref: "#/components/parameters/sandboxID" + - $ref: '#/components/parameters/sandboxID' requestBody: required: true content: application/json: schema: - $ref: "#/components/schemas/ResumedSandbox" + $ref: '#/components/schemas/ResumedSandbox' responses: - "201": + '201': description: The sandbox was resumed successfully content: application/json: schema: - $ref: "#/components/schemas/Sandbox" - "409": - $ref: "#/components/responses/409" - "404": - $ref: "#/components/responses/404" - "401": - $ref: "#/components/responses/401" - "500": - $ref: "#/components/responses/500" + $ref: '#/components/schemas/Sandbox' + '409': + $ref: '#/components/responses/409' + '404': + $ref: '#/components/responses/404' + '401': + $ref: '#/components/responses/401' + '500': + $ref: '#/components/responses/500' /sandboxes/{sandboxID}/connect: post: @@ -1956,34 +2065,34 @@ paths: - Supabase1TokenAuth: [] Supabase2TeamAuth: [] parameters: - - $ref: "#/components/parameters/sandboxID" + - $ref: '#/components/parameters/sandboxID' requestBody: required: true content: application/json: schema: - $ref: "#/components/schemas/ConnectSandbox" + $ref: '#/components/schemas/ConnectSandbox' responses: - "200": + '200': description: The sandbox was already running content: application/json: schema: - $ref: "#/components/schemas/Sandbox" - "201": + $ref: '#/components/schemas/Sandbox' + '201': description: The sandbox was resumed successfully content: application/json: schema: - $ref: "#/components/schemas/Sandbox" - "400": - $ref: "#/components/responses/400" - "401": - $ref: "#/components/responses/401" - "404": - $ref: "#/components/responses/404" - "500": - $ref: "#/components/responses/500" + $ref: '#/components/schemas/Sandbox' + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' /sandboxes/{sandboxID}/timeout: post: @@ -2007,16 +2116,16 @@ paths: format: int32 minimum: 0 parameters: - - $ref: "#/components/parameters/sandboxID" + - $ref: '#/components/parameters/sandboxID' responses: - "204": + '204': description: Successfully set the sandbox timeout - "401": - $ref: "#/components/responses/401" - "404": - $ref: "#/components/responses/404" - "500": - $ref: "#/components/responses/500" + '401': + $ref: '#/components/responses/401' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' /sandboxes/{sandboxID}/refreshes: post: @@ -2038,14 +2147,14 @@ paths: maximum: 3600 # 1 hour minimum: 0 parameters: - - $ref: "#/components/parameters/sandboxID" + - $ref: '#/components/parameters/sandboxID' responses: - "204": + '204': description: Successfully refreshed the sandbox - "401": - $ref: "#/components/responses/401" - "404": - $ref: "#/components/responses/404" + '401': + $ref: '#/components/responses/401' + '404': + $ref: '#/components/responses/404' /v3/templates: post: @@ -2054,26 +2163,27 @@ paths: security: - ApiKeyAuth: [] - Supabase1TokenAuth: [] + Supabase2TeamAuth: [] requestBody: required: true content: application/json: schema: - $ref: "#/components/schemas/TemplateBuildRequestV3" + $ref: '#/components/schemas/TemplateBuildRequestV3' responses: - "202": + '202': description: The build was requested successfully content: application/json: schema: - $ref: "#/components/schemas/TemplateRequestResponseV3" - "400": - $ref: "#/components/responses/400" - "401": - $ref: "#/components/responses/401" - "500": - $ref: "#/components/responses/500" + $ref: '#/components/schemas/TemplateRequestResponseV3' + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '500': + $ref: '#/components/responses/500' /v2/templates: post: @@ -2083,26 +2193,27 @@ paths: security: - ApiKeyAuth: [] - Supabase1TokenAuth: [] + Supabase2TeamAuth: [] requestBody: required: true content: application/json: schema: - $ref: "#/components/schemas/TemplateBuildRequestV2" + $ref: '#/components/schemas/TemplateBuildRequestV2' responses: - "202": + '202': description: The build was requested successfully content: application/json: schema: - $ref: "#/components/schemas/TemplateLegacy" - "400": - $ref: "#/components/responses/400" - "401": - $ref: "#/components/responses/401" - "500": - $ref: "#/components/responses/500" + $ref: '#/components/schemas/TemplateLegacy' + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '500': + $ref: '#/components/responses/500' /templates/{templateID}/files/{hash}: get: @@ -2112,8 +2223,9 @@ paths: - AccessTokenAuth: [] - ApiKeyAuth: [] - Supabase1TokenAuth: [] + Supabase2TeamAuth: [] parameters: - - $ref: "#/components/parameters/templateID" + - $ref: '#/components/parameters/templateID' - in: path name: hash required: true @@ -2122,20 +2234,20 @@ paths: description: Hash of the files responses: - "201": + '201': description: The upload link where to upload the tar file content: application/json: schema: - $ref: "#/components/schemas/TemplateBuildFileUpload" - "400": - $ref: "#/components/responses/400" - "401": - $ref: "#/components/responses/401" - "404": - $ref: "#/components/responses/404" - "500": - $ref: "#/components/responses/500" + $ref: '#/components/schemas/TemplateBuildFileUpload' + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' /templates: get: @@ -2145,6 +2257,7 @@ paths: - ApiKeyAuth: [] - AccessTokenAuth: [] - Supabase1TokenAuth: [] + Supabase2TeamAuth: [] parameters: - in: query required: false @@ -2153,7 +2266,7 @@ paths: type: string description: Identifier of the team responses: - "200": + '200': description: Successfully returned all templates content: application/json: @@ -2161,11 +2274,11 @@ paths: type: array items: allOf: - - $ref: "#/components/schemas/Template" - "401": - $ref: "#/components/responses/401" - "500": - $ref: "#/components/responses/500" + - $ref: '#/components/schemas/Template' + '401': + $ref: '#/components/responses/401' + '500': + $ref: '#/components/responses/500' post: description: Create a new template deprecated: true @@ -2173,26 +2286,27 @@ paths: security: - AccessTokenAuth: [] - Supabase1TokenAuth: [] + Supabase2TeamAuth: [] requestBody: required: true content: application/json: schema: - $ref: "#/components/schemas/TemplateBuildRequest" + $ref: '#/components/schemas/TemplateBuildRequest' responses: - "202": + '202': description: The build was accepted content: application/json: schema: - $ref: "#/components/schemas/TemplateLegacy" - "400": - $ref: "#/components/responses/400" - "401": - $ref: "#/components/responses/401" - "500": - $ref: "#/components/responses/500" + $ref: '#/components/schemas/TemplateLegacy' + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '500': + $ref: '#/components/responses/500' /templates/{templateID}: get: @@ -2203,20 +2317,20 @@ paths: - Supabase1TokenAuth: [] Supabase2TeamAuth: [] parameters: - - $ref: "#/components/parameters/templateID" - - $ref: "#/components/parameters/paginationNextToken" - - $ref: "#/components/parameters/paginationLimit" + - $ref: '#/components/parameters/templateID' + - $ref: '#/components/parameters/paginationNextToken' + - $ref: '#/components/parameters/paginationLimit' responses: - "200": + '200': description: Successfully returned the template with its builds content: application/json: schema: - $ref: "#/components/schemas/TemplateWithBuilds" - "401": - $ref: "#/components/responses/401" - "500": - $ref: "#/components/responses/500" + $ref: '#/components/schemas/TemplateWithBuilds' + '401': + $ref: '#/components/responses/401' + '500': + $ref: '#/components/responses/500' post: description: Rebuild an template deprecated: true @@ -2224,26 +2338,27 @@ paths: security: - AccessTokenAuth: [] - Supabase1TokenAuth: [] + Supabase2TeamAuth: [] parameters: - - $ref: "#/components/parameters/templateID" + - $ref: '#/components/parameters/templateID' requestBody: required: true content: application/json: schema: - $ref: "#/components/schemas/TemplateBuildRequest" + $ref: '#/components/schemas/TemplateBuildRequest' responses: - "202": + '202': description: The build was accepted content: application/json: schema: - $ref: "#/components/schemas/TemplateLegacy" - "401": - $ref: "#/components/responses/401" - "500": - $ref: "#/components/responses/500" + $ref: '#/components/schemas/TemplateLegacy' + '401': + $ref: '#/components/responses/401' + '500': + $ref: '#/components/responses/500' delete: description: Delete a template tags: [templates] @@ -2251,39 +2366,42 @@ paths: - ApiKeyAuth: [] - AccessTokenAuth: [] - Supabase1TokenAuth: [] + Supabase2TeamAuth: [] parameters: - - $ref: "#/components/parameters/templateID" + - $ref: '#/components/parameters/templateID' responses: - "204": + '204': description: The template was deleted successfully - "401": - $ref: "#/components/responses/401" - "500": - $ref: "#/components/responses/500" + '401': + $ref: '#/components/responses/401' + '500': + $ref: '#/components/responses/500' patch: description: Update template + deprecated: true tags: [templates] security: - ApiKeyAuth: [] - AccessTokenAuth: [] - Supabase1TokenAuth: [] + Supabase2TeamAuth: [] parameters: - - $ref: "#/components/parameters/templateID" + - $ref: '#/components/parameters/templateID' requestBody: required: true content: application/json: schema: - $ref: "#/components/schemas/TemplateUpdateRequest" + $ref: '#/components/schemas/TemplateUpdateRequest' responses: - "200": + '200': description: The template was updated successfully - "400": - $ref: "#/components/responses/400" - "401": - $ref: "#/components/responses/401" - "500": - $ref: "#/components/responses/500" + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '500': + $ref: '#/components/responses/500' /templates/{templateID}/builds/{buildID}: post: @@ -2293,16 +2411,17 @@ paths: security: - AccessTokenAuth: [] - Supabase1TokenAuth: [] + Supabase2TeamAuth: [] parameters: - - $ref: "#/components/parameters/templateID" - - $ref: "#/components/parameters/buildID" + - $ref: '#/components/parameters/templateID' + - $ref: '#/components/parameters/buildID' responses: - "202": + '202': description: The build has started - "401": - $ref: "#/components/responses/401" - "500": - $ref: "#/components/responses/500" + '401': + $ref: '#/components/responses/401' + '500': + $ref: '#/components/responses/500' /v2/templates/{templateID}/builds/{buildID}: post: @@ -2311,22 +2430,54 @@ paths: security: - ApiKeyAuth: [] - Supabase1TokenAuth: [] + Supabase2TeamAuth: [] parameters: - - $ref: "#/components/parameters/templateID" - - $ref: "#/components/parameters/buildID" + - $ref: '#/components/parameters/templateID' + - $ref: '#/components/parameters/buildID' requestBody: required: true content: application/json: schema: - $ref: "#/components/schemas/TemplateBuildStartV2" + $ref: '#/components/schemas/TemplateBuildStartV2' responses: - "202": + '202': description: The build has started - "401": - $ref: "#/components/responses/401" - "500": - $ref: "#/components/responses/500" + '401': + $ref: '#/components/responses/401' + '500': + $ref: '#/components/responses/500' + + /v2/templates/{templateID}: + patch: + description: Update template + tags: [templates] + security: + - ApiKeyAuth: [] + - AccessTokenAuth: [] + - Supabase1TokenAuth: [] + Supabase2TeamAuth: [] + parameters: + - $ref: '#/components/parameters/templateID' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TemplateUpdateRequest' + responses: + '200': + description: The template was updated successfully + content: + application/json: + schema: + $ref: '#/components/schemas/TemplateUpdateResponse' + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '500': + $ref: '#/components/responses/500' /templates/{templateID}/builds/{buildID}/status: get: @@ -2336,9 +2487,10 @@ paths: - AccessTokenAuth: [] - ApiKeyAuth: [] - Supabase1TokenAuth: [] + Supabase2TeamAuth: [] parameters: - - $ref: "#/components/parameters/templateID" - - $ref: "#/components/parameters/buildID" + - $ref: '#/components/parameters/templateID' + - $ref: '#/components/parameters/buildID' - in: query name: logsOffset schema: @@ -2359,20 +2511,20 @@ paths: - in: query name: level schema: - $ref: "#/components/schemas/LogLevel" + $ref: '#/components/schemas/LogLevel' responses: - "200": + '200': description: Successfully returned the template content: application/json: schema: - $ref: "#/components/schemas/TemplateBuildInfo" - "401": - $ref: "#/components/responses/401" - "404": - $ref: "#/components/responses/404" - "500": - $ref: "#/components/responses/500" + $ref: '#/components/schemas/TemplateBuildInfo' + '401': + $ref: '#/components/responses/401' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' /templates/{templateID}/builds/{buildID}/logs: get: @@ -2382,9 +2534,10 @@ paths: - AccessTokenAuth: [] - ApiKeyAuth: [] - Supabase1TokenAuth: [] + Supabase2TeamAuth: [] parameters: - - $ref: "#/components/parameters/templateID" - - $ref: "#/components/parameters/buildID" + - $ref: '#/components/parameters/templateID' + - $ref: '#/components/parameters/buildID' - in: query name: cursor schema: @@ -2404,29 +2557,114 @@ paths: - in: query name: direction schema: - $ref: "#/components/schemas/LogsDirection" + $ref: '#/components/schemas/LogsDirection' - in: query name: level schema: - $ref: "#/components/schemas/LogLevel" + $ref: '#/components/schemas/LogLevel' - in: query name: source schema: - $ref: "#/components/schemas/LogsSource" + $ref: '#/components/schemas/LogsSource' description: Source of the logs that should be returned from responses: - "200": + '200': description: Successfully returned the template build logs content: application/json: schema: - $ref: "#/components/schemas/TemplateBuildLogsResponse" - "401": - $ref: "#/components/responses/401" - "404": - $ref: "#/components/responses/404" - "500": - $ref: "#/components/responses/500" + $ref: '#/components/schemas/TemplateBuildLogsResponse' + '401': + $ref: '#/components/responses/401' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + + /templates/tags: + post: + description: Assign tag(s) to a template build + tags: [tags] + security: + - ApiKeyAuth: [] + - Supabase1TokenAuth: [] + Supabase2TeamAuth: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AssignTemplateTagsRequest' + responses: + '201': + description: Tag assigned successfully + content: + application/json: + schema: + $ref: '#/components/schemas/AssignedTemplateTags' + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + delete: + description: Delete multiple tags from templates + tags: [tags] + security: + - ApiKeyAuth: [] + - Supabase1TokenAuth: [] + Supabase2TeamAuth: [] + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteTemplateTagsRequest' + responses: + '204': + description: Tags deleted successfully + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' + + /templates/aliases/{alias}: + get: + description: Check if template with given alias exists + tags: [templates] + security: + - ApiKeyAuth: [] + - Supabase1TokenAuth: [] + Supabase2TeamAuth: [] + parameters: + - name: alias + in: path + required: true + schema: + type: string + description: Template alias + responses: + '200': + description: Successfully queried template by alias + content: + application/json: + schema: + $ref: '#/components/schemas/TemplateAliasResponse' + '400': + $ref: '#/components/responses/400' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' /nodes: get: @@ -2435,7 +2673,7 @@ paths: security: - AdminTokenAuth: [] responses: - "200": + '200': description: Successfully returned all nodes content: application/json: @@ -2443,11 +2681,11 @@ paths: type: array items: allOf: - - $ref: "#/components/schemas/Node" - "401": - $ref: "#/components/responses/401" - "500": - $ref: "#/components/responses/500" + - $ref: '#/components/schemas/Node' + '401': + $ref: '#/components/responses/401' + '500': + $ref: '#/components/responses/500' /nodes/{nodeID}: get: @@ -2456,7 +2694,7 @@ paths: security: - AdminTokenAuth: [] parameters: - - $ref: "#/components/parameters/nodeID" + - $ref: '#/components/parameters/nodeID' - in: query name: clusterID description: Identifier of the cluster @@ -2465,39 +2703,39 @@ paths: type: string format: uuid responses: - "200": + '200': description: Successfully returned the node content: application/json: schema: - $ref: "#/components/schemas/NodeDetail" - "401": - $ref: "#/components/responses/401" - "404": - $ref: "#/components/responses/404" - "500": - $ref: "#/components/responses/500" + $ref: '#/components/schemas/NodeDetail' + '401': + $ref: '#/components/responses/401' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' post: description: Change status of a node tags: [admin] security: - AdminTokenAuth: [] parameters: - - $ref: "#/components/parameters/nodeID" + - $ref: '#/components/parameters/nodeID' requestBody: content: application/json: schema: - $ref: "#/components/schemas/NodeStatusChange" + $ref: '#/components/schemas/NodeStatusChange' responses: - "204": + '204': description: The node status was changed successfully - "401": - $ref: "#/components/responses/401" - "404": - $ref: "#/components/responses/404" - "500": - $ref: "#/components/responses/500" + '401': + $ref: '#/components/responses/401' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' /admin/teams/{teamID}/sandboxes/kill: post: @@ -2515,18 +2753,18 @@ paths: format: uuid description: Team ID responses: - "200": + '200': description: Successfully killed sandboxes content: application/json: schema: - $ref: "#/components/schemas/AdminSandboxKillResult" - "401": - $ref: "#/components/responses/401" - "404": - $ref: "#/components/responses/404" - "500": - $ref: "#/components/responses/500" + $ref: '#/components/schemas/AdminSandboxKillResult' + '401': + $ref: '#/components/responses/401' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' /access-tokens: post: @@ -2539,18 +2777,18 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/NewAccessToken" + $ref: '#/components/schemas/NewAccessToken' responses: - "201": + '201': description: Access token created successfully content: application/json: schema: - $ref: "#/components/schemas/CreatedAccessToken" - "401": - $ref: "#/components/responses/401" - "500": - $ref: "#/components/responses/500" + $ref: '#/components/schemas/CreatedAccessToken' + '401': + $ref: '#/components/responses/401' + '500': + $ref: '#/components/responses/500' /access-tokens/{accessTokenID}: delete: @@ -2559,16 +2797,16 @@ paths: security: - Supabase1TokenAuth: [] parameters: - - $ref: "#/components/parameters/accessTokenID" + - $ref: '#/components/parameters/accessTokenID' responses: - "204": + '204': description: Access token deleted successfully - "401": - $ref: "#/components/responses/401" - "404": - $ref: "#/components/responses/404" - "500": - $ref: "#/components/responses/500" + '401': + $ref: '#/components/responses/401' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' /api-keys: get: @@ -2578,18 +2816,18 @@ paths: - Supabase1TokenAuth: [] Supabase2TeamAuth: [] responses: - "200": + '200': description: Successfully returned all team API keys content: application/json: schema: type: array items: - $ref: "#/components/schemas/TeamAPIKey" - "401": - $ref: "#/components/responses/401" - "500": - $ref: "#/components/responses/500" + $ref: '#/components/schemas/TeamAPIKey' + '401': + $ref: '#/components/responses/401' + '500': + $ref: '#/components/responses/500' post: description: Create a new team API key tags: [api-keys] @@ -2601,18 +2839,18 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/NewTeamAPIKey" + $ref: '#/components/schemas/NewTeamAPIKey' responses: - "201": + '201': description: Team API key created successfully content: application/json: schema: - $ref: "#/components/schemas/CreatedTeamAPIKey" - "401": - $ref: "#/components/responses/401" - "500": - $ref: "#/components/responses/500" + $ref: '#/components/schemas/CreatedTeamAPIKey' + '401': + $ref: '#/components/responses/401' + '500': + $ref: '#/components/responses/500' /api-keys/{apiKeyID}: patch: @@ -2622,22 +2860,22 @@ paths: - Supabase1TokenAuth: [] Supabase2TeamAuth: [] parameters: - - $ref: "#/components/parameters/apiKeyID" + - $ref: '#/components/parameters/apiKeyID' requestBody: required: true content: application/json: schema: - $ref: "#/components/schemas/UpdateTeamAPIKey" + $ref: '#/components/schemas/UpdateTeamAPIKey' responses: - "200": + '200': description: Team API key updated successfully - "401": - $ref: "#/components/responses/401" - "404": - $ref: "#/components/responses/404" - "500": - $ref: "#/components/responses/500" + '401': + $ref: '#/components/responses/401' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' delete: description: Delete a team API key tags: [api-keys] @@ -2645,13 +2883,13 @@ paths: - Supabase1TokenAuth: [] Supabase2TeamAuth: [] parameters: - - $ref: "#/components/parameters/apiKeyID" + - $ref: '#/components/parameters/apiKeyID' responses: - "204": + '204': description: Team API key deleted successfully - "401": - $ref: "#/components/responses/401" - "404": - $ref: "#/components/responses/404" - "500": - $ref: "#/components/responses/500" + '401': + $ref: '#/components/responses/401' + '404': + $ref: '#/components/responses/404' + '500': + $ref: '#/components/responses/500' diff --git a/src/configs/mock-data.ts b/src/configs/mock-data.ts index cfcf0edb8..d1d04e593 100644 --- a/src/configs/mock-data.ts +++ b/src/configs/mock-data.ts @@ -15,6 +15,7 @@ import { nanoid } from 'nanoid' const DEFAULT_TEMPLATES: DefaultTemplate[] = [ { aliases: ['code-interpreter'], + names: ['code-interpreter'], buildID: 'build_000', cpuCount: 1, memoryMB: 1024, @@ -36,6 +37,7 @@ const DEFAULT_TEMPLATES: DefaultTemplate[] = [ }, { aliases: ['web-starter'], + names: ['web-starter'], buildID: 'build_005', cpuCount: 2, memoryMB: 2048, @@ -54,6 +56,7 @@ const DEFAULT_TEMPLATES: DefaultTemplate[] = [ }, { aliases: ['data-science'], + names: ['data-science'], buildID: 'build_006', cpuCount: 4, memoryMB: 8192, @@ -78,6 +81,7 @@ const DEFAULT_TEMPLATES: DefaultTemplate[] = [ const TEMPLATES: Template[] = [ { aliases: ['node-typescript', 'node-ts'], + names: ['node-typescript', 'node-ts'], buildID: 'build_001', cpuCount: 2, memoryMB: 2048, @@ -97,6 +101,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['react-vite'], + names: ['react-vite'], buildID: 'build_002', cpuCount: 1, memoryMB: 1024, @@ -113,6 +118,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['postgres', 'pg'], + names: ['postgres', 'pg'], buildID: 'build_003', cpuCount: 2, memoryMB: 4096, @@ -129,6 +135,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['redis'], + names: ['redis'], buildID: 'build_004', cpuCount: 1, memoryMB: 2048, @@ -145,6 +152,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['python-ml', 'ml'], + names: ['python-ml', 'ml'], buildID: 'build_005', cpuCount: 4, memoryMB: 8192, @@ -161,6 +169,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['elastic', 'es'], + names: ['elastic', 'es'], buildID: 'build_006', cpuCount: 2, memoryMB: 4096, @@ -177,6 +186,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['grafana'], + names: ['grafana'], buildID: 'build_007', cpuCount: 1, memoryMB: 2048, @@ -193,6 +203,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['nginx'], + names: ['nginx'], buildID: 'build_008', cpuCount: 1, memoryMB: 1024, @@ -209,6 +220,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['mongodb', 'mongo'], + names: ['mongodb', 'mongo'], buildID: 'build_009', cpuCount: 2, memoryMB: 4096, @@ -225,6 +237,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['mysql'], + names: ['mysql'], buildID: 'build_010', envdVersion: '0.1.0', cpuCount: 2, @@ -241,6 +254,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['nextjs', 'next'], + names: ['nextjs', 'next'], buildID: 'build_011', envdVersion: '0.1.0', cpuCount: 2, @@ -260,6 +274,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['vue', 'vue3'], + names: ['vue', 'vue3'], buildID: 'build_012', cpuCount: 1, envdVersion: '0.1.0', @@ -276,6 +291,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['django'], + names: ['django'], buildID: 'build_013', envdVersion: '0.1.0', cpuCount: 2, @@ -295,6 +311,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['flask'], + names: ['flask'], buildID: 'build_014', envdVersion: '0.1.0', cpuCount: 1, @@ -311,6 +328,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['golang', 'go'], + names: ['golang', 'go'], buildID: 'build_015', envdVersion: '0.1.0', cpuCount: 2, @@ -330,6 +348,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['rust'], + names: ['rust'], buildID: 'build_016', cpuCount: 2, memoryMB: 2048, @@ -346,6 +365,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['java-spring', 'spring'], + names: ['java-spring', 'spring'], buildID: 'build_017', cpuCount: 3, memoryMB: 4096, @@ -365,6 +385,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['dotnet', 'csharp'], + names: ['dotnet', 'csharp'], buildID: 'build_018', cpuCount: 2, memoryMB: 3072, @@ -381,6 +402,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['php-laravel', 'laravel'], + names: ['php-laravel', 'laravel'], buildID: 'build_019', cpuCount: 2, memoryMB: 2048, @@ -400,6 +422,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['ruby-rails', 'rails'], + names: ['ruby-rails', 'rails'], buildID: 'build_020', cpuCount: 2, memoryMB: 2048, @@ -416,6 +439,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['jupyter', 'notebook'], + names: ['jupyter', 'notebook'], buildID: 'build_021', cpuCount: 4, memoryMB: 6144, @@ -435,6 +459,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['tensorflow'], + names: ['tensorflow'], buildID: 'build_022', cpuCount: 8, memoryMB: 16384, @@ -454,6 +479,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['pytorch'], + names: ['pytorch'], buildID: 'build_023', cpuCount: 8, memoryMB: 16384, @@ -473,6 +499,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['cassandra'], + names: ['cassandra'], buildID: 'build_024', cpuCount: 4, memoryMB: 8192, @@ -489,6 +516,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['docker', 'dind'], + names: ['docker', 'dind'], buildID: 'build_025', cpuCount: 2, memoryMB: 4096, @@ -508,6 +536,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['kubernetes', 'k8s'], + names: ['kubernetes', 'k8s'], buildID: 'build_026', cpuCount: 4, memoryMB: 8192, @@ -527,6 +556,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['terraform'], + names: ['terraform'], buildID: 'build_027', cpuCount: 2, memoryMB: 2048, @@ -543,6 +573,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['ansible'], + names: ['ansible'], buildID: 'build_028', cpuCount: 1, memoryMB: 1536, @@ -562,6 +593,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['prometheus'], + names: ['prometheus'], buildID: 'build_029', cpuCount: 2, memoryMB: 3072, @@ -578,6 +610,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['jenkins'], + names: ['jenkins'], buildID: 'build_030', cpuCount: 3, envdVersion: '0.1.0', @@ -597,6 +630,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['gitlab-ci'], + names: ['gitlab-ci'], buildID: 'build_031', cpuCount: 2, envdVersion: '0.1.0', @@ -613,6 +647,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['apache-spark', 'spark'], + names: ['apache-spark', 'spark'], buildID: 'build_032', cpuCount: 8, envdVersion: '0.1.0', @@ -632,6 +667,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['kafka'], + names: ['kafka'], envdVersion: '0.1.0', buildID: 'build_033', cpuCount: 3, @@ -648,6 +684,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['rabbitmq'], + names: ['rabbitmq'], buildID: 'build_034', cpuCount: 2, memoryMB: 2048, @@ -667,6 +704,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['zookeeper'], + names: ['zookeeper'], envdVersion: '0.1.0', buildID: 'build_035', cpuCount: 1, @@ -683,6 +721,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['solr'], + names: ['solr'], buildID: 'build_036', cpuCount: 2, memoryMB: 4096, @@ -702,6 +741,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['logstash'], + names: ['logstash'], buildID: 'build_037', cpuCount: 2, memoryMB: 3072, @@ -718,6 +758,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['kibana'], + names: ['kibana'], buildID: 'build_038', cpuCount: 1, memoryMB: 2048, @@ -734,6 +775,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['minio'], + names: ['minio'], buildID: 'build_039', cpuCount: 2, memoryMB: 2048, @@ -753,6 +795,7 @@ const TEMPLATES: Template[] = [ }, { aliases: ['vault'], + names: ['vault'], buildID: 'build_040', cpuCount: 1, envdVersion: '0.1.0', diff --git a/src/features/dashboard/settings/general/info-card.tsx b/src/features/dashboard/settings/general/info-card.tsx index 91976ec53..aaab3dd2a 100644 --- a/src/features/dashboard/settings/general/info-card.tsx +++ b/src/features/dashboard/settings/general/info-card.tsx @@ -38,6 +38,11 @@ export function InfoCard({ className }: InfoCardProps) { {team.id} +
+ Team Slug + {team.slug} + +
diff --git a/src/features/dashboard/templates/list/table-cells.tsx b/src/features/dashboard/templates/list/table-cells.tsx index b9a1d911a..4326b6bd6 100644 --- a/src/features/dashboard/templates/list/table-cells.tsx +++ b/src/features/dashboard/templates/list/table-cells.tsx @@ -1,11 +1,11 @@ 'use client' +import { useClipboard } from '@/lib/hooks/use-clipboard' import { defaultErrorToast, defaultSuccessToast, useToast, } from '@/lib/hooks/use-toast' -import { useClipboard } from '@/lib/hooks/use-clipboard' import { cn } from '@/lib/utils' import { isVersionCompatible } from '@/lib/utils/version' import { useTRPC } from '@/trpc/client' @@ -289,10 +289,15 @@ export function TemplateIdCell({ export function TemplateNameCell({ row, - getValue, }: CellContext