Chilkat Online Tools

PureBasic / Postman API / Get Schema

Back to Collection Items

IncludeFile "CkJsonObject.pb"
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkHttp.pb"

Procedure ChilkatExample()

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

    http.i = CkHttp::ckCreate()
    If http.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success.i

    CkHttp::ckSetRequestHeader(http,"X-API-Key","{{postman_api_key}}")

    sbResponseBody.i = CkStringBuilder::ckCreate()
    If sbResponseBody.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkHttp::ckQuickGetSb(http,"https://api.getpostman.com/apis/{{apiId}}/versions/{{apiVersionId}}/schemas/{{schemaId}}",sbResponseBody)
    If success = 0
        Debug CkHttp::ckLastErrorText(http)
        CkHttp::ckDispose(http)
        CkStringBuilder::ckDispose(sbResponseBody)
        ProcedureReturn
    EndIf

    jResp.i = CkJsonObject::ckCreate()
    If jResp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckLoadSb(jResp,sbResponseBody)
    CkJsonObject::setCkEmitCompact(jResp, 0)

    Debug "Response Body:"
    Debug CkJsonObject::ckEmit(jResp)

    respStatusCode.i = CkHttp::ckLastStatus(http)
    Debug "Response Status Code = " + Str(respStatusCode)
    If respStatusCode >= 400
        Debug "Response Header:"
        Debug CkHttp::ckLastHeader(http)
        Debug "Failed."
        CkHttp::ckDispose(http)
        CkStringBuilder::ckDispose(sbResponseBody)
        CkJsonObject::ckDispose(jResp)
        ProcedureReturn
    EndIf

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

    ; {
    ;   "schema": {
    ;     "id": "e3b3a0b7-34d5-4fc5-83e0-118bd9e8c822",
    ;     "language": "json",
    ;     "apiVersion": "ad810c39-df60-434e-a76f-a2192cd8d81f",
    ;     "type": "openapi3",
    ;     "createdBy": "5665",
    ;     "updatedBy": "5665",
    ;     "createdAt": "2021-05-22T13:17:07.000Z",
    ;     "updatedAt": "2021-05-22T13:17:07.000Z",
    ;     "schema": "{\n  \"openapi\": \"3.0.0\",\n  \"info\": null,\n  \"version\": \"v1.0\",\n  \"title\": \"API\",\n  \"servers\": [\n    {\n      \"url\": \"http:\/\/localhost:3000\"\n    }\n  ],\n  \"paths\": {\n    \"\/user\": {\n      \"get\": {\n        \"summary\": \"Returns details about a particular user\",\n        \"operationId\": \"listUser\",\n        \"tags\": [\n          \"user\"\n        ],\n        \"parameters\": [\n          {\n            \"name\": \"id\",\n            \"in\": \"query\",\n            \"description\": \"ID of the user\",\n            \"required\": true,\n            \"schema\": {\n              \"type\": \"integer\",\n              \"format\": \"int32\"\n            }\n          }\n        ],\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Details about a user by ID\",\n            \"headers\": {\n              \"x-next\": {\n                \"description\": \"A link to the next page of responses\",\n                \"schema\": {\n                  \"type\": \"string\"\n                }\n              }\n            },\n            \"content\": {\n              \"application\/json\": {\n                \"schema\": {\n                  \"$ref\": \"\\\\'#\/components\/schemas\/User\\\\'\"\n                }\n              }\n            }\n          },\n          \"default\": {\n            \"description\": \"Unexpected error\",\n            \"content\": {\n              \"application\/json\": {\n                \"schema\": {\n                  \"$ref\": \"\\\\'#\/components\/schemas\/Error\\\\'\"\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  },\n  \"components\": {\n    \"schemas\": {\n      \"User\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"id\",\n          \"name\"\n        ],\n        \"properties\": {\n          \"id\": {\n            \"type\": \"integer\",\n            \"format\": \"int64\"\n          },\n          \"name\": {\n            \"type\": \"string\"\n          },\n          \"tag\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"Error\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"code\",\n          \"message\"\n        ],\n        \"properties\": {\n          \"code\": {\n            \"type\": \"integer\",\n            \"format\": \"int32\"\n          },\n          \"message\": {\n            \"type\": \"string\"\n          }\n        }\n      }\n    }\n  }\n}"
    ;   }
    ; }

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

    Id.s = CkJsonObject::ckStringOf(jResp,"schema.id")
    Language.s = CkJsonObject::ckStringOf(jResp,"schema.language")
    ApiVersion.s = CkJsonObject::ckStringOf(jResp,"schema.apiVersion")
    v_Type.s = CkJsonObject::ckStringOf(jResp,"schema.type")
    CreatedBy.s = CkJsonObject::ckStringOf(jResp,"schema.createdBy")
    UpdatedBy.s = CkJsonObject::ckStringOf(jResp,"schema.updatedBy")
    CreatedAt.s = CkJsonObject::ckStringOf(jResp,"schema.createdAt")
    UpdatedAt.s = CkJsonObject::ckStringOf(jResp,"schema.updatedAt")
    Schema.s = CkJsonObject::ckStringOf(jResp,"schema.schema")


    CkHttp::ckDispose(http)
    CkStringBuilder::ckDispose(sbResponseBody)
    CkJsonObject::ckDispose(jResp)


    ProcedureReturn
