Ressource de données REST générique

Actuellement, vous devez télécharger un fichier manifeste lorsque vous créez une ressource de données REST. Un fichier manifeste décrit l'ensemble de l'API de votre URL de base, y compris les chemins, les opérations, les paramètres, le corps de la demande et les structures de réponse, ainsi que les propriétés d'objet. Le fichier ne doit pas dépasser 3 Mo.

Avant de créer une ressource de données REST, assurez-vous de comprendre ce qui est pris en charge et les limites actuelles.

Avant de commencer

Data Integration prend en charge OpenAPI 3.0.0 (et versions ultérieures) et uniquement les fichiers manifestes JSON ou YML/YAML pour votre source de données REST.

Pour créer une ressource de données REST, vous devez fournir l'URL de base de vos adresses d'API et télécharger le fichier manifeste.

Une adresse d'API complète se compose d'une URL de base, d'un chemin de ressource et d'une URL de serveur définie dans le fichier manifeste. Prenons l'adresse avec le chemin /users/findByStatus :

https://myapi.example.com/v1/users/findByStatus

Si l'URL du serveur du fichier manifeste est /v1, l'URL de base est la suivante :

https://myapi.example.com

Si l'URL du serveur n'est pas définie dans le fichier manifeste ou si l'URL du serveur du fichier manifeste est /, l'URL de base est la suivante :

https://myapi.example.com/v1

