Back to Collection Items
#include <C_CkHttp.h>
#include <C_CkJsonObject.h>
#include <C_CkHttpResponse.h>
#include <C_CkStringBuilder.h>
void ChilkatSample(void)
{
HCkHttp http;
BOOL success;
HCkJsonObject queryParams;
HCkHttpResponse resp;
HCkStringBuilder sbResponseBody;
HCkJsonObject jResp;
int respStatusCode;
const char *Github_html_url;
const char *Ingested_schema_version;
const char *Ingestion_source;
const char *Last_modified_time;
const char *Origin;
const char *Origin_detail;
const char *Schema_version;
const char *Dd_service;
const char *Description;
const char *Display_name;
const char *Service_tier;
const char *v_Email;
const char *Slack;
const char *Pagerduty;
const char *Application;
const char *Team;
const char *id;
const char *v_type;
int j;
int count_j;
const char *instance_location;
const char *keyword_location;
const char *message;
const char *name;
const char *url;
const char *strVal;
int i;
int count_i;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
http = CkHttp_Create();
queryParams = CkJsonObject_Create();
CkJsonObject_UpdateInt(queryParams,"page[size]",10);
CkJsonObject_UpdateInt(queryParams,"page[number]",0);
CkJsonObject_UpdateString(queryParams,"schema_version","v1");
CkHttp_SetRequestHeader(http,"Accept","application/json");
resp = CkHttp_QuickRequestParams(http,"GET","https://api.app.ddog-gov.com/api/v2/services/definitions",queryParams);
if (CkHttp_getLastMethodSuccess(http) == FALSE) {
printf("%s\n",CkHttp_lastErrorText(http));
CkHttp_Dispose(http);
CkJsonObject_Dispose(queryParams);
return;
}
sbResponseBody = CkStringBuilder_Create();
CkHttpResponse_GetBodySb(resp,sbResponseBody);
jResp = CkJsonObject_Create();
CkJsonObject_LoadSb(jResp,sbResponseBody);
CkJsonObject_putEmitCompact(jResp,FALSE);
printf("Response Body:\n");
printf("%s\n",CkJsonObject_emit(jResp));
respStatusCode = CkHttpResponse_getStatusCode(resp);
printf("Response Status Code = %d\n",respStatusCode);
if (respStatusCode >= 400) {
printf("Response Header:\n");
printf("%s\n",CkHttpResponse_header(resp));
printf("Failed.\n");
CkHttpResponse_Dispose(resp);
CkHttp_Dispose(http);
CkJsonObject_Dispose(queryParams);
CkStringBuilder_Dispose(sbResponseBody);
CkJsonObject_Dispose(jResp);
return;
}
CkHttpResponse_Dispose(resp);
// Sample JSON response:
// (Sample code for parsing the JSON response is shown below)
// {
// "data": [
// {
// "attributes": {
// "meta": {
// "github-html-url": "<string>",
// "ingested-schema-version": "<string>",
// "ingestion-source": "<string>",
// "last-modified-time": "<string>",
// "origin": "<string>",
// "origin-detail": "<string>",
// "warnings": [
// {
// "instance-location": "<string>",
// "keyword-location": "<string>",
// "message": "<string>"
// },
// {
// "instance-location": "<string>",
// "keyword-location": "<string>",
// "message": "<string>"
// }
// ]
// },
// "schema": {
// "schema-version": "v1",
// "info": {
// "dd-service": "<string>",
// "description": "<string>",
// "display-name": "<string>",
// "service-tier": "<string>"
// },
// "contact": {
// "email": "<email>",
// "slack": "<string>"
// },
// "extensions": {
// "ut_a": {},
// "consequat_894": {}
// },
// "external-resources": [
// {
// "name": "<string>",
// "type": "url",
// "url": "<string>"
// },
// {
// "name": "<string>",
// "type": "repo",
// "url": "<string>"
// }
// ],
// "integrations": {
// "pagerduty": "<string>"
// },
// "org": {
// "application": "<string>",
// "team": "<string>"
// },
// "tags": [
// "<string>",
// "<string>"
// ]
// }
// },
// "id": "<string>",
// "type": "<string>"
// },
// {
// "attributes": {
// "meta": {
// "github-html-url": "<string>",
// "ingested-schema-version": "<string>",
// "ingestion-source": "<string>",
// "last-modified-time": "<string>",
// "origin": "<string>",
// "origin-detail": "<string>",
// "warnings": [
// {
// "instance-location": "<string>",
// "keyword-location": "<string>",
// "message": "<string>"
// },
// {
// "instance-location": "<string>",
// "keyword-location": "<string>",
// "message": "<string>"
// }
// ]
// },
// "schema": {
// "schema-version": "v1",
// "info": {
// "dd-service": "<string>",
// "description": "<string>",
// "display-name": "<string>",
// "service-tier": "<string>"
// },
// "contact": {
// "email": "<email>",
// "slack": "<string>"
// },
// "extensions": {
// "dolor1_9": {},
// "ea_7c": {},
// "consequat_a": {}
// },
// "external-resources": [
// {
// "name": "<string>",
// "type": "oncall",
// "url": "<string>"
// },
// {
// "name": "<string>",
// "type": "code",
// "url": "<string>"
// }
// ],
// "integrations": {
// "pagerduty": "<string>"
// },
// "org": {
// "application": "<string>",
// "team": "<string>"
// },
// "tags": [
// "<string>",
// "<string>"
// ]
// }
// },
// "id": "<string>",
// "type": "<string>"
// }
// ]
// }
// Sample code for parsing the JSON response...
// Use this online tool to generate parsing code from sample JSON: Generate JSON Parsing Code
// Chilkat functions returning "const char *" return a pointer to temporary internal memory owned and managed by Chilkat.
i = 0;
count_i = CkJsonObject_SizeOfArray(jResp,"data");
while (i < count_i) {
CkJsonObject_putI(jResp,i);
Github_html_url = CkJsonObject_stringOf(jResp,"data[i].attributes.meta.github-html-url");
Ingested_schema_version = CkJsonObject_stringOf(jResp,"data[i].attributes.meta.ingested-schema-version");
Ingestion_source = CkJsonObject_stringOf(jResp,"data[i].attributes.meta.ingestion-source");
Last_modified_time = CkJsonObject_stringOf(jResp,"data[i].attributes.meta.last-modified-time");
Origin = CkJsonObject_stringOf(jResp,"data[i].attributes.meta.origin");
Origin_detail = CkJsonObject_stringOf(jResp,"data[i].attributes.meta.origin-detail");
Schema_version = CkJsonObject_stringOf(jResp,"data[i].attributes.schema.schema-version");
Dd_service = CkJsonObject_stringOf(jResp,"data[i].attributes.schema.info.dd-service");
Description = CkJsonObject_stringOf(jResp,"data[i].attributes.schema.info.description");
Display_name = CkJsonObject_stringOf(jResp,"data[i].attributes.schema.info.display-name");
Service_tier = CkJsonObject_stringOf(jResp,"data[i].attributes.schema.info.service-tier");
v_Email = CkJsonObject_stringOf(jResp,"data[i].attributes.schema.contact.email");
Slack = CkJsonObject_stringOf(jResp,"data[i].attributes.schema.contact.slack");
Pagerduty = CkJsonObject_stringOf(jResp,"data[i].attributes.schema.integrations.pagerduty");
Application = CkJsonObject_stringOf(jResp,"data[i].attributes.schema.org.application");
Team = CkJsonObject_stringOf(jResp,"data[i].attributes.schema.org.team");
id = CkJsonObject_stringOf(jResp,"data[i].id");
v_type = CkJsonObject_stringOf(jResp,"data[i].type");
j = 0;
count_j = CkJsonObject_SizeOfArray(jResp,"data[i].attributes.meta.warnings");
while (j < count_j) {
CkJsonObject_putJ(jResp,j);
instance_location = CkJsonObject_stringOf(jResp,"data[i].attributes.meta.warnings[j].instance-location");
keyword_location = CkJsonObject_stringOf(jResp,"data[i].attributes.meta.warnings[j].keyword-location");
message = CkJsonObject_stringOf(jResp,"data[i].attributes.meta.warnings[j].message");
j = j + 1;
}
j = 0;
count_j = CkJsonObject_SizeOfArray(jResp,"data[i].attributes.schema.external-resources");
while (j < count_j) {
CkJsonObject_putJ(jResp,j);
name = CkJsonObject_stringOf(jResp,"data[i].attributes.schema.external-resources[j].name");
v_type = CkJsonObject_stringOf(jResp,"data[i].attributes.schema.external-resources[j].type");
url = CkJsonObject_stringOf(jResp,"data[i].attributes.schema.external-resources[j].url");
j = j + 1;
}
j = 0;
count_j = CkJsonObject_SizeOfArray(jResp,"data[i].attributes.schema.tags");
while (j < count_j) {
CkJsonObject_putJ(jResp,j);
strVal = CkJsonObject_stringOf(jResp,"data[i].attributes.schema.tags[j]");
j = j + 1;
}
i = i + 1;
}
CkHttp_Dispose(http);
CkJsonObject_Dispose(queryParams);
CkStringBuilder_Dispose(sbResponseBody);
CkJsonObject_Dispose(jResp);
}
Curl Command
curl -G -d "page[size]=10"
-d "page[number]=0"
-d "schema_version=v1"
-H "Accept: application/json"
https://api.app.ddog-gov.com/api/v2/services/definitions
Postman Collection Item JSON
{
"name": "Get all service definitions",
"request": {
"method": "GET",
"header": [
{
"key": "Accept",
"value": "application/json"
}
],
"url": {
"raw": "{{baseUrl}}/api/v2/services/definitions?page[size]=10&page[number]=0&schema_version=v1",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"v2",
"services",
"definitions"
],
"query": [
{
"key": "page[size]",
"value": "10",
"description": "Size for a given page. The maximum allowed value is 100."
},
{
"key": "page[number]",
"value": "0",
"description": "Specific page number to return."
},
{
"key": "schema_version",
"value": "v1",
"description": "The schema version desired in the response."
}
]
},
"description": "Get a list of all service definitions from the Datadog Service Catalog."
},
"response": [
{
"name": "OK",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Accept",
"value": "application/json"
},
{
"description": "Added as a part of security scheme: apikey",
"key": "DD-API-KEY",
"value": "<API Key>"
}
],
"url": {
"raw": "{{baseUrl}}/api/v2/services/definitions?page[size]=10&page[number]=0&schema_version=v1",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"v2",
"services",
"definitions"
],
"query": [
{
"key": "page[size]",
"value": "10",
"description": "Size for a given page. The maximum allowed value is 100."
},
{
"key": "page[number]",
"value": "0",
"description": "Specific page number to return."
},
{
"key": "schema_version",
"value": "v1",
"description": "The schema version desired in the response."
}
]
}
},
"status": "OK",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"cookie": [
],
"body": "{\n \"data\": [\n {\n \"attributes\": {\n \"meta\": {\n \"github-html-url\": \"<string>\",\n \"ingested-schema-version\": \"<string>\",\n \"ingestion-source\": \"<string>\",\n \"last-modified-time\": \"<string>\",\n \"origin\": \"<string>\",\n \"origin-detail\": \"<string>\",\n \"warnings\": [\n {\n \"instance-location\": \"<string>\",\n \"keyword-location\": \"<string>\",\n \"message\": \"<string>\"\n },\n {\n \"instance-location\": \"<string>\",\n \"keyword-location\": \"<string>\",\n \"message\": \"<string>\"\n }\n ]\n },\n \"schema\": {\n \"schema-version\": \"v1\",\n \"info\": {\n \"dd-service\": \"<string>\",\n \"description\": \"<string>\",\n \"display-name\": \"<string>\",\n \"service-tier\": \"<string>\"\n },\n \"contact\": {\n \"email\": \"<email>\",\n \"slack\": \"<string>\"\n },\n \"extensions\": {\n \"ut_a\": {},\n \"consequat_894\": {}\n },\n \"external-resources\": [\n {\n \"name\": \"<string>\",\n \"type\": \"url\",\n \"url\": \"<string>\"\n },\n {\n \"name\": \"<string>\",\n \"type\": \"repo\",\n \"url\": \"<string>\"\n }\n ],\n \"integrations\": {\n \"pagerduty\": \"<string>\"\n },\n \"org\": {\n \"application\": \"<string>\",\n \"team\": \"<string>\"\n },\n \"tags\": [\n \"<string>\",\n \"<string>\"\n ]\n }\n },\n \"id\": \"<string>\",\n \"type\": \"<string>\"\n },\n {\n \"attributes\": {\n \"meta\": {\n \"github-html-url\": \"<string>\",\n \"ingested-schema-version\": \"<string>\",\n \"ingestion-source\": \"<string>\",\n \"last-modified-time\": \"<string>\",\n \"origin\": \"<string>\",\n \"origin-detail\": \"<string>\",\n \"warnings\": [\n {\n \"instance-location\": \"<string>\",\n \"keyword-location\": \"<string>\",\n \"message\": \"<string>\"\n },\n {\n \"instance-location\": \"<string>\",\n \"keyword-location\": \"<string>\",\n \"message\": \"<string>\"\n }\n ]\n },\n \"schema\": {\n \"schema-version\": \"v1\",\n \"info\": {\n \"dd-service\": \"<string>\",\n \"description\": \"<string>\",\n \"display-name\": \"<string>\",\n \"service-tier\": \"<string>\"\n },\n \"contact\": {\n \"email\": \"<email>\",\n \"slack\": \"<string>\"\n },\n \"extensions\": {\n \"dolor1_9\": {},\n \"ea_7c\": {},\n \"consequat_a\": {}\n },\n \"external-resources\": [\n {\n \"name\": \"<string>\",\n \"type\": \"oncall\",\n \"url\": \"<string>\"\n },\n {\n \"name\": \"<string>\",\n \"type\": \"code\",\n \"url\": \"<string>\"\n }\n ],\n \"integrations\": {\n \"pagerduty\": \"<string>\"\n },\n \"org\": {\n \"application\": \"<string>\",\n \"team\": \"<string>\"\n },\n \"tags\": [\n \"<string>\",\n \"<string>\"\n ]\n }\n },\n \"id\": \"<string>\",\n \"type\": \"<string>\"\n }\n ]\n}"
},
{
"name": "Forbidden",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Accept",
"value": "application/json"
},
{
"description": "Added as a part of security scheme: apikey",
"key": "DD-API-KEY",
"value": "<API Key>"
}
],
"url": {
"raw": "{{baseUrl}}/api/v2/services/definitions?page[size]=10&page[number]=0&schema_version=v1",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"v2",
"services",
"definitions"
],
"query": [
{
"key": "page[size]",
"value": "10",
"description": "Size for a given page. The maximum allowed value is 100."
},
{
"key": "page[number]",
"value": "0",
"description": "Specific page number to return."
},
{
"key": "schema_version",
"value": "v1",
"description": "The schema version desired in the response."
}
]
}
},
"status": "Forbidden",
"code": 403,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"cookie": [
],
"body": "{\n \"errors\": [\n \"<string>\",\n \"<string>\"\n ]\n}"
},
{
"name": "Too many requests",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Accept",
"value": "application/json"
},
{
"description": "Added as a part of security scheme: apikey",
"key": "DD-API-KEY",
"value": "<API Key>"
}
],
"url": {
"raw": "{{baseUrl}}/api/v2/services/definitions?page[size]=10&page[number]=0&schema_version=v1",
"host": [
"{{baseUrl}}"
],
"path": [
"api",
"v2",
"services",
"definitions"
],
"query": [
{
"key": "page[size]",
"value": "10",
"description": "Size for a given page. The maximum allowed value is 100."
},
{
"key": "page[number]",
"value": "0",
"description": "Specific page number to return."
},
{
"key": "schema_version",
"value": "v1",
"description": "The schema version desired in the response."
}
]
}
},
"status": "Too Many Requests",
"code": 429,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"cookie": [
],
"body": "{\n \"errors\": [\n \"<string>\",\n \"<string>\"\n ]\n}"
}
]
}