top of page
panihusiper

Xflow Tutorial Guide: A Comprehensive Introduction to Xflow Features and Capabilities



  • > Hardware requirements, software requirements, and certified configurations

  • > Product installation guidelines

  • > Licensing information

  • > New features in the release

  • > Known issues and solutions

  • > Closed issues for a release



The purpose of our "RESTful API guidelines" is to define standards tosuccessfully establish "consistent API look and feel" quality. TheAPI Guild (internal_link)drafted and owns this document. Teams are responsible to fulfillthese guidelines during API development and are encouraged to contributeto guideline evolution via pull requests.




Xflow Tutorial Guide




Hint: We do not yet provide guidelines for GraphQLand focus on resource oriented HTTP/REST API style (and related toolingand infrastructure support).Following our Zalando Tech Radar (internal_link), we thinkthat GraphQL has no major benefits, but a couple of downsides compared to RESTas API technology for general purpose peer-to-peer microservice communication.However, GraphQL can provide a lot of value for specific target domain problems,especially backends for frontends (BFF) and mobile clients, where typicallymany (domain object) resources from different services are queried andmultiple roundtrip overhead should be avoided due to (mobile or public)network constraints. Therefore we list both technologies on ADOPT, thoughGraphQL only supplements REST for the BFF-specific problem domain.


These guidelines provides recommendations for defining JSON data at Zalando.JSON here refers to RFC 7159 (which updates RFC 4627),the "application/json" media type and custom JSON media types defined for APIs.The guidelines clarifies some specific cases to allow Zalando JSON data to havean idiomatic form across teams and services.


Note: Clients must be robust and not rely on a Problem JSON objectbeing returned, since (a) failure responses may be created by infrastructurecomponents not aware of this guideline or (b) service may be unable to complywith this guideline in certain error situations.


Content-Location is an optional response header that can be used in successful writeoperations (PUT, POST, or PATCH) or read operations (GET, HEAD) toguide caching and signal a receiver the actual location of the resourcetransmitted in the response body. This allows clients to identify the resourceand to update their local copy when receiving a response with this header.


Exception: The only exception to this guideline are the conventionalhop-by-hop X-RateLimit- headers which can be used as defined in MUST use code 429 with headers for rate limits.


Hint: This guideline does not standardize proprietary headers forour specific gateway components (2. use case above).This include, for instance, non pass-through headers X-Zalando-Customer, X-Zalando-Client-ID, X-Zalando-Request-Host,X-Zalando-Request-URI defined by Fashion Shop API (RKeep), or X-Consumer, X-Consumer-Signature,X-Consumer-Key-ID defined by Merchant API gateway.All these proprietary headers are allowlisted in the API Linter (Zally) checking this rule.


We strive for a good implementation ofRESTMaturity Level 2 as it enables us to build resource-oriented APIs thatmake full use of HTTP verbs and status codes. You can see this expressedby many rules throughout these guidelines, e.g.:


The name of an attribute holding such a HttpLink object specifies therelation between the object that contains the link and the linked resource.Implementations should use names from the IANA Link Relation Registrywhenever appropriate. As IANA link relationnames use hyphen-case notation, while this guide enforces snake_casenotation for attribute names, hyphens in IANA names have to be replacedwith underscores (e.g. the IANA link relation type version-historywould become the attribute version_history)


Caching has to take many aspects into account, e.g. general cacheability of response information, our guideline to protect endpointsusing SSL and OAuth authorization, resource update and invalidationrules, existence of multiple consumer instances. As a consequence, caching isin best case complex, e.g. with respect to consistency, in worst caseinefficient.


Note: There is a difference between incompatible and breaking changes.Incompatible changes are changes that are not covered by the compatibilityrules below. Breaking changes are incompatible changes deployed into operation,and thereby breaking running API consumers. Usually, incompatible changes arebreaking changes when deployed into operation. However, in specific controlledsituations it is possible to deploy incompatible changes in a non-breaking way,if no API consumer is using the affected API aspects (see also Deprecation guidelines).


The OpenAPI specification is not very specific on default extensibilityof objects, and redefines JSON-Schema keywords related to extensibility, likeadditionalProperties. Following our compatibility guidelines, OpenAPIobject definitions are considered open for extension by default as perSection5.18 "additionalProperties" of JSON-Schema.


Note that this guideline concentrates on default extensibility and does notexclude the use of additionalProperties with a schema as a value, which mightbe appropriate in some circumstances, e.g. see SHOULD define maps using additionalProperties.


