# Irányított jelentéssablon egy verziójának mentése

Kanonikus URL: https://sosoapi.ai/hu/docs/api/analytics-api-reporting-templates-save

Szerződés: sha256:d6e85a113e8fb367

Irányított jelentéssablon egy verziójának mentése. A kifejezetten kiválasztott, ellenőrzött adatkészletet és verziót használja; a forrás nem frissül automatikusan. Az előállítás bemenete csővezetéken továbbítható a sosoapi report render --output FILE parancsnak.

POST /analytics-api/reporting/templates/save

## Hitelesítés és engedélyek

- **Elfogadott hitelesítőadat-osztályok:** user_session, delegated_oauth, personal_access_token

- **Delegált képesség:** agent:operate

- **Minimális munkaterületi szerepkör:** editor

- **Hozzáférési hatókör:** A felhasználó számára engedélyezett erőforrások

- **Minden munkaterületre kiterjedő hozzájárulás szükséges:** Nem

- **Állapotot módosít:** Igen

- **A művelet befejezésekor:** synchronous_http_response

A token csak a tulajdonosa jogait használhatja. Minden kérés ellenőrzi a munkaterületi tagságot, erőforrás-tulajdonjogot, kiválasztott munkaterületeket és megadott képességeket. A core és full profil a megjelenített eszközöket változtatja; hozzáférést nem ad.

## Kérésmezők

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "workspace_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "template": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        "version": {
          "type": "integer",
          "minimum": 1,
          "maximum": 1000000
        },
        "name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "format": {
          "type": "string",
          "enum": [
            "pptx",
            "docx",
            "xlsx"
          ]
        },
        "sourceBase64": {
          "type": "string",
          "maxLength": 12582912,
          "pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$"
        },
        "sourceSha256": {
          "type": "string",
          "pattern": "^[a-f0-9]{64}$"
        },
        "mappings": {
          "type": "object",
          "propertyNames": {
            "type": "string",
            "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,63}$"
          },
          "additionalProperties": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "text"
                  },
                  "value": {
                    "type": "string",
                    "maxLength": 2000
                  }
                },
                "required": [
                  "kind",
                  "value"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "selection"
                  },
                  "field": {
                    "type": "string",
                    "enum": [
                      "accounts",
                      "period",
                      "timezone",
                      "platforms",
                      "dataset",
                      "reviewed",
                      "coverage"
                    ]
                  }
                },
                "required": [
                  "kind",
                  "field"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "metric"
                  },
                  "platform": {
                    "type": "string",
                    "enum": [
                      "facebook",
                      "instagram",
                      "threads",
                      "youtube"
                    ]
                  },
                  "key": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 150
                  },
                  "unit": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100
                  },
                  "grain": {
                    "type": "string",
                    "enum": [
                      "post",
                      "account"
                    ]
                  },
                  "measurementKind": {
                    "type": "string",
                    "enum": [
                      "lifetime",
                      "snapshot",
                      "period",
                      "unknown"
                    ]
                  },
                  "accountId": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                  },
                  "providerResourceId": {
                    "anyOf": [
                      {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 512
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "sourcePath": {
                    "type": "string",
                    "maxLength": 2000
                  },
                  "requestId": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "kind",
                  "platform",
                  "key",
                  "unit",
                  "grain",
                  "measurementKind"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "formula"
                  },
                  "id": {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                  },
                  "version": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 1000000
                  }
                },
                "required": [
                  "kind",
                  "id",
                  "version"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "table"
                  },
                  "source": {
                    "type": "string",
                    "enum": [
                      "measurements",
                      "formulas"
                    ]
                  },
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 100
                  }
                },
                "required": [
                  "kind",
                  "source",
                  "limit"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "chart"
                  },
                  "source": {
                    "type": "string",
                    "const": "publication_by_platform"
                  }
                },
                "required": [
                  "kind",
                  "source"
                ],
                "additionalProperties": false
              }
            ]
          }
        }
      },
      "required": [
        "id",
        "version",
        "name",
        "format",
        "sourceBase64",
        "sourceSha256",
        "mappings"
      ],
      "additionalProperties": false
    },
    "expected_version": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": 1,
          "maximum": 1000000
        },
        {
          "type": "null"
        }
      ]
    },
    "mutation_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  },
  "required": [
    "workspace_id",
    "template",
    "expected_version",
    "mutation_id"
  ],
  "additionalProperties": false
}
```

## Válasz és befejezés

Sikeres HTTP-állapotok: 200

A sikeres HTTP-válasz jelentheti a kérés elfogadását, nem a befejezését. Háttérmunkánál mentsd a visszakapott azonosítót, és ugyanazt a műveletet ellenőrizd a befejezésig. Az időzített vagy elfogadott bejegyzés csak platformmegerősítés után közzétett; a kliens időtúllépése nem igazolja az eredményt.

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "contractVersion": {
      "type": "string",
      "const": "analytics-template/v1"
    },
    "workspaceId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "version": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000000
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "format": {
      "type": "string",
      "enum": [
        "pptx",
        "docx",
        "xlsx"
      ]
    },
    "sourceBase64": {
      "type": "string",
      "maxLength": 12582912,
      "pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$"
    },
    "sourceSha256": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$"
    },
    "mappings": {
      "type": "object",
      "propertyNames": {
        "type": "string",
        "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,63}$"
      },
      "additionalProperties": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "const": "text"
              },
              "value": {
                "type": "string",
                "maxLength": 2000
              }
            },
            "required": [
              "kind",
              "value"
            ]
          },
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "const": "selection"
              },
              "field": {
                "type": "string",
                "enum": [
                  "accounts",
                  "period",
                  "timezone",
                  "platforms",
                  "dataset",
                  "reviewed",
                  "coverage"
                ]
              }
            },
            "required": [
              "kind",
              "field"
            ]
          },
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "const": "metric"
              },
              "platform": {
                "type": "string",
                "enum": [
                  "facebook",
                  "instagram",
                  "threads",
                  "youtube"
                ]
              },
              "key": {
                "type": "string",
                "minLength": 1,
                "maxLength": 150
              },
              "unit": {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              "grain": {
                "type": "string",
                "enum": [
                  "post",
                  "account"
                ]
              },
              "measurementKind": {
                "type": "string",
                "enum": [
                  "lifetime",
                  "snapshot",
                  "period",
                  "unknown"
                ]
              },
              "accountId": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              "providerResourceId": {
                "anyOf": [
                  {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 512
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "sourcePath": {
                "type": "string",
                "maxLength": 2000
              },
              "requestId": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "uuid",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "kind",
              "platform",
              "key",
              "unit",
              "grain",
              "measurementKind"
            ]
          },
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "const": "formula"
              },
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              "version": {
                "type": "integer",
                "minimum": 1,
                "maximum": 1000000
              }
            },
            "required": [
              "kind",
              "id",
              "version"
            ]
          },
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "const": "table"
              },
              "source": {
                "type": "string",
                "enum": [
                  "measurements",
                  "formulas"
                ]
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              }
            },
            "required": [
              "kind",
              "source",
              "limit"
            ]
          },
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "const": "chart"
              },
              "source": {
                "type": "string",
                "const": "publication_by_platform"
              }
            },
            "required": [
              "kind",
              "source"
            ]
          }
        ]
      }
    },
    "createdAt": {
      "type": "string",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      "format": "date-time"
    }
  },
  "required": [
    "contractVersion",
    "workspaceId",
    "id",
    "version",
    "name",
    "format",
    "sourceBase64",
    "sourceSha256",
    "mappings",
    "createdAt"
  ]
}
```

