---
id: technology-template-write
title: "Update a technology template"
description: "Updates a technology template."
sidebar_label: "Update a technology template"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "patch api-method"
info_path: docs/api/nullplatform-api
custom_edit_url: null
---

import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
import ParamsDetails from "@theme/ParamsDetails";
import RequestSchema from "@theme/RequestSchema";
import StatusCodes from "@theme/StatusCodes";
import OperationTabs from "@theme/OperationTabs";
import TabItem from "@theme/TabItem";
import Heading from "@theme/Heading";

<Heading
  as={"h1"}
  className={"openapi__heading"}
  children={"Update a technology template"}
>
</Heading>

<MethodEndpoint
  method={"patch"}
  path={"/template/{id}"}
  context={"endpoint"}
>
  
</MethodEndpoint>



Updates a technology template.

<Heading
  id={"request"}
  as={"h2"}
  className={"openapi-tabs__heading"}
  children={"Request"}
>
</Heading>

<ParamsDetails
  parameters={[{"name":"id","in":"path","description":"The unique ID for the technology template.\n","required":true,"schema":{"type":"integer"},"example":123}]}
>
  
</ParamsDetails>

<RequestSchema
  title={"Body"}
  body={{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of the technology template (e.g., node, java-spring, go, kotlin-ktor).","example":"Next.JS 13 template"},"url":{"type":"string","description":"The URL of the template in the repository.","example":"https://github.com/nullplatform/technology-templates-nextjs"},"provider":{"type":"object","properties":{"repository":{"type":"string","description":"The name of the repository within the provider.\n\n> For example, if the URL is `https://github.com/nullplatform/technology-templates-nextjs`,  \nthe repository name should be `technology-templates-nextjs`.\n","example":"technology-templates-nextjs"}}},"organization":{"type":"integer","description":"The ID of the organization.","example":234},"account":{"type":"integer","description":"The ID of account.","example":345},"status":{"type":"string","description":"The status of the template.","enum":["active","inactive"],"example":"active"},"components":{"type":"array","description":"The components of the template.","items":{"type":"object","properties":{"type":{"type":"string","description":"The type of component (e.g., language, framework).","example":"language"},"id":{"type":"string","description":"The ID of the component (e.g., javascript, golang, java).","example":"javascript-language"},"version":{"type":"string","description":"The version of the component (e.g., 20.2, 1.18, 17).","example":"1.0"}},"title":"TemplateComponent"}},"tags":{"type":"array","example":"frontend","items":{"type":"string"},"description":"Tags associated with the template (e.g., node, nextjs, frontend)"},"rules":{"type":"object","description":"Defines rules for enforcing naming conventions and structuring repository paths.\n","items":{"type":"object","properties":{"application_name":{"type":"string","description":"A regular expression pattern used to validate the format of the application name.\n> **Note**: 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$`.\n","format":"regex","example":"^(.*)-api$"},"repository_path":{"type":"string","description":"A substitution expression defining the custom structure of the repository path based on matched groups from the application name. \n> **Note**: 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}-golang-${1}-${2}/g`.\n","format":"regex","example":"s/^(.*)-(.*)$/${namespace.slug}-golang-${1}-${2}/g"}},"title":"TemplateRules"}},"metadata":{"type":"object","description":"The metadata loaded via the metadata catalog API.","example":{"key":"value"},"properties":{"key":{"type":"string","description":"The key of the metadata.","example":"key"},"value":{"type":"string","description":"The value of the metadata.","example":null},"additional_properties":{"type":"object","description":"Additional metadata properties, including schemas and tags.","properties":{"schemas":{"type":"array","description":"The JSON schemas of the metadata.","items":{"type":"object"}},"tags":{"type":"array","description":"Tags associated with the metadata.","items":{"type":"object","properties":{"key":{"type":"string","example":"key"},"value":{"type":"string","example":"value"}}}}}}},"title":"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"],"metadata":{"key":"value","schemas":[{"schema":"schema1"},{"schema":"schema2"}],"tags":[{"key":"tag1","value":"value1"},{"key":"tag2","value":"value2"}]}},"title":"TechnologyTemplate_write"}}}}}
>
  
</RequestSchema>

<StatusCodes
  id={undefined}
  label={undefined}
  responses={{"200":{"description":"The operation was successful.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","description":"The ID of the template.","example":123},"name":{"type":"string","description":"The name of the technology template (e.g., node, java-spring, go, kotlin-ktor).","example":"Next.JS 13 template"},"url":{"type":"string","description":"The URL of the template in the repository.","example":"https://github.com/nullplatform/technology-templates-nextjs"},"provider":{"type":"object","properties":{"repository":{"type":"string","description":"The name of the repository within the provider.\n\n> For example, if the URL is `https://github.com/nullplatform/technology-templates-nextjs`,  \nthe repository name should be `technology-templates-nextjs`.\n","example":"technology-templates-nextjs"}}},"components":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"The type of component (e.g., language, framework).","example":"language"},"id":{"type":"string","description":"The ID of the component (e.g., javascript, golang, java).","example":"javascript-language"},"version":{"type":"string","description":"The version of the component (e.g., 20.2, 1.18, 17).","example":"1.0"}},"title":"TemplateComponent"},"description":"The components of the template."},"tags":{"type":"array","example":"frontend","items":{"type":"string"},"description":"Tags associated with the template (e.g., node, nextjs, frontend)."},"updated_at":{"type":"string","nullable":true,"description":"The ISO-8601 UTC timestamp of when the technology template was last updated.","format":"date-time","example":"2021-01-02T00:00:00Z"},"created_at":{"type":"string","description":"The ISO-8601 UTC timestamp of when the technology template was created.","format":"date-time","example":"2021-01-02T00:00:00Z"}},"title":"TechnologyTemplateResponse"}}}},"4XX":{"description":"Client error responses due to invalid input or missing parameters.","content":{"application/json":{"schema":{"type":"object","required":["statusCode","error","message"],"properties":{"statusCode":{"type":"integer","description":"HTTP status code representing the specific client error (e.g., 400, 401, 403, 404).","example":400},"code":{"type":"string","description":"A machine-readable error code that categorizes the server failure.","example":"bad_request"},"error":{"type":"string","description":"A brief, human-readable description of the error type (e.g., \"Bad Request\", \"Unauthorized\").","example":"Bad Request"},"message":{"type":"string","description":"Additional details about the error.","example":"The request was malformed or contained invalid parameters."}}}}}},"5XX":{"description":"Server error responses indicating an issue on the API side.","content":{"application/json":{"schema":{"type":"object","required":["statusCode","error","message"],"properties":{"statusCode":{"type":"integer","description":"HTTP status code representing the specific server error (e.g., 500, 502, 503).","example":500},"code":{"type":"string","description":"A machine-readable error code that categorizes the server failure.","example":"internal_server_error"},"error":{"type":"string","description":"A brief, human-readable description of the error type (e.g., \"Internal Server Error\", \"Service Unavailable\").","example":"Internal Server Error"},"message":{"type":"string","description":"Additional details about the error.","example":"An unexpected error occurred. Please try again later."}}}}}}}}
>
  
</StatusCodes>


      