> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vindicia.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Working with WSDL Files

Integrate with Vindicia Retain by making SOAP calls directly to Vindicia’s Web services.

Because of the prevalence of Web services with SOAP as a protocol of choice for integration of disparate systems, most programming languages have built-in support for developing SOAP client-server code. A third-party plug-in or library might also be available for your language of choice. For example, Python programmers can build SOAP client-server code with the SOAPy library. Programming a SOAP client in the language of your choice usually requires access to a Web Services Description Language (WSDL) file that describes the Web service for which you wish to create a client.

Vindicia Web services consist of a set of objects and the SOAP calls that they support (Vindicia Subscribe SOAP API), with the calls described in a set of WSDL files. These WSDL files support document-literal SOAP calls, as defined in the World Wide Web Consortium (W3C) standards. Each WSDL file corresponds to a logical object commonly used in billing solutions. Objects (complex types) shared across all WSDL files are defined in the `Select.xsd` file that every WSDL file includes in its definition.

Each WSDL file describes a set of calls supported by the logical object. For example, the `Transaction.wsdl` file describes the calls with which you can perform activities on a transaction (a `Transaction` object) in Vindicia Retain. Make an update call to create or update an `Account` object; or a `fetchByMerchantTransactionId()` call to retrieve a `Transaction` object by the unique ID assigned by you when you created the object.

Each WSDL file defines only one SOAP port bound to the object-specific interface (a set of methods). For example, `Select.wsdl` defines a port called `SelectPort`, which supports only the SOAP calls that relate to the `Select` object.

The ports defined in each of the WSDL files are associated with the same SOAP address (endpoint). That address is a script on Vindicia servers that receives all SOAP calls and routes them to object-specific code for further processing, depending on which objects the calls are for. For example:

```

<service name="Select">
	<port binding="tns:SelectBinding" name="SelectPort">
		<soap:address location="https://soap.vindicia.com/soap.pl" />
	</port>
</service>
```

Each WSDL file imports the `Select.xsd` schema file, which defines the data structure of all top-level and helper objects. Your client code must be able to access this schema file.

* **[Specifying the SOAP Address](../topics/Specifying_Soap_Address)**

* **[Setting up your SOAP Environment](../topics/Setting_SOAP_Environment)**

* **[Tips for Developing SOAP Clients](../topics/Tips_for_Developing_SOAP_Clients)**


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.