Presentation from the OnTime for IBM API workshop in Shinjuku, Tokyo, Japan on Thursday 19 November 2015. Please contact OnTime support either in Denmark or Japan for more information.
Geosophic is a platform of online services for mobile games. It offers both user engagement features (such as leaderboards and achievements) and analytics.
In this talk I would like to share with you our experience building this platform with Grails with the goal to support a big load. I’ll focus on the system architecture, the problems we have found and how we are solving them.
Cooking your Ravioli "al dente" with Hexagonal ArchitectureJeroen Rosenberg
Hexagonal architecture (a.k.a. ports and adapters) is a fancy name for designing your application in a way that the core domain is separated from the outside world by input and output ports. With a little bit of imagination one can visualise this as a hexagon made up of domain objects, use cases that operate on them, and input and output ports that provide an interface to the outside world.
Many projects involve integration or communication with external software systems. Think of databases, 3rd party services, but also application platforms or SDKs. Such integrations and dependencies can quickly get in your way, clutter your core domain and reduce the testability of your core business logic. In this talk, I will demonstrate how a hexagonal architecture helps you to reduce dependencies on external software systems and enables you to apply standard software engineering best practices on the core domain of your application, such as testability, separation of concerns, and reusability.
Join this talk to learn the ins and outs (pun intended) of the hexagonal architecture paradigm and get practical advice and examples to apply to your software projects right away!
Leveraging the Security of AWS's Own APIs for Your App - AWS Serverless Web DayAWS Germany
Vortrag "Leveraging the Security of AWS's Own APIs for Your App" von Brian Wagner beim AWS Serverless Web Day. Alle Videos und Präsentationen finden Sie hier: http://amzn.to/28QIaxM
Node.js vs Play Framework (with Japanese subtitles)Yevgeniy Brikman
Video: http://www.nicovideo.jp/watch/1410857293
Here's the showdown you've been waiting for: Node.js vs Play Framework. Both are popular open source web frameworks that are built for developer productivity, asynchronous I/O, and the real time web. But which one is easier to learn, test, deploy, debug, and scale? Should you pick Javascript or Scala? The Google v8 engine or the JVM? NPM or Ivy? Grunt or SBT? Two frameworks enter, one framework leaves.
This version of the presentation has Japanese subtitles. For the English only version, see http://www.slideshare.net/brikis98/nodejs-vs-play-framework
Building Beautiful REST APIs with ASP.NET CoreStormpath
Join Stormpath .NET Developer Evangelist, Nate Barbettini, to learn best practices for designing your REST API in ASP.NET Core. Nate will explain how to build HATEOS-compliant JSON APIs while supporting security best practices and even improving performance and scale.
Topics Covered:
What is REST and HATEOS?
How to think about RESTful APIs
How to model hypermedia in C#
Building JSON APIs in ASP.NET Core
MicroProfile: A Quest for a Lightweight and Modern Enterprise Java PlatformMike Croft
The Eclipse MicroProfile offers a development platform for users of Enterprise Java who want innovation and modern APIs.
This presentation covers some of the APIs available in the MicroProfile 1.2 specification as at November 2017
Geosophic is a platform of online services for mobile games. It offers both user engagement features (such as leaderboards and achievements) and analytics.
In this talk I would like to share with you our experience building this platform with Grails with the goal to support a big load. I’ll focus on the system architecture, the problems we have found and how we are solving them.
Cooking your Ravioli "al dente" with Hexagonal ArchitectureJeroen Rosenberg
Hexagonal architecture (a.k.a. ports and adapters) is a fancy name for designing your application in a way that the core domain is separated from the outside world by input and output ports. With a little bit of imagination one can visualise this as a hexagon made up of domain objects, use cases that operate on them, and input and output ports that provide an interface to the outside world.
Many projects involve integration or communication with external software systems. Think of databases, 3rd party services, but also application platforms or SDKs. Such integrations and dependencies can quickly get in your way, clutter your core domain and reduce the testability of your core business logic. In this talk, I will demonstrate how a hexagonal architecture helps you to reduce dependencies on external software systems and enables you to apply standard software engineering best practices on the core domain of your application, such as testability, separation of concerns, and reusability.
Join this talk to learn the ins and outs (pun intended) of the hexagonal architecture paradigm and get practical advice and examples to apply to your software projects right away!
Leveraging the Security of AWS's Own APIs for Your App - AWS Serverless Web DayAWS Germany
Vortrag "Leveraging the Security of AWS's Own APIs for Your App" von Brian Wagner beim AWS Serverless Web Day. Alle Videos und Präsentationen finden Sie hier: http://amzn.to/28QIaxM
Node.js vs Play Framework (with Japanese subtitles)Yevgeniy Brikman
Video: http://www.nicovideo.jp/watch/1410857293
Here's the showdown you've been waiting for: Node.js vs Play Framework. Both are popular open source web frameworks that are built for developer productivity, asynchronous I/O, and the real time web. But which one is easier to learn, test, deploy, debug, and scale? Should you pick Javascript or Scala? The Google v8 engine or the JVM? NPM or Ivy? Grunt or SBT? Two frameworks enter, one framework leaves.
This version of the presentation has Japanese subtitles. For the English only version, see http://www.slideshare.net/brikis98/nodejs-vs-play-framework
Building Beautiful REST APIs with ASP.NET CoreStormpath
Join Stormpath .NET Developer Evangelist, Nate Barbettini, to learn best practices for designing your REST API in ASP.NET Core. Nate will explain how to build HATEOS-compliant JSON APIs while supporting security best practices and even improving performance and scale.
Topics Covered:
What is REST and HATEOS?
How to think about RESTful APIs
How to model hypermedia in C#
Building JSON APIs in ASP.NET Core
MicroProfile: A Quest for a Lightweight and Modern Enterprise Java PlatformMike Croft
The Eclipse MicroProfile offers a development platform for users of Enterprise Java who want innovation and modern APIs.
This presentation covers some of the APIs available in the MicroProfile 1.2 specification as at November 2017
REST API Security: OAuth 2.0, JWTs, and More!Stormpath
Les Hazlewood, Stormpath CTO, already showed you how to build a Beautiful REST+JSON API, but how do you secure your API? At Stormpath, we spent 18 months researching best practices. Join Les as he explains how to secure your REST API, the right way. We'll also host a live Q&A session at the end.
Araport Workshop Tutorial 2: Authentication and the Agave Profiles Servicestevemock
Araport Workshop Tutorial 2: Authentication and the Agave Profiles Service.
A tutorial for building a science application using the Araport.org platform, specifically the Agave API's Profiles RESTful endpoints from the araport app generator platform.
At Adobe APIs are powering the next generation of Creative applications.
Mesos makes it very easy and fun to deploy and run Robust and Scalable Microservices in the Cloud. Today's technologies offer simple solutions to create RESTfull services while Mesos brings them to life faster.
As the number of microservices increase and the inter communication between them becomes more complicated, we soon realize we have new questions awaiting our answers: how do microservices authenticate ? how do we monitor who's using the APIs they expose ? How do we protect them from attacks ? How do we set throttling and rate limiting rules across a cluster of microservices ? How do we control which service allows public access and which one we want to keep private ? How about Mesos APIs and its frameworks ? Can they benefit from these features as well ?
Come and learn a scalable architecture to manage microservices in Mesos by integrating an API Management layer inside your Mesos clusters. This presentation will show you what an API Management layer is, what it's composed of and how it can help you expose microservices in a secure,managed and highly-available way, even in multi-Mesos cluster setups.
During this session you will also have the opportunity to learn how Adobe's API Platform solved this problem, where it is today and what it envisions do to with Mesos further.
If you're working with microservices already or you're creating new ones then this presentation is for you. Come and learn how Mesos together with an API management layer will make you a microservices hero in your organisation. At Adobe APIs are powering the next generation of Creative applications.
IoT Hessen Meetup January 2017, Mainz: Talk by Moritz Kammerer (@phxql, Senior Software Engineer at QAware).
Abstract: The Amazon Echo is a digital assistant developed by Amazon. Her functionality can be extended with so-called skills. This hands-on talk shows with an example in the programming language Java how a natural user interface to a warehouse management system can be created using the Amazon Echo. We talk about the Alexa Skill Kit, which enables the development of such skill.
Besides the programming we also talk about the system architecture.
Speaker:
Moritz Kammerer (moritz.kammerer@qaware.de) works as a software engineer at QAware GmbH. He already successfully carried out projects with the Amazon Echo and supervised a bachelor thesis on natural user interfaces. Besides that he is author of open-source software.
Test-Driven Documentation for your REST(ful) serviceJeroen Reijn
Building RESTful APIs in Java? Getting tired of the annotation bloat forced upon you by your API specification framework which haunts your RESTful service controllers and model objects? Finding yourself in the situation where your code isn’t always in synch with your specification or vice versa?
RAML and Swagger / OpenAPI are great specifications with powerful and shiny tooling, but they do also really have their downsides when it comes to messing with our code.
Fear not! There are other alternatives worth investigating. In this talk, we’ll take a look at how we recently build, designed and documented a public REST API by doing Test Driven Documentation with some help of AsciiDoc and Spring (Auto) REST Docs.
Externalizing Chatter Using Heroku, Angular.js, Node.js and Chatter REST APIsSalesforce Developers
Enterprises love the social collaboration of Chatter, especially since Chatter is tightly aligned with enterprise data in Salesforce. Many companies that integrate their legacy data into Salesforce want to extend Chatter to these mission critical, integrated systems allowing employees to engage in communities right where they work. Join us as Appirio shows how you can use Chatter to engage user communities in external systems using the Chatter UI in the cloud to plug Chatter into external systems with just one line of code. We'll walk through architectural patterns for avoiding browser cross-domain restrictions, access Chatter APIs from the browser, then dive deep into the implementation details of the AngularJS User Interface, NodeJS Chatter Proxy server on Heroku, use of Oauth2, Heroku platform considerations, and specific Chatter REST APIs used.
SPIFFE Meetup Tokyo #2 - Attestation Internals in SPIRE - Shingo OmuraPreferred Networks
In SPIRE, attestation is the essential process because it certifies a node or workload, i.e. it asserts the identities of them. This talk describes how SPIRE implement this process and make it flexible. Moreover, it explains the detail of how spire-server and spire-agent (running at a node) interacts in the attestation process.
These are the presentation slides demonstratingseven versions of the UI of same HTML5 application using various libraries and frameworks. This application is described in detail in the O'Reilly book "Enterprise Web Development"
Externally Testing Modern AD Domains - ArcticconKarl Fosaaen
Externally federated domain endpoints are an exciting target for Red Team assessments. While often overlooked, externally federated domain services can provide multiple access points to an internal network, from the internet. This talk will cover enumeration of federated domains (ADFS and AzureAD), the enumeration of federated services (Office365, Skype for Business, etc.), and attacks that you can leverage against these endpoints to gain access to an internal network. Additional PowerShell tools will be included in the talk to help you automate these attacks.
Why your next serverless project should use AWS AppSyncYan Cui
In this webinar, Yan Cui and Lumigo Software Engineer Guy Moses will discuss some of the power of GraphQL and AppSync and why AppSync + Lambda + DynamoDB should be your stack of choice in 2021 and beyond!
Slides from a presentation (at YDN Tuesdays) on how to use YQL using OAuth, CodeIgniter (PHP MVC framework) and external web services. To get the code mentioned in this presentation go to http://github.com/kulor/yql_php/tree
おなじみ式言語についてのセッションです。非表示の制御は、XPages でも可視という名で実装されており、どんな開発の場合にも何らか行われていると思います。非表示式の課題と要望、また非表示式スリム化の珍案も - お役に立つ保証はありません。
Session slide about Hide Formula on Notes/Domino.
Penn State Cooperative Extension conducted a survey of 940 school districts to elicit feedback on how Marcellus shale gas drilling is affecting their students and their schools.
REST API Security: OAuth 2.0, JWTs, and More!Stormpath
Les Hazlewood, Stormpath CTO, already showed you how to build a Beautiful REST+JSON API, but how do you secure your API? At Stormpath, we spent 18 months researching best practices. Join Les as he explains how to secure your REST API, the right way. We'll also host a live Q&A session at the end.
Araport Workshop Tutorial 2: Authentication and the Agave Profiles Servicestevemock
Araport Workshop Tutorial 2: Authentication and the Agave Profiles Service.
A tutorial for building a science application using the Araport.org platform, specifically the Agave API's Profiles RESTful endpoints from the araport app generator platform.
At Adobe APIs are powering the next generation of Creative applications.
Mesos makes it very easy and fun to deploy and run Robust and Scalable Microservices in the Cloud. Today's technologies offer simple solutions to create RESTfull services while Mesos brings them to life faster.
As the number of microservices increase and the inter communication between them becomes more complicated, we soon realize we have new questions awaiting our answers: how do microservices authenticate ? how do we monitor who's using the APIs they expose ? How do we protect them from attacks ? How do we set throttling and rate limiting rules across a cluster of microservices ? How do we control which service allows public access and which one we want to keep private ? How about Mesos APIs and its frameworks ? Can they benefit from these features as well ?
Come and learn a scalable architecture to manage microservices in Mesos by integrating an API Management layer inside your Mesos clusters. This presentation will show you what an API Management layer is, what it's composed of and how it can help you expose microservices in a secure,managed and highly-available way, even in multi-Mesos cluster setups.
During this session you will also have the opportunity to learn how Adobe's API Platform solved this problem, where it is today and what it envisions do to with Mesos further.
If you're working with microservices already or you're creating new ones then this presentation is for you. Come and learn how Mesos together with an API management layer will make you a microservices hero in your organisation. At Adobe APIs are powering the next generation of Creative applications.
IoT Hessen Meetup January 2017, Mainz: Talk by Moritz Kammerer (@phxql, Senior Software Engineer at QAware).
Abstract: The Amazon Echo is a digital assistant developed by Amazon. Her functionality can be extended with so-called skills. This hands-on talk shows with an example in the programming language Java how a natural user interface to a warehouse management system can be created using the Amazon Echo. We talk about the Alexa Skill Kit, which enables the development of such skill.
Besides the programming we also talk about the system architecture.
Speaker:
Moritz Kammerer (moritz.kammerer@qaware.de) works as a software engineer at QAware GmbH. He already successfully carried out projects with the Amazon Echo and supervised a bachelor thesis on natural user interfaces. Besides that he is author of open-source software.
Test-Driven Documentation for your REST(ful) serviceJeroen Reijn
Building RESTful APIs in Java? Getting tired of the annotation bloat forced upon you by your API specification framework which haunts your RESTful service controllers and model objects? Finding yourself in the situation where your code isn’t always in synch with your specification or vice versa?
RAML and Swagger / OpenAPI are great specifications with powerful and shiny tooling, but they do also really have their downsides when it comes to messing with our code.
Fear not! There are other alternatives worth investigating. In this talk, we’ll take a look at how we recently build, designed and documented a public REST API by doing Test Driven Documentation with some help of AsciiDoc and Spring (Auto) REST Docs.
Externalizing Chatter Using Heroku, Angular.js, Node.js and Chatter REST APIsSalesforce Developers
Enterprises love the social collaboration of Chatter, especially since Chatter is tightly aligned with enterprise data in Salesforce. Many companies that integrate their legacy data into Salesforce want to extend Chatter to these mission critical, integrated systems allowing employees to engage in communities right where they work. Join us as Appirio shows how you can use Chatter to engage user communities in external systems using the Chatter UI in the cloud to plug Chatter into external systems with just one line of code. We'll walk through architectural patterns for avoiding browser cross-domain restrictions, access Chatter APIs from the browser, then dive deep into the implementation details of the AngularJS User Interface, NodeJS Chatter Proxy server on Heroku, use of Oauth2, Heroku platform considerations, and specific Chatter REST APIs used.
SPIFFE Meetup Tokyo #2 - Attestation Internals in SPIRE - Shingo OmuraPreferred Networks
In SPIRE, attestation is the essential process because it certifies a node or workload, i.e. it asserts the identities of them. This talk describes how SPIRE implement this process and make it flexible. Moreover, it explains the detail of how spire-server and spire-agent (running at a node) interacts in the attestation process.
These are the presentation slides demonstratingseven versions of the UI of same HTML5 application using various libraries and frameworks. This application is described in detail in the O'Reilly book "Enterprise Web Development"
Externally Testing Modern AD Domains - ArcticconKarl Fosaaen
Externally federated domain endpoints are an exciting target for Red Team assessments. While often overlooked, externally federated domain services can provide multiple access points to an internal network, from the internet. This talk will cover enumeration of federated domains (ADFS and AzureAD), the enumeration of federated services (Office365, Skype for Business, etc.), and attacks that you can leverage against these endpoints to gain access to an internal network. Additional PowerShell tools will be included in the talk to help you automate these attacks.
Why your next serverless project should use AWS AppSyncYan Cui
In this webinar, Yan Cui and Lumigo Software Engineer Guy Moses will discuss some of the power of GraphQL and AppSync and why AppSync + Lambda + DynamoDB should be your stack of choice in 2021 and beyond!
Slides from a presentation (at YDN Tuesdays) on how to use YQL using OAuth, CodeIgniter (PHP MVC framework) and external web services. To get the code mentioned in this presentation go to http://github.com/kulor/yql_php/tree
おなじみ式言語についてのセッションです。非表示の制御は、XPages でも可視という名で実装されており、どんな開発の場合にも何らか行われていると思います。非表示式の課題と要望、また非表示式スリム化の珍案も - お役に立つ保証はありません。
Session slide about Hide Formula on Notes/Domino.
Penn State Cooperative Extension conducted a survey of 940 school districts to elicit feedback on how Marcellus shale gas drilling is affecting their students and their schools.
Call Las Vegas Reltor Jeff Mix at 702-510-9625.
Here is a CMA I prepared for 2124 Lipari Ct Las Vegas NV 89123 that is currently listed at 168,800 and 88 per sq ft.
Sales over the last 90 days have been between 105,000 to 188,000 for similar sized homes and between 55 to 87 per ft.
Rents for similar sized homes over last 6 months are between 1350 to 1650 per month.
Working with Cortana is fun. This presentation is for people who are seasoned developer and want to learn more on integrating Cortana with Windows Phone Apps.
Aquí una presentación en la que hablo sobre el mundo del gofre, su historia, sus tipos, lugares recomendados y una receta para aprender a prepararlos de una forma muy rápida y sencilla.
Amazon API Gateway is a fully managed service that makes it easy for developers to create, deploy, secure and monitor APIs at any scale. In this session, you’ll find out how you can quickly declare an API interface and connect it to any public HTTP endpoint, existing web service running on Amazon Elastic Compute Cloud (Amazon EC2) or code running on AWS Lambda. Amazon API Gateway handles all the tasks involved in accepting and processing up to hundreds of thousands of concurrent API calls, including traffic management, authorization and access control, monitoring, and API version management. Join us for this introductory session to Amazon API Gateway.
The web has changed! Users spend more time on mobile than on desktops and expect to have an amazing user experience on both. APIs are the heart of the new web as the central point of access data, encapsulating logic and providing the same data and same features for desktops and mobiles. In this workshop, Antonio will show you how to create complex APIs in an easy and quick way using API Platform built on Symfony.
Applications increasingly talk to each other behind the scenes via APIs. Google’s recent acquisition of Apigee, an API management company, is an indicator of the continued importance of APIs. APIs are like building blocks, providing services and data that can be connected with other APIs to build powerful customized apps. However, developing and testing an API can be challenging because there is no built-in interface, breaking changes can cause widespread outages, sensitive data may be exposed or accessed, and accepted agile testing paradigms can be difficult to adapt to APIs. This session is an introduction to restful APIs and how to test them for security, performance, functionality, and backwards-compatibility risks.
Practices and Tools for Building Better APIsPeter Hendriks
The most important part of well-designed Java code is a nice API. A good API helps developers be more productive and write high-quality code quickly. API design matters for any developer, especially in building larger systems with a team. Modern coding tools such as Eclipse and FindBugs contain advanced tooling to help with designing an API and checking for bad usage. This session demonstrates the latest innovations, including new capabilities in Java 8, by presenting realistic examples based on real experiences in large codebases. They show that just a few Java tricks and simple annotations can make all the difference for building a great API.
Amazon API Gateway is a fully managed service that makes it easy for developers to create, publish, maintain, monitor, and secure APIs at any scale. With a few clicks in the AWS Management Console, you can create an API that acts as a “front door” for applications to access data, business logic, or functionality from your back-end services, such as workloads running on Amazon Elastic Compute Cloud (Amazon EC2), code running on AWS Lambda, or any Web application.
There are plenty of different out-of-the-box solutions ready to use as an edge service. Tyk.io, Zuul or Spring Cloud Gateway to name a few. Yet at Allegro we decided to build our own. Reinventing the wheel or filling the functionality gap? During the talk we want to share what are the qualities of different api gateways available out there and why sometimes it is still not enough (or too much).
Automating SDK generation - London Mobile Forum 2.0Thong Nguyen
A talk given at London Mobile Form 2.0 on Automating SDK generation.
If you are writing your mobile apps using multiple languages then automating SDK generation using codegen can bridge the gap between the backend and your front end clients; helping you develop your mobile apps far more rapidly. Remote Procedures should not be any harder to call than local calls and your mobile front-end developers should not need to know manually write networking or serialisation code.
By integrating such codegen tools into your automated (CI) development process, the resistance to adding new APIs and features is essentially removed. Your front-end and back-end teams can add features far more rapidly than they could before.
The web has changed! Users spend more time on mobile than on desktops and expect to have an amazing user experience on both. APIs are the heart of the new web as the central point of access data, encapsulating logic and providing the same data and same features for desktops and mobiles.
In this workshop, Paula and Antonio will show you how to create complex APIs in an easy and quick way using API Platform built on Symfony.
Repository: https://github.com/locastic/wscAPI2017
Similar to An introduction to the API for OnTime for IBM (20)
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Globus
The U.S. Geological Survey (USGS) has made substantial investments in meeting evolving scientific, technical, and policy driven demands on storing, managing, and delivering data. As these demands continue to grow in complexity and scale, the USGS must continue to explore innovative solutions to improve its management, curation, sharing, delivering, and preservation approaches for large-scale research data. Supporting these needs, the USGS has partnered with the University of Chicago-Globus to research and develop advanced repository components and workflows leveraging its current investment in Globus. The primary outcome of this partnership includes the development of a prototype enterprise repository, driven by USGS Data Release requirements, through exploration and implementation of the entire suite of the Globus platform offerings, including Globus Flow, Globus Auth, Globus Transfer, and Globus Search. This presentation will provide insights into this research partnership, introduce the unique requirements and challenges being addressed and provide relevant project progress.
Enterprise Resource Planning System includes various modules that reduce any business's workload. Additionally, it organizes the workflows, which drives towards enhancing productivity. Here are a detailed explanation of the ERP modules. Going through the points will help you understand how the software is changing the work dynamics.
To know more details here: https://blogs.nyggs.com/nyggs/enterprise-resource-planning-erp-system-modules/
How to Position Your Globus Data Portal for Success Ten Good PracticesGlobus
Science gateways allow science and engineering communities to access shared data, software, computing services, and instruments. Science gateways have gained a lot of traction in the last twenty years, as evidenced by projects such as the Science Gateways Community Institute (SGCI) and the Center of Excellence on Science Gateways (SGX3) in the US, The Australian Research Data Commons (ARDC) and its platforms in Australia, and the projects around Virtual Research Environments in Europe. A few mature frameworks have evolved with their different strengths and foci and have been taken up by a larger community such as the Globus Data Portal, Hubzero, Tapis, and Galaxy. However, even when gateways are built on successful frameworks, they continue to face the challenges of ongoing maintenance costs and how to meet the ever-expanding needs of the community they serve with enhanced features. It is not uncommon that gateways with compelling use cases are nonetheless unable to get past the prototype phase and become a full production service, or if they do, they don't survive more than a couple of years. While there is no guaranteed pathway to success, it seems likely that for any gateway there is a need for a strong community and/or solid funding streams to create and sustain its success. With over twenty years of examples to draw from, this presentation goes into detail for ten factors common to successful and enduring gateways that effectively serve as best practices for any new or developing gateway.
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisGlobus
JASMIN is the UK’s high-performance data analysis platform for environmental science, operated by STFC on behalf of the UK Natural Environment Research Council (NERC). In addition to its role in hosting the CEDA Archive (NERC’s long-term repository for climate, atmospheric science & Earth observation data in the UK), JASMIN provides a collaborative platform to a community of around 2,000 scientists in the UK and beyond, providing nearly 400 environmental science projects with working space, compute resources and tools to facilitate their work. High-performance data transfer into and out of JASMIN has always been a key feature, with many scientists bringing model outputs from supercomputers elsewhere in the UK, to analyse against observational or other model data in the CEDA Archive. A growing number of JASMIN users are now realising the benefits of using the Globus service to provide reliable and efficient data movement and other tasks in this and other contexts. Further use cases involve long-distance (intercontinental) transfers to and from JASMIN, and collecting results from a mobile atmospheric radar system, pushing data to JASMIN via a lightweight Globus deployment. We provide details of how Globus fits into our current infrastructure, our experience of the recent migration to GCSv5.4, and of our interest in developing use of the wider ecosystem of Globus services for the benefit of our user community.
Developing Distributed High-performance Computing Capabilities of an Open Sci...Globus
COVID-19 had an unprecedented impact on scientific collaboration. The pandemic and its broad response from the scientific community has forged new relationships among public health practitioners, mathematical modelers, and scientific computing specialists, while revealing critical gaps in exploiting advanced computing systems to support urgent decision making. Informed by our team’s work in applying high-performance computing in support of public health decision makers during the COVID-19 pandemic, we present how Globus technologies are enabling the development of an open science platform for robust epidemic analysis, with the goal of collaborative, secure, distributed, on-demand, and fast time-to-solution analyses to support public health.
First Steps with Globus Compute Multi-User EndpointsGlobus
In this presentation we will share our experiences around getting started with the Globus Compute multi-user endpoint. Working with the Pharmacology group at the University of Auckland, we have previously written an application using Globus Compute that can offload computationally expensive steps in the researcher's workflows, which they wish to manage from their familiar Windows environments, onto the NeSI (New Zealand eScience Infrastructure) cluster. Some of the challenges we have encountered were that each researcher had to set up and manage their own single-user globus compute endpoint and that the workloads had varying resource requirements (CPUs, memory and wall time) between different runs. We hope that the multi-user endpoint will help to address these challenges and share an update on our progress here.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Shahin Sheidaei
Games are powerful teaching tools, fostering hands-on engagement and fun. But they require careful consideration to succeed. Join me to explore factors in running and selecting games, ensuring they serve as effective teaching tools. Learn to maintain focus on learning objectives while playing, and how to measure the ROI of gaming in education. Discover strategies for pitching gaming to leadership. This session offers insights, tips, and examples for coaches, team leads, and enterprise leaders seeking to teach from simple to complex concepts.
Large Language Models and the End of ProgrammingMatt Welsh
Talk by Matt Welsh at Craft Conference 2024 on the impact that Large Language Models will have on the future of software development. In this talk, I discuss the ways in which LLMs will impact the software industry, from replacing human software developers with AI, to replacing conventional software with models that perform reasoning, computation, and problem-solving.
Globus Connect Server Deep Dive - GlobusWorld 2024Globus
We explore the Globus Connect Server (GCS) architecture and experiment with advanced configuration options and use cases. This content is targeted at system administrators who are familiar with GCS and currently operate—or are planning to operate—broader deployments at their institution.
Enhancing Research Orchestration Capabilities at ORNL.pdfGlobus
Cross-facility research orchestration comes with ever-changing constraints regarding the availability and suitability of various compute and data resources. In short, a flexible data and processing fabric is needed to enable the dynamic redirection of data and compute tasks throughout the lifecycle of an experiment. In this talk, we illustrate how we easily leveraged Globus services to instrument the ACE research testbed at the Oak Ridge Leadership Computing Facility with flexible data and task orchestration capabilities.
Software Engineering, Software Consulting, Tech Lead, Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Transaction, Spring MVC, OpenShift Cloud Platform, Kafka, REST, SOAP, LLD & HLD.
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus
As part of the DOE Integrated Research Infrastructure (IRI) program, NERSC at Lawrence Berkeley National Lab and ALCF at Argonne National Lab are working closely with General Atomics on accelerating the computing requirements of the DIII-D experiment. As part of the work the team is investigating ways to speedup the time to solution for many different parts of the DIII-D workflow including how they run jobs on HPC systems. One of these routes is looking at Globus Compute as a way to replace the current method for managing tasks and we describe a brief proof of concept showing how Globus Compute could help to schedule jobs and be a tool to connect compute at different facilities.
Top 7 Unique WhatsApp API Benefits | Saudi ArabiaYara Milbes
Discover the transformative power of the WhatsApp API in our latest SlideShare presentation, "Top 7 Unique WhatsApp API Benefits." In today's fast-paced digital era, effective communication is crucial for both personal and professional success. Whether you're a small business looking to enhance customer interactions or an individual seeking seamless communication with loved ones, the WhatsApp API offers robust capabilities that can significantly elevate your experience.
In this presentation, we delve into the top 7 distinctive benefits of the WhatsApp API, provided by the leading WhatsApp API service provider in Saudi Arabia. Learn how to streamline customer support, automate notifications, leverage rich media messaging, run scalable marketing campaigns, integrate secure payments, synchronize with CRM systems, and ensure enhanced security and privacy.
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Globus
The Earth System Grid Federation (ESGF) is a global network of data servers that archives and distributes the planet’s largest collection of Earth system model output for thousands of climate and environmental scientists worldwide. Many of these petabyte-scale data archives are located in proximity to large high-performance computing (HPC) or cloud computing resources, but the primary workflow for data users consists of transferring data, and applying computations on a different system. As a part of the ESGF 2.0 US project (funded by the United States Department of Energy Office of Science), we developed pre-defined data workflows, which can be run on-demand, capable of applying many data reduction and data analysis to the large ESGF data archives, transferring only the resultant analysis (ex. visualizations, smaller data files). In this talk, we will showcase a few of these workflows, highlighting how Globus Flows can be used for petabyte-scale climate analysis.
1. ONTIME | Group Calendar
AN INTRODUCTION TO THE ONTIME API
2. Agenda (part 1)
• Introduction
• Demos – seeing is believing
• Core Concepts
• API Explorer
• OnTime Frameworks
• How we did the demos – code walk-thru
7. 1 API
• This is an API created and
maintained by OnTime – not by
IBM
• Everything we do in the user
interfaces you can do with the API
as well – there are no secret calls
• New user interface features adds
new capabilities to the API e.g.
when we added Out of Office
functionality it became available to
API customers
8. Requirements
• OnTime Group Calendar installed and configured
• Open API License – purchased separately – price
based on total license price
• Application ID – issued by OnTime on request
– All installations come with a special Application ID
called ”ApiExplorer” – don’t use for production as it’s
throttled
• Access by a user in OnTime
9. Skills Required
• JSON (JavaScript Object Notation)
• IBM Notes/Domino API for LotusScript / Java
access via NRPC
• Virtually any other programming language for
access via HTTP(S)
10. What can you do with it?
• Custom user interfaces
• Custom reports and analysis
• Integration
– CRM systems
– Phone systems
– Booking systems
12. Demos
• JavaScript and Java
– Create appointment
– Read calendar entries
– Free time search
– Out of Office
• XPages
– Use Java framework to build application
14. Endpoints
• An endpoint is the ”address” you make API
requests against
• OnTime supports two types of endpoints
– HTTP using URL’s
– NRPC using an agent
• This presentation will focus on using HTTP (there
are slides on NRPC near the end)
15. HTTP Endpoint in Detail
• HTTP uses two endpoints – one for getting an Access Token
and one for data
• An Access Token is required for all API data access
• The API endpoints are in the Client database
1. Token – /ontime/ontimegcclient.nsf/apihttptoken
2. Data – /ontime/ontimegcclient.nsf/apihttp
• If using the servlet (offers caching and much higher
performance) for API access
1. Data (servlet) – /servlet/ontimegc
16. Access Token (”token”)
• All requests to the token endpoint requires you to be authenticated to
IBM Domino (basic, form, certificate)
• All requests to the API endpoint requires a token obtained from the Token
endpoint
• A token may be used without the user being authenticated to IBM Domino
• A token may be cached – expiration set in configuration (Server
Settings/OnTime Token Timeout)
• From API version 5 the token is fully cluster and load balancer compliant
Please note: New token returned with each request – doesn’t expire the old
one though – ”timeout” is in effect an Idle Timeout
17. JSON (1)
• Industry standard – http://www.json.org
• Some languages like JavaScript has native support
for JSON
• Some languages like Java and LotusScript require
a separate parser to consumer and writer to
produce JSON
Bonus: We supply a JSON parser and writer for
LotusScript that you may use with the OnTime API
19. JSON (3)
{
”product”: ”OnTimeu00ae Group Calendar”,
”userInterfaces”: [
{”name”: ”Notes”, ”language”: ”Java”},
{”name”: ”Browser”, ”langauge”: ”JavaScript”},
{”name”: ”Mobile”, ”language”: ”JavaScript”},
{”name”: ”Social”, ”language”: ”JavaScript”},
{”name”: ”Sidebar”, ”language”: ”Java”}
]
}
Please note: Keys are case sensitive
Please note: Non-ASCII characters should
be Unicode encoded – very important when
using the agent based API (HTTP only)
20. Operations
• An operation is a ”command” you send the API to let it know what
you would like to do
• Currently 40+ different operations
• Examples
– Login (current user information)
– Version (retrieve version information)
– UsersAll (retrieve users)
– Calendar (retrieve calendar entries)
– AppointmentCreate (create a calendar entry)
– OutOfOfficeGet (retrieve out of office information)
21. Application ID and Version
• All requests must contain an Application ID
(ApplID) in the Main section
– The Application ID is verified against your OnTime
Group Calendar license key
• All requests must contain an Application
Version (ApplVer) in the Main section
– The Application Version may be any string
22. API Versioning
• To be backwards compatible the API is versioned
– From v. 4.4 we will be at APIVer=6
• API versioning allows us to continueously update
the API and add new features without breaking
custom applications
• API version is specified using ”APIVer” key in the
Main section
• You must specify an API version for each request
23. Basic Request Format
• Each request must contain a payload describing the request
• The payload always has a Main section with APIVer, ApplID, ApplVer and a
Token
{
”Main”: {”APIVer”: 6,
”ApplID”: ”ApiExplorer”,
”ApplVer”: ”0.0.1”,
”Token”: ”<access token>”
},
”Command1”: {<command specific data>}
}
24. Basic Response Format
• The response always contains an overall status
code, the server API version, a new token and a
response object per command sent
{
”APIVersion”: ”4.2.0”,
”Command1”: {...},
”Token”: ”1234567890abcdefghijk==”,
”Status”: ”OK”
}
25. Example – obtaining a token
POST >> apihttptoken
Authorization: Basic ZGVtbzpkZW1v
{”Main”: {”APIVer”: 6,
”ApplID”: ”ApiExplorer”,
”ApplVer”: ”0.0.1”
}}
{”APIVersion”: ”4.2.0”,
”APIBuild”: 650,
”Token”: ”abc111==”,
”Status”: ”OK”
}
27. Handling Errors
• If an error occurs it is sent back to the caller
• The error contains an error code and a description
• It is a best practice to always verify that ”Status” is ”OK”
{APIVersion: "4.2.0”,
Status: "Error”,
ErrorCode: "NotValidApplID”,
Error: "Not a valid Application ID"
}
{APIVersion: "4.2.0”,
Status: "Error”,
ErrorCode: "TokenTimeout”,
Error: "Token Timeout"
}
28.
29. Dates
• All dates should be encoded as strings in ISO8601
format using the UTC timezone
– {YYYY}-{MM}-{dd}T{HH}:{mm}:{ss}Z
• UTC doesn’t adjust for daylight savings time
• OnTime provided frameworks handle time zone
conversion automatically
• Please note: Using UTC may be confusing at first as a
the date/time may be ”tomorrow” or ”yesterday”
30. Dates
• 2015-12-31T13:15:00Z
– 2.15pm, 31 December 2015 in Denmark (UTC+1, winter time)
– 10.15pm, 31 December 2015 in Japan (UTC+9)
• 2015-06-23T22:00:00Z
– Midnight, 24 June 2015 in Denmark (UTC+2, summer time)
– 7am, 24 June 2015 in Japan (UTC+9)
• 2015-06-30T15:00:00Z
– 8am, 30 June 2015 in California, (UTC-7)
– Midnight, 1 July 2015 in Japan (UTC+9)
32. Getting the API Explorer
• You already have it – it is in the Clients database
– http://<hostname>/<ontime client db>/apiexplorer
– https://demo.ontimesuite.com/ontime/ontimegcclient.nsf/apiexplor
er (same as
https://demo.ontimesuite.com/apiexplorer)
• It’s the tool we use when we develop for OnTime
• Preconfigured with ApiExplorer Application ID for
testing
33. Demo – API Explorer
• Show API Explorer
• Log in, obtain token and do requests
• Show how the API Explorer lets you
inspect requests and responses
• Log out and continue to do requests
• Show built in examples
35. Current Stack
OnTime Core Server
OnTime API
(”low level” JSON based API)
Notes
JavaJavaScript
Team-At-
A-Glance
MobileWeb
Custom
App RoomSigns
Socia
l
Social
36. Coming Stack
OnTime Core Server
OnTime API
(”low level” JSON based API)
CustomApp
Java FrameworkJavaScript Framework (ivcore.js)
Team-At-
A-Glance
Mobile
(new)
Web
Custom
App
Custom
App
Room
Signs
Notes SocialSocial
Mobile(iOS)
37. The Goal
• Do not reinvent the wheel – calendaring and
timezones are hard to get right so use our code
• Time proven code – the framework code is what’s
in the products – it’s not something we make just
for customers
• The frameworks handle authentication, tokens,
network transport and often dealing with the
underlying data
43. Out Of Office, JavaScript
// request OOO for a user
ivcore.api.OutOfOfficeGet({
"UserID": this.userID
});
ivcore.api.process(function(json) {
if (json.Status === ”OK”) {
// read OOO info and use wrapper class for date/time formatting
var ooo = json.OutOfOfficeGet;
var dateBack = ooo.DateTimeBack.ivToDate();
var strBack = ivcore.langreg.region("<dd MMM, HH:NN>", dateBack);
...
}
}.bind(this));
44. Java Examples
• Create appointment
• Read calendar entries
• Free time search
• Out of Office
45. Create Appointment, Java (1)
// create facade with default values (and configure, omitted for brevity)
IGroupCalendarAPIFacade facade = new GroupCalendarAPIFacade();
// create appointment
CalEntryResponse response = facade.createAppointment(null,
120,
"Test Appointment",
"OnTime Example Code");
if (response.isSuccess()) {
System.out.println("Created appointment”);
}
46. Create Appointment, Java (2)
// create facade with default values (and configure, omitted for brevity)
IGroupCalendarAPIFacade facade = new GroupCalendarAPIFacade();
// create calendar and get dates using utility classes
Calendar cal = facade.createJavaCalendar();
CalendarUtil.setTime(cal, 13, 0);
Date start = cal.getTime();
CalendarUtil.setTime(cal, 14, 0);
Date end = cal.getTime();
// create appointment
CalEntryResponse response = facade.createAppointment(start, end, "Test Appointment",
"OnTime Example Code");
if (response.isSuccess()) {
System.out.println("Created appointment”);
}
47. Read Calendar Entries, Java
// create facade with default values (and configure, omitted for brevity)
IGroupCalendarAPIFacade facade = new GroupCalendarAPIFacade();
// create date/time range (date construction omitted for brevity)
DateTimeRange range = new DateTimeRange(start, end);
// fetch appointments
facade.fetchAppointments(false, range);
// get appointments
IAppointment[] apps = facade.getActAsCalendar().getAppointments();
// show result
for (IAppointment app : apps) {
System.out.println(app.getDateTimeRange() + " - " + app.getSubject());
}
48. Free Time Search, Java
// create facade with default values (and configure, omitted for brevity)
IGroupCalendarAPIFacade facade = new GroupCalendarAPIFacade();
// create dates (date construction omitted for brevity)
Date from = ...
Date to = ...
// get calendars
Date[] results = facade.searchFreeTime(60, from, to,
ID_TYPE.EMAIL,
"chris.holmes@ontime.com", "amanda.jones@ontime.com");
for (int i=0, count=ArrayUtil.count(results); i<count; ) {
Date d1 = results[i++];
Date d2 = results[i++];
System.out.println(d1 + " --> " + d2);
}
49. Out of Office, Java
// create facade with default values (and configure, omitted for brevity)
IGroupCalendarAPIFacade facade = new GroupCalendarAPIFacade();
// actually fetch OOO
OutOfOfficeResult ooo = facade.fetchOutOfOffice();
// show result
System.out.println("Out of office for <" +
facade.getActAsUser().getDispName() +
”> of is <" + (ooo.isEnabled() ? "ENABLED" : "DISABLED") +
">");
System.out.println(ooo.getDateOut());
System.out.println(ooo.getGeneralSubject());
System.out.println(ooo.getGeneralBody());
50. XPages Example
• Let us do a code walk-thru in Domino
Designer
• Techniques used
– Jar design elements w/ OnTime Java Framework
– Data tables to loop data
– AppointmentFilter for easy filtering and sorting
52. Character Encoding
• It is a best practice to always encode non-ASCII
charcters using the Unicode character code using
uXXXX
– ® == u00ae
– 東 == u6771
– 京 == u4EAC
• Failure to do so may result in character encoding issues
• OnTime provided frameworks handle character
encoding automatically
55. More on Tokens
• As mentioned previously a token may be cached on the client
• When caching please be aware of token expiration – expiration time is set on the
server – defaults to 24 hours
• A token may be revoked on the server by forcing a new web logon (see
screeenshot, means setting a new ”token ID” for the user)
• Token related error codes
– NoToken
– NoUserWithToken
– TokenTimeout
– WrongTokenID
– InvalidTokenTimeType
– TokenDecryptError
– WrongTokenSign
56. API Log (1)
The API log is an excellent debugging tool as it shows
exactly what the API received and what it returned
57. API Log (2)
• Starting with v. 4.0 – API logging is no longer only
controllable on the OnTime server document but
from code and on a per user basis
• There are 3 ways to have API traffic logged for a
user
• Please note: Never leave API logging turned on in
production as it may affect performance.
58. API Log (3)
1. The Main section contains ”APILog” = true
Controlled by application code and enabled
logging only for the specific calls
{"Main": {"APIVer": 6, "ApplVer": "0.0.1", "ApplID":
"ApiExplorer", "Token": ”aaa111==", "APILog": true},
"Login": {}}
59. API Log (4)
2. Enable user debug – enables logging for all calls
until turned of. Benefit is that it’s done on the
server (no app changes). Setting actually does two
things:
– Enables extended logging
for the user (sync. logging)
– Enables API logging
60. API Log (5)
3. OnTime UI specific option (actually toggles on APILog=true)
– Web UI by appending &debug=true
– Eclipse UI’s through menu actions
61. OnBehalfOf
• All operations are performed as the current user (as
represented by the token / signer)
• For some applications you may need to act as someone else –
we call this OnBehalfOf
• Access to use OnBehalfOf
is explicitly granted on a
per user basis in Server
Settings (set on all servers)
62. OnBehalfOf – Login as user self
Request
{"Main": {"APIVer": 6, "ApplVer": "0.0.1",
"ApplID": ”ApiExplorer", "Token":
"aaa111=="}, "Login": {}}
(Logged in as Chris Holmes/OnTime)
Response
{"APIVersion":"4.1.4","APIBuild":655,"Logi
n":{"Global":{"PreSort":false,"SyncBack":2
1,"PhotoEnabled":true},"User":{"ID":"7","N
ame":”Chris
Holmes/OnTime","Email":”chris.holmes@
ontime.com","MailSource":"Domino"},"Sect
ionProcessTime":16},"Token":”aaa222==","
Status":"OK"}
63. OnBehalfOf – Login w/ OnBehalfOf
Request
{"Main": {"APIVer": 6, "ApplVer": "0.0.1",
"ApplID": ”ApiExplorer", "Token":
"aaa222==", ”OnBehalfOf": ”Amanda
Jones/OnTime"}, "Login": {}}
(Logged in as Chris Holmes/OnTime and he’s
allowed to do OnBehalfOf requests)
Response
{"APIVersion":"4.1.4","APIBuild":655,"Logi
n":{"Global":{"PreSort":false,"SyncBack":2
1,"PhotoEnabled":true},"User":{"ID":"1","N
ame":”Amanda
Jones/OnTime","Email":”aj@ontime.com",
"MailSource":"Domino"},"SectionProcessTi
me":0},"Token":”aaa333==","Status":"OK"}
64. OnBehalfOf – GetToken (1)
Request
{"Main": {"APIVer": 5, "ApplVer": "0.0.1",
"ApplID": ”ApiExplorer", "Token":
"aaa333==", ”OnBehalfOf": ”Amanda
Jones/OnTime"}, ”GetToken": {}}
Response
{"APIVersion":"4.1.4","APIBuild":655,"GetT
oken":{"Token":”bbb111==","User":”Am
anda
Jones/OnTime","ID":"1","CurrentTimeout"
:168,"SectionProcessTime":0},"Token":”aa
a444==","Status":"OK"}
Excellent solution for performing Single-Sign-On with portals built on other
technologies than IBM – issue a token to the user and save in a cookie…
65. OnBehalfOf – GetToken (2)
Request
{"Main": {"APIVer": 5, "ApplVer": "0.0.1",
"ApplID": ”ApiExplorer", "Token":
”bbb111==”}, ”Login": {}}
Response
{"APIVersion":"4.1.4","APIBuild":655,"Logi
n":{"Global":{"PreSort":false,"SyncBack":2
1,"PhotoEnabled":true},"User":{"ID":"1","N
ame":”Amanda
Jones/OnTime","Email":”aj@ontime.com",
"MailSource":"Domino"},"SectionProcessTi
me":0},"Token":”bbb222==","Status":"OK"}
Now just using token
obtained on previous
slide
66. Batching commands (1)
• Each request to the API may contain multiple
commands – even multiple versions of the same
command (e.g. multiple OutOfOfficeGet)
• We call this ”batching commands”
• Keys must be unique in JSON so the API only
checks the beginning of the keys
– OutOfOfficeGet == OutOfOfficeGet_MySuffix
• Response uses the same keys as the request
68. Custom ID (1)
• When doing multiple requests – even multiple
requests at the same time – keeping track of
them can be hard
• To make it easier to discern the requests you may
add a custom ID to each request
• The custom ID is returned in the corresponding
response
• The custom ID may be any string value
79. Endpoints in Detail (NRPC)
• Starting with version 3.8 all API requests are made
against a single database – the Client database1
• API requests are done by
1. Creating/updating a document in the Client database
2. Signing the document (NotesDocument.sign())
3. Running an agent on the server with the document as
context
• The agent is called ApiNotes and can be found in the
Client database
1 Prior to this version there were two possible API endpoint databases; 1) the API database and 2) the Web database
80. Authentication
• User access is verified using IBM Notes digital signatures
• Ideal for LotusScript as HTTP access is troublesome
• May be used with Java as well
• Requires access to the IBM Notes/Domino backend API (Local
or DIIOP)
• Cluster and failover aware through the IBM Notes/Domino API
• Please note: NRPC access doesn’t use OnTime Access Tokens
81. Access w/ NRPC (1)
Requests are done as follows:
1. Create/update an API document in the Client database
2. Set JSON request (same payload as with HTTP)
3. Set Authors field (ensure only user and server can read document)
4. Sign document
5. Run (ApiNotes) agent on document on the server
6. Refetch the API document
7. Read the JSON response
82. Access w/ NRPC (2)
Requests are done as follows:
1. Create/update an API document in the Client database
2. Set JSON request in a field called $Request_0 (if bigger than 32 kb continue
in $Request_1 and so on…)
3. Set Authors field called _Authors to
[ReadAll], <Server DN>, <User DN>
4. Sign document (NotesDocument.Sign())
5. Run (ApiNotes) agent on document on the server
(NotesAgent.RunOnServer(noteid))
6. Refetch the API document by note ID
7. Read the JSON response from a field called $Response_0 (if bigger than 32
kb continue in $Response_1 and so on)
83. Access w/ LotusScript (1)
Function ProcessString(Request As String) As String
Dim session As New NotesSession
Dim dbApi As NotesDatabase
Dim agentApi As NotesAgent
Dim docApi As NotesDocument
Dim noteid As String
Dim item As NotesItem
Dim values(0 To 2) As String
values(0) = session.UserName
values(1) = "[ReadAll]"
values(2) = session.EffectiveUsername
Set dbApi = session.GetDatabase("Server1/OnTime", "ontime/ontimegcclient.nsf")
Set agentApi = dbApi.GetAgent("ApiNotes")
Set docApi = New NotesDocument(dbApi)
Call SetLongString(docApi, "$Request", Request)
Set item = New NotesItem(docApi, "_Author", values)
item.Isauthors = true
item.Isreaders = true
Call docApi.Sign()
Call docApi.Save(True,False)
noteid = doc.Noteid
Delete docApi
Call agentApi.Runonserver(noteid)
Set docApi = dbApi.GetDocumentByNoteID(noteid)
ProcessString = GetLongString(docApi, "$Response")
Exit Function
Declarations
Access for API document
Access Client database,
API agent, create API document,
sign and save
Delete document reference, run
agent on and refetch document
Read response
84. Character Encoding in LotusScript
Private Function encode(s As String) As String
Dim result As String
Dim i As Integer
Dim ch As String
Dim u As Long
For i = 1 To Len(s)
ch = Mid(s,i,1)
u = Uni(ch)
Select Case u
Case 34 : result = result & {"}
Case 92 : result = result & {}
Case 47 : result = result & {/}
Case 8 : result = result & {b}
Case 12 : result = result & {f}
Case 10 : result = result & {n}
Case 13 : result = result & {r}
Case 9 : result = result & {t}
Case Else
If (u>=32) And (u<127) Then
result = result & ch
Else
result = result & "u" & Right("0000" & Hex(u), 4)
End If
End Select
Next
encode = result
End Function
If (u>=32) And (u<127) Then
r = r & ch
Else
u = Uni(ch)
r = r & "u" & Right("0000" & Hex(u), 4)
End If
85. LotusScript Examples
1. Login (Does a login request to the server)
2. Version (requests the version information from
the server)
3. Calendars, raw (requests 7 days worth of
calendar information for the current user by DN)
4. Calendars, processed (same as 3 but parses the
response using the JSON parser)
88. Links
• OnTime Group Calendar demo environment
https://demo.ontimesuite.com
• OnTime Group Calendar demo API Explorer
https://demo.ontimesuite.com/apiexplorer
(login with username ”demo” and password ”demo”)
89. Main object keys
Key name Description Required
ApplID Application ID – issued by OnTime support on request.
ApplVer Application version – can be any string
APIVer API version to use. Currently it should be 5. From v. 4.4 it
should be 6.
Token The token to identify the user if using HTTP
CustomID Custom string to discern multiple concurrent requests
APILog Should the API request be logged on the server