Chilkat Online Tools

Objective-C / Postman API / Update Workspace

Back to Collection Items

#import <CkoHttp.h>
#import <CkoJsonObject.h>
#import <CkoStringBuilder.h>
#import <CkoHttpResponse.h>
#import <NSString.h>

// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

CkoHttp *http = [[CkoHttp alloc] init];
BOOL success;

// Use this online tool to generate code from sample JSON: Generate Code to Create JSON

// The following JSON is sent in the request body.

// {
//   "workspace": {
//     "name": "New Workspace updated",
//     "description": "Some description",
//     "collections": [
//       {
//         "id": "e1fc3c38-a0b8-44a3-bd44-d753a96b2e9d",
//         "name": "Straw hats",
//         "uid": "8154-e1fc3c38-a0b8-44a3-bd44-d753a96b2e9d"
//       }
//     ],
//     "environments": [
//       {
//         "id": "83a1aaa2-a204-4bd8-9b92-4d486918906b",
//         "name": "env",
//         "uid": "8154-83a1aaa2-a204-4bd8-9b92-4d486918906b"
//       }
//     ],
//     "mocks": [
//       {
//         "id": "cda672ef-1375-40e9-baee-e20ece8d7b65"
//       }
//     ],
//     "monitors": [
//       {
//         "id": "1e889bd2-3862-4be0-b2c2-9b1fe9673aec"
//       }
//     ]
//   }
// }

CkoJsonObject *json = [[CkoJsonObject alloc] init];
[json UpdateString: @"workspace.name" value: @"New Workspace updated"];
[json UpdateString: @"workspace.description" value: @"Some description"];
[json UpdateString: @"workspace.collections[0].id" value: @"e1fc3c38-a0b8-44a3-bd44-d753a96b2e9d"];
[json UpdateString: @"workspace.collections[0].name" value: @"Straw hats"];
[json UpdateString: @"workspace.collections[0].uid" value: @"8154-e1fc3c38-a0b8-44a3-bd44-d753a96b2e9d"];
[json UpdateString: @"workspace.environments[0].id" value: @"83a1aaa2-a204-4bd8-9b92-4d486918906b"];
[json UpdateString: @"workspace.environments[0].name" value: @"env"];
[json UpdateString: @"workspace.environments[0].uid" value: @"8154-83a1aaa2-a204-4bd8-9b92-4d486918906b"];
[json UpdateString: @"workspace.mocks[0].id" value: @"cda672ef-1375-40e9-baee-e20ece8d7b65"];
[json UpdateString: @"workspace.monitors[0].id" value: @"1e889bd2-3862-4be0-b2c2-9b1fe9673aec"];

[http SetRequestHeader: @"Content-Type" value: @"application/json"];
[http SetRequestHeader: @"X-API-Key" value: @"{{postman_api_key}}"];

CkoStringBuilder *sbRequestBody = [[CkoStringBuilder alloc] init];
[json EmitSb: sbRequestBody];

CkoHttpResponse *resp = [http PTextSb: @"PUT" url: @"https://api.getpostman.com/workspaces/{{workspace_id}}" textData: sbRequestBody charset: @"utf-8" contentType: @"application/json" md5: NO gzip: NO];
if (http.LastMethodSuccess == NO) {
    NSLog(@"%@",http.LastErrorText);
    return;
}

CkoStringBuilder *sbResponseBody = [[CkoStringBuilder alloc] init];
[resp GetBodySb: sbResponseBody];

CkoJsonObject *jResp = [[CkoJsonObject alloc] init];
[jResp LoadSb: sbResponseBody];
jResp.EmitCompact = NO;

NSLog(@"%@",@"Response Body:");
NSLog(@"%@",[jResp Emit]);

int respStatusCode = [resp.StatusCode intValue];
NSLog(@"%@%d",@"Response Status Code = ",respStatusCode);
if (respStatusCode >= 400) {
    NSLog(@"%@",@"Response Header:");
    NSLog(@"%@",resp.Header);
    NSLog(@"%@",@"Failed.");

    return;
}

// Sample JSON response:
// (Sample code for parsing the JSON response is shown below)

// {
//   "workspace": {
//     "id": "cfbcd9bf-cc8b-4d6f-b8ef-440a3e49e29f",
//     "name": "New Workspace"
//   }
// }

// Sample code for parsing the JSON response...
// Use this online tool to generate parsing code from sample JSON: Generate JSON Parsing Code

NSString *Id = [jResp StringOf: @"workspace.id"];
NSString *Name = [jResp StringOf: @"workspace.name"];

