SlideShare una empresa de Scribd logo
1 de 44
Descargar para leer sin conexión
square.com
Tristan
Sokol
presents
Except for SDKs
8
Abbreviated org chart
Cash Seller
Appointments Developers
Capital …
Items Loyalty …
9
Abbreviated org chart
Cash Seller
Appointments Developers
Capital …
Items Loyalty …
10
Abbreviated org chart
Cash Seller
Appointments Developers
Capital …
Items Loyalty …
THE BESPOKE
The Hopeful
THE GENERATED
AND
SDKs
R.I.P.
The Hopeful
🙏
Footnote
THE BESPOKE
😀 😁
😜
🤖😌
🤗
😋 😏
☺
😛
🙃
🤣 😇
🤓🤠 😺
😊
How do you get the best of
both worlds?
THE GENERATED
{
"swagger": "2.0",
"info": {
"version": "2.0",
"title": "Square Connect API",
"description": "Client library for accessing the Square Connect APIs",
"termsOfService": "https://connect.squareup.com/tos",
"contact": {
"name": "Square Developer Platform",
"email": "developers@squareup.com",
"url": "https://squareup.com/developers"
},
"license": {
"name": "Apache 2.0",
"url": "http://www.apache.org/licenses/LICENSE-2.0.html"
}
},
"externalDocs": {
"description": "Read the official documentation here:",
"url": "https://docs.connect.squareup.com/"
},
"host": "connect.squareup.com",
"schemes": [
"https"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"securityDefinitions": {
"oauth2": {
"type": "oauth2",
"authorizationUrl": "https://connect.squareup.com/oauth2/authorize?<PARAMETERS>",
"flow": "accessCode",
"tokenUrl": "https://connect.squareup.com/oauth2/token",
"scopes": {
"MERCHANT_PROFILE_READ": "GET endpoints related to a merchantu0027s business and location entities. Almost all Connect API applications need this permission in order to obtain a merchantu0027s location IDs",
"PAYMENTS_READ": "GET endpoints related to transactions and refunds",
"PAYMENTS_WRITE": "POST, PUT, and DELETE endpoints related to transactions and refunds. E-commerce applications must request this permission",
"CUSTOMERS_READ": " GET endpoints related to customer management",
"CUSTOMERS_WRITE": "POST, PUT, and DELETE endpoints related to customer management",
"SETTLEMENTS_READ": "GET endpoints related to settlements (deposits)",
"BANK_ACCOUNTS_READ": "GET endpoints related to a merchantu0027s bank accounts",
"ITEMS_READ": "GET endpoints related to a merchantu0027s item library",
"ITEMS_WRITE": "POST, PUT, and DELETE endpoints related to a merchantu0027s item library",
"ORDERS_READ": "GET endpoints related to a merchantu0027s Square online store.",
"ORDERS_WRITE": "POST, PUT, and DELETE endpoints related to a merchantu0027s Square online store",
"EMPLOYEES_READ": "GET endpoints related to employee management",
"EMPLOYEES_WRITE": "POST, PUT, and DELETE endpoints related to employee management",
"TIMECARDS_READ": "GET endpoints related to employee timecards",
"TIMECARDS_WRITE": "POST, PUT, and DELETE endpoints related to employee timecards"
}
}
},
"paths": {
"/v2/locations/{location_id}/transactions": {
"post": {
"tags": [
"Transaction"
],
"summary": "Charge",
"operationId": "Charge",
"description": "Charges a card represented by a card nonce or a customeru0027s card on file.nnYour request to this endpoint must include _either_:nn- A value for the `card_nonce` parameter (to charge a card nonce generatednwith the `SqPaymentForm`)
n- Values for the `customer_card_id` and `customer_id` parameters (to chargena customeru0027s card on file)nnIn order for an e-commerce payment to potentially qualify forn[Square chargeback protection](https://squareup.com/help/article/5394), youn_must_
provide values for the following parameters in your request:nn- `buyer_email_address`n- At least one of `billing_address` or `shipping_address`nnWhen this response is returned, the amount of Squareu0027s processing fee might not yet bencalculated. To obtain
the processing fee, wait about ten seconds and calln[RetrieveTransaction](#endpoint-retrievetransaction). See the `processing_fee_money`nfield of each [Tender included](#type-tender) in the transaction.",
"x-oauthpermissions": [
"PAYMENTS_WRITE"
],
"parameters": [
{
"name": "Authorization",
"in": "header",
"type": "string",
"required": true,
It all starts with our specification.
{
…
“info": {
"version": "2.0",
"title": "Square Connect API",
"termsOfService": "https://connect.squareup.com/tos",
"contact": {
"name": "Square Developer Platform",
"email": "developers@squareup.com",
"url": "https://squareup.com/developers"
},
"license": {
"name": "Apache 2.0",
"url": "http://www.apache.org/licenses/LICENSE-2.0.html"
}
},
…
}
"/v1/me/employees": {
"post": {
"tags": [
"V1Employees"
],
"summary": "Creates an employee for a business.",
"operationId": "CreateEmployee",
"description": "Creates an employee for a business.",
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/v1Employee"
}
}
],
"security": [
{
"oauth2": [
"EMPLOYEES_WRITE"
]
}
],
"externalDocs": {
"description": "Read the offical documentation here:",
"url": "https://docs.connect.squareup.com/api/connect/
v1/#post-employees"
},
"deprecated": false,
"responses": {
"200": {
"description": "Success",
"headers": {},
"schema": {
"$ref": "#/definitions/v1Employee"
]
}
],
"externalDocs": {
"description": "Read the offical documentation here:",
"url": "https://docs.connect.squareup.com/api/connect/
v1/#post-employees"
},
"deprecated": false,
"responses": {
"200": {
"description": "Success",
"headers": {},
"schema": {
"$ref": "#/definitions/v1Employee"
}
}
}
},
square/connect-api-specification/
——api.json
square/connect-ruby-sdk square/connect-csharp-sdk
square/connect-python-sdksquare/connect-php-sdk
square/connect-java-sdk
29
Abbreviated org chart
Cash Seller
Appointments Developers
Capital …
Items Loyalty …
30
Abbreviated org chart
Cash Seller
Appointments.proto Developers
Capital.proto …
Items.proto Loyalty.proto …
.proto.proto.proto
items.proto
customers.proto
employees.proto
JAVA TOOL
"/v1/{location_id}/cash-drawer-shifts": {
"get": {
"tags": [
"V1Employees"
],
"summary": "Provides the details for all of a locationu0027s cash drawer shifts during a date range. The date range you specify cannot exceed 90 days.",
"operationId": "ListCashDrawerShifts",
"description": "Provides the details for all of a locationu0027s cash drawer shifts during a date range. The date range you specify cannot exceed 90 days.
"parameters": [
{
"name": "location_id",
"in": "path",
"description": "The ID of the location to list cash drawer shifts for.",
"type": "string",
"required": true
},
{
"name": "order",
"in": "query",
"description": "The order in which cash drawer shifts are listed in the response, based on their created_at field. Default value: ASC",
"type": "string",
"enum": [
"ASC",
"DESC"
],
"required": false
},
{
"name": "begin_time",
"description": "The beginning of the requested reporting period, in ISO 8601 format. Default value: The current time minus 90 days.",
"type": "string",
"in": "query",
"required": false
},
{
"name": "end_time",
"description": "The beginning of the requested reporting period, in ISO 8601 format. Default value: The current time.",
"type": "string",
"in": "query",
"required": false
}
],
"security": [
{
"oauth2": [
"PAYMENTS_READ"
]
}
],
"externalDocs": {
"description": "Read the offical documentation here:",
"url": "https://docs.connect.squareup.com/api/connect/v1/#get-cashdrawershifts"
},
"deprecated": false,
"responses": {
"200": {
"description": "Success",
"headers": {
"Link": {
"description": "If returned, there are too many items to return in one request and you must paginate with the supplied link. ",
"type": "string"
}
},
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/v1CashDrawerShift"
}
}
}
}
}
},
api.json>
items.proto
customers.proto
employees.proto
JAVA TOOL
"/v1/{location_id}/cash-drawer-shifts": {
"get": {
"tags": [
"V1Employees"
],
"summary": "Provides the details for all of a locationu0027s cash drawer shifts during a date range. The date range you specify cannot exceed 90 days.",
"operationId": "ListCashDrawerShifts",
"description": "Provides the details for all of a locationu0027s cash drawer shifts during a date range. The date range you specify cannot exceed 90 days.
"parameters": [
{
"name": "location_id",
"in": "path",
"description": "The ID of the location to list cash drawer shifts for.",
"type": "string",
"required": true
},
{
"name": "order",
"in": "query",
"description": "The order in which cash drawer shifts are listed in the response, based on their created_at field. Default value: ASC",
"type": "string",
"enum": [
"ASC",
"DESC"
],
"required": false
},
{
"name": "begin_time",
"description": "The beginning of the requested reporting period, in ISO 8601 format. Default value: The current time minus 90 days.",
"type": "string",
"in": "query",
"required": false
},
{
"name": "end_time",
"description": "The beginning of the requested reporting period, in ISO 8601 format. Default value: The current time.",
"type": "string",
"in": "query",
"required": false
}
],
"security": [
{
"oauth2": [
"PAYMENTS_READ"
]
}
],
"externalDocs": {
"description": "Read the offical documentation here:",
"url": "https://docs.connect.squareup.com/api/connect/v1/#get-cashdrawershifts"
},
"deprecated": false,
"responses": {
"200": {
"description": "Success",
"headers": {
"Link": {
"description": "If returned, there are too many items to return in one request and you must paginate with the supplied link. ",
"type": "string"
}
},
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/v1CashDrawerShift"
}
}
}
}
}
},
api.json>
SWAGGER
CODGEN
api.json
{{ templates }}
config.json
Client library!>
SWAGGER
CODGEN
api.json
{{ templates }}
config.json
>
PHP Client library!
Ruby Client library!
Python Client library!
Java Client library!
C# Client library!
square/connect-api-specification/
——api.json
square/connect-api-specification/
——api.json
——templates/
————php/
————ruby/
————…
——config/
————php.json
————ruby.json
————…
square/connect-api-specification/
——api.json
——templates/
————php/
————ruby/
————…
——config/
————php.json
————ruby.json
————…
after_success:
- git config --global user.name "Travis CI"
- git config --global user.email "${TEAM_EMAIL}"
- "/bin/sh ./travis-ci/push-csharp-sdk.sh"
- "/bin/sh ./travis-ci/push-php-sdk.sh"
- "/bin/sh ./travis-ci/push-ruby-sdk.sh"
- "/bin/sh ./travis-ci/push-python-sdk.sh"
- "/bin/sh ./travis-ci/push-java-sdk.sh"
square/connect-api-specification/
square/connect-ruby-sdk square/connect-csharp-sdk
square/connect-python-sdksquare/connect-php-sdk
square/connect-java-sdk
THE BESPOKE
The Hopeful
THE GENERATED
AND
SDKs
@TristanSokol
tristans@squareup.com
http://squ.re/slack

Más contenido relacionado

Similar a SDKs, the good the bad the ugly - Japan

Solutions for bi-directional integration between Oracle RDBMS & Apache Kafka
Solutions for bi-directional integration between Oracle RDBMS & Apache KafkaSolutions for bi-directional integration between Oracle RDBMS & Apache Kafka
Solutions for bi-directional integration between Oracle RDBMS & Apache KafkaGuido Schmutz
 
Solutions for bi-directional Integration between Oracle RDMBS & Apache Kafka
Solutions for bi-directional Integration between Oracle RDMBS & Apache KafkaSolutions for bi-directional Integration between Oracle RDMBS & Apache Kafka
Solutions for bi-directional Integration between Oracle RDMBS & Apache KafkaGuido Schmutz
 
Solutions for bi-directional integration between Oracle RDBMS and Apache Kafk...
Solutions for bi-directional integration between Oracle RDBMS and Apache Kafk...Solutions for bi-directional integration between Oracle RDBMS and Apache Kafk...
Solutions for bi-directional integration between Oracle RDBMS and Apache Kafk...confluent
 
Agile Testing Days 2018 - API Fundamentals - postman collection
Agile Testing Days 2018 - API Fundamentals - postman collectionAgile Testing Days 2018 - API Fundamentals - postman collection
Agile Testing Days 2018 - API Fundamentals - postman collectionJoEllen Carter
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedMarcinStachniuk
 
Teaming up WordPress API with Backbone.js in Titanium
Teaming up WordPress API with Backbone.js in TitaniumTeaming up WordPress API with Backbone.js in Titanium
Teaming up WordPress API with Backbone.js in TitaniumJeroen van Dijk
 
GraphQL - when REST API is not enough - lessons learned
GraphQL - when REST API is not enough - lessons learnedGraphQL - when REST API is not enough - lessons learned
GraphQL - when REST API is not enough - lessons learnedMarcinStachniuk
 
APIdays Zurich 2019 - Specification Driven Development for REST APIS Alexande...
APIdays Zurich 2019 - Specification Driven Development for REST APIS Alexande...APIdays Zurich 2019 - Specification Driven Development for REST APIS Alexande...
APIdays Zurich 2019 - Specification Driven Development for REST APIS Alexande...apidays
 
APIdays Helsinki 2019 - Specification-Driven Development of REST APIs with Al...
APIdays Helsinki 2019 - Specification-Driven Development of REST APIs with Al...APIdays Helsinki 2019 - Specification-Driven Development of REST APIs with Al...
APIdays Helsinki 2019 - Specification-Driven Development of REST APIs with Al...apidays
 
Introduction to GraphQL at API days
Introduction to GraphQL at API daysIntroduction to GraphQL at API days
Introduction to GraphQL at API daysyann_s
 
Stratalux Cloud Formation and Chef Integration Presentation
Stratalux Cloud Formation and Chef Integration PresentationStratalux Cloud Formation and Chef Integration Presentation
Stratalux Cloud Formation and Chef Integration PresentationJeremy Przygode
 
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013Kiril Iliev
 
FIWARE Developers Week_ Introduction to Managing Context Information at Large...
FIWARE Developers Week_ Introduction to Managing Context Information at Large...FIWARE Developers Week_ Introduction to Managing Context Information at Large...
FIWARE Developers Week_ Introduction to Managing Context Information at Large...FIWARE
 
Elasticsearch in 15 Minutes
Elasticsearch in 15 MinutesElasticsearch in 15 Minutes
Elasticsearch in 15 MinutesKarel Minarik
 
Hypermedia API’s
Hypermedia API’s Hypermedia API’s
Hypermedia API’s 3camp
 
API REST et client Javascript - Nuxeo Tour 2014 - Workshop
API REST et client Javascript - Nuxeo Tour 2014 - WorkshopAPI REST et client Javascript - Nuxeo Tour 2014 - Workshop
API REST et client Javascript - Nuxeo Tour 2014 - WorkshopNuxeo
 
Do more with less code in serverless
Do more with less code in serverlessDo more with less code in serverless
Do more with less code in serverlessjeromevdl
 
Chatting with HIpChat: APIs 101
Chatting with HIpChat: APIs 101Chatting with HIpChat: APIs 101
Chatting with HIpChat: APIs 101colleenfry
 
OSCON 2011 CouchApps
OSCON 2011 CouchAppsOSCON 2011 CouchApps
OSCON 2011 CouchAppsBradley Holt
 

Similar a SDKs, the good the bad the ugly - Japan (20)

Solutions for bi-directional integration between Oracle RDBMS & Apache Kafka
Solutions for bi-directional integration between Oracle RDBMS & Apache KafkaSolutions for bi-directional integration between Oracle RDBMS & Apache Kafka
Solutions for bi-directional integration between Oracle RDBMS & Apache Kafka
 
Solutions for bi-directional Integration between Oracle RDMBS & Apache Kafka
Solutions for bi-directional Integration between Oracle RDMBS & Apache KafkaSolutions for bi-directional Integration between Oracle RDMBS & Apache Kafka
Solutions for bi-directional Integration between Oracle RDMBS & Apache Kafka
 
Solutions for bi-directional integration between Oracle RDBMS and Apache Kafk...
Solutions for bi-directional integration between Oracle RDBMS and Apache Kafk...Solutions for bi-directional integration between Oracle RDBMS and Apache Kafk...
Solutions for bi-directional integration between Oracle RDBMS and Apache Kafk...
 
Agile Testing Days 2018 - API Fundamentals - postman collection
Agile Testing Days 2018 - API Fundamentals - postman collectionAgile Testing Days 2018 - API Fundamentals - postman collection
Agile Testing Days 2018 - API Fundamentals - postman collection
 
GraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learnedGraphQL - when REST API is to less - lessons learned
GraphQL - when REST API is to less - lessons learned
 
Teaming up WordPress API with Backbone.js in Titanium
Teaming up WordPress API with Backbone.js in TitaniumTeaming up WordPress API with Backbone.js in Titanium
Teaming up WordPress API with Backbone.js in Titanium
 
GraphQL - when REST API is not enough - lessons learned
GraphQL - when REST API is not enough - lessons learnedGraphQL - when REST API is not enough - lessons learned
GraphQL - when REST API is not enough - lessons learned
 
APIdays Zurich 2019 - Specification Driven Development for REST APIS Alexande...
APIdays Zurich 2019 - Specification Driven Development for REST APIS Alexande...APIdays Zurich 2019 - Specification Driven Development for REST APIS Alexande...
APIdays Zurich 2019 - Specification Driven Development for REST APIS Alexande...
 
APIdays Helsinki 2019 - Specification-Driven Development of REST APIs with Al...
APIdays Helsinki 2019 - Specification-Driven Development of REST APIs with Al...APIdays Helsinki 2019 - Specification-Driven Development of REST APIs with Al...
APIdays Helsinki 2019 - Specification-Driven Development of REST APIs with Al...
 
Introduction to GraphQL at API days
Introduction to GraphQL at API daysIntroduction to GraphQL at API days
Introduction to GraphQL at API days
 
Stratalux Cloud Formation and Chef Integration Presentation
Stratalux Cloud Formation and Chef Integration PresentationStratalux Cloud Formation and Chef Integration Presentation
Stratalux Cloud Formation and Chef Integration Presentation
 
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013
 
CARTO ENGINE
CARTO ENGINECARTO ENGINE
CARTO ENGINE
 
FIWARE Developers Week_ Introduction to Managing Context Information at Large...
FIWARE Developers Week_ Introduction to Managing Context Information at Large...FIWARE Developers Week_ Introduction to Managing Context Information at Large...
FIWARE Developers Week_ Introduction to Managing Context Information at Large...
 
Elasticsearch in 15 Minutes
Elasticsearch in 15 MinutesElasticsearch in 15 Minutes
Elasticsearch in 15 Minutes
 
Hypermedia API’s
Hypermedia API’s Hypermedia API’s
Hypermedia API’s
 
API REST et client Javascript - Nuxeo Tour 2014 - Workshop
API REST et client Javascript - Nuxeo Tour 2014 - WorkshopAPI REST et client Javascript - Nuxeo Tour 2014 - Workshop
API REST et client Javascript - Nuxeo Tour 2014 - Workshop
 
Do more with less code in serverless
Do more with less code in serverlessDo more with less code in serverless
Do more with less code in serverless
 
Chatting with HIpChat: APIs 101
Chatting with HIpChat: APIs 101Chatting with HIpChat: APIs 101
Chatting with HIpChat: APIs 101
 
OSCON 2011 CouchApps
OSCON 2011 CouchAppsOSCON 2011 CouchApps
OSCON 2011 CouchApps
 

Último

VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...Akihiro Suda
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfYashikaSharma391629
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 

Último (20)

VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 

SDKs, the good the bad the ugly - Japan

  • 2.
  • 3.
  • 5.
  • 7.
  • 8. 8 Abbreviated org chart Cash Seller Appointments Developers Capital … Items Loyalty …
  • 9. 9 Abbreviated org chart Cash Seller Appointments Developers Capital … Items Loyalty …
  • 10. 10 Abbreviated org chart Cash Seller Appointments Developers Capital … Items Loyalty …
  • 11. THE BESPOKE The Hopeful THE GENERATED AND SDKs
  • 14.
  • 15.
  • 19. How do you get the best of both worlds?
  • 21. { "swagger": "2.0", "info": { "version": "2.0", "title": "Square Connect API", "description": "Client library for accessing the Square Connect APIs", "termsOfService": "https://connect.squareup.com/tos", "contact": { "name": "Square Developer Platform", "email": "developers@squareup.com", "url": "https://squareup.com/developers" }, "license": { "name": "Apache 2.0", "url": "http://www.apache.org/licenses/LICENSE-2.0.html" } }, "externalDocs": { "description": "Read the official documentation here:", "url": "https://docs.connect.squareup.com/" }, "host": "connect.squareup.com", "schemes": [ "https" ], "consumes": [ "application/json" ], "produces": [ "application/json" ], "securityDefinitions": { "oauth2": { "type": "oauth2", "authorizationUrl": "https://connect.squareup.com/oauth2/authorize?<PARAMETERS>", "flow": "accessCode", "tokenUrl": "https://connect.squareup.com/oauth2/token", "scopes": { "MERCHANT_PROFILE_READ": "GET endpoints related to a merchantu0027s business and location entities. Almost all Connect API applications need this permission in order to obtain a merchantu0027s location IDs", "PAYMENTS_READ": "GET endpoints related to transactions and refunds", "PAYMENTS_WRITE": "POST, PUT, and DELETE endpoints related to transactions and refunds. E-commerce applications must request this permission", "CUSTOMERS_READ": " GET endpoints related to customer management", "CUSTOMERS_WRITE": "POST, PUT, and DELETE endpoints related to customer management", "SETTLEMENTS_READ": "GET endpoints related to settlements (deposits)", "BANK_ACCOUNTS_READ": "GET endpoints related to a merchantu0027s bank accounts", "ITEMS_READ": "GET endpoints related to a merchantu0027s item library", "ITEMS_WRITE": "POST, PUT, and DELETE endpoints related to a merchantu0027s item library", "ORDERS_READ": "GET endpoints related to a merchantu0027s Square online store.", "ORDERS_WRITE": "POST, PUT, and DELETE endpoints related to a merchantu0027s Square online store", "EMPLOYEES_READ": "GET endpoints related to employee management", "EMPLOYEES_WRITE": "POST, PUT, and DELETE endpoints related to employee management", "TIMECARDS_READ": "GET endpoints related to employee timecards", "TIMECARDS_WRITE": "POST, PUT, and DELETE endpoints related to employee timecards" } } }, "paths": { "/v2/locations/{location_id}/transactions": { "post": { "tags": [ "Transaction" ], "summary": "Charge", "operationId": "Charge", "description": "Charges a card represented by a card nonce or a customeru0027s card on file.nnYour request to this endpoint must include _either_:nn- A value for the `card_nonce` parameter (to charge a card nonce generatednwith the `SqPaymentForm`) n- Values for the `customer_card_id` and `customer_id` parameters (to chargena customeru0027s card on file)nnIn order for an e-commerce payment to potentially qualify forn[Square chargeback protection](https://squareup.com/help/article/5394), youn_must_ provide values for the following parameters in your request:nn- `buyer_email_address`n- At least one of `billing_address` or `shipping_address`nnWhen this response is returned, the amount of Squareu0027s processing fee might not yet bencalculated. To obtain the processing fee, wait about ten seconds and calln[RetrieveTransaction](#endpoint-retrievetransaction). See the `processing_fee_money`nfield of each [Tender included](#type-tender) in the transaction.", "x-oauthpermissions": [ "PAYMENTS_WRITE" ], "parameters": [ { "name": "Authorization", "in": "header", "type": "string", "required": true, It all starts with our specification.
  • 22.
  • 23. { … “info": { "version": "2.0", "title": "Square Connect API", "termsOfService": "https://connect.squareup.com/tos", "contact": { "name": "Square Developer Platform", "email": "developers@squareup.com", "url": "https://squareup.com/developers" }, "license": { "name": "Apache 2.0", "url": "http://www.apache.org/licenses/LICENSE-2.0.html" } }, … }
  • 24. "/v1/me/employees": { "post": { "tags": [ "V1Employees" ], "summary": "Creates an employee for a business.", "operationId": "CreateEmployee", "description": "Creates an employee for a business.", "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/v1Employee" } } ],
  • 25. "security": [ { "oauth2": [ "EMPLOYEES_WRITE" ] } ], "externalDocs": { "description": "Read the offical documentation here:", "url": "https://docs.connect.squareup.com/api/connect/ v1/#post-employees" }, "deprecated": false, "responses": { "200": { "description": "Success", "headers": {}, "schema": { "$ref": "#/definitions/v1Employee"
  • 26. ] } ], "externalDocs": { "description": "Read the offical documentation here:", "url": "https://docs.connect.squareup.com/api/connect/ v1/#post-employees" }, "deprecated": false, "responses": { "200": { "description": "Success", "headers": {}, "schema": { "$ref": "#/definitions/v1Employee" } } } },
  • 29. 29 Abbreviated org chart Cash Seller Appointments Developers Capital … Items Loyalty …
  • 30. 30 Abbreviated org chart Cash Seller Appointments.proto Developers Capital.proto … Items.proto Loyalty.proto … .proto.proto.proto
  • 31. items.proto customers.proto employees.proto JAVA TOOL "/v1/{location_id}/cash-drawer-shifts": { "get": { "tags": [ "V1Employees" ], "summary": "Provides the details for all of a locationu0027s cash drawer shifts during a date range. The date range you specify cannot exceed 90 days.", "operationId": "ListCashDrawerShifts", "description": "Provides the details for all of a locationu0027s cash drawer shifts during a date range. The date range you specify cannot exceed 90 days. "parameters": [ { "name": "location_id", "in": "path", "description": "The ID of the location to list cash drawer shifts for.", "type": "string", "required": true }, { "name": "order", "in": "query", "description": "The order in which cash drawer shifts are listed in the response, based on their created_at field. Default value: ASC", "type": "string", "enum": [ "ASC", "DESC" ], "required": false }, { "name": "begin_time", "description": "The beginning of the requested reporting period, in ISO 8601 format. Default value: The current time minus 90 days.", "type": "string", "in": "query", "required": false }, { "name": "end_time", "description": "The beginning of the requested reporting period, in ISO 8601 format. Default value: The current time.", "type": "string", "in": "query", "required": false } ], "security": [ { "oauth2": [ "PAYMENTS_READ" ] } ], "externalDocs": { "description": "Read the offical documentation here:", "url": "https://docs.connect.squareup.com/api/connect/v1/#get-cashdrawershifts" }, "deprecated": false, "responses": { "200": { "description": "Success", "headers": { "Link": { "description": "If returned, there are too many items to return in one request and you must paginate with the supplied link. ", "type": "string" } }, "schema": { "type": "array", "items": { "$ref": "#/definitions/v1CashDrawerShift" } } } } } }, api.json>
  • 32. items.proto customers.proto employees.proto JAVA TOOL "/v1/{location_id}/cash-drawer-shifts": { "get": { "tags": [ "V1Employees" ], "summary": "Provides the details for all of a locationu0027s cash drawer shifts during a date range. The date range you specify cannot exceed 90 days.", "operationId": "ListCashDrawerShifts", "description": "Provides the details for all of a locationu0027s cash drawer shifts during a date range. The date range you specify cannot exceed 90 days. "parameters": [ { "name": "location_id", "in": "path", "description": "The ID of the location to list cash drawer shifts for.", "type": "string", "required": true }, { "name": "order", "in": "query", "description": "The order in which cash drawer shifts are listed in the response, based on their created_at field. Default value: ASC", "type": "string", "enum": [ "ASC", "DESC" ], "required": false }, { "name": "begin_time", "description": "The beginning of the requested reporting period, in ISO 8601 format. Default value: The current time minus 90 days.", "type": "string", "in": "query", "required": false }, { "name": "end_time", "description": "The beginning of the requested reporting period, in ISO 8601 format. Default value: The current time.", "type": "string", "in": "query", "required": false } ], "security": [ { "oauth2": [ "PAYMENTS_READ" ] } ], "externalDocs": { "description": "Read the offical documentation here:", "url": "https://docs.connect.squareup.com/api/connect/v1/#get-cashdrawershifts" }, "deprecated": false, "responses": { "200": { "description": "Success", "headers": { "Link": { "description": "If returned, there are too many items to return in one request and you must paginate with the supplied link. ", "type": "string" } }, "schema": { "type": "array", "items": { "$ref": "#/definitions/v1CashDrawerShift" } } } } } }, api.json>
  • 33.
  • 35. SWAGGER CODGEN api.json {{ templates }} config.json > PHP Client library! Ruby Client library! Python Client library! Java Client library! C# Client library!
  • 36.
  • 40.
  • 41. after_success: - git config --global user.name "Travis CI" - git config --global user.email "${TEAM_EMAIL}" - "/bin/sh ./travis-ci/push-csharp-sdk.sh" - "/bin/sh ./travis-ci/push-php-sdk.sh" - "/bin/sh ./travis-ci/push-ruby-sdk.sh" - "/bin/sh ./travis-ci/push-python-sdk.sh" - "/bin/sh ./travis-ci/push-java-sdk.sh" square/connect-api-specification/
  • 43. THE BESPOKE The Hopeful THE GENERATED AND SDKs