You do not quite understand what a partner is; or whether you protect data access, restrict API calls, or both.
What you do is likely to be very specific to your business. Assuming that you need to protect the data provided to the services, you need to authenticate each user and protect the transport layer. For the first, you need to have a username and password or a unique API token for end users. This must be checked for each request. Transport security can be enabled using SSL if you use HTTP for your services. As a rule, this is easiest at the web server level, you do not say that you are doing any special hosting of web services.
Assuming that this security is in place, it should provide the basis for an audit of what I think you mean by journal calls. The username identifier or API will give you an idea of who is making the call, which is fundamental to auditing. Then create a list of the data that you would like to see in the audit log. Ask the business user if the registered information can help solve your questions (which forces you to add magazines).
The next thing to consider is where the registration code should be written (is there a central point: do you use AOP to add it?) And where the audit trail should be recorded. There are tools like PostSharp that allow you to embed logging through your application without major changes, but before you do this, see if there is an easy way to add logging to a common place in your application to catch the information you need.
As soon as you take your data, you need to save it somewhere. Everything can be interesting here. You will need to understand the performance characteristics of your application and possible use cases. In many applications, simply logging into the database is enough, but sometimes it will be a performance issue. Access to text files is suitable for some people, but what if the data should be linked to your user database? In this case, you will need code to process the log files with import data.
Before you spend too much time creating any registration code, it’s worth looking at NLog , Log4Net and the nofollow noreferrer "> registration unit. These are general-purpose tools that can provide a better foundation.
If you need to enforce user quotas, you might consider how quickly your log can be processed to determine how many calls the user made. Ideally, every time you process an incoming request, you will have the current status of the user so that he can return the corresponding response. This may be an attempt to add this functionality to existing applications and provide the "infrastructure" to support it.
Whether to use REST, JSON, XML, SOAP, etc. really depends on your audience. Will they use languages like Ruby and Python to call your services, or will they use .NET? If they are mainly .NET users, then it may not make much sense to create clean REST interfaces using JSON, since .NET makes SOAP very simple. At the other end of the SOAP and XML scales, suck if you use client-side JavaScript. Just remember that there is no right answer without additional information about your users. JSON is generally not a panacea, and XML is not always the worst option.
Update
I am not interested in having partners for whom they would prefer formats / protocols, since one of the requirements is the ability to add new partners without IT involvement. I would like some best practice tips, so we do it in the “right” way and they can fit.
The most flexible options may be REST and XML. This is most widely supported since almost all platforms have an HTTP stack. XML is perhaps more flexible than JSON to represent your data. I would start here and work in terms of support, possibly adding JSON. However, this is not what I would call a customer-oriented approach. If this is the main function of the platform, you should really be interested in what your customers want. Hey, even if you do a quick survey today, at least you will have a more reasonable starting point. If you know any developers in the partners, then you can assume that they would prefer the tools and languages that they use (even if you look at their job announcements, you can think about whether they are .NET or Java The store is far from a scientific approach, though).