Ressource de données REST générique

Actuellement, vous devez 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 de l'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 courantes.

Avant de commencer

Le service d'intégration de données prend en charge la version OpenAPI 3.0.0 (et supérieure) 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 points d'extrémité d'API et charger le fichier manifeste.

Un point d'extrémité d'API complet se compose d'une URL de base, d'un chemin de ressource et d'une URL de serveur qui est définie dans le fichier manifeste. Considérez le point d'extrémité avec le chemin comme /users/findByStatus :

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

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

https://myapi.example.com

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

https://myapi.example.com/v1

Tenez compte des capacités prises en charge suivantes et des limites courantes lors de la création et de l'utilisation d'une ressource de données REST en tant que source dans le service d'intégration de données :

  • Le fichier manifeste à 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 n'est prise en charge.
  • Seuls les appels GET sont pris en charge.
  • L'en-tête et les témoins d'un corps de demande ou d'une réponse ne sont pas pris en charge.
  • Une réponse JSON en tant que fichier n'est pas prise en charge.
  • Seul JSON content-type 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é du contenu n'est pas pris en charge.
  • Une valeur par défaut pour un paramètre n'est pas prise en charge. Dans le cas d'un paramètre facultatif avec 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 Chaîne uniquement.
  • Seuls les types primitifs pour les paramètres de chemin sont pris en charge.
  • Primitive et Array of primitives sont pris en charge pour les paramètres d'interrogation.
  • Le tableau du tableau dans une réponse JSON n'est pas pris en charge.
  • Les attributs de style et d'éclatement sont ignorés, et un paramètre d'interrogation est traité comme style=form, explode=true alors qu'un paramètre de chemin est traité comme 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 mise en oeuvre; elle retourne toujours la valeur Vrai (réussite).
  • Lors de la consultation des détails de la ressource de données, le profilage ou la prévisualisation des données hiérarchiques n'est pas pris en charge.
  • Dans une réponse, seuls les attributs de niveau racine sont mappés aux noms de colonne.
  • Si un point d'extrémité retourne 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 d'avoir l'URL de base et le fichier manifeste avant de créer votre ressource de données REST.

Pour utiliser une clé secrète pour le mot de passe avec l'authentification de base, voir Clés secrètes du service de chambre forte OCI et portefeuilles Oracle.

Pour créer une ressource de données qui se connecte à une source REST, entrez les propriétés et les détails de connexion suivants. Voir Exemple de fichier manifeste.

Champ Description
Propriétés
Nom Entrez un nom pour 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, après la création et l'enregistrement, vous ne pouvez pas la mettre à jour.
Description (Facultatif) Ajoutez 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 points d'extrémité d'API.

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

Ou,

https://myapi.example.com

Charger le fichier de manifeste

Déposez le fichier YML/YAML ou JSON pour charger le fichier manifeste qui peut passer par l'URL de base. Vous pouvez également cliquer sur le lien Sélectionner un fichier pour naviguer jusqu'à l'emplacement qui contient 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 concernant une URL de manifeste. Actuellement, seul le chargement d'un fichier manifeste est pris en charge.

Informations sur la connexion par défaut
Nom Entrez un nom pour 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, après la création et l'enregistrement, vous ne pouvez pas la mettre à jour.
Description (Facultatif) Ajoutez 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 s'affichent :
    • Nom d'utilisateur : Entrez le nom d'utilisateur.
    • Utiliser l'OCID de la clé secrète de la chambre forte : 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) du service de chambre forte OCI.
    • 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 s'affichent :
    • URL du jeton d'accès : Entrez l'URL utilisée pour échanger les données 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 la clé secrète de la chambre forte pour la clé secrète client : Entrez l'OCID de la clé secrète pour la clé secrète client à partir de la chambre forte OCI.
    • Portée : Entrez la portée des autorisations accordées par le jeton d'accès.
  • Aucun : si vous ne voulez pas utiliser une 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
Tester la connexion Après avoir rempli tous les champs obligatoires, sélectionnez Tester la connexion pour vous assurer que les détails de la ressource de données ont été entrés correctement et que la connexion peut être établie. Un message de réussite s'affiche si le test réussit. 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"
                        }
                    }
                }
            }
        }
    }
}