Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage...
Transcript of Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage...
![Page 1: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/1.jpg)
Twelve Patterns to Create Evolvable APIs
Mike AmundsenAPI Academy / CA
@mamund
Drawings by Diogo Lucas@diogoclucas
![Page 2: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/2.jpg)
![Page 3: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/3.jpg)
#mcaTravels
![Page 4: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/4.jpg)
http://apiacademy.co
![Page 5: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/5.jpg)
![Page 6: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/6.jpg)
![Page 7: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/7.jpg)
![Page 8: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/8.jpg)
![Page 9: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/9.jpg)
![Page 10: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/10.jpg)
![Page 11: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/11.jpg)
?
![Page 12: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/12.jpg)
![Page 13: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/13.jpg)
![Page 14: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/14.jpg)
![Page 15: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/15.jpg)
![Page 16: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/16.jpg)
![Page 17: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/17.jpg)
![Page 18: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/18.jpg)
![Page 19: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/19.jpg)
I want to be able to...1. Change/Add Objects (payloads)2. Change/Add Addresses (URLs)3. Change/Add Actions (links and forms)
![Page 20: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/20.jpg)
The OAA Challenge1. Change/Add Objects (payloads)2. Change/Add Addresses (URLs)3. Change/Add Actions (links and forms)
![Page 21: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/21.jpg)
The OAA Challenge1. Change/Add Objects (payloads)2. Change/Add Addresses (URLs)3. Change/Add Actions (links and forms)
"[A] dynamic system that has extreme late binding in all
aspects." -- Alan Kay, 2003
![Page 22: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/22.jpg)
Evolvable API Patterns
![Page 23: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/23.jpg)
Twelve Patterns for Evolvable APIsFour Design PatternsFour Basic PrinciplesFour Shared Agreements
![Page 24: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/24.jpg)
Design Patterns
![Page 25: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/25.jpg)
Design Patterns1.PASS MESSAGES, NOT OBJECTS2.SHARE VOCABULARIES, NOT MODELS3.USE THE REPRESENTOR PATTERN4.PUBLISH PROFILES
![Page 26: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/26.jpg)
![Page 27: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/27.jpg)
Pass Messages, Not Objects"I'm sorry that coined the term 'objects' for this
topic. The big idea is 'messaging'."
Alan Kay, 1998
![Page 28: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/28.jpg)
![Page 29: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/29.jpg)
Pass Messages, Not ObjectsBodies SHOULD be sent using a highly-structured metadata-rich format such as:HALCollection+JSONSirenUBERAtom,etc.
![Page 30: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/30.jpg)
![Page 31: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/31.jpg)
Pass Messages, not ObjectsWhat problem does this solve?
I don’t need to share your object model to interact with you.
Machines can now manage their own internal models independently.
![Page 32: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/32.jpg)
![Page 33: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/33.jpg)
Share Vocabularies, Not Models"It is easier to standardize representation and relation types than objects and object-specific
interfaces."-- Roy Fielding
![Page 34: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/34.jpg)
![Page 35: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/35.jpg)
Share Vocabularies, Not ModelsAll messages SHOULD rely only on standardized identifiers (for data/action) based on shared vocabularies.
IANA Link Relation ValuesSchema.orgMicroformatsDublin CoreActivity Streams
![Page 36: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/36.jpg)
![Page 37: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/37.jpg)
![Page 38: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/38.jpg)
![Page 39: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/39.jpg)
Share Vocabularies, Not ModelsWhat problem does this solve?
Vocabulary is how we “evaluate and select”
Machines can now evaluate and select without direct human interaction.
![Page 40: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/40.jpg)
![Page 41: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/41.jpg)
Use the Representor Pattern"Use a special filter, a Message Translator,
between other filters or applications to translate one data format into another."
- Gregor Hohpe
![Page 42: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/42.jpg)
Use the Representor PatternYou SHOULD implement a message translator to convert internal models into public messages.
Standard Resource Model (WeSTL)Strategy Messages Format Dispatch
![Page 43: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/43.jpg)
![Page 44: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/44.jpg)
![Page 45: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/45.jpg)
Use the Representor PatternWhat problem does this solve?
Sometimes we need to translate our conversations in order to communicate.
Machines can now “negotiate” the language of a conversation.
![Page 46: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/46.jpg)
![Page 47: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/47.jpg)
Publish Profiles"Profiles provide a way to create a ubiquitous
language for talking about APIs (resources) for both humans and machines."
-- Mark Foster
![Page 48: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/48.jpg)
Publish ProfilesAll messages SHOULD be accompanied by one or more PROFILE identifiers.
Define all possible data and actionsUse Profile Standard (RFC6906)Servers emit profile URIClients validate profile URI
![Page 49: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/49.jpg)
![Page 50: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/50.jpg)
![Page 51: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/51.jpg)
![Page 52: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/52.jpg)
![Page 53: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/53.jpg)
Publish ProfilesWhat problem does this solve?
I need to know what we’re talking about.
Machines can now validate domain topics easily
![Page 54: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/54.jpg)
Messages
![Page 55: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/55.jpg)
Norman's Action Lifecycle
Donald Norman
![Page 56: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/56.jpg)
Employing the RPW Loop
![Page 57: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/57.jpg)
Design loosely-coupled interoperable services
![Page 58: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/58.jpg)
Basic Principles
![Page 59: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/59.jpg)
Basic Principles5. MUST IGNORE6. MUST FORWARD7. PROVIDE MRU8. USE IDEMPOTENCE
![Page 60: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/60.jpg)
![Page 61: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/61.jpg)
Must Ignore“The main goal of the MUST IGNORE pattern
of extensibility is to allow backwards- and forwards-compatible changes.”
- David Orchard
![Page 62: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/62.jpg)
![Page 63: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/63.jpg)
Must IgnoreClients MUST IGNORE any data/inputs that the client does not understand.
![Page 64: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/64.jpg)
![Page 65: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/65.jpg)
Must IgnoreWhat problem does this solve?
Ignoring what we don’t understand lets us “do our own thing” w/o knowing everyone’s job
Machines can now focus on their own job, not everyone’s job.
![Page 66: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/66.jpg)
![Page 67: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/67.jpg)
MUST FORWARD“A proxy MUST forward unrecognized header
fields…”-- RFC 7230
A proxy MUST forward an unknown header A proxy MUST forward unrecognized header fields
![Page 68: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/68.jpg)
![Page 69: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/69.jpg)
Must ForwardClients MUST FORWARD (unchanged) any input fields (URL or FORM) that the client does not recognize.
![Page 70: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/70.jpg)
![Page 71: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/71.jpg)
Must ForwardWhat problem does this solve?
We don’t edit for others around us.
Machines can now co-operate w/o full understanding of other’s work
![Page 72: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/72.jpg)
![Page 73: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/73.jpg)
Provide MRU (Most-Recently-Used)“A feature of convenience allowing users to
quickly see and access the last few used files and documents.”
-- Wikipedia
![Page 74: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/74.jpg)
![Page 75: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/75.jpg)
![Page 76: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/76.jpg)
Provide MRUServices SHOULD return the most recently-used (MRU) LINKS and FORMS in all responses.
![Page 77: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/77.jpg)
![Page 78: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/78.jpg)
![Page 79: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/79.jpg)
Provide MRUWhat problem does this solve?
We need most-used tools close at hand
Machines can now find most-used affordances easily
![Page 80: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/80.jpg)
![Page 81: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/81.jpg)
Use Idempotence“Can be applied multiple times without
changing the result beyond the initial application.”-- Wikpedia
![Page 82: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/82.jpg)
![Page 83: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/83.jpg)
Use IdempotenceAll network requests SHOULD be idempotent in order to allow clients to safely repeat them when response is unclear.
![Page 84: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/84.jpg)
![Page 85: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/85.jpg)
Use IdempotenceWhat problem does this solve?
If things didn’t work right the first time, we need to try again.
Machines can now safely “try again”
![Page 86: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/86.jpg)
Networks
![Page 87: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/87.jpg)
"Data on the Inside vs. Data on the Outside, Helland (2005) http://cidrdb.org/cidr2005/papers/P12.pdf
Programming the Network
Pat Helland
![Page 88: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/88.jpg)
"Data on the Inside vs. Data on the Outside, Helland (2005) http://cidrdb.org/cidr2005/papers/P12.pdf
Programming the Network
Pat Helland
![Page 89: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/89.jpg)
"Data on the Inside vs. Data on the Outside, Helland (2005) http://cidrdb.org/cidr2005/papers/P12.pdf
Programming the Network
Pat Helland
![Page 90: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/90.jpg)
Build Network-Aware Implementations
![Page 91: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/91.jpg)
Shared Agreements
![Page 92: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/92.jpg)
Shared Agreements 9. USE RELATED10. USE NAVIGATION11. PARTIAL SUBMIT12. STATE WATCH
![Page 93: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/93.jpg)
![Page 94: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/94.jpg)
Use Related“By watching what you click on in search results, Google can learn that you favor particular sites.” – Danny Sullivan, 2009
![Page 95: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/95.jpg)
![Page 96: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/96.jpg)
Use RelatedServices SHOULD return a RELATED LINK that responds with ALL the possible actions for this context.
![Page 97: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/97.jpg)
![Page 98: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/98.jpg)
![Page 99: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/99.jpg)
Use RelatedWhat problem does this solve?
I can’t remember everything, need an easy way to look up instructions.
Machines can now “look up” the available affordances.
![Page 100: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/100.jpg)
![Page 101: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/101.jpg)
Use Navigation“To achieve a single goal which can be broken
down into dependable sub-tasks.”-- Design Patterns (@uipatterns)
![Page 102: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/102.jpg)
![Page 103: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/103.jpg)
Use NavigationServices SHOULD provide "next/previous" LINK to handle multi-step workflow with "cancel", "restart", & "done."
![Page 104: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/104.jpg)
![Page 105: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/105.jpg)
Use NavigationWhat problem does this solve?
I can’t keep all the steps in my head
Machines can now navigate through a long series of steps safely.
![Page 106: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/106.jpg)
![Page 107: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/107.jpg)
Partial Submit“Think of the actions as approximations of what
is desired.”-- Donald Norman
![Page 108: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/108.jpg)
![Page 109: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/109.jpg)
Partial SubmitServices SHOULD accept partially filled-in FORM and return a new FORM with the remaining fields.
![Page 110: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/110.jpg)
![Page 111: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/111.jpg)
Partial SubmitWhat problem does this solve?
I sometimes only know part of the story.
Machines can now interact in small parts and not always be perfect.
![Page 112: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/112.jpg)
![Page 113: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/113.jpg)
State Watch“Data representing variables in a dynamical
system…”-- Jens Rassmussen
![Page 114: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/114.jpg)
State Watch“Data representing variables in a dynamical
system…”-- Jens Rassmussen
![Page 115: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/115.jpg)
![Page 116: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/116.jpg)
State WatchServices SHOULD allow clients to subscribe to WATCH VALUES so that clients can determine "done."
![Page 117: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/117.jpg)
![Page 118: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/118.jpg)
Use State WatchWhat problem does this solve?
My boss doesn’t always set my goals.
Machines can now set their own goals and act accordingly.
![Page 119: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/119.jpg)
Hypermedia Affordance
![Page 120: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/120.jpg)
By Dgies - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=13691666
The words hypertext, hyperlink, and hypermedia were coined by Ted Nelson around 1965.
Ted Nelson's hyperlinks (1965)
Ted Nelson
![Page 121: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/121.jpg)
What is Hypermedia?[Hypermedia] is not constrained to be linear. Hypertext is text which contains links to other texts.
https://www.w3.org/WhatIs.html
![Page 122: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/122.jpg)
Affordances"The affordances of the environment are what
it offers ... what it provides or furnishes, either for good or ill.
James Gibson, 1977
James Gibson Ecological Approach to Visual Perception, Gibson, 1979
![Page 123: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/123.jpg)
Affordances“When I say Hypertext, I mean the simultaneous
presentation of information and controls such that the information becomes the affordance
through which the user obtains choices and selects actions.”
Roy Fielding, 2008
Roy Fielding Architectural Styles and the Design of Network-based Software Architectures, Fielding, 2001
![Page 124: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/124.jpg)
Affordances are the reason for hypermedia
![Page 125: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/125.jpg)
Enable Connected Services
![Page 126: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/126.jpg)
Summary
![Page 127: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/127.jpg)
Programming the Network brings new challenges
![Page 128: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/128.jpg)
Twelve Patterns for Evolvable APIsFour Design PatternsFour Basic PrinciplesFour Shared Agreements
![Page 129: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/129.jpg)
Design Patterns (for interop)1.PASS MESSAGES, NOT OBJECTS2.SHARE VOCABULARIES, NOT MODELS3.THE REPRESENTOR PATTERN4.PUBLISH PROFILES
![Page 130: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/130.jpg)
Basic Principles (for networks)5. MUST IGNORE6. MUST FORWARD7. PROVIDE MRU8. USE IDEMPOTENCE
![Page 131: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/131.jpg)
Shared Agreements (for services) 9. USE RELATED10. USE NAVIGATION11. PARTIAL SUBMIT12. STATE WATCH
![Page 132: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/132.jpg)
http://g.mamund.com/12-patterns
![Page 133: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/133.jpg)
![Page 134: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/134.jpg)
![Page 135: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/135.jpg)
![Page 136: Drawings by Diogo Lucas @diogoclucas Twelve Patterns to Create€¦ · Machines can now manage their own internal models independently. Share Vocabularies, ... STATE WATCH. Use Related](https://reader035.fdocuments.us/reader035/viewer/2022071003/5fc079edbfbcdf3e2d054211/html5/thumbnails/136.jpg)
Twelve Patterns to Create Evolvable APIs
Mike AmundsenAPI Academy / CA
@mamund
Drawings by Diogo Lucas@diogoclucas