cam — Cloud Access Management
cam · 2019-01-16

CreatePolicy

POST

Create a policy.

Wire call

Converge Cloud is RPC over HTTP. There is one path — / — and the action travels in the X-TC-Action header. The /cam/CreatePolicy path used in the OpenAPI document is a documentation convenience so each action is addressable; it is not a route on the server.

curl
curl -sS https://cam.api3.convergecloud.com/ \
  -H 'Authorization: TC3-HMAC-SHA256 Credential=<SecretId>/<YYYY-MM-DD>/cam/tc3_request, SignedHeaders=content-type;host;x-tc-action, Signature=<sig>' \
  -H 'Content-Type: application/json; charset=utf-8' \
  -H 'Host: cam.api3.convergecloud.com' \
  -H 'X-TC-Action: CreatePolicy' \
  -H 'X-TC-Version: 2019-01-16' \
  -H 'X-TC-Timestamp: <unix-seconds>' \
  -H 'X-TC-Region: luzon' \
  -d '{}'

Request parameters

FieldTypeRequiredDescription
PolicyNamestringYesPolicy name
PolicyDocumentstringYesPolicy document, such as `{"version":"2.0","statement":[{"action":"name/sts:AssumeRole","effect":"allow","principal":{"service":["cloudaudit.cloud.Converge Cloud.com","cls.cloud.Converge Cloud.com"]}}]}`, where `principal` is used to specify the resources that the role is authorized to access. For more information on this parameter, please see the `RoleInfo` output parameter of the GetRole API
DescriptionstringNoPolicy description

Response

Fields are returned inside the Response envelope. Converge Cloud answers HTTP 200 for errors as well as successes, so read Response.Error rather than the status code — and test for the presence of that object, because Code is occasionally the empty string.

FieldTypeDescription
PolicyIdintegerID of newly added policy
RequestIdstringThe unique request ID, which is returned for each request. RequestId is required for locating a problem.
Success
{
  "Response": {
    "PolicyId": …,
    "RequestId": "…"
  }
}
Error
{
  "Response": {
    "Error": { "Code": "…", "Message": "…" },
    "RequestId": "…"
  }
}

Try it

CredentialThe key never leaves this tab — it signs the request here. The signed request goes to /api-relay/cam.
Request bodyvalid JSONPOST cam.api3.convergecloud.com · CreatePolicy
Recorded example response — captured 2026-09-16
{
  "Response": {
    "Error": {
      "Code": "",
      "Message": "; readObjectStart: expect { or n, but found c, error found in #1 byte of ...|example|..., bigger context ...|example|...",
      "code": 0,
      "msg": "readObjectStart: expect { or n, but found c, error found in #1 byte of ...|example|..., bigger context ...|example|...",
      "value": null
    },
    "RequestId": "cf544a1f-7b71-a478-76c5-63fcc0f53e5e"
  }
}