EndProcedure

Curl Command

curl -X GET
	-H "X-API-Key: {{postman_api_key}}"
https://api.getpostman.com/apis/{{apiId}}/versions/{{apiVersionId}}/schemas/{{schemaId}}

Postman Collection Item JSON

{
  "name": "Get Schema",
  "request": {
    "method": "GET",
    "header": [
    ],
    "url": {
      "raw": "https://api.getpostman.com/apis/{{apiId}}/versions/{{apiVersionId}}/schemas/{{schemaId}}",
      "protocol": "https",
      "host": [
        "api",
        "getpostman",
        "com"
      ],
      "path": [
        "apis",
        "{{apiId}}",
        "versions",
        "{{apiVersionId}}",
        "schemas",
        "{{schemaId}}"
      ]
    },
    "description": "This call fetches a single schema having the specified id.\n\nResponse contains a `schema` object with all the details related to the schema, namely, `id`, `language`, `type`, `schema` etc. \n\n> Requires <a href=\"#authentication\">API Key</a> as `X-Api-Key` request header or `apikey` URL query parameter."
  },
  "response": [
    {
      "name": "Get schema",
      "originalRequest": {
        "method": "GET",
        "header": [
        ],
        "url": {
          "raw": "https://api.getpostman.com/apis/{{apiId}}/versions/{{apiVersionId}}/schemas/{{schemaId}}",
          "protocol": "https",
          "host": [
            "api",
            "getpostman",
            "com"
          ],
          "path": [
            "apis",
            "{{apiId}}",
            "versions",
            "{{apiVersionId}}",
            "schemas",
            "{{schemaId}}"
          ]
        }
      },
      "status": "OK",
      "code": 200,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "Content-Type",
          "value": "application/json",
          "description": {
            "content": "",
            "type": "text/plain"
          }
        }
      ],
      "cookie": [
      ],
      "body": "{\n\t\"schema\": {\n\t\t\"id\": \"e3b3a0b7-34d5-4fc5-83e0-118bd9e8c822\",\n\t\t\"language\": \"json\",\n\t\t\"apiVersion\": \"ad810c39-df60-434e-a76f-a2192cd8d81f\",\n\t\t\"type\": \"openapi3\",\n\t\t\"createdBy\": \"5665\",\n        \"updatedBy\": \"5665\",\n\t\t\"createdAt\": \"2021-05-22T13:17:07.000Z\",\n\t\t\"updatedAt\": \"2021-05-22T13:17:07.000Z\",\n        \"schema\": \"{\\n  \\\"openapi\\\": \\\"3.0.0\\\",\\n  \\\"info\\\": null,\\n  \\\"version\\\": \\\"v1.0\\\",\\n  \\\"title\\\": \\\"API\\\",\\n  \\\"servers\\\": [\\n    {\\n      \\\"url\\\": \\\"http:\\/\\/localhost:3000\\\"\\n    }\\n  ],\\n  \\\"paths\\\": {\\n    \\\"\\/user\\\": {\\n      \\\"get\\\": {\\n        \\\"summary\\\": \\\"Returns details about a particular user\\\",\\n        \\\"operationId\\\": \\\"listUser\\\",\\n        \\\"tags\\\": [\\n          \\\"user\\\"\\n        ],\\n        \\\"parameters\\\": [\\n          {\\n            \\\"name\\\": \\\"id\\\",\\n            \\\"in\\\": \\\"query\\\",\\n            \\\"description\\\": \\\"ID of the user\\\",\\n            \\\"required\\\": true,\\n            \\\"schema\\\": {\\n              \\\"type\\\": \\\"integer\\\",\\n              \\\"format\\\": \\\"int32\\\"\\n            }\\n          }\\n        ],\\n        \\\"responses\\\": {\\n          \\\"200\\\": {\\n            \\\"description\\\": \\\"Details about a user by ID\\\",\\n            \\\"headers\\\": {\\n              \\\"x-next\\\": {\\n                \\\"description\\\": \\\"A link to the next page of responses\\\",\\n                \\\"schema\\\": {\\n                  \\\"type\\\": \\\"string\\\"\\n                }\\n              }\\n            },\\n            \\\"content\\\": {\\n              \\\"application\\/json\\\": {\\n                \\\"schema\\\": {\\n                  \\\"$ref\\\": \\\"\\\\\\\\'#\\/components\\/schemas\\/User\\\\\\\\'\\\"\\n                }\\n              }\\n            }\\n          },\\n          \\\"default\\\": {\\n            \\\"description\\\": \\\"Unexpected error\\\",\\n            \\\"content\\\": {\\n              \\\"application\\/json\\\": {\\n                \\\"schema\\\": {\\n                  \\\"$ref\\\": \\\"\\\\\\\\'#\\/components\\/schemas\\/Error\\\\\\\\'\\\"\\n                }\\n              }\\n            }\\n          }\\n        }\\n      }\\n    }\\n  },\\n  \\\"components\\\": {\\n    \\\"schemas\\\": {\\n      \\\"User\\\": {\\n        \\\"type\\\": \\\"object\\\",\\n        \\\"required\\\": [\\n          \\\"id\\\",\\n          \\\"name\\\"\\n        ],\\n        \\\"properties\\\": {\\n          \\\"id\\\": {\\n            \\\"type\\\": \\\"integer\\\",\\n            \\\"format\\\": \\\"int64\\\"\\n          },\\n          \\\"name\\\": {\\n            \\\"type\\\": \\\"string\\\"\\n          },\\n          \\\"tag\\\": {\\n            \\\"type\\\": \\\"string\\\"\\n          }\\n        }\\n      },\\n      \\\"Error\\\": {\\n        \\\"type\\\": \\\"object\\\",\\n        \\\"required\\\": [\\n          \\\"code\\\",\\n          \\\"message\\\"\\n        ],\\n        \\\"properties\\\": {\\n          \\\"code\\\": {\\n            \\\"type\\\": \\\"integer\\\",\\n            \\\"format\\\": \\\"int32\\\"\\n          },\\n          \\\"message\\\": {\\n            \\\"type\\\": \\\"string\\\"\\n          }\\n        }\\n      }\\n    }\\n  }\\n}\"\n\t}\n}"
    }
  ]
}