SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Ähnlich wie 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
 

Ähnlich wie 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
 

Kürzlich hochgeladen

%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...masabamasaba
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...Nitya salvi
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyviewmasabamasaba
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfayushiqss
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastPapp Krisztián
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durbanmasabamasaba
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Hararemasabamasaba
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 

Kürzlich hochgeladen (20)

%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 

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