Guide / Reference

Subscription keys

The client reads these keys from the subscription response headers, or from lines in a text body.

A body line looks like this: #key: value. A numero sign at the start of the line works too. A JSON body has no such lines.

The subscription face has fields for the name, the notice, the support address, and the page. They leave as profile-title, announce, support-url, and profile-web-page-url. The face has no fields for new-domain, fallback-url, new-url, or providerid.

The raw subscription response copies only some headers: content-type, profile-title, profile-update-interval, subscription-userinfo, profile-web-page-url, support-url, content-disposition, announce, routing. It does not copy new-domain, fallback-url, new-url, or providerid. Put those as lines in a text body, or as headers on the address the app requests itself.

The client applies new-url, new-domain, and fallback-url only together with providerid, and only after a check confirms both the previous host and the new one. Without providerid it skips them.

profile-title

The subscription name in the client. Plain text, or a value with a base64: prefix.

Response header. The face writes it as base64: plus the text in base64.

profile-title: base64:RFkgUFJPWFk=

announce

A short note on the profile. Plain text or base64:. The client keeps at most 200 characters.

Response header, or a #announce: line in a text body.

#announce: DY PROXY

support-url

Support address.

Response header, or a #support-url: line in a text body. The face hides the placeholder https://dummy.docs.rw.

support-url: https://dyproxy.com/en/docs

profile-web-page-url

Address of the subscription page.

Response header, or a #profile-web-page-url: line in a text body.

profile-web-page-url: https://example.com/sub/xxxx

subscription-userinfo

Traffic and expiry. upload, download, and total are bytes. expire is Unix seconds. A total of 0 is shown as no ceiling. An expire of 0 is not shown.

Response header, or a line in a text body. The face does not fill this. It passes through when the upstream response sends it.

subscription-userinfo: upload=0; download=0; total=0; expire=1893456000

providerid

Provider id. Without it, new-url, new-domain, and fallback-url are ignored. The same key is also accepted as provider-id.

Header, or a #providerid: line in a text body. The face has no field. The raw response does not copy this header.

#providerid: example

new-url

A full replacement subscription address. Only https with a host is accepted. After the provider check it replaces the current address.

Header, or a #new-url: line in a text body. The face has no field.

#new-url: https://sub.example.com/sub/xxxx

new-domain

A new host. The path and query stay from the current address. The scheme stays https.

Header, or a #new-domain: line in a text body. The face has no field. The raw response does not copy this header, so a JSON body has nowhere to put it. It belongs in a header on the address the client requests directly, or as a line in a text body.

#new-domain: sub.example.com

fallback-url

Backup subscription address. https only. After the provider check the client stores it and opens it when the primary request fails.

Header, or a #fallback-url: line in a text body. The face has no field. The raw response does not copy this header.

#fallback-url: https://backup.example.com/sub/xxxx