Bronspecificatie voor Self-Serve Bronnen (Batch SDK) configureren
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"
]
}
},
}
sourceSpec.attributes
sourceSpec.attributes.uiAttributes
sourceSpec.attributes.uiAttributes.isBeta
true
false
sourceSpec.attributes.uiAttributes.category
advertising
crm
customer success
database
ecommerce
marketing automation
payments
protocols
sourceSpec.attributes.uiAttributes.icon
mailchimp-icon.svg
sourceSpec.attributes.uiAttributes.description
sourceSpec.attributes.uiAttributes.label
sourceSpec.attributes.spec.properties.urlParams
sourceSpec.attributes.spec.properties.urlParams.properties.path
/3.0/reports/${campaignId}/email-activity
sourceSpec.attributes.spec.properties.urlParams.properties.method
GET
, POST
sourceSpec.attributes.spec.properties.urlParams.properties.queryParams
${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
"headerParams" : {"Content-Type" : "application/json", "x-api-key" : "key"}
sourceSpec.attributes.spec.properties.bodyParams
sourceSpec.attributes.spec.properties.contentPath
sourceSpec.attributes.spec.properties.contentPath.path
$.emails
sourceSpec.attributes.spec.properties.contentPath.skipAttributes
[total_items]
sourceSpec.attributes.spec.properties.contentPath.keepAttributes
[total_items]
sourceSpec.attributes.spec.properties.contentPath.overrideWrapperAttribute
contentPath
hebt opgegeven.email
sourceSpec.attributes.spec.properties.explodeEntityPath
sourceSpec.attributes.spec.properties.explodeEntityPath.path
$.email.activity
sourceSpec.attributes.spec.properties.explodeEntityPath.skipAttributes
[total_items]
sourceSpec.attributes.spec.properties.explodeEntityPath.keepAttributes
[total_items]
sourceSpec.attributes.spec.properties.explodeEntityPath.overrideWrapperAttribute
explodeEntityPath
hebt opgegeven.activity
sourceSpec.attributes.spec.properties.paginationParams
sourceSpec.attributes.spec.properties.paginationParams.type
OFFSET
: 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.POINTER
: Met dit paginatype kunt u eenpointer
-variabele gebruiken om te wijzen naar een bepaald item 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.CONTINUATION_TOKEN
: Met dit paginatype kunt u de query- of headerparameters toevoegen met een continutoken om de resterende retourgegevens van uw bron op te halen. Deze gegevens zijn oorspronkelijk niet geretourneerd vanwege een vooraf bepaald maximum.PAGE
: Met dit pagineringstype kunt u uw queryparameter toevoegen met een pagineringsparameter om gegevens per pagina te doorlopen, te beginnen bij pagina nul.NONE
: dit pagineringstype kan worden gebruikt voor bronnen die geen van de beschikbare pagineringstypen ondersteunen. PaginatypeNONE
retourneert de volledige reactiegegevens na een aanvraag.
sourceSpec.attributes.spec.properties.paginationParams.limitName
limit
of count
sourceSpec.attributes.spec.properties.paginationParams.limitValue
limit=10
of count=10
sourceSpec.attributes.spec.properties.paginationParams.offSetName
offset
.offset
sourceSpec.attributes.spec.properties.paginationParams.pointerPath
pointer
.pointer
sourceSpec.attributes.spec.properties.scheduleParams
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
since_last_changed
sourceSpec.attributes.spec.properties.scheduleParams.scheduleEndParamName
before_last_changed
sourceSpec.attributes.spec.properties.scheduleParams.scheduleStartParamFormat
scheduleStartParamName
.yyyy-MM-ddTHH:mm:ssZ
sourceSpec.attributes.spec.properties.scheduleParams.scheduleEndParamFormat
scheduleEndParamName
.yyyy-MM-ddTHH:mm:ssZ
sourceSpec.spec.properties
spec.properties
.Aanvullende bronnen appendix
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 content-path
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 user-input
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 source-spec
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 pagination
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:
code language-json |
---|
|
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2 | |
---|---|
Eigenschap | Beschrijving |
type |
Het type paginering waarmee gegevens worden geretourneerd. |
limitName |
De naam voor de limiet waarmee de API het aantal records kan opgeven dat op een pagina moet worden opgehaald. |
limitValue |
Het aantal records dat op een pagina moet worden opgehaald. |
offSetName |
De naam van het verschuivingskenmerk. Dit is vereist als het paginatype is ingesteld op offset . |
endConditionName |
Een door de gebruiker gedefinieerde waarde die aangeeft aan welke voorwaarde de pagineringslus in de volgende HTTP-aanvraag wordt beëindigd. U moet de kenmerknaam opgeven waarop u de eindvoorwaarde wilt plaatsen. |
endConditionValue |
De kenmerkwaarde waarop u de eindvoorwaarde wilt plaatsen. |
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:
code language-json |
---|
|
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 | |
---|---|
Eigenschap | Beschrijving |
type |
Het type paginering waarmee gegevens worden geretourneerd. |
limitName |
De naam voor de limiet waarmee de API het aantal records kan opgeven dat op een pagina moet worden opgehaald. |
limitValue |
Het aantal records dat op een pagina moet worden opgehaald. |
pointerPath |
De naam van het attribuut pointer. Hiervoor is een pad nodig naar het kenmerk dat naar de volgende pagina verwijst. |
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:
code language-json |
---|
|
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 | |
---|---|
Eigenschap | Beschrijving |
type |
Het type paginering waarmee gegevens worden geretourneerd. |
continuationTokenPath |
De waarde die aan de vraagparams moet worden toegevoegd om naar de volgende pagina van de teruggekeerde resultaten te bewegen. |
parameterType |
De eigenschap 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 |
De naam van de parameter die wordt gebruikt om het voortzetteken op te nemen. De notatie is als volgt: {PARAMETER_NAME}={CONTINUATION_TOKEN} . |
delayRequestMillis |
Met de eigenschap 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:
code language-json |
---|
|
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.
code language-json |
---|
|
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2 7-row-2 layout-auto | |
---|---|
Eigenschap | Beschrijving |
type |
Het type paginering waarmee gegevens worden geretourneerd. |
limitName |
De naam voor de limiet waarmee de API het aantal records kan opgeven dat op een pagina moet worden opgehaald. |
limitValue |
Het aantal records dat op een pagina moet worden opgehaald. |
initialPageIndex |
(Optioneel) De eerste pagina-index definieert het paginanummer van waaruit de paginering begint. Dit veld kan worden gebruikt voor bronnen waarvan de paginering niet begint bij 0. Als deze optie niet is opgegeven, wordt de index van de eerste pagina standaard ingesteld op 0. Dit veld verwacht een geheel getal. |
endPageIndex |
(Optioneel) Met de index van de eindpagina kunt u een eindvoorwaarde instellen en de paginering stoppen. Dit veld kan worden gebruikt als de standaardeindvoorwaarden voor het stoppen van paginering niet beschikbaar zijn. Dit veld kan ook worden gebruikt als het aantal pagina's dat moet worden ingevoerd of het laatste paginanummer via de antwoordkop wordt opgegeven. Dit is gebruikelijk bij het gebruik van de paginering van 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 |
De naam van de parameter die u aan vraagparameters moet toevoegen om door verschillende pagina's van de terugkeergegevens te oversteken. https://abc.com?pageIndex=1 retourneert bijvoorbeeld de tweede pagina van de retourlading van een API. |
maximumRequest |
Het maximumaantal verzoeken een bron voor een bepaalde stijgende looppas kan maken. De huidige standaardlimiet is 10000. |
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.
code language-json |
---|
|
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.