Curl Command

curl -X PUT
	-H "X-API-Key: {{postman_api_key}}"
	-H "Content-Type: application/json"
	-d '{
    "workspace": {
        "name": "New Workspace updated",
        "description": "Some description",
        "collections": [
            {
                "id": "e1fc3c38-a0b8-44a3-bd44-d753a96b2e9d",
                "name": "Straw hats",
                "uid": "8154-e1fc3c38-a0b8-44a3-bd44-d753a96b2e9d"
            }
        ],
        "environments": [
            {
                "id": "83a1aaa2-a204-4bd8-9b92-4d486918906b",
                "name": "env",
                "uid": "8154-83a1aaa2-a204-4bd8-9b92-4d486918906b"
            }
        ],
        "mocks": [
            {
                "id": "cda672ef-1375-40e9-baee-e20ece8d7b65"
            }
        ],
        "monitors": [
            {
                "id": "1e889bd2-3862-4be0-b2c2-9b1fe9673aec"
            }
        ]
    }
}'
https://api.getpostman.com/workspaces/{{workspace_id}}

Postman Collection Item JSON

{
  "name": "Update Workspace",
  "request": {
    "method": "PUT",
    "header": [
      {
        "name": "Content-Type",
        "key": "Content-Type",
        "value": "application/json"
      }
    ],
    "body": {
      "mode": "raw",
      "raw": "{\n    \"workspace\": {\n        \"name\": \"New Workspace updated\",\n        \"description\": \"Some description\",\n        \"collections\": [\n            {\n                \"id\": \"e1fc3c38-a0b8-44a3-bd44-d753a96b2e9d\",\n                \"name\": \"Straw hats\",\n                \"uid\": \"8154-e1fc3c38-a0b8-44a3-bd44-d753a96b2e9d\"\n            }\n        ],\n        \"environments\": [\n            {\n                \"id\": \"83a1aaa2-a204-4bd8-9b92-4d486918906b\",\n                \"name\": \"env\",\n                \"uid\": \"8154-83a1aaa2-a204-4bd8-9b92-4d486918906b\"\n            }\n        ],\n        \"mocks\": [\n            {\n                \"id\": \"cda672ef-1375-40e9-baee-e20ece8d7b65\"\n            }\n        ],\n        \"monitors\": [\n            {\n                \"id\": \"1e889bd2-3862-4be0-b2c2-9b1fe9673aec\"\n            }\n        ]\n    }\n}"
    },
    "url": {
      "raw": "https://api.getpostman.com/workspaces/{{workspace_id}}",
      "protocol": "https",
      "host": [
        "api",
        "getpostman",
        "com"
      ],
      "path": [
        "workspaces",
        "{{workspace_id}}"
      ]
    },
    "description": "This endpoint allows you to update a workspace and update it's association to entities like `collections`, `environments`, `mocks` and `monitors` using their `uid`.\n\nOn successful updation of the workspace, the response returns the workspcae `name` and `id`.\n\n> Requires <a href=\"#authentication\">API Key</a> as `X-Api-Key` request header or `apikey` URL query parameter.\n\n**Note** : The endpoint expects you to send the desired state of the workspace in terms of the associated entities so be careful when trying to update these entities.\n\nFor eg. if your workspace has collections A and B, and in the update call, you send C's uid in the collections array, then A and B would be removed from the workspace and C would be added."
  },
  "response": [
    {
      "name": "Specified workspace/entities do not exist",
      "originalRequest": {
        "method": "PUT",
        "header": [
          {
            "name": "Content-Type",
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n    \"workspace\": {\n        \"name\": \"New Workspace updated\",\n        \"description\": \"Some description\",\n        \"collections\": [\n            {\n                \"id\": \"e1fc3c38-a0b8-44a3-bd44-d753a96b2e9d\",\n                \"name\": \"Straw hats\",\n                \"uid\": \"8154-e1fc3c38-a0b8-44a3-bd44-d753a96b2e9d\"\n            }\n        ],\n        \"environments\": [\n            {\n                \"id\": \"83a1aaa2-a204-4bd8-9b92-4d486918906b\",\n                \"name\": \"env\",\n                \"uid\": \"8153-83a1aaa2-a204-4bd8-9b92-4d486918906b\"\n            }\n        ],\n        \"mocks\": [\n            {\n                \"id\": \"cda672ef-1375-40e9-baee-e20ece8d7b65\"\n            }\n        ],\n        \"monitors\": [\n            {\n                \"id\": \"1e889bd2-3862-4be0-b2c2-9b1fe9673aec\"\n            }\n        ]\n    }\n}"
        },
        "url": {
          "raw": "https://api.getpostman.com/workspaces/{{workspace_id}}",
          "protocol": "https",
          "host": [
            "api",
            "getpostman",
            "com"
          ],
          "path": [
            "workspaces",
            "{{workspace_id}}"
          ]
        }
      },
      "status": "Not Found",
      "code": 404,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "Content-Type",
          "value": "application/json"
        }
      ],
      "cookie": [
      ],
      "body": "{\n    \"error\": {\n        \"name\": \"instanceNotFoundError\",\n        \"message\": \"The specified workspace does not exist.\"\n    }\n}"
    },
    {
      "name": "Successful Response",
      "originalRequest": {
        "method": "POST",
        "header": [
          {
            "name": "Content-Type",
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n    \"workspace\": {\n        \"name\": \"New Workspace\",\n        \"description\": \"Some description\",\n        \"collections\": [\n            {\n                \"id\": \"e1fc3c38-a0b8-44a3-bd44-d753a96b2e9d\",\n                \"name\": \"Straw hats\",\n                \"uid\": \"8154-e1fc3c38-a0b8-44a3-bd44-d753a96b2e9d\"\n            }\n        ],\n        \"environments\": [\n            {\n                \"id\": \"83a1aaa2-a204-4bd8-9b92-4d486918906b\",\n                \"name\": \"env\",\n                \"uid\": \"8154-83a1aaa2-a204-4bd8-9b92-4d486918906b\"\n            }\n        ],\n        \"mocks\": [\n            {\n                \"id\": \"cda672ef-1375-40e9-baee-e20ece8d7b65\"\n            }\n        ],\n        \"monitors\": [\n            {\n                \"id\": \"1e889bd2-3862-4be0-b2c2-9b1fe9673aec\"\n            }\n        ]\n    }\n}"
        },
        "url": {
          "raw": "https://api.getpostman.com/workspaces/{{workspace_id}}",
          "protocol": "https",
          "host": [
            "api",
            "getpostman",
            "com"
          ],
          "path": [
            "workspaces",
            "{{workspace_id}}"
          ]
        }
      },
      "status": "OK",
      "code": 200,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "Content-Type",
          "value": "application/json",
          "description": {
            "content": "",
            "type": "text/plain"
          }
        }
      ],
      "cookie": [
      ],
      "body": "{\n    \"workspace\": {\n        \"id\": \"cfbcd9bf-cc8b-4d6f-b8ef-440a3e49e29f\",\n        \"name\": \"New Workspace\"\n    }\n}"
    },
    {
      "name": "Not enough permissions",
      "originalRequest": {
        "method": "PUT",
        "header": [
          {
            "name": "Content-Type",
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n    \"workspace\": {\n        \"name\": \"New Workspace updated\",\n        \"type\": \"personal\",\n        \"description\": \"Some description\",\n        \"collections\": [\n            {\n                \"id\": \"e1fc3c38-a0b8-44a3-bd44-d753a96b2e9d\",\n                \"name\": \"Straw hats\",\n                \"uid\": \"8154-e1fc3c38-a0b8-44a3-bd44-d753a96b2e9d\"\n            }\n        ],\n        \"environments\": [\n            {\n                \"id\": \"83a1aaa2-a204-4bd8-9b92-4d486918906b\",\n                \"name\": \"env\",\n                \"uid\": \"8154-83a1aaa2-a204-4bd8-9b92-4d486918906b\"\n            }\n        ],\n        \"mocks\": [\n            {\n                \"id\": \"cda672ef-1375-40e9-baee-e20ece8d7b65\"\n            }\n        ],\n        \"monitors\": [\n            {\n                \"id\": \"1e889bd2-3862-4be0-b2c2-9b1fe9673aec\"\n            }\n        ]\n    }\n}"
        },
        "url": {
          "raw": "https://api.getpostman.com/workspaces/{{workspace_id}}",
          "protocol": "https",
          "host": [
            "api",
            "getpostman",
            "com"
          ],
          "path": [
            "workspaces",
            "{{workspace_id}}"
          ]
        }
      },
      "status": "Forbidden",
      "code": 403,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "Content-Type",
          "value": "application/json",
          "description": {
            "content": "",
            "type": "text/plain"
          }
        }
      ],
      "cookie": [
      ],
      "body": "{\n    \"error\": {\n        \"name\": \"forbiddenError\",\n        \"message\": \"You do not have access to update this workspace.\"\n    }\n}"
    }
  ]
}