Général:FAQ API job

De WikiFr_dbSQWare
Version datée du 25 juin 2025 à 17:21 par Tpayan (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Généralités

Limites de cette section

Cette section n’a pas la prétention de traiter tous les cas possibles d'utilisation de l'API de mise à jour des indicateurs.
Vous devez être à l'aise avec le concept des API et la gestion de token, si ce n'est pas le cas, faites appel au support.
Attention, vous allez mettre à jour les tables de traçage des jobs, vous devez savoir ce que vous faites !

Paramétrage préalable

Afin de pouvoir utiliser l'API des indicateurs, vous devez au préalable avoir paramétré un token statique pour l'instance cible.

Exemples d'utilisation

Vous devez adapter les exemples suivants avec vos propres données (URL, user, password, ...)
Ceci représente une base pour du Python, PHP, Shell et PowerShell.
Vous pouvez bien évidemment utiliser le langage de votre choix.

Python

import requests
import json
import base64

staticToken = ""

"""
Does API request.

:param method  : Request method
:param url     : Website url
:param headers : JSON object headers 
:param data    : JSON object data
:return        : API request return
"""
def apiRequest(method, url, headers = {}, data = {}):
    response = requests.request(method, url, headers=headers, data=data)
    return response  

"""
Create new job trace.

:param data : JSON object data
:return     : Request response
"""
def postJobTrace(data):
    # Init request
    method  = 'POST'
    url     = f"https://webdba.dbsqware.com/lib/apiAudit.php?type=job&token={staticToken}"
    headers = {'Content-Type': 'application/json'}
    data    = json.dumps(data)

    # API request
    response = apiRequest(method, url, headers=headers, data=data)
    if response == '':
        print('Failure of the API request !')
        return 0

    response = json.loads(response.text)
    if 'error_message' in response:
        print(f"Error message [{response['error_message']}]")
        return 0
    
    print('Insert with success !')
    return 1

def main():
    # Post new job trace
    data = {
        "dbalias"   : "AATestAPI_Upd",
        "jobupid"   : "123456",
        "beginning" : "2022-07-11 09:20:00",
        "script"    : "sqwora_RunJob.ksh",
        "parameters": "-I AATestAPI_Upd -A ExpdpFull",
        "jobpidctl" : "-1",
        "end"       : "2022-07-11 09:25:00",
        "status"    : "12",
        "log_file"  : base64.b64encode("This is my log file.".encode()).decode(),
        "mail_file" : base64.b64encode("This is my mail file.".encode()).decode()
    }

    postJobTrace(data)

if __name__ == '__main__':
    main()

PHP

<?php

$staticToken = "";

/**
 * Does API request.
 * 
 * @param  string  $method : Request method
 * @param  string  $url    : Website url
 * @param  array  $headers : JSON object headers 
 * @param  string  $data   : JSON object data
 * @return string
 */
function apiRequest(string $method, string $url, array $headers = [], $data = '{}'): string
{
    $curl = curl_init();

    curl_setopt_array($curl, [
        CURLOPT_URL            => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING       => '',
        CURLOPT_MAXREDIRS      => 10,
        CURLOPT_TIMEOUT        => 0,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTP_VERSION   => CURL_HTTP_VERSION_1_1,
        CURLOPT_SSL_VERIFYHOST => 0,
        CURLOPT_SSL_VERIFYPEER => 0,
        CURLOPT_CUSTOMREQUEST  => $method,
        CURLOPT_POSTFIELDS     => $data,
        CURLOPT_HTTPHEADER     => $headers,
    ]);

    $response = curl_exec($curl);
    curl_close($curl);

    return $response;
}

/**
 * Create new job trace.
 * 
 * @param  array  $data : JSON object data
 * @return bool
 */
function postJobTrace($data): bool
{
    global $staticToken;

    // Init request
    $method  = 'POST';
    $url     = "https://webdba.dbsqware.com/lib/apiAudit.php?type=job&token={$staticToken}";
    $headers = ['Content-Type: application/json'];
    $data    = json_encode($data, JSON_FORCE_OBJECT);

    // API request
    $response = apiRequest($method, $url, $headers=$headers, $data=$data);
    if (empty($response)) {
        echo('Failure of the API request !');
        return 0;
    }

    $response = json_decode($response, true);
    if (array_key_exists('error_message', $response)) {
        echo("Error message [{$response['error_message']}]");
        return 0;
    }

    echo('Insert with success !');
    return 1;
}

function main(): void
{
    // Post new job trace
    $data = [
        "dbalias"    => "AATestAPI_Upd",
        "jobupid"    => "123456",
        "beginning"  => "2022-07-11 09:20:00",
        "script"     => "sqwora_RunJob.ksh",
        "parameters" => "-I AATestAPI_Upd -A ExpdpFull",
        "jobpidctl"  => "-1",
        "end"        => "2022-07-11 09:25:00",
        "status"     => "12",
        "log_file"   => base64_encode("This is my log file."),
        "mail_file"  => base64_encode("This is my mail file.")
    ];

    postJobTrace($data);
}

main();

?>

Shell

#!/bin/sh

staticToken=""
tempfile=api_dbSQWare.tmp

<<COMMENTS
    Create new job trace.

    :param data : JSON object data
    :return       : request response
COMMENTS
postJobTrace() {
    data="$1"

    # API request
    curl --location --request POST "https://webdba.dbsqware.com/lib/apiAudit.php?type=job&token=$staticToken" -H "Content-Type:application/json" -d "$data" > $tempfile 2>$tempfile.err
	if [ ! -s "$tempfile" ]; then
        echo 'Failure of the API request !'
        return 0
    fi

    if grep -q '"error_message"' "$tempfile"; then
        errorMessage=$(grep '"error_message": "' "$tempfile" | cut -d'"' -f4)
        echo "Error message [$errorMessage]"
        return 0
    fi

    echo 'Insert with success !'
    return 1
}

main() {
    # Post new job trace
    logFile=$(echo -n "This is my log file." | base64)
    mailFile=$(echo -n "This is my mail file." | base64)
    data='{"dbalias":"AATestAPI_Upd","jobupid":"123456","beginning":"2022-07-11 09:20:00","script":"sqwora_RunJob.ksh","parameters":"-I AATestAPI_Upd -A ExpdpFull","jobpidctl":"-1","end":"2022-07-11 09:25:00","status":"12","log_file":"'"$logFile"'","mail_file":"'"$mailFile"'"}'
    postJobTrace "$data"
}

main

PowerShell

$staticToken = ""
$tempfile    = ".\api_dbSQWare.json"

<#
    Create new job trace.

    :param data : JSON object data
    :return     : Request response
#>
function postJobTrace($data) {
    $params = @{
        Method      = 'Post'
        Uri         = "https://webdba.dbsqware.com/lib/apiAudit.php?type=job&token=$staticToken" 
        Body        = $data | ConvertTo-Json
        ContentType = 'application/json'
    }
    Invoke-RestMethod @t_params -OutFile $tempfile

    # API request
    $response = Get-Content -Path $tempfile | ConvertFrom-Json

    if (-not $response) {
        Write-Output 'Failure of the API request !'
        return 0
    }

    if ($response.PSObject.Properties.Name -contains 'error_message') {
        Write-Output "Error message [$($response.error_message)]"
        return 0
    }
}

function main {
    # Post new job trace
    $data = @{
        dbalias    = "AATestAPI_Upd"
        jobupid    = "123456"
        beginning  = "2022-07-11 09:20:00"
        script     = "sqwora_RunJob.ksh"
        parameters = "-I AATestAPI_Upd -A ExpdpFull"
        jobpidctl  = "-1"
        end        = "2022-07-11 09:25:00"
        status     = "12"
        log_file  = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("This is my log file."))
        mail_file = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("This is my mail file."))
    }

    postJobTrace($data)
}

main