1*cc02d7e2SAndroid Build Coastguard Worker# HTTP to gRPC Status Code Mapping 2*cc02d7e2SAndroid Build Coastguard Worker 3*cc02d7e2SAndroid Build Coastguard WorkerSince intermediaries are a common part of HTTP infrastructure some responses to 4*cc02d7e2SAndroid Build Coastguard WorkergRPC requests may be received that do not include the grpc-status header. In 5*cc02d7e2SAndroid Build Coastguard Workersome cases mapping error codes from an intermediary allows the gRPC client to 6*cc02d7e2SAndroid Build Coastguard Workerbehave more appropriately to the error situation without overloading the 7*cc02d7e2SAndroid Build Coastguard Workersemantics of either error code. 8*cc02d7e2SAndroid Build Coastguard Worker 9*cc02d7e2SAndroid Build Coastguard WorkerThis table is to be used _only_ for clients that received a response that did 10*cc02d7e2SAndroid Build Coastguard Workernot include grpc-status. If grpc-status was provided, it _must_ be used. Servers 11*cc02d7e2SAndroid Build Coastguard Worker_must not_ use this table to determine an HTTP status code to use; the mappings 12*cc02d7e2SAndroid Build Coastguard Workerare neither symmetric nor 1-to-1. 13*cc02d7e2SAndroid Build Coastguard Worker 14*cc02d7e2SAndroid Build Coastguard Worker| HTTP Status Code | gRPC Status Code | 15*cc02d7e2SAndroid Build Coastguard Worker|----------------------------|--------------------| 16*cc02d7e2SAndroid Build Coastguard Worker| 400 Bad Request | INTERNAL | 17*cc02d7e2SAndroid Build Coastguard Worker| 401 Unauthorized | UNAUTHENTICATED | 18*cc02d7e2SAndroid Build Coastguard Worker| 403 Forbidden | PERMISSION\_DENIED | 19*cc02d7e2SAndroid Build Coastguard Worker| 404 Not Found | UNIMPLEMENTED | 20*cc02d7e2SAndroid Build Coastguard Worker| 429 Too Many Requests | UNAVAILABLE | 21*cc02d7e2SAndroid Build Coastguard Worker| 502 Bad Gateway | UNAVAILABLE | 22*cc02d7e2SAndroid Build Coastguard Worker| 503 Service Unavailable | UNAVAILABLE | 23*cc02d7e2SAndroid Build Coastguard Worker| 504 Gateway Timeout | UNAVAILABLE | 24*cc02d7e2SAndroid Build Coastguard Worker| _All other codes_ | UNKNOWN | 25*cc02d7e2SAndroid Build Coastguard Worker 26*cc02d7e2SAndroid Build Coastguard WorkerTechnically, 1xx should have the entire header skipped and a subsequent header 27*cc02d7e2SAndroid Build Coastguard Workerbe read. See RFC 7540 §8.1. 28*cc02d7e2SAndroid Build Coastguard Worker 29*cc02d7e2SAndroid Build Coastguard Worker200 is UNKNOWN because there should be a grpc-status in case of truly OK 30*cc02d7e2SAndroid Build Coastguard Workerresponse. 31