additionalProperties: For event types that declare compatibilityguarantees, there are recommended constraints around the use of thisfield. See the guideline SHOULD avoid additionalProperties in event type schemas for details.


^x-: patterned objects in the form ofvendorextensions can be used in event type schema, but it might be the casethat general purpose validators do not understand them to enforce avalidation check, and fall back to must-ignore processing. A futureversion of the guidelines may define well known vendor extensions forevents.


Events are often intermediated by publish/subscribe systems and arecommonly captured in logs or long term storage to be read later. Inparticular, the schemas used by publishers and consumers candrift over time. As a result, compatibility and extensibility issuesthat happen less frequently with client-server style APIs becomeimportant and regular considerations for event design. The guidelinesrecommend the following to enable event schema evolution:


There may be exceptional cases where data change events could have theirpartition strategy set to be the producer defined or random options, butgenerally hash is the right option - that is while the guidelines hereare a "should", they can be read as "must, unless you have a very goodreason".


Non-major changes are editorial-only changes or minor changes of existing guidelines, e.g. adding new error code or specific example.Major changes are changes that come with additional obligations, or even change an existing guideline obligation.Major changes are listed as "Rule Changes" below.


So you're ready to switch from carburetor to fuel injection, but you're unsure of what all is involved. This guide will walk you through a basic installation including what parts are necessary to swap as well as what to watch out for. It's time to move towards better fuel economy, increased performance and perfect cold starts. Let's get started!


