Bronspecificatie voor Self-Serve Bronnen (Batch SDK) configureren
De bronspecificaties bevatten informatie specifiek voor een bron, met inbegrip van attributen betreffende de categorie van een bron, bètastatus, en cataloguspictogram. Zij bevatten ook nuttige informatie zoals parameters URL, inhoud, kopbal, en programma. De bronspecificaties beschrijven ook het schema van de parameters die worden vereist om een bronverbinding van een basisverbinding tot stand te brengen. Het schema is nodig om een bronverbinding te maken.
Zie de aanhangsel voor 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 toegevoegd aan de bron-URL als: /?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
.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
.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 om naar een bepaald punt te richten dat met een verzoek 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 query- of headerparameters toevoegen met een continuatietoken om resterende retourgegevens van uw bron op te halen. Deze gegevens zijn niet oorspronkelijk geretourneerd vanwege een vooraf bepaald maximum.PAGE
: Met dit paginatietype kunt u de 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
, beide waarvan u toestaat 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
In de volgende secties vindt u informatie over extra configuraties die u aan uw sourceSpec
, inclusief geavanceerde planning en aangepaste schema's.
Voorbeeld van een inhoudspad content-path
Hier volgt een voorbeeld van de inhoud van de contentPath
eigenschap in een MailChimp Members verbindingsspecificatie.
"contentPath": {
"path": "$.members",
"skipAttributes": [
"_links",
"total_items",
"list_id"
],
"overrideWrapperAttribute": "member"
}
spec.properties
gebruikersinvoervoorbeeld user-input
Het volgende is een voorbeeld van een door de gebruiker opgegeven spec.properties
met een MailChimp Members verbindingsspecificatie.
In dit voorbeeld: listId
wordt verstrekt als onderdeel van urlParams.path
. Als u moet terugwinnen listId
van een klant, dan moet u het als deel van ook bepalen spec.properties
.
"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."
}
}
}
Voorbeeld van bronspecificatie source-spec
Het volgende is een voltooide bronspecificatie die 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 pagineringstype 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 paginatype kunt u een pointer
variabele om naar een bepaald punt te richten dat met een verzoek 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 parameterType eigenschap bepaalt waar de parameterName moet worden toegevoegd. De QUERYPARAM het type staat u toe om uw vraag met toe te voegen parameterName . De HEADERPARAM staat u toe om uw parameterName naar uw headerverzoek. |
parameterName |
De naam van de parameter die wordt gebruikt om het voortzetteken op te nemen. De indeling is als volgt: {PARAMETER_NAME}={CONTINUATION_TOKEN} . |
delayRequestMillis |
De delayRequestMillis bezit in paginering staat u toe om het tarief van verzoeken te controleren die aan uw bron worden gemaakt. Sommige bronnen kunnen een limiet hebben voor het aantal aanvragen dat u per minuut kunt indienen. Bijvoorbeeld: Zendesk heeft een limiet van 100 verzoeken per minuut en definieert delayRequestMillis tot 850 staat u toe om de bron te vormen om vraag bij enkel rond 80 verzoeken per minuut, goed onder het 100 verzoek per minieme drempel te maken. |
Hieronder ziet u een voorbeeld van een reactie die wordt geretourneerd met het tokentype voor voortzetting van de paginering:
code language-json |
---|
|
De PAGE
Door het type paginering kunt u terugkerende gegevens doorlopen op het aantal pagina's, beginnend bij nul. Wanneer u PAGE
Typ paginering, u moet het aantal records opgeven dat op één pagina wordt opgegeven.
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 veel voor het gebruik van PAGE tekstpaginering. De waarde voor de index van de eindpagina kan het laatste paginanummer zijn of een expressiewaarde van het type tekenreeks in de reactiekop. U kunt bijvoorbeeld headers.x-pagecount om index aan het einde van de pagina toe te wijzen aan x-pagecount waarde uit de reactiekoppen. Opmerking: x-pagecount is een verplichte antwoordheader voor sommige bronnen en bevat het waardeaantal pagina's dat moet worden ingevoerd. |
pageParamName |
De naam van de parameter die u aan vraagparameters moet toevoegen om door verschillende pagina's van de terugkeergegevens te oversteken. Bijvoorbeeld: https://abc.com?pageIndex=1 retourneert 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. |
De NONE
pagineringstype kan voor bronnen worden gebruikt die geen van de beschikbare pagineringstypen ondersteunen. Bronnen die het pagineringstype van NONE
keer eenvoudig alle terugwinnbare verslagen terug wanneer een verzoek van de GET wordt gedaan.
code language-json |
---|
|
Geavanceerde planning voor Self-Serve Bronnen (Batch SDK)
Vorm incrementele en backfill planning van uw bron gebruikend geavanceerde het plannen. De incremental
bezit staat u toe om een programma te vormen waarin uw bron slechts nieuwe of gewijzigde verslagen zal opnemen, terwijl het backfill
Met deze eigenschap kunt u een schema voor het invoeren van historische gegevens maken.
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 wordt Zendesk bron vereist dat het incrementele schema wordt opgemaakt als type:user updated > {START_TIME} updated < {END_TIME}
en backfill as type:user updated < {END_TIME}
.
"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
om het geavanceerde het plannen type te gebruiken.scheduleParams.paramFormat
scheduleStartParamFormat
en scheduleEndParamFormat
waarden.scheduleParams.incremental
scheduleParams.backfill
Zodra u uw geavanceerd het plannen vormt, moet u dan naar uw verwijzen scheduleParams
in de sectie URL, tekst of koptekstparams, afhankelijk van wat uw specifieke bron ondersteunt. In het onderstaande voorbeeld: {SCHEDULE_QUERY}
is een placeholder die wordt gebruikt om te specificeren waar de stijgende en backfill het plannen uitdrukkingen zullen worden gebruikt. In het geval van een Zendesk bron, query
wordt gebruikt in de 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
om alle kenmerken te definiëren die nodig zijn voor de bron, inclusief alle dynamische kenmerken die u nodig hebt. U kunt de overeenkomstige verbindingsspecificatie van uw bron bijwerken door een PUT aan te vragen bij de /connectionSpecs
het eindpunt van de Flow Service API, terwijl het verstrekken van uw douaneschema in 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. Document weergeven op configureren, verkenningsspecificaties voor meer informatie .