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
| Field | Type | Required | Description |
|---|---|---|---|
| PolicyName | string | Yes | Policy name |
| PolicyDocument | string | Yes | Policy 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 |
| Description | string | No | Policy 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.
| Field | Type | Description |
|---|---|---|
| PolicyId | integer | ID of newly added policy |
| RequestId | string | The 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"
}
}