Skip to content

Articulate the general form of Updates #118

@toomim

Description

@toomim

In #96 we realized that the Braid-HTTP illustrates a range of ways to express Updates (aka "New Version" messages), but doesn't fully articulate the general form. This results in a lot of confusing ambiguity about what the spec allows.

I propose writing up a general form for Updates:

  • Equivalence between a GET response, and PUT request, PATCH request, or POST request
    • All of these forms express an "update", either from server to client, or client to server
    • GET and PUT use Patch-Type where PATCH uses Content-Type
    • TBD: What shall we say about POST? Is there a recommended use for POST with Braid-HTTP?
  • Equivalence between regular regular HTTP update and Patches: 1
    • Patches: N is optional extension for all updates, and defines a "second level" of framing within an update
    • If you have only one patch, you can eliminate that extra framing, and merges the patch headers with normal update headers. This is equivalent to the update format of an existing HTTP message, like a Partial PUT.
  • Guidance to ensure that Braid PUTs to legacy servers (that don't understand them) don't clobber state.

This should satisfy the questions raised in issue #96, and ensure we have symmetry across range requests and responses in the design under consideration in #97 (comment).

Finally, once we articulate the general space of possible updates, we also noted in #96 (comment) that we might want to impose some constraints on this general form in practice, so we should deliberate what those might be, and articulate any that we want to impose.

Open Questions:

  1. What is there to say about POST? Do we see a use for POST in Braid-HTTP? Do users of POST need to know anything special when using it with Braid?
  2. Do we want any constraints on this general space of updates, like requiring Patches: 1 in subscription responses as mentioned in issue 97, that might simplify implementations?
  3. What do we think about Guidance for PUTs to legacy servers #117?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions