Danke für den Hinweis auf cmdb.category_info.read, die ist in der aktuellen Dokumentation (nicht der als veraltet deklarierten PDF) nicht mehr aufgelistet. Den Title eines Feldes anhand des Identifier so auszulesen funktioniert zwar, jedoch muss dafür die komplette Kategorie abgerufen und dann über das Rückgabeobjekt iteriert werden, um auf den Title zu kommen, nicht wirklich die effizienteste Art und Weise.
Weiterhin beim eingangs beschriebenen Beispiel bleibend würde es ungefähr folgendermaßen ablaufen, um bei bekanntem Feld Identifier c_1581951179201
und Category Constant C__CATG__CUSTOM_FIELDS_BISRTE_OPENSHIFT
den Feld Title TESTFIELD
auszulesen:
Abfrage:
{
'version' => '2.0',
'id' => '861877',
'params' => {
'category' => 'C__CATG__CUSTOM_FIELDS_BISRTE_OPENSHIFT',
'apikey' => '<apikey>'
},
'method' => 'cmdb.category_info.read'
}
Rückgabeobjekt (3000 Zeilen, verkürzt zur besseren Lesbarkeit) :
{
'f_text_c_1581615851723' => {
'check' => {
'mandatory' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' )
},
'info' => {
'type' => 'text',
'title' => 'W4B_URL',
'backward' => do{my $o},
'primary_field' => do{my $o},
'description' => 'f_text'
},
'title' => 'W4B_URL',
'ui' => {
'default' => undef,
'params' => {
'visibility' => 'visible',
'type' => 'f_text',
'title' => 'W4B_URL',
'p_nMaxLen' => 255,
'show_in_list' => 1
},
'id' => 'c_1581615851723',
'type' => 'text'
},
'data' => {
'field_alias' => 'f_text_c_1581615851723',
'readonly' => do{my $o},
'index' => do{my $o},
'type' => 'text',
'field' => 'isys_catg_custom_fields_list__field_content',
'select' => {}
}
},
[...]
'f_text_c_1581951179201' => {
'info' => {
'backward' => do{my $o},
'primary_field' => do{my $o},
'description' => 'f_text',
'type' => 'text',
'title' => 'TESTFIELD'
},
'title' => 'TESTFIELD',
'ui' => {
'id' => 'c_1581951179201',
'params' => {
'type' => 'f_text',
'visibility' => 'visible',
'title' => 'TESTFIELD',
'p_nMaxLen' => 255,
'show_in_list' => 1
},
'type' => 'text',
'default' => undef
},
'data' => {
'field' => 'isys_catg_custom_fields_list__field_content',
'select' => {},
'field_alias' => 'f_text_c_1581951179201',
'readonly' => do{my $o},
'index' => do{my $o},
'type' => 'text'
},
'check' => {
'mandatory' => do{my $o}
}
},
'f_text_c_1581615920674' => {
'ui' => {
'params' => {
'title' => 'NORM_HTTP_ACTIVE',
'p_nMaxLen' => 255,
'visibility' => 'visible',
'type' => 'f_text',
'show_in_list' => 1
},
'id' => 'c_1581615920674',
'type' => 'text',
'default' => undef
},
'data' => {
'select' => {},
'field' => 'isys_catg_custom_fields_list__field_content',
'index' => do{my $o},
'readonly' => do{my $o},
'type' => 'text',
'field_alias' => 'f_text_c_1581615920674'
},
'info' => {
'type' => 'text',
'title' => 'NORM_HTTP_ACTIVE',
'backward' => do{my $o},
'primary_field' => do{my $o},
'description' => 'f_text'
},
'title' => 'NORM_HTTP_ACTIVE',
'check' => {
'mandatory' => do{my $o}
}
},
[...]
}
Perl Schleife zum Auslesen des Title Felds, welches zum Identifier gehört ($callobjectfieldname entspricht dem oben gezeigten Abfrage-Objekt):
my $fields = $client->call($uri, $callobjfieldname);
while(my($key, $value) = each (%{ $fields->result }))
{
if ($fieldconstname =~ m/$key/ ){
return $value->{'title'};
}
}
Sehr viel Aufwand, um ein Attribute für eine bekannten Category Constant, Field Identifier Kombination auszulesen, obwohl jede von diesen Kombinationen zwingend unique ist und somit eine Abfrage mit beiden als Parameter direkt das Feld ansteuern und eine Menge Arbeit vermeiden könnte. Gibt es da wirklich keinen anderen Weg als den hier aufgezeigten?