## Hibák és biztonságos újrapróbálás

Ellenőrizd a HTTP-állapotot és a válasz törzsét. A 400 ellenőrzési hiba ZodError értéket tartalmazhat; a kezelőhibák az error, message és code mezőket használják. Őrizd meg a request_id vagy x-request-id értéket a diagnózishoz, hitelesítő adatok nélkül. Újrapróbálás előtt javítsd a 401/403 hozzáférési hibákat; 429 esetén kövesd a Retry-After értékét. Bizonytalan írás vagy 5xx válasz esetén előbb olvasd el a meglévő eredményt. Csak támogatott műveletnél használj újra idempotenciakulcsot; az újrapróbálás műveletenként eltér, és nem garantál pontosan egyszeri kézbesítést.

## Példák

A példák sémákkal ellenőrzött képzeletbeli értékeket használnak. Az azonosítókat engedélyezettekre, a médiát kész tartalomelemekre, a dátumokat megerősített közzétételi időpontra cseréld. Írás beküldése előtt ellenőrizd a fiók jogosultságát. Ez az oldal nem küld API-kérést.

A szervereden állítsd a SOSOAPI_ACCESS_TOKEN értékét a művelet által elfogadott hitelesítő adatra, és tartsd távol a böngészőkódtól. Ügynökhöz a sosoapi auth login paranccsal jelentkezz be böngészőben, és hagyd, hogy a CLI frissítse a hitelesítő adatokat.

request.json

```json
{
  "workspace_id": "11111111-1111-4111-8111-111111111111",
  "template": {
    "id": "11111111-1111-4111-8111-111111111111",
    "version": 1,
    "name": "example",
    "format": "pptx",
    "sourceBase64": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    "sourceSha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    "mappings": {}
  },
  "expected_version": null,
  "mutation_id": "11111111-1111-4111-8111-111111111111"
}
```

cURL

```bash
curl --request POST \
  "https://gqeshlawtcexsapabaui.supabase.co/functions/v1/analytics-api/reporting/templates/save" \
  -H "Authorization: Bearer $SOSOAPI_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary @request.json
```

JavaScript

```js
// Server-side JavaScript. Do not print tokens or credential-bearing responses.
const token = process.env.SOSOAPI_ACCESS_TOKEN;
if (!token) throw new Error("Set an accepted credential for this operation");
const response = await fetch("https://gqeshlawtcexsapabaui.supabase.co/functions/v1/analytics-api/reporting/templates/save", {
  method: "POST",
  headers: { "Content-Type": "application/json", Authorization: "Bearer " + token },
  body: JSON.stringify({
  "workspace_id": "11111111-1111-4111-8111-111111111111",
  "template": {
    "id": "11111111-1111-4111-8111-111111111111",
    "version": 1,
    "name": "example",
    "format": "pptx",
    "sourceBase64": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    "sourceSha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    "mappings": {}
  },
  "expected_version": null,
  "mutation_id": "11111111-1111-4111-8111-111111111111"
})
});
const result = await response.json();
// Check response.ok, the operation-specific body and completion state before continuing.
```

CLI

```bash
npx sosoapi api post /analytics-api/reporting/templates/save < request.json
```

Szintetikus válaszpélda

```json
{
  "contractVersion": "analytics-template/v1",
  "workspaceId": "11111111-1111-4111-8111-111111111111",
  "id": "11111111-1111-4111-8111-111111111111",
  "version": 1,
  "name": "example",
  "format": "pptx",
  "sourceBase64": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "sourceSha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "mappings": {},
  "createdAt": "2099-01-15T09:00:00Z"
}
```

## Kapcsolódó eszközök és útmutatók

MCP: sosoapi_save_report_template

[API-referencia](https://sosoapi.ai/hu/docs/api)