Hopefully, this guide will resolve some questions you may have considered when installing a Sniper EFI system. Fuel injection can be daunting after a life of tuning carburetors, but Sniper EFI is arguably one of the simplest to install systems available on the market. Be sure to check out the full instruction manual filled with tons of information regarding installation, tuning and more!


  • Thank you for visiting SAP\\nCommunity to get answers to your questions. Since this is your first question, I\\nrecommend that you familiarize yourself with Community\\nQ&A , as the overview provides tips for\\npreparing questions that draw responses from our members. Should you wish, you can revise\\nyour question by selecting Actions, then Edit.\",\"author\":\"username\":\"daniil_horbach\",\"displayName\":\"Daniil Horbach\",\"groupIcons\":[\"name\":\"SCNGLOBALMODERATORS\",\"title\":\"Global Moderator\",\"priority\":5,\"name\":\"moderator\",\"title\":\"This user is an SAP Moderator\",\"priority\":20],\"suspended\":false,\"isCurrentUser\":false,\"parentAuthor\":\"username\":\"trondheim\",\"displayName\":\"Piotr W\",\"groupIcons\":[],\"suspended\":false,\"isCurrentUser\":false,\"id\":13513305,\"creationDate\":1635409971000,\"activeRevisionId\":13971639,\"lastActivity\":1635409988000,\"parentId\":13511621,\"originalParentId\":13511621,\"likeCount\":0,\"visibility\":\"full\",\"depth\":0,\"attachments\":[],\"canVoteUpOrCancel\":false,\"relations\":\"canReport\":false,\"visibility\":\"full\",\"canEdit\":false,\"canUseDelete\":false,\"isLiked\":false,\"type\":\"comment\",\"canVoteUpOrCancel\":false,\"canConvertToAnswer\":false,\"canBeModerated\":false,\"canViewRevisions\":false,\"showInReply\":false,\"reported\":false,\"canCancelReport\":false,\"canDelete\":false,\"canVoteDownOrCancel\":false,\"canComment\":false,\"canViewReports\":false,\"isCurrentUserAuthor\":false,\"moderatorComment\":true,\"liked\":false}]}}"); const simplifiedQuestionView = JSON.parse("true"); (function() window.pageContext = mergeDeep(pageContext, question: id: 13511621, plug: "xflow-roles-settings", votes: 0, questionTitle: "xFlow roles settings", isClosed: false, isLocked: false, isRedirected: false, redirectedFromTitle: "", redirectedFromId: "", closedStatusData: JSON.parse(""), userVoted: false, relations: JSON.parse("\"canClose\":false,\"canUnredirect\":false,\"canReport\":false,\"visibility\":\"full\",\"canEdit\":false,\"canUseDelete\":false,\"canReopen\":false,\"type\":\"question\",\"canVoteUpOrCancel\":false,\"canViewRevisions\":true,\"canUnlock\":false,\"reported\":false,\"canVoteDownOrCancel\":false,\"canLock\":false,\"canCancelReport\":false,\"canComment\":true,\"isCurrentUserAuthor\":false,\"canViewReports\":false"), isQuestionAccepted: false , childToViewInfo: id: "" , comments: JSON.parse("\"13511621\":\"rootParentId\":13511621,\"commentsCount\":1,\"comments\":[\"body\":\"Thank you for visiting SAP\\nCommunity to get answers to your questions. Since this is your first question, I\\nrecommend that you familiarize yourself with Community\\nQ&A , as the overview provides tips for\\npreparing questions that draw responses from our members. Should you wish, you can revise\\nyour question by selecting Actions, then Edit.\",\"author\":\"username\":\"daniil_horbach\",\"displayName\":\"Daniil Horbach\",\"groupIcons\":[\"name\":\"SCNGLOBALMODERATORS\",\"title\":\"Global Moderator\",\"priority\":5,\"name\":\"moderator\",\"title\":\"This user is an SAP Moderator\",\"priority\":20],\"suspended\":false,\"isCurrentUser\":false,\"parentAuthor\":\"username\":\"trondheim\",\"displayName\":\"Piotr W\",\"groupIcons\":[],\"suspended\":false,\"isCurrentUser\":false,\"id\":13513305,\"creationDate\":1635409971000,\"activeRevisionId\":13971639,\"lastActivity\":1635409988000,\"parentId\":13511621,\"originalParentId\":13511621,\"likeCount\":0,\"visibility\":\"full\",\"depth\":0,\"attachments\":[],\"canVoteUpOrCancel\":false,\"relations\":\"canReport\":false,\"visibility\":\"full\",\"canEdit\":false,\"canUseDelete\":false,\"isLiked\":false,\"type\":\"comment\",\"canVoteUpOrCancel\":false,\"canConvertToAnswer\":false,\"canBeModerated\":false,\"canViewRevisions\":false,\"showInReply\":false,\"reported\":false,\"canCancelReport\":false,\"canDelete\":false,\"canVoteDownOrCancel\":false,\"canComment\":false,\"canViewReports\":false,\"isCurrentUserAuthor\":false,\"moderatorComment\":true,\"liked\":false]"), answerPager: answersCount: 0, page: 1, pageSize: 10, pageCount: 0, sort: "votes" , answers: JSON.parse(""), answerForm: formAction: "/answers/13511621/post.json", textareaName: "body", textareaErrors: "", isAttachmentsEnabled: true, answerEditorialGuideline: title: "Before answering", content: "You should only submit an answer when you are proposing a solution to the poster\'s problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that your answer complies with our Rules of Engagement.", links: [ title: "Rules of Engagement", href: " -of-engagement.html", ] , answerMinBodyLength: '10', answerMaxBodyLength: '20000' , currentUser: sapInternalId: '', permissions: canVoteUpOrCancel: false, canVoteDownOrCancel: false, canModerate: false, , isVotedUp: false, isVotedDown: false , alerts: alertModeratorMinLength : "It should be given a proper explanation about why the content is inappropriate.", alertModeratorMinLengthValue : "10", alreadyReportedMessage : "You already have an active moderator alert for this content." , url: profileApiBaseUrl: ' -api.services.sap.com', followUnfollowQuestion: '/sap/nodeSubscription.json', isFollowingQuestion: '/sap/isFollowingNode.json', vote: voteUp: '/commands/0/voteup.json', voteDown: '/commands/0/votedown.json', cancelVote: '/commands/0/cancelvote.json' , rss: answers: '/feed/13511621/answers.rss', answersAndComments: '/feed/13511621/comments-and-answers.rss' , authorizeUploadContext: type: 'answer' , atMention: userSearchServiceUrl: ' ', currentUserName: '', useNewUSSCORS: true, atMentionDelayMs: 100, showMentionInRedactor: true , attachmentSettings: commentMaxAttachments: '2', answerMaxAttachments: '10', commentMaxAttachmentSizeBytes: '1048576', answerMaxAttachmentSizeBytes: '1048576', commentAttachmentsSizeBytesTotal: '2097152', answerAttachmentsSizeBytesTotal: '10485760' , editor: editorClipboardUploadEnabled: true ) )(); Home

  • Community

  • Ask a Question

  • Write a Blog Post

Login / Sign-up Search Questions and Answers 0 Piotr W Oct 28, 2021 at 08:32 AM xFlow roles settings 205 Views Follow RSS Feed Hello there, 2ff7e9595c


0 views0 comments

Recent Posts

See All

Comments


bottom of page