Bronspecificatie voor Self-Serve Bronnen (Batch SDK) configureren
Gemaakt voor:
- Ontwikkelaar
Source-specificaties bevatten specifieke informatie over een bron, waaronder kenmerken die betrekking hebben op de categorie van een bron, de bètastatus en het cataloguspictogram. Zij bevatten ook nuttige informatie zoals parameters URL, inhoud, kopbal, en programma. Source-specificaties beschrijven ook het schema met de parameters die nodig zijn om een bronverbinding te maken via een basisverbinding. Het schema is nodig om een bronverbinding te maken.
Zie bijlagevoor een voorbeeld van een volledig-bevolkte bronspecificatie.
"sourceSpec": {
"attributes": {
"uiAttributes": {
"isSource": true,
"isPreview": true,
"isBeta": true,
"category": {
"key": "protocols"
},
"icon": {
"key": "genericRestIcon"
},
"description": {
"key": "genericRestDescription"
},
"label": {
"key": "genericRestLabel"
}
},
"spec": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"description": "Defines static and user input parameters to fetch resource values.",
"properties": {
"urlParams": {
"type": "object",
"properties": {
"host": {
"type": "string",
"description": "Enter resource url host path.",
"example": "https://{domain}.api.mailchimp.com"
},
"path": {
"type": "string",
"description": "Enter resource path",
"example": "/3.0/reports/campaignId/email-activity"
},
"method": {
"type": "string",
"description": "HTTP method type.",
"enum": [
"GET",
"POST"
]
},
"queryParams": {
"type": "object",
"description": "The query parameters in json format",
}
},
"required": [
"host",
"path",
"method"
]
},
"headerParams": {
"type": "object",
"description": "The header parameters in json format",
},
"contentPath": {
"type": "object",
"description": "The parameters required for main collection content.",
"properties": {
"path": {
"description": "The path to the main content.",
"type": "string",
"example": "$.emails"
},
"skipAttributes": {
"type": "array",
"description": "The list of attributes that needs to be skipped while fattening the array.",
"example": "[total_items]",
"items": {
"type": "string"
}
},
"keepAttributes": {
"type": "array",
"description": "The list of attributes that needs to be kept while fattening the array.",
"example": "[total_items]",
"items": {
"type": "string"
}
},
"overrideWrapperAttribute": {
"type": "string",
"description": "The new name to be used for the root content path node.",
"example": "email"
}
},
"required": [
"path"
]
},
"explodeEntityPath": {
"type": "object",
"description": "The parameters required for the sub-array content.",
"properties": {
"path": {
"description": "The path to the sub-array content.",
"type": "string",
"example": "$.email.activity"
},
"skipAttributes": {
"type": "array",
"description": "The list of attributes that needs to be skipped while fattening sub-array.",
"example": "[total_items]",
"items": {
"type": "string"
}
},
"keepAttributes": {
"type": "array",
"description": "The list of attributes that needs to be kept while fattening the sub-array.",
"example": "[total_items]",
"items": {
"type": "string"
}
},
"overrideWrapperAttribute": {
"type": "string",
"description": "The new name to be used for the root content path node.",
"example": "activity"
}
},
"required": [
"path"
]
},
"paginationParams": {
"type": "object",
"description": "The parameters required to fetch data using pagination.",
"properties": {
"type": {
"description": "The pagination fetch type.",
"type": "string",
"enum": [
"OFFSET",
"POINTER"
]
},
"limitName": {
"type": "string",
"description": "The limit property name",
"example": "limit or count"
},
"limitValue": {
"type": "integer",
"description": "The number of records to fetch per page.",
"example": "limit=10 or count=10"
},
"offsetName": {
"type": "string",
"description": "The offset property name",
"example": "offset"
},
"pointerPath": {
"type": "string",
"description": "The path to pointer property",
"example": "$.paging.next"
}
},
"required": [
"type",
"limitName",
"limitValue"
]
},
"scheduleParams": {
"type": "object",
"description": "The parameters required to fetch data for batch schedule.",
"properties": {
"scheduleStartParamName": {
"type": "string",
"description": "The order property name to get the order by date."
},
"scheduleEndParamName": {
"type": "string",
"description": "The order property name to get the order by date."
},
"scheduleStartParamFormat": {
"type": "string",
"description": "The order property name to get the order by date.",
"example": "yyyy-MM-ddTHH:mm:ssZ"
},
"scheduleEndParamFormat": {
"type": "string",
"description": "The order property name to get the order by date.",
"example": "yyyy-MM-ddTHH:mm:ssZ"
}
},
"required": [
"scheduleStartParamName",
"scheduleEndParamName"
]
}
},
"required": [
"urlParams",
"contentPath",
"paginationParams",
"scheduleParams"
]
}
},
}
Eigenschap | Beschrijving | Voorbeeld |
---|---|---|
sourceSpec.attributes | Bevat informatie over de bron specifiek voor UI of API. | |
sourceSpec.attributes.uiAttributes | Geeft informatie weer over de specifieke bron voor de gebruikersinterface. | |
sourceSpec.attributes.uiAttributes.isBeta | Een Booleaans kenmerk dat aangeeft of de bron meer feedback van klanten vereist om aan de functionaliteit toe te voegen. |
|
sourceSpec.attributes.uiAttributes.category | Definieert de categorie van de bron. |
|
sourceSpec.attributes.uiAttributes.icon | Definieert het pictogram dat wordt gebruikt voor de rendering van de bron in de interface van het platform. | mailchimp-icon.svg |
sourceSpec.attributes.uiAttributes.description | Geeft een korte beschrijving van de bron weer. | |
sourceSpec.attributes.uiAttributes.label | Toont het etiket dat voor het teruggeven van de bron in Platform UI moet worden gebruikt. | |
sourceSpec.attributes.spec.properties.urlParams | Bevat informatie over de het middelweg URL, methode, en gesteunde vraagparameters. | |
sourceSpec.attributes.spec.properties.urlParams.properties.path | Bepaalt de middelweg van waar te om de gegevens van te halen. | /3.0/reports/${campaignId}/email-activity |
sourceSpec.attributes.spec.properties.urlParams.properties.method | Bepaalt de methode van HTTP die moet worden gebruikt om het verzoek aan het middel te doen om gegevens te halen. | GET , POST |
sourceSpec.attributes.spec.properties.urlParams.properties.queryParams | Definieert de ondersteunde queryparameters die kunnen worden gebruikt om de bron-URL toe te voegen bij het indienen van een aanvraag om gegevens op te halen. Nota: Om het even welke user-provided parameterwaarde moet als placeholder worden geformatteerd. Bijvoorbeeld: ${USER_PARAMETER} . | "queryParams" : {"key" : "value", "key1" : "value1"} wordt als volgt aan de bron-URL toegevoegd: /?key=value&key1=value1 |
sourceSpec.attributes.spec.properties.spec.properties.headerParams | Bepaalt kopballen die in het HTTP- verzoek aan bron URL moeten worden verstrekt terwijl het halen van gegevens. | "headerParams" : {"Content-Type" : "application/json", "x-api-key" : "key"} |
sourceSpec.attributes.spec.properties.bodyParams | Dit attribuut kan worden gevormd om het lichaam van HTTP door een verzoek van de POST te verzenden. | |
sourceSpec.attributes.spec.properties.contentPath | Bepaalt de knoop die de lijst van punten bevat die aan Platform moeten worden opgenomen. Dit kenmerk moet een geldige JSON-padsyntaxis volgen en verwijzen naar een bepaalde array. | Bekijk de extra middelensectievoor een voorbeeld van het middel bevat binnen een inhoudsweg. |
sourceSpec.attributes.spec.properties.contentPath.path | Het pad dat wijst naar de verzamelingsrecords die moeten worden ingesloten op Platform. | $.emails |
sourceSpec.attributes.spec.properties.contentPath.skipAttributes | Met deze eigenschap kunt u specifieke items identificeren uit de bron die is geïdentificeerd in het inhoudspad en die moeten worden uitgesloten van het opnemen van inhoud. | [total_items] |
sourceSpec.attributes.spec.properties.contentPath.keepAttributes | Met deze eigenschap kunt u expliciet de afzonderlijke kenmerken opgeven die u wilt behouden. | [total_items] |
sourceSpec.attributes.spec.properties.contentPath.overrideWrapperAttribute | Met deze eigenschap kunt u de waarde overschrijven van de kenmerknaam die u in contentPath hebt opgegeven. | email |
sourceSpec.attributes.spec.properties.explodeEntityPath | Met deze eigenschap kunt u twee arrays samenvoegen en de brongegevens transformeren naar de Platform-bron. | |
sourceSpec.attributes.spec.properties.explodeEntityPath.path | Het pad dat wijst naar de verzamelingsrecords die u wilt afvlakken. | $.email.activity |
sourceSpec.attributes.spec.properties.explodeEntityPath.skipAttributes | Dit bezit staat u toe om specifieke punten van het middel te identificeren die in de entiteitweg worden geïdentificeerd die van worden uitgesloten. | [total_items] |
sourceSpec.attributes.spec.properties.explodeEntityPath.keepAttributes | Met deze eigenschap kunt u expliciet de afzonderlijke kenmerken opgeven die u wilt behouden. | [total_items] |
sourceSpec.attributes.spec.properties.explodeEntityPath.overrideWrapperAttribute | Met deze eigenschap kunt u de waarde overschrijven van de kenmerknaam die u in explodeEntityPath hebt opgegeven. | activity |
sourceSpec.attributes.spec.properties.paginationParams | Definieert de parameters of velden die moeten worden opgegeven voor het ophalen van een koppeling naar de volgende pagina vanuit het huidige paginaantwoord van de gebruiker, of tijdens het maken van een URL voor de volgende pagina. | |
sourceSpec.attributes.spec.properties.paginationParams.type | Hiermee geeft u het type van het ondersteunde paginatietype voor uw bron weer. |
|
sourceSpec.attributes.spec.properties.paginationParams.limitName | De naam voor de limiet waarmee de API het aantal records kan opgeven dat op een pagina moet worden opgehaald. | limit of count |
sourceSpec.attributes.spec.properties.paginationParams.limitValue | Het aantal records dat op een pagina moet worden opgehaald. | limit=10 of count=10 |
sourceSpec.attributes.spec.properties.paginationParams.offSetName | De naam van het verschuivingskenmerk. Dit is vereist als het paginatype is ingesteld op offset . | offset |
sourceSpec.attributes.spec.properties.paginationParams.pointerPath | De naam van het attribuut pointer. Hiervoor is een pad nodig naar het kenmerk dat naar de volgende pagina verwijst. Dit is vereist als het paginatype is ingesteld op pointer . | pointer |
sourceSpec.attributes.spec.properties.scheduleParams | Bevat parameters die gesteunde het plannen formaten voor uw bron bepalen. De parameters van het programma omvatten startTime en endTime , allebei waarvan u toestaan om specifieke tijdintervallen voor partijlooppas te plaatsen, die dan ervoor zorgt dat de verslagen die in een vorige partijlooppas worden gehaald niet opnieuw worden gehaald. | |
sourceSpec.attributes.spec.properties.scheduleParams.scheduleStartParamName | Definieert de naam van de begintijdparameter | since_last_changed |
sourceSpec.attributes.spec.properties.scheduleParams.scheduleEndParamName | Definieert de naam van de eindtijdparameter | before_last_changed |
sourceSpec.attributes.spec.properties.scheduleParams.scheduleStartParamFormat | Definieert de ondersteunde indeling voor de scheduleStartParamName . | yyyy-MM-ddTHH:mm:ssZ |
sourceSpec.attributes.spec.properties.scheduleParams.scheduleEndParamFormat | Definieert de ondersteunde indeling voor de scheduleEndParamName . | yyyy-MM-ddTHH:mm:ssZ |
sourceSpec.spec.properties | Bepaalt de user-provided parameters om middelwaarden te halen. | Zie de extra middelenvoor een voorbeeld user-inputted parameters voor spec.properties . |
Aanvullende bronnen
De volgende secties verstrekken informatie over extra configuraties u aan uw sourceSpec
kunt maken, met inbegrip van geavanceerde het plannen en douaneschema's.
Voorbeeld van een inhoudspad
Hieronder ziet u een voorbeeld van de inhoud van de eigenschap contentPath
in een MailChimp Members -verbindingsspecificatie.
"contentPath": {
"path": "$.members",
"skipAttributes": [
"_links",
"total_items",
"list_id"
],
"overrideWrapperAttribute": "member"
}
spec.properties
gebruikersinvoervoorbeeld
Hieronder ziet u een voorbeeld van een door de gebruiker opgegeven spec.properties
met behulp van een MailChimp Members -verbindingsspecificatie.
In dit voorbeeld wordt listId
opgegeven als onderdeel van urlParams.path
. Als u listId
van een klant moet terugwinnen, dan moet u het ook als deel van spec.properties
bepalen.
"urlParams": {
"path": "/3.0/lists/${listId}/members",
"method": "GET"
}
"spec": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"description": "Define user input parameters to fetch resource values.",
"properties": {
"listId": {
"type": "string",
"description": "listId for which members need to fetch."
}
}
}
Source-specificatievoorbeeld
Hier volgt een voltooide bronspecificatie met MailChimp Members:
"sourceSpec": {
"attributes": {
"uiAttributes": {
"isSource": true,
"isPreview": true,
"isBeta": true,
"category": {
"key": "marketingAutomation"
},
"icon": {
"key": "mailchimpMembersIcon"
},
"description": {
"key": "mailchimpMembersDescription"
},
"label": {
"key": "mailchimpMembersLabel"
}
},
"urlParams": {
"host": "https://{domain}.api.mailchimp.com",
"path": "/3.0/lists/${listId}/members",
"method": "GET"
},
"contentPath": {
"path": "$.members",
"skipAttributes": [
"_links",
"total_items",
"list_id"
],
"overrideWrapperAttribute": "member"
},
"paginationParams": {
"type": "OFFSET",
"limitName": "count",
"limitValue": "100",
"offSetName": "offset"
},
"scheduleParams": {
"scheduleStartParamName": "since_last_changed",
"scheduleEndParamName": "before_last_changed",
"scheduleStartParamFormat": "yyyy-MM-ddTHH:mm:ss:fffffffK",
"scheduleEndParamFormat": "yyyy-MM-ddTHH:mm:ss:fffffffK"
}
},
"spec": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"description": "Define user input parameters to fetch resource values.",
"properties": {
"listId": {
"type": "string",
"description": "listId for which members need to fetch."
}
}
}
}
Verschillende paginatypen voor uw bron configureren
Hieronder volgen voorbeelden van andere paginatietypen die worden ondersteund door Self-Serve Sources (Batch SDK):
Met dit paginatype kunt u de resultaten parseren door een index op te geven vanaf waar de resulterende array moet worden gestart en een limiet op het aantal resultaten. Bijvoorbeeld:
"paginationParams": {
"type": "OFFSET",
"limitName": "limit",
"limitValue": "4",
"offSetName": "offset",
"endConditionName": "$.hasMore",
"endConditionValue": "Const:false"
}
type
limitName
limitValue
offSetName
offset
.endConditionName
endConditionValue
Met dit pagineringstype kunt u een variabele pointer
gebruiken om naar een bepaald item te wijzen dat met een aanvraag moet worden verzonden. Voor het pagineren van het type aanwijzer is een pad vereist voor de nuttige lading van dat punt naar de volgende pagina. Bijvoorbeeld:
{
"type": "POINTER",
"limitName": "limit",
"limitValue": 1,
"pointerPath": "paging.next"
}
type
limitName
limitValue
pointerPath
Een voortzetteken type van paginering keert een koordteken terug dat het bestaan van meer punten aangeeft die niet konden worden teruggekeerd, wegens een vooraf bepaald maximumaantal punten die in één enkele reactie kunnen worden teruggekeerd.
Een bron die het type van voortzetteken van paginering steunt kan een pagineringsparameter gelijkend op hebben:
"paginationParams": {
"type": "CONTINUATION_TOKEN",
"continuationTokenPath": "$.meta.after_cursor",
"parameterType": "QUERYPARAM",
"parameterName": "page[after]",
"delayRequestMillis": "850"
}
type
continuationTokenPath
parameterType
parameterType
definieert waar de parameterName
moet worden toegevoegd. Met het type QUERYPARAM
kunt u de query toevoegen met de parameterName
. Met HEADERPARAM
kunt u uw parameterName
toevoegen aan uw headeraanvraag.parameterName
{PARAMETER_NAME}={CONTINUATION_TOKEN}
.delayRequestMillis
delayRequestMillis
in paginering kunt u de snelheid bepalen van de aanvragen die aan de bron worden gedaan. Sommige bronnen kunnen een limiet hebben voor het aantal aanvragen dat u per minuut kunt indienen. Zendesk heeft bijvoorbeeld een limiet van 100 verzoeken per minuut en als u delayRequestMillis
to 850
definieert, kunt u de bron zo configureren dat deze aanroepen uitvoert met ongeveer 80 verzoeken per minuut, ruim onder de drempel van 100 aanvragen per minuut.Hieronder ziet u een voorbeeld van een reactie die wordt geretourneerd met het tokentype voor voortzetting van de paginering:
{
"results": [
{
"id": 5624716025745,
"url": "https://dev.zendesk.com/api/v2/users/5624716025745.json",
"name": "newinctest@zenaep.com",
"email": "newinctest@zenaep.com",
"created_at": "2022-04-22T10:27:30Z",
}
],
"facets": null,
"meta": {
"has_more": false,
"after_cursor": "eyJmaWVsZCI6ImNyZWF0ZWRfYXQiLCJk",
"before_cursor": null
},
"links": {
"prev": null,
"next": "https://dev.zendesk.com/api/v2/search/export.json?filter%5Btype%5D=user&page%5Bafter%5D=eyJmaWVsZCI6"
}
}
Met het paginatype PAGE
kunt u de retourgegevens doorlopen op het aantal pagina's, beginnend bij nul. Wanneer u PAGE
typepaginatie gebruikt, moet u het aantal records opgeven dat op één pagina wordt gegeven.
"paginationParams": {
"type": "PAGE",
"limitName": "pageSize",
"limitValue": 100,
"initialPageIndex": 1,
"endPageIndex": "headers.x-pagecount",
"pageParamName": "pageNumber",
"maximumRequest": 10000
}
type
limitName
limitValue
initialPageIndex
endPageIndex
PAGE
typen. De waarde voor de index van de eindpagina kan het laatste paginanummer zijn of een expressiewaarde van het type tekenreeks in de reactiekop. Met headers.x-pagecount
kunt u bijvoorbeeld de index van de eindpagina toewijzen aan de waarde x-pagecount
in de reactiekoppen. Nota: x-pagecount
is een verplichte antwoordkopbal voor sommige bronnen en houdt het waardeaantal pagina's dat moet worden opgenomen.pageParamName
https://abc.com?pageIndex=1
retourneert bijvoorbeeld de tweede pagina van de retourlading van een API.maximumRequest
Het paginatietype NONE
kan worden gebruikt voor bronnen die geen van de beschikbare paginatypen ondersteunen. De bronnen die het pagineringstype van NONE
gebruiken keren eenvoudig alle terugwinnbare verslagen terug wanneer een verzoek van de GET wordt gemaakt.
"paginationParams": {
"type": "NONE"
}
Geavanceerde planning voor Self-Serve Bronnen (Batch SDK)
Vorm incrementele en backfill planning van uw bron gebruikend geavanceerde het plannen. Met de eigenschap incremental
kunt u een schema configureren waarin uw bron alleen nieuwe of gewijzigde records opneemt, terwijl u met de eigenschap backfill
een schema kunt maken voor het opnemen van historische gegevens.
Met geavanceerde het plannen, kunt u uitdrukkingen en functies gebruiken specifiek voor uw bron om stijgende en backfill programma's te vormen. In het onderstaande voorbeeld vereist de Zendesk -bron dat het incrementele schema wordt opgemaakt als type:user updated > {START_TIME} updated < {END_TIME}
en dat de backfill als type:user updated < {END_TIME}
wordt opgemaakt.
"scheduleParams": {
"type": "ADVANCE",
"paramFormat": "yyyy-MM-ddTHH:mm:ssK",
"incremental": "type:user updated > {START_TIME} updated < {END_TIME}",
"backfill": "type:user updated < {END_TIME}"
}
scheduleParams.type
ADVANCE
als u het geavanceerde planningstype wilt gebruiken.scheduleParams.paramFormat
scheduleStartParamFormat
en scheduleEndParamFormat
van de bron.scheduleParams.incremental
scheduleParams.backfill
Zodra u uw geavanceerde planning vormt, moet u dan naar uw scheduleParams
in de sectie van URL, het lichaam, of kopbalparams verwijzen, afhankelijk van wat uw bepaalde bron steunt. In het onderstaande voorbeeld is {SCHEDULE_QUERY}
een tijdelijke aanduiding die wordt gebruikt om op te geven waar de incrementele en backfill-planningsexpressies worden gebruikt. In het geval van een Zendesk bron wordt query
gebruikt in queryParams
om geavanceerde planning op te geven.
"urlParams": {
"path": "/api/v2/search/export@{if(empty(coalesce(pipeline()?.parameters?.ingestionStart,'')),'?query=type:user&filter[type]=user&','')}",
"method": "GET",
"queryParams": {
"query": "{SCHEDULE_QUERY}",
"filter[type]": "user"
}
}
Een aangepast schema toevoegen om de dynamische kenmerken van uw bron te definiëren
U kunt een aangepast schema aan uw sourceSpec
opnemen om alle kenmerken te definiëren die nodig zijn voor uw bron, inclusief alle dynamische kenmerken die u nodig hebt. U kunt de bijbehorende verbindingsspecificatie van uw bron bijwerken door een PUT aan te vragen bij het /connectionSpecs
-eindpunt van de Flow Service API, terwijl u uw aangepaste schema opgeeft in de sectie sourceSpec
van uw verbindingsspecificatie.
Hieronder ziet u een voorbeeld van een aangepast schema dat u kunt toevoegen aan de verbindingsspecificatie van uw bron:
"schema": {
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"organization_id": {
"type": "integer",
"minimum": -9007199254740992,
"maximum": 9007199254740991
}
"active": {
"type": "boolean"
},
"created_at": {
"type": "string"
},
"email": {
"type": "string"
},
"iana_time_zone": {
"type": "string"
},
"id": {
"type": "integer"
},
"locale": {
"type": "string"
},
"locale_id": {
"type": "integer"
},
"moderator": {
"type": "boolean"
},
"name": {
"type": "string"
},
"only_private_comments": {
"type": "boolean"
},
"report_csv": {
"type": "boolean"
},
"restricted_agent": {
"type": "boolean"
},
"result_type": {
"type": "string"
},
"role": {
"type": "integer"
},
"shared": {
"type": "boolean"
},
"shared_agent": {
"type": "boolean"
},
"suspended": {
"type": "boolean"
},
"ticket_restriction": {
"type": "string"
},
"time_zone": {
"type": "string"
},
"two_factor_auth_enabled": {
"type": "boolean"
},
"updated_at": {
"type": "string"
},
"url": {
"type": "string"
},
"verified": {
"type": "boolean"
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
}
}
Volgende stappen
Met uw bevolkte bronspecificaties, kunt u te werk gaan om de verkennende specificaties voor de bron te vormen die u aan Platform wilt integreren. Zie het document bij het vormen onderzoeken specificatiesvoor meer informatie.