---
title: Create/Update Configuration Record Resource
slug: api-documentation/createupdate-configuration-record-resource
docTags: 
createdAt: 2026-08-27T16:18:32.800Z
---

{
  "id": "5MVS-3U5yfftdr_9Qcmlp",
  "type": "api-oas-v2",
  "data": {
    "method": "POST",
    "url": "https://api.upstartcommerce.com/v1/tenants/cfg/records/{recordId}/resources/{name}",
    "servers": [
      {
        "url": "https://api.upstartcommerce.com/v1/tenants/cfg/records/{recordId}/resources/{name}"
      }
    ],
    "name": "Create/Update Configuration Record Resource",
    "description": "<p>This endpoint create/update cfg record resource.</p>\n<p>Authorized permissions:</p>\n<ul>\n<li><code>tenant.cfg.modify</code></li>\n</ul>",
    "contentType": "multipart/form-data",
    "request": {
      "pathParameters": [
        {
          "kind": "required",
          "name": "recordId",
          "type": "string",
          "description": "Unique identifier for a given record."
        },
        {
          "kind": "required",
          "name": "name",
          "type": "string",
          "description": "Unique name for the record resource."
        }
      ],
      "headerParameters": [
        {
          "kind": "required",
          "name": "x-upstart-tenant",
          "type": "string",
          "description": "Tenant identifier associated with the site this call is for."
        }
      ],
      "queryParameters": [],
      "bodyDataParameters": [],
      "formDataParameters": [
        {
          "name": "file",
          "kind": "optional",
          "type": "string<binary>",
          "description": "<p>The resource file to upload (e.g., images, certificates, or other binary data).</p>",
          "format": "binary"
        }
      ],
      "oAuthParameters": [
        {
          "id": "NoChannelPortalAccess",
          "name": "NoChannelPortalAccess",
          "kind": "optional",
          "type": "http",
          "description": "<p>This authentication is required for clients to interact with any of the management APIs. Similar to 'LoggedIn', it indicates that the user has actually logged into the system, but in this case with a management role.</p>",
          "scheme": "bearer"
        }
      ],
      "cookieParameters": []
    },
    "responses": [
      {
        "statusCode": "200",
        "description": "<p>Success-resource created/updated successfully.</p>",
        "jsonExample": "",
        "isExpanded": true
      },
      {
        "statusCode": "400",
        "description": "The request contained information that the server was unable to process. Appropriate errors are provided in the response body.",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "example": "{\"name\":\"ValidationError\",\"code\":\"SCHEMA_VALIDATION_FAILED\",\"detail\":\"Configuration data validation failed: data.apiKey is required but was not provided. Expected string with minimum length 32.\"}",
            "description": "<p>Error response returned when request validation fails (HTTP 400). Contains details about which fields failed validation and why. Used for client-side error display and form validation feedback. Common when configuration data doesn't match template schema.</p>",
            "customType": "ValidationErrorResponse",
            "schema": [
              {
                "name": "name",
                "kind": "required",
                "type": "string",
                "description": "<p>The error type, typically 'ValidationError' for all validation failures. Use this to distinguish validation errors from other error types in your error handling logic.</p>",
                "example": "ValidationError"
              },
              {
                "name": "code",
                "kind": "required",
                "type": "string",
                "description": "<p>A validation-specific error code indicating the validation rule that failed. Examples include 'REQUIRED_FIELD_MISSING', 'INVALID_FORMAT', 'VALUE_OUT_OF_RANGE', 'SCHEMA_VALIDATION_FAILED', 'TEMPLATE_NOT_FOUND'. Use for specific handling of different validation scenarios.</p>",
                "example": "SCHEMA_VALIDATION_FAILED"
              },
              {
                "name": "detail",
                "kind": "optional",
                "type": "string",
                "description": "<p>Human-readable validation error message describing which field(s) failed and why. Includes specific details about what was expected vs what was provided. For schema validation failures, may include JSON path to the invalid field (e.g., 'data.apiKey is required but was not provided').</p>",
                "example": "Configuration data validation failed: data.apiKey is required but was not provided. Expected string with minimum length 32."
              }
            ],
            "modelRef": "#/components/schemas/ValidationErrorResponse",
            "isExpanded": true
          }
        ]
      },
      {
        "statusCode": "401",
        "description": "The provided credentials were not valid for this endpoint. It may be that they are expired or that the user's roles are insufficient.",
        "jsonExample": "",
        "isExpanded": true,
        "schema": [
          {
            "kind": "optional",
            "type": "object",
            "example": "{\"name\":\"AuthorizationError\",\"code\":\"INSUFFICIENT_PERMISSIONS\",\"detail\":\"User does not have the required tenant.cfg.modify permission to perform this operation.\",\"reason\":\"Your access token does not include the necessary permissions. Contact your administrator to request access.\"}",
            "description": "<p>Standard error response returned when a request fails due to business logic, authorization, or system errors. Provides structured information for debugging and user-facing error messages.</p>",
            "customType": "ErrorResponse",
            "schema": [
              {
                "name": "name",
                "kind": "required",
                "type": "string",
                "description": "<p>The high-level error category or type name. This is a machine-readable identifier for the class of error (e.g., 'AuthorizationError', 'ResourceNotFoundError', 'ValidationError'). Use this for programmatic error handling.</p>",
                "example": "ResourceNotFoundError"
              },
              {
                "name": "code",
                "kind": "required",
                "type": "string",
                "description": "<p>A specific error code identifying the exact error condition. More granular than name, this code can be used for precise error handling and localization. Format is typically uppercase with underscores (e.g., 'TEMPLATE_NOT_FOUND', 'INSUFFICIENT_PERMISSIONS').</p>",
                "example": "TEMPLATE_NOT_FOUND"
              },
              {
                "name": "detail",
                "kind": "required",
                "type": "string",
                "description": "<p>A human-readable description of the error, including context about what went wrong. This message is suitable for display to end users or inclusion in logs. May include specifics like resource IDs or field names.</p>",
                "example": "The configuration template with ID \"payment-stripe\" was not found in the system."
              },
              {
                "name": "reason",
                "kind": "optional",
                "type": "string",
                "description": "<p>Optional additional context explaining why the error occurred or what action the user should take. May include suggestions for resolution, links to documentation, or details about system state that led to the error.</p>",
                "example": "The template may have been deleted or you may not have permission to access it. Verify the template ID using GET /tenants/cfg/templates."
              }
            ],
            "modelRef": "#/components/schemas/ErrorResponse",
            "isExpanded": true
          }
        ]
      }
    ],
    "hasXCodeSamples": false,
    "examples": {
      "languages": [
        {
          "id": "JZtIV4iNHpFGuSG-hKnh8",
          "language": "curl",
          "label": "cURL",
          "code": "curl --request POST \\\n     --url https://api.upstartcommerce.com/v1/tenants/cfg/records/{recordId}/resources/{name} \\\n     --header 'accept: application/json' \\\n     --header 'x-upstart-tenant: string'"
        },
        {
          "id": "YCa5DK_8zIY84Xx0VGPYY",
          "language": "javascript",
          "label": "javascript",
          "code": "var myHeaders = new Headers();\nmyHeaders.append(\"accept\", \"application/json\");\nmyHeaders.append(\"content-type\", \"multipart/form-data\");\nmyHeaders.append(\"x-upstart-tenant\", \"string\");\n\nvar requestOptions = {\n   method: 'POST',\n   headers: myHeaders,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.upstartcommerce.com/v1/tenants/cfg/records/{recordId}/resources/{name}\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));"
        },
        {
          "id": "v3C_XQgST9SpUEVox5hGQ",
          "language": "ruby",
          "label": "Ruby",
          "code": "require \"uri\"\nrequire \"net/http\"\n\nurl = URI(\"https://api.upstartcommerce.com/v1/tenants/cfg/records/{recordId}/resources/{name}\")\n\nhttps = Net::HTTP.new(url.host, url.port)\nhttps.use_ssl = true\n\nrequest = Net::HTTP::Post.new(url)\nrequest[\"accept\"] = \"application/json\"\nrequest[\"content-type\"] = \"multipart/form-data\"\nrequest[\"x-upstart-tenant\"] = \"string\"\n\nresponse = https.request(request)\nputs response.read_body\n"
        },
        {
          "id": "4UCYX0Ke16QvErgIt2p46",
          "language": "python",
          "label": "Python",
          "code": "import requests\n\nurl = \"https://api.upstartcommerce.com/v1/tenants/cfg/records/{recordId}/resources/{name}\"\n\npayload = {}\nheaders = {\n   'accept': 'application/json',\n   'content-type': 'multipart/form-data',\n   'x-upstart-tenant': 'string'\n}\n\nresponse = requests.request(\"POST\", url, headers=headers, data=payload)\n\nprint(response.text)\n"
        }
      ],
      "selectedLanguageId": "JZtIV4iNHpFGuSG-hKnh8"
    },
    "results": {
      "languages": [
        {
          "id": "dR6j9TMCMOsXN40qQ_Ugn",
          "language": "200",
          "code": "// Success-resource created/updated successfully.\n"
        },
        {
          "id": "gQhm0kGVq9aq50Rr0L_np",
          "language": "400",
          "code": "// The request contained information that the server was unable to process. Appropriate errors are provided in the response body.\n{\n  \"name\": \"ValidationError\",\n  \"code\": \"SCHEMA_VALIDATION_FAILED\",\n  \"detail\": \"Configuration data validation failed: data.apiKey is required but was not provided. Expected string with minimum length 32.\"\n}"
        },
        {
          "id": "gSIvQwq9Bn_sAZBpB3Qpz",
          "language": "401",
          "code": "// The provided credentials were not valid for this endpoint. It may be that they are expired or that the user's roles are insufficient.\n{\n  \"name\": \"ResourceNotFoundError\",\n  \"code\": \"TEMPLATE_NOT_FOUND\",\n  \"detail\": \"The configuration template with ID \\\"payment-stripe\\\" was not found in the system.\",\n  \"reason\": \"The template may have been deleted or you may not have permission to access it. Verify the template ID using GET /tenants/cfg/templates.\"\n}"
        }
      ],
      "selectedLanguageId": "dR6j9TMCMOsXN40qQ_Ugn"
    }
  },
  "children": [
    {
      "text": ""
    }
  ]
}