Tenez compte des fonctionnalités prises en charge et des limites actuelles suivantes lors de la création et de l'utilisation d'une ressource de données REST en tant que source dans Data Integration :

  • Le fichier manifeste à télécharger ne doit pas dépasser 3 Mo.
  • Les fichiers manifestes JSON et YML/YAML basés sur une version inférieure à 3.0.0 ne sont pas pris en charge.
  • OAuth 2.0, Basic et aucune authentification sont prises en charge.
  • Seuls les appels GET sont pris en charge.
  • L'en-tête et les cookies dans un corps de demande ou une réponse ne sont pas pris en charge.
  • Une réponse JSON en tant que fichier n'est pas prise en charge.
  • Seul content-type JSON est pris en charge.
  • Les mots-clés OneOf, AnyOf, AllOf et AdditionalProperties ne sont pas pris en charge dans un fichier manifeste.
  • Le contenu du paramètre doit être décrit à l'aide du mot-clé schema ; le mot-clé content n'est pas pris en charge.
  • La valeur par défaut d'un paramètre n'est pas prise en charge. Dans le cas d'un paramètre facultatif avec la valeur par défaut, une valeur par défaut doit être fournie explicitement.
  • Seuls les types de données Integer, Long, Float, Double, Number et String sont pris en charge.
  • Les formats de données Date, Mot de passe, Courriel et Binaire sont ignorés et traités comme des chaînes uniquement.
  • Seuls les types primitifs pour les paramètres de chemin sont pris en charge.
  • Les primitives et les tableaux de primitives sont pris en charge pour les paramètres de requête.
  • Le tableau de tableau dans une réponse JSON n'est pas pris en charge.
  • Les attributs de style et d'explosion sont ignorés et un paramètre de requête est traité comme suit : style=form, explode=true tandis qu'un paramètre de chemin est traité comme suit : style=simple, explode=false.
  • La référence (#ref) doit être locale uniquement ; elle ne peut pas pointer vers une URL ou un autre fichier.
  • #ref pour schema est pris en charge. responses, headers et parameters ne doivent pas utiliser #ref.
  • Actuellement, l'option Tester la connexion pour une ressource de données REST n'est pas implémentée. Elle renvoie toujours la valeur True (successful).
  • Lors de la visualisation des détails de ressource de données, le profilage ou l'aperçu des données hiérarchiques ne sont pas pris en charge.
  • Dans une réponse, seuls les attributs de niveau racine sont mis en correspondance avec les noms de colonne.
  • Si une adresse renvoie un tableau de primitives, il n'y a qu'une seule colonne, telle que "<name>_index", où index est >= 0

Propriétés de ressource de données REST

Assurez-vous que vous disposez de l'URL de base et du fichier manifeste avant de créer votre ressource de données REST.

Afin d'utiliser une clé secrète pour le mot de passe avec une authentification de base, reportez-vous à Clés secrètes OCI Vault et portefeuilles Oracle.

Pour créer une ressource de données qui se connecte à une source REST, renseignez les propriétés et les détails de connexion suivants. Reportez-vous à la section Sample Manifest File.

Champ Description
Propriétés
Nom Entrez le nom de la ressource de données.
Identificateur L'identificateur est une valeur générée par le système en fonction du nom. Vous pouvez modifier la valeur de l'identificateur, mais une fois que vous avez créé et enregistré, vous ne pouvez plus la mettre à jour.
Description (Facultatif) Ajouter une description.
Type Le champ affiche le type de source de données que vous avez sélectionné dans le panneau Sélectionner un type de ressource de données (comme décrit dans Création d'une ressource de données). Data Integration affiche les champs de propriété de ressource de données et les champs de connexion par défaut en fonction de ce type.
URL de base

Entrez l'URL de base de vos adresses d'API.

Par exemple : https://myapi.example.com/v1

Ou,

https://myapi.example.com

Télécharger le fichier manifeste

Déposez le fichier YML/YAML ou JSON pour télécharger le fichier manifeste qui peut passer par l'URL de base. Vous pouvez également cliquer sur le lien Sélectionner un fichier pour accéder à l'emplacement contenant le fichier.

Si vous ne fournissez pas de fichier manifeste et que le message Manifest file or manifest URL should be provided s'affiche, ignorez la partie relative à une URL de manifeste. Actuellement, seul le téléchargement d'un fichier manifeste est pris en charge.

Informations de connexion par défaut
Nom Entrez le nom de la connexion par défaut.
Identificateur L'identificateur est une valeur générée par le système en fonction du nom. Vous pouvez modifier la valeur de l'identificateur, mais une fois que vous avez créé et enregistré, vous ne pouvez plus la mettre à jour.
Description (Facultatif) Ajouter une description.
Authentification

Sélectionnez l'une des méthodes d'authentification suivantes :

  • Authentification de base : si vous sélectionnez cette méthode, les champs suivants apparaissent :
    • Nom utilisateur : entrez le nom utilisateur.
    • Utiliser l'OCID de clé secrète du coffre : si vous utilisez une clé secrète dans Oracle Cloud Infrastructure Vault pour stocker le mot de passe, sélectionnez cette option. Entrez l'OCID de la clé secrète pour le mot de passe (associé à l'utilisateur) à partir d'OCI Vault.
    • Utiliser un mot de passe : si vous sélectionnez cette option, entrez le mot de passe.
  • Authentification OAuth 2.0 : si vous sélectionnez cette méthode, les champs suivants apparaissent :
    • URL de jeton d'accès : entrez l'URL utilisée pour échanger des informations d'identification d'authentification contre des jetons d'accès.
    • ID client : entrez la clé d'ID client pour une application spécifique.
    • OCID de clé secrète de coffre pour la clé secrète client : entrez l'OCID de la clé secrète du client à partir du coffre OCI.
    • Portée : entrez la portée des droits d'accès accordés par le jeton d'accès.
  • Aucun : si vous ne voulez pas utiliser de méthode d'authentification, sélectionnez cette option.

Le type d'authentification d'une connexion ne peut pas être modifié après sa création.

(Facultatif) Tester la connexion
Test de connexion Une fois que vous avez renseigné tous les champs obligatoires, sélectionnez Tester la connexion pour vous assurer que les détails de la ressource de données ont été saisis correctement et que la connexion peut être établie. Un message de succès s'affiche si le test a réussi. Si le test échoue avec un message d'erreur, vérifiez les paramètres de connexion et réessayez.

Exemple de fichier manifeste

{
    "openapi": "3.0.1",
    "servers": [
        {
            "url": "/v1",
            "description": "Generated server url"
        }
    ],
    "paths": {
        "/orders": {
            "get": {
                "tags": [
                    "rest-connector-controller"
                ],
                "operationId": "getOrders",
                "responses": {
                    "200": {
                        "$ref": "#/components/responses/orderSuccess"
                    }
                }
            }
        },
        "/paginatedOrders": {
            "get": {
                "tags": [
                    "rest-connector-controller"
                ],
                "operationId": "getPaginatedOrdersRowOffset",
                "parameters": [
                    {
                        "name": "maximumPageSize",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "firstRowNumber",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "rowOffsetParameter",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "pageSizeParameter",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedOrders"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/paginatedOrdersPageNum": {
            "get": {
                "tags": [
                    "rest-connector-controller"
                ],
                "operationId": "getPaginatedOrdersPageNumberBased",
                "parameters": [
                    {
                        "name": "maximumPageSize",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "firstPageNumber",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "pageSizeParameter",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "pageNumberParameter",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedOrders"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/orders/{orderNo}": {
            "get": {
                "tags": [
                    "rest-connector-controller"
                ],
                "operationId": "getOrdersByOrderID",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/orderNum"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Order"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "rest-connector-controller"
                ],
                "operationId": "deleteOrder",
                "parameters": [
                    {
                        "name": "orderNo",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/orders/noAuth/{orderNo}": {
            "get": {
                "tags": [
                    "rest-connector-controller"
                ],
                "operationId": "getOrdersByOrderIDNoAuth",
                "parameters": [
                    {
                        "name": "orderNo",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Order"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/orders/headers/validation": {
            "get": {
                "tags": [
                    "rest-connector-controller"
                ],
                "operationId": "getOrdersAfterHeadersValidation",
                "parameters": [
                    {
                        "name": "UserId",
                        "in": "header",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "Password",
                        "in": "header",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "Email",
                        "in": "header",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SalesOrders"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/orders/filterbystore": {
            "get": {
                "tags": [
                    "rest-connector-controller"
                ],
                "operationId": "getOrdersByStore",
                "parameters": [
                    {
                        "$ref": "#/components/parameters/storeId"
                    },
                    {
                        "name": "customerName",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Order"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/orders/byName": {
            "get": {
                "tags": [
                    "rest-connector-controller"
                ],
                "operationId": "getOrdersByCustomerName",
                "parameters": [
                    {
                        "name": "customerName",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Order"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/orders/byEmail": {
            "get": {
                "tags": [
                    "rest-connector-controller"
                ],
                "operationId": "getOrdersByCustomerEmail",
                "parameters": [
                    {
                        "name": "customerEmail",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Order"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/customers/getCustomersName": {
            "get": {
                "tags": [
                    "rest-connector-controller"
                ],
                "operationId": "getCustomersName",
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/customers/getCustomer": {
            "get": {
                "tags": [
                    "rest-connector-controller"
                ],
                "operationId": "getCustomer",
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Customer"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/customers/getCustomerList": {
            "get": {
                "tags": [
                    "rest-connector-controller"
                ],
                "operationId": "getCustomersList",
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Customer"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/customers/getCustomerEmail": {
            "get": {
                "tags": [
                    "rest-connector-controller"
                ],
                "operationId": "getCustomerInfoSingleField",
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "customerEmail": {
                                            "type": "string"
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/headOffice": {
            "get": {
                "tags": [
                    "rest-connector-controller"
                ],
                "operationId": "getHeadOffice",
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/HeadOffice"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/namedPrimitiveArray": {
            "get": {
                "tags": [
                    "rest-connector-controller"
                ],
                "operationId": "getNamedPrimitiveArray",
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "items": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/primitive": {
            "get": {
                "tags": [
                    "rest-connector-controller"
                ],
                "operationId": "getSinglePrimitive",
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/reservedColumns": {
            "get": {
                "tags": [
                    "rest-connector-controller"
                ],
                "operationId": "getReservedColumns",
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Positions"
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "Address": {
                "type": "object",
                "properties": {
                    "street": {
                        "type": "string"
                    },
                    "city": {
                        "type": "string"
                    },
                    "country": {
                        "type": "string"
                    },
                    "zipcode": {
                        "type": "string"
                    }
                }
            },
            "Fullfilment": {
                "type": "object",
                "properties": {
                    "storeNo": {
                        "type": "string"
                    },
                    "lineItems": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/LineItems"
                        }
                    }
                }
            },
            "LineItems": {
                "type": "object",
                "properties": {
                    "itemName": {
                        "type": "string"
                    },
                    "itemId": {
                        "type": "string"
                    },
                    "qty": {
                        "type": "string"
                    }
                }
            },
            "Order": {
                "type": "object",
                "properties": {
                    "customerName": {
                        "type": "string"
                    },
                    "orderNo": {
                        "type": "string"
                    },
                    "phoneNo": {
                        "type": "string"
                    },
                    "email": {
                        "type": "string"
                    },
                    "address": {
                        "$ref": "#/components/schemas/Address"
                    },
                    "fullfilments": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Fullfilment"
                        }
                    }
                }
            },
            "PaginatedOrders": {
                "type": "object",
                "properties": {
                    "items": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Order"
                        }
                    }
                }
            },
            "SalesOrders": {
                "type": "object",
                "properties": {
                    "orders": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Order"
                        }
                    }
                }
            },
            "Customer": {
                "type": "object",
                "properties": {
                    "customerEmail": {
                        "type": "string"
                    },
                    "type": {
                        "type": "string"
                    },
                    "customerName": {
                        "type": "string"
                    },
                    "phoneno": {
                        "type": "string"
                    },
                    "address": {
                        "type": "object",
                        "additionalProperties": {
                            "type": "string"
                        }
                    }
                }
            },
            "HeadOffice": {
                "type": "object",
                "properties": {
                    "longitude": {
                        "type": "number"
                    },
                    "latitude": {
                        "type": "number",
                        "format": "double"
                    },
                    "turnover": {
                        "type": "number",
                        "format": "float"
                    },
                    "milliSeconds": {
                        "type": "integer",
                        "format": "int64"
                    },
                    "storeNo": {
                        "type": "integer",
                        "format": "int32"
                    },
                    "noOfEmployees": {
                        "type": "integer"
                    }
                }
            },
            "Positions": {
                "type": "object",
                "properties": {
                    "position": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "Position_1": {
                                    "type": "integer"
                                },
                                "Position": {
                                    "type": "string"
                                },
                                "Position_3": {
                                    "type": "number",
                                    "format": "float"
                                },
                                "Position_4": {
                                    "type": "number",
                                    "format": "double"
                                },
                                "Position_2": {
                                    "type": "integer",
                                    "format": "int64"
                                },
                                "Position_11": {
                                    "type": "string"
                                }
                            }
                        }
                    }
                }
            }
        },
        "parameters": {
            "orderNum": {
                "name": "orderNo",
                "in": "path",
                "required": true,
                "content": {
                    "application/json": {
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            },
            "storeId": {
                "name": "storeId",
                "in": "query",
                "required": true,
                "schema": {
                    "type": "string"
                }
            }
        },
        "responses": {
            "orderSuccess": {
                "description": "OK",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/SalesOrders"
                        }
                    }
                }
            }
        }
    }
}