Draft: draft-ietf-ppm-dap

Commentary: Addresses issue 
 I do n't think that 's true . : DAP servers can return responses with an HTTP error response code ( 4XX or 5XX ) . For example , if the client submits a request using a method not allowed in this document , then the server MAY return HTTP status code 405 Method Not Allowed . So maybe we do need to specify that the status should be 400 ( client error ) and not 500 ( server error ) . FWIW , has several places where it dictates HTTP 400 inline in the text , so I think it 's OK for us to do that . I agree we should be consistent about using MUST throughout the document . Curiously , ACME has some examples where the 400 error response is a MUST , but the 200 success response has no all - caps applied to it . : 
 thanks for the comments , I 've specified 400 in the errors section and shortened the words elsewhere . 
 Error types are either double quoted or code formatted , the text seems to encourage both : But these format are not consistent , some examples : It would be much clearer if we choose one style and make it consistent across the text . 
 The current protocol text does n't specify what participants should do when a task ID is not recognized , there are two places unrecognized task are mentioned : the table , it has : mentions " 404 Not Found and an error of type unrecognizedTask " , which seems to conflict with most implementation 's choice of error code 400 ( ) The text should specify error 400 with type is used in every API that receives unrecognized task ID . 
 This would be useful I think . Would you mind sending a PR , 
 will do , create this issue to remind myself . 
 PR merged
Paragraph (version A):
This document uses the verbs "abort" and "alert with "[some error
message]"" to describe how protocol participants react to various
error conditions.
Paragraph (version B):
This document uses the verbs "abort" and "alert with "[some error
message]"" to describe how protocol participants react to various
error conditions.  This implies HTTP status code 400 Bad Request
unless explicitly specified otherwise.
Paragraph (version A):
Clients retrieve the HPKE configuration from each aggregator by
sending an HTTP GET request to "[aggregator]/hpke_config", where
"[aggregator]" is the aggregator's endpoint URL, obtained from the
task parameters.  Clients MAY specify a query parameter "task_id"
when sending an HTTP GET request to
"[aggregator]/hpke_config?task_id=[task-id]", where "[task-id]" is
the task ID obtained from the task parameters, encoded in Base 64
with URL and filename safe alphabet with no padding, as specified in
sections 5 and 3.2 of RFC4648.  If the aggregator does not recognize
the task ID, then it responds with HTTP status code 400 Bad Request
and an error of type "unrecognizedTask".
Paragraph (version B):
Clients retrieve the HPKE configuration from each aggregator by
sending an HTTP GET request to "[aggregator]/hpke_config", where
"[aggregator]" is the aggregator's endpoint URL, obtained from the
task parameters.  Clients MAY specify a query parameter "task_id"
when sending an HTTP GET request to
"[aggregator]/hpke_config?task_id=[task-id]", where "[task-id]" is
the task ID obtained from the task parameters, encoded in Base 64
with URL and filename safe alphabet with no padding, as specified in
sections 5 and 3.2 of RFC4648.  If the aggregator does not recognize
the task ID, then it MUST abort with error "unrecognizedTask".
Paragraph (version A):
If the leader does not recognize the task ID, then it responds with
HTTP status code 400 Bad Request and an error of type
"unrecognizedTask".
Paragraph (version A):
The leader responds to requests whose leader encrypted input share
uses an out-of-date "HpkeConfig.id" value, indicated by
"HpkeCiphertext.config_id", with HTTP status code 400 Bad Request and
an error of type 'outdatedConfig'.  Clients SHOULD invalidate any
cached aggregator "HpkeConfig" and retry with a freshly generated
Report.  If this retried report does not succeed, clients MUST abort
and discontinue retrying.
Paragraph (version B):
If the leader does not recognize the task ID, then it MUST abort with
error "unrecognizedTask".
Paragraph (version B):
The leader responds to requests whose leader encrypted input share
uses an out-of-date "HpkeConfig.id" value, indicated by
"HpkeCiphertext.config_id", with error of type 'outdatedConfig'.
Clients SHOULD invalidate any cached aggregator "HpkeConfig" and
retry with a freshly generated Report.  If this retried report does
not succeed, clients MUST abort and discontinue retrying.
Paragraph (version A):
If the helper does not recognize the task ID, then it aborts
preparation with HTTP status code 400 Bad Request and an error of
type "unrecognizedTask".
Paragraph (version B):
If the helper does not recognize the task ID, then it MUST abort with
error "unrecognizedTask".
Paragraph (version A):
"task_id", the DAP task ID.  If the Leader does not recognize the
task ID, it MUST abort with HTTP status code 400 Bad Request and
error "unrecognizedTask".
Paragraph (version B):
"task_id", the DAP task ID.  If the Leader does not recognize the
task ID, it MUST abort with error "unrecognizedTask".
Paragraph (version A):
The DAP task ID.  If the Helper does not recognize the task ID, it
MUST abort with HTTP status code 400 Bad Request and error
"unrecognizedTask".
Paragraph (version B):
The DAP task ID.  If the Helper does not recognize the task ID, it
MUST abort with error "unrecognizedTask".