SDKs, the good the bad the ugly - Japan

square.com
SDKs, the good the bad the ugly - Japan
SDKs, the good the bad the ugly - Japan
Tristan
Sokol
presents
SDKs, the good the bad the ugly - Japan
Except for SDKs
SDKs, the good the bad the ugly - Japan
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
🙏
SDKs, the good the bad the ugly - Japan
SDKs, the good the bad the ugly - Japan
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.
SDKs, the good the bad the ugly - Japan
{
…
“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>
SDKs, the good the bad the ugly - Japan
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!
SDKs, the good the bad the ugly - Japan
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
————…
SDKs, the good the bad the ugly - Japan
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
1 of 44

Recommended

GraphQL - when REST API is to less - lessons learned by
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
380 views86 slides
Final Presentation V1.8 by
Final Presentation V1.8Final Presentation V1.8
Final Presentation V1.8Chad Koziel
226 views22 slides
The battle of Protractor and Cypress - RunIT Conference 2019 by
The battle of Protractor and Cypress - RunIT Conference 2019The battle of Protractor and Cypress - RunIT Conference 2019
The battle of Protractor and Cypress - RunIT Conference 2019Ludmila Nesvitiy
496 views46 slides
Example-driven Web API Specification Discovery by
Example-driven Web API Specification DiscoveryExample-driven Web API Specification Discovery
Example-driven Web API Specification DiscoveryJavier Canovas
12.6K views41 slides
[FDD 2017] Mark Seemann - Humane code by
[FDD 2017] Mark Seemann - Humane code[FDD 2017] Mark Seemann - Humane code
[FDD 2017] Mark Seemann - Humane codeFuture Processing
649 views74 slides
Ams adapters by
Ams adaptersAms adapters
Ams adaptersBruno Alló Bacarini
264 views62 slides

More Related Content

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

Solutions for bi-directional integration between Oracle RDBMS & Apache Kafka by
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
870 views51 slides
Solutions for bi-directional Integration between Oracle RDMBS & Apache Kafka by
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
575 views50 slides
Solutions for bi-directional integration between Oracle RDBMS and Apache Kafk... by
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
1.7K views50 slides
Agile Testing Days 2018 - API Fundamentals - postman collection by
Agile Testing Days 2018 - API Fundamentals - postman collectionAgile Testing Days 2018 - API Fundamentals - postman collection
Agile Testing Days 2018 - API Fundamentals - postman collectionJoEllen Carter
457 views15 slides
GraphQL - when REST API is to less - lessons learned by
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
299 views85 slides
Teaming up WordPress API with Backbone.js in Titanium by
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
1.3K views50 slides

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

Solutions for bi-directional integration between Oracle RDBMS & Apache Kafka by Guido Schmutz
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
Guido Schmutz870 views
Solutions for bi-directional Integration between Oracle RDMBS & Apache Kafka by Guido Schmutz
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
Guido Schmutz575 views
Solutions for bi-directional integration between Oracle RDBMS and Apache Kafk... by confluent
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...
confluent1.7K views
Agile Testing Days 2018 - API Fundamentals - postman collection by JoEllen Carter
Agile Testing Days 2018 - API Fundamentals - postman collectionAgile Testing Days 2018 - API Fundamentals - postman collection
Agile Testing Days 2018 - API Fundamentals - postman collection
JoEllen Carter457 views
GraphQL - when REST API is to less - lessons learned by MarcinStachniuk
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
MarcinStachniuk299 views
Teaming up WordPress API with Backbone.js in Titanium by Jeroen van Dijk
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
Jeroen van Dijk1.3K views
GraphQL - when REST API is not enough - lessons learned by MarcinStachniuk
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
MarcinStachniuk511 views
APIdays Zurich 2019 - Specification Driven Development for REST APIS Alexande... by apidays
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...
apidays319 views
APIdays Helsinki 2019 - Specification-Driven Development of REST APIs with Al... by 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...
apidays314 views
Introduction to GraphQL at API days by yann_s
Introduction to GraphQL at API daysIntroduction to GraphQL at API days
Introduction to GraphQL at API days
yann_s3.3K views
Stratalux Cloud Formation and Chef Integration Presentation by Jeremy Przygode
Stratalux Cloud Formation and Chef Integration PresentationStratalux Cloud Formation and Chef Integration Presentation
Stratalux Cloud Formation and Chef Integration Presentation
Jeremy Przygode1K views
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013 by Kiril Iliev
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013
Kiril Iliev2.1K views
CARTO ENGINE by Jorge Sanz
CARTO ENGINECARTO ENGINE
CARTO ENGINE
Jorge Sanz2.3K views
FIWARE Developers Week_ Introduction to Managing Context Information at Large... by FIWARE
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...
FIWARE1.1K views
Elasticsearch in 15 Minutes by Karel Minarik
Elasticsearch in 15 MinutesElasticsearch in 15 Minutes
Elasticsearch in 15 Minutes
Karel Minarik6.6K views
Hypermedia API’s by 3camp
Hypermedia API’s Hypermedia API’s
Hypermedia API’s
3camp699 views
API REST et client Javascript - Nuxeo Tour 2014 - Workshop by Nuxeo
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
Nuxeo1.4K views
Do more with less code in serverless by jeromevdl
Do more with less code in serverlessDo more with less code in serverless
Do more with less code in serverless
jeromevdl44 views
Chatting with HIpChat: APIs 101 by colleenfry
Chatting with HIpChat: APIs 101Chatting with HIpChat: APIs 101
Chatting with HIpChat: APIs 101
colleenfry1.9K views
OSCON 2011 CouchApps by Bradley Holt
OSCON 2011 CouchAppsOSCON 2011 CouchApps
OSCON 2011 CouchApps
Bradley Holt5.4K views

Recently uploaded

DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ... by
DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ...DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ...
DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ...Deltares
11 views32 slides
Sprint 226 by
Sprint 226Sprint 226
Sprint 226ManageIQ
5 views18 slides
WebAssembly by
WebAssemblyWebAssembly
WebAssemblyJens Siebert
48 views18 slides
DSD-INT 2023 3D hydrodynamic modelling of microplastic transport in lakes - J... by
DSD-INT 2023 3D hydrodynamic modelling of microplastic transport in lakes - J...DSD-INT 2023 3D hydrodynamic modelling of microplastic transport in lakes - J...
DSD-INT 2023 3D hydrodynamic modelling of microplastic transport in lakes - J...Deltares
9 views24 slides
Unleash The Monkeys by
Unleash The MonkeysUnleash The Monkeys
Unleash The MonkeysJacob Duijzer
7 views28 slides
Programming Field by
Programming FieldProgramming Field
Programming Fieldthehardtechnology
5 views9 slides

Recently uploaded(20)

DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ... by Deltares
DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ...DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ...
DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ...
Deltares11 views
Sprint 226 by ManageIQ
Sprint 226Sprint 226
Sprint 226
ManageIQ5 views
DSD-INT 2023 3D hydrodynamic modelling of microplastic transport in lakes - J... by Deltares
DSD-INT 2023 3D hydrodynamic modelling of microplastic transport in lakes - J...DSD-INT 2023 3D hydrodynamic modelling of microplastic transport in lakes - J...
DSD-INT 2023 3D hydrodynamic modelling of microplastic transport in lakes - J...
Deltares9 views
Quality Engineer: A Day in the Life by John Valentino
Quality Engineer: A Day in the LifeQuality Engineer: A Day in the Life
Quality Engineer: A Day in the Life
John Valentino6 views
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug Reports by Ra'Fat Al-Msie'deen
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug ReportsBushraDBR: An Automatic Approach to Retrieving Duplicate Bug Reports
BushraDBR: An Automatic Approach to Retrieving Duplicate Bug Reports
Copilot Prompting Toolkit_All Resources.pdf by Riccardo Zamana
Copilot Prompting Toolkit_All Resources.pdfCopilot Prompting Toolkit_All Resources.pdf
Copilot Prompting Toolkit_All Resources.pdf
Riccardo Zamana8 views
DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko... by Deltares
DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko...DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko...
DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko...
Deltares14 views
Fleet Management Software in India by Fleetable
Fleet Management Software in India Fleet Management Software in India
Fleet Management Software in India
Fleetable11 views
Generic or specific? Making sensible software design decisions by Bert Jan Schrijver
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisions
Advanced API Mocking Techniques by Dimpy Adhikary
Advanced API Mocking TechniquesAdvanced API Mocking Techniques
Advanced API Mocking Techniques
Dimpy Adhikary19 views
Gen Apps on Google Cloud PaLM2 and Codey APIs in Action by Márton Kodok
Gen Apps on Google Cloud PaLM2 and Codey APIs in ActionGen Apps on Google Cloud PaLM2 and Codey APIs in Action
Gen Apps on Google Cloud PaLM2 and Codey APIs in Action
Márton Kodok5 views
DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t... by Deltares
DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t...DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t...
DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t...
Deltares9 views
DSD-INT 2023 Exploring flash flood hazard reduction in arid regions using a h... by Deltares
DSD-INT 2023 Exploring flash flood hazard reduction in arid regions using a h...DSD-INT 2023 Exploring flash flood hazard reduction in arid regions using a h...
DSD-INT 2023 Exploring flash flood hazard reduction in arid regions using a h...
Deltares5 views
SUGCON ANZ Presentation V2.1 Final.pptx by Jack Spektor
SUGCON ANZ Presentation V2.1 Final.pptxSUGCON ANZ Presentation V2.1 Final.pptx
SUGCON ANZ Presentation V2.1 Final.pptx
Jack Spektor22 views
Dapr Unleashed: Accelerating Microservice Development by Miroslav Janeski
Dapr Unleashed: Accelerating Microservice DevelopmentDapr Unleashed: Accelerating Microservice Development
Dapr Unleashed: Accelerating Microservice Development
Miroslav Janeski10 views
AI and Ml presentation .pptx by FayazAli87
AI and Ml presentation .pptxAI and Ml presentation .pptx
AI and Ml presentation .pptx
FayazAli8711 views
Myths and Facts About Hospice Care: Busting Common Misconceptions by Care Coordinations
Myths and Facts About Hospice Care: Busting Common MisconceptionsMyths and Facts About Hospice Care: Busting Common Misconceptions
Myths and Facts About Hospice Care: Busting Common Misconceptions

SDKs, the good the bad the ugly - Japan

  • 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
  • 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.
  • 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>
  • 35. SWAGGER CODGEN api.json {{ templates }} config.json > PHP Client library! Ruby Client library! Python Client library! Java Client library! C# Client library!
  • 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