.. _how-to-create-authentication-media: How to Create a Contract ------------------------ In order for a user to carry out charging sessions, they need to have a valid contract connected to a payment rate (tariff). First of all, one of the available rates (tariffs) must be chosen via the `contractRateOptions`_ API call. Example contractRateOptions request: .. code-block:: javascript query contractRateOptions { contractRateOptions { uuid id name } } Example response: .. code-block:: json { "data": { "contractRateOptions": [ { "uuid": "05b05111-d0a8-4290-12p3-9ec33d133691", "id": "05b05111-d0a8-4290-12p3-9ec33d133691", "name": "Standard rate" } ] } } One of the available rates (tariffs) on this list has to be used to set up a contract. Depending on the available payment methods (`contractPaymentMethods`_), it is possible to create a contract based on SEPA (`createSepaContract`_) or postpaid (`createPostpaidContract`_) payment methods. Example `contractPaymentMethods`_ request: .. code-block:: javascript query contractPaymentMethods { contractPaymentMethods{ uuid applicationId paymentType } } Example response: .. code-block:: json { "data": { "contractPaymentMethods": [ { "uuid": "c6a46407-f3p8-46b7-24po-064324f78b11", "applicationId": "SEPA", "paymentType": "sepaAccount" } ] } } Finally, you can use the uuid from `contractRateOptions`_ as the rateId and the uuid from `contractPaymentMethods`_ as the id to create a contract via `createSepaContract`_ or `createPostpaidContract`_. .. code-block:: javascript mutation createSepaContract { createSepaContract( sepaContract: { id: "c6a46407-f3p8-46b7-24po-064324f78b11" rateId: "05b05111-d0a8-4290-12p3-9ec33d133691" iban: "AT483200000012345864" bic: "SBGSAT2SXXX" bank: "Salzburger Sparkasse Bank AG" debitType: "b2C" accountHolder: "Max Mustermann" useParent: true } ) { status message } } .. _createPostpaidContract: https://graphql.docs.htb.services/api-reference#mutation-createPostpaidContract .. _createSepaContract: https://graphql.docs.htb.services/api-reference#mutation-createSepaContract .. _contractPaymentMethods: https://graphql.docs.htb.services/api-reference#query-contractPaymentMethods .. _contractRateOptions: https://graphql.docs.htb.services/api-reference#query-contractRateOptions