Skip to content

Prana Partner API (1.0)

API Definition to Partner interact with Prana platform

Download OpenAPI description
Languages
Servers

https://api.prana.software/

Country

Consult countries available in the app

Operations

Period

Consult subscription periods available in the app

Operations

Plan

Consult subscription plans available in the app

Operations

Company

Manage company of your subscriptions

Operations

Subscription

Manage your subscriptions

Operations

Request

Get a specific subscription.

Path
idinteger(int32)required
curl -i -X GET \
  'https://api.prana.software/api/v1/partner/subscription/{id}'

Responses

OK

Bodyapplication/json
idinteger(int32)required

Unique identifier of the entity

Example: 1
createdOnstring(date-time)

Subscription creation date.

Example: "2025-10-01T12:05:36.930615+02:00"
modifiedOnstring(date-time)

Subscription modification date.

Example: "2025-10-01T12:05:36.930615+02:00"
partnerobject(ApiPartnerListReadDto)
companyobject(ApiManagementCompanyListReadDto)
commercialNamestring

Commercial name of the subscription.

Example: "Clave Informática S.L."
cifstring

Cif of the subscription.

Example: "B12345678"
namestring

Name of the subscription.

Example: "Clavei"
discountnumber

Discount percentage.

Example: 10
webstring

Web URL.

Example: "https://www.acme.es"
logostring

Picture or logo (URL or base64).

Example: "https://www.acme.es/logo.png"
contactPersonstring

Main contact person.

Example: "Juan Pérez"
firstPhoneNumberstring

First phone number.

Example: "+34600111222"
secondPhoneNumberstring

Second phone number.

Example: "+34600333444"
emailstring

Subscription email address.

Example: "info@acme.es"
countryobject(ApiManagementCountryListReadDto)
stateobject(ApiManagementStateListReadDto)
addressstring

Postal address of the customer.

Example: "Av. de la Estación, 5"
postalCodestring

Postal code.

Example: "03001"
citystring

Subscription city.

Example: "Alicante"
activeboolean

True if the subscription is active.

Example: true
invitationCodestring

Invitation code registration subscription.

invitationSentOnstring(date-time)

Invitation sending date.

Example: "2025-10-01T12:05:36.930615+02:00"
invitationAcceptedOnstring(date-time)

Accepted invitation date.

Example: "2025-10-01T12:05:36.930615+02:00"
planobject(ApiPlanListReadDto)
periodobject(ApiManagementPeriodListReadDto)
statusstring(ApiPartnerStatusEnum)
Enum"ACTIVE""INACTIVE""PENDING"
externalCodestring

Internal client code.

Example: "Code customer"
newsletterboolean

Indicate if you subscribe to the newsletter.

Example: true
lastAccessstring(date-time)

Last access to company.

Example: "2025-10-01T12:05:36.930615+02:00"
Response
application/json
{ "id": 1, "createdOn": "2025-10-01T12:05:36.930615+02:00", "modifiedOn": "2025-10-01T12:05:36.930615+02:00", "partner": { "id": 1, "commercialName": "Clave Informática S.L.", "cif": "B12345678", "name": "Clavei", "email": "info@acme.es", "marginOne": 10, "marginTwo": 10, "logo": "https://www.acme.es/logo.png", "status": "ACTIVE", "externalCode": "Code customer", "subscriptionLimit": 100 }, "company": { "id": 1, "companyName": "Clavei", "companyType": "SELF_EMPLOYED", "companyStatus": "ACTIVE", "employees": "ONE", "fullName": "Clave Informática S.L.", "active": true, "country": {}, "phone": "+34600111222" }, "commercialName": "Clave Informática S.L.", "cif": "B12345678", "name": "Clavei", "discount": 10, "web": "https://www.acme.es", "logo": "https://www.acme.es/logo.png", "contactPerson": "Juan Pérez", "firstPhoneNumber": "+34600111222", "secondPhoneNumber": "+34600333444", "email": "info@acme.es", "country": { "id": 1, "code": "ES", "description": "Spain", "isoCode": "ES" }, "state": { "id": 1, "code": "ES", "description": "Spain", "isoCode": "012", "country": {} }, "address": "Av. de la Estación, 5", "postalCode": "03001", "city": "Alicante", "active": true, "invitationCode": "string", "invitationSentOn": "2025-10-01T12:05:36.930615+02:00", "invitationAcceptedOn": "2025-10-01T12:05:36.930615+02:00", "plan": { "id": 1, "description": "PLAN Integral", "suggested": true }, "period": { "id": 1, "description": "Anual", "months": 12 }, "status": "ACTIVE", "externalCode": "Code customer", "newsletter": true, "lastAccess": "2025-10-01T12:05:36.930615+02:00" }

Request

Update a specific subscription.

Path
idinteger(int32)required
Bodyapplication/jsonrequired
commercialNamestring[ 0 .. 200 ] characters

Commercial name of the subscription.

Example: "Clave Informática S.L."
cifstring[ 0 .. 20 ] characters

Cif of the subscription.

Example: "B12345678"
namestring[ 0 .. 200 ] charactersrequired

Name of the subscription.

Example: "Clavei"
discountnumberrequired

Discount percentage.

Example: 10
webstring

Web URL.

Example: "https://www.acme.es"
logostring

Picture or logo (URL or base64).

Example: "https://www.acme.es/logo.png"
contactPersonstring

Main contact person.

Example: "Juan Pérez"
firstPhoneNumberstring[ 0 .. 20 ] characters

First phone number.

Example: "+34600111222"
secondPhoneNumberstring[ 0 .. 20 ] characters

Second phone number.

Example: "+34600333444"
emailstring[ 0 .. 250 ] characters

Subscription email address.

Example: "info@acme.es"
countryinteger(int32)

Country identifier.

Example: 1
stateinteger(int32)

State identifier.

Example: 1
addressstring[ 0 .. 100 ] characters

Postal address of the customer.

Example: "Av. de la Estación, 5"
postalCodestring[ 0 .. 10 ] characters

Postal code.

Example: "03001"
citystring[ 0 .. 100 ] characters

Subscription city.

Example: "Alicante"
externalCodestring[ 0 .. 20 ] characters

Internal client code.

Example: "Code customer"
newsletterboolean

Indicate if you subscribe to the newsletter.

Example: true
planinteger(int32)

Plan identifier.

Example: 1
periodinteger(int32)

Period identifier.

Example: 1
curl -i -X PUT \
  'https://api.prana.software/api/v1/partner/subscription/{id}' \
  -H 'Content-Type: application/json' \
  -d '{
    "commercialName": "Clave Informática S.L.",
    "cif": "B12345678",
    "name": "Clavei",
    "discount": 10,
    "web": "https://www.acme.es",
    "logo": "https://www.acme.es/logo.png",
    "contactPerson": "Juan Pérez",
    "firstPhoneNumber": "+34600111222",
    "secondPhoneNumber": "+34600333444",
    "email": "info@acme.es",
    "country": 1,
    "state": 1,
    "address": "Av. de la Estación, 5",
    "postalCode": "03001",
    "city": "Alicante",
    "externalCode": "Code customer",
    "newsletter": true,
    "plan": 1,
    "period": 1
  }'

Responses

OK

Bodyapplication/json
idinteger(int32)required

Unique identifier of the entity

Example: 1
createdOnstring(date-time)

Subscription creation date.

Example: "2025-10-01T12:05:36.930615+02:00"
modifiedOnstring(date-time)

Subscription modification date.

Example: "2025-10-01T12:05:36.930615+02:00"
partnerobject(ApiPartnerListReadDto)
companyobject(ApiManagementCompanyListReadDto)
commercialNamestring

Commercial name of the subscription.

Example: "Clave Informática S.L."
cifstring

Cif of the subscription.

Example: "B12345678"
namestring

Name of the subscription.

Example: "Clavei"
discountnumber

Discount percentage.

Example: 10
webstring

Web URL.

Example: "https://www.acme.es"
logostring

Picture or logo (URL or base64).

Example: "https://www.acme.es/logo.png"
contactPersonstring

Main contact person.

Example: "Juan Pérez"
firstPhoneNumberstring

First phone number.

Example: "+34600111222"
secondPhoneNumberstring

Second phone number.

Example: "+34600333444"
emailstring

Subscription email address.

Example: "info@acme.es"
countryobject(ApiManagementCountryListReadDto)
stateobject(ApiManagementStateListReadDto)
addressstring

Postal address of the customer.

Example: "Av. de la Estación, 5"
postalCodestring

Postal code.

Example: "03001"
citystring

Subscription city.

Example: "Alicante"
activeboolean

True if the subscription is active.

Example: true
invitationCodestring

Invitation code registration subscription.

invitationSentOnstring(date-time)

Invitation sending date.

Example: "2025-10-01T12:05:36.930615+02:00"
invitationAcceptedOnstring(date-time)

Accepted invitation date.

Example: "2025-10-01T12:05:36.930615+02:00"
planobject(ApiPlanListReadDto)
periodobject(ApiManagementPeriodListReadDto)
statusstring(ApiPartnerStatusEnum)
Enum"ACTIVE""INACTIVE""PENDING"
externalCodestring

Internal client code.

Example: "Code customer"
newsletterboolean

Indicate if you subscribe to the newsletter.

Example: true
lastAccessstring(date-time)

Last access to company.

Example: "2025-10-01T12:05:36.930615+02:00"
Response
application/json
{ "id": 1, "createdOn": "2025-10-01T12:05:36.930615+02:00", "modifiedOn": "2025-10-01T12:05:36.930615+02:00", "partner": { "id": 1, "commercialName": "Clave Informática S.L.", "cif": "B12345678", "name": "Clavei", "email": "info@acme.es", "marginOne": 10, "marginTwo": 10, "logo": "https://www.acme.es/logo.png", "status": "ACTIVE", "externalCode": "Code customer", "subscriptionLimit": 100 }, "company": { "id": 1, "companyName": "Clavei", "companyType": "SELF_EMPLOYED", "companyStatus": "ACTIVE", "employees": "ONE", "fullName": "Clave Informática S.L.", "active": true, "country": {}, "phone": "+34600111222" }, "commercialName": "Clave Informática S.L.", "cif": "B12345678", "name": "Clavei", "discount": 10, "web": "https://www.acme.es", "logo": "https://www.acme.es/logo.png", "contactPerson": "Juan Pérez", "firstPhoneNumber": "+34600111222", "secondPhoneNumber": "+34600333444", "email": "info@acme.es", "country": { "id": 1, "code": "ES", "description": "Spain", "isoCode": "ES" }, "state": { "id": 1, "code": "ES", "description": "Spain", "isoCode": "012", "country": {} }, "address": "Av. de la Estación, 5", "postalCode": "03001", "city": "Alicante", "active": true, "invitationCode": "string", "invitationSentOn": "2025-10-01T12:05:36.930615+02:00", "invitationAcceptedOn": "2025-10-01T12:05:36.930615+02:00", "plan": { "id": 1, "description": "PLAN Integral", "suggested": true }, "period": { "id": 1, "description": "Anual", "months": 12 }, "status": "ACTIVE", "externalCode": "Code customer", "newsletter": true, "lastAccess": "2025-10-01T12:05:36.930615+02:00" }

Request

Activate/deactivate list subscriptions.

Bodyapplication/jsonrequired
idsArray of integers(int32)required
activatebooleanrequired
curl -i -X PUT \
  https://api.prana.software/api/v1/partner/subscription/activate \
  -H 'Content-Type: application/json' \
  -d '{
    "ids": [
      0
    ],
    "activate": true
  }'

Responses

OK

Request

Create new subscription and send invitation.

Bodyapplication/jsonrequired
commercialNamestring[ 0 .. 200 ] characters

Commercial name of the subscription.

Example: "Clave Informática S.L."
cifstring[ 0 .. 20 ] characters

Cif of the subscription.

Example: "B12345678"
namestring[ 0 .. 200 ] charactersrequired

Name of the subscription.

Example: "Clavei"
discountnumberrequired

Discount percentage.

Example: 10
webstring

Web URL.

Example: "https://www.acme.es"
logostring

Picture or logo (URL or base64).

Example: "https://www.acme.es/logo.png"
contactPersonstring

Main contact person.

Example: "Juan Pérez"
firstPhoneNumberstring[ 0 .. 20 ] characters

First phone number.

Example: "+34600111222"
secondPhoneNumberstring[ 0 .. 20 ] characters

Second phone number.

Example: "+34600333444"
emailstring[ 0 .. 250 ] characters

Subscription email address.

Example: "info@acme.es"
countryinteger(int32)

Country identifier.

Example: 1
stateinteger(int32)

State identifier.

Example: 1
addressstring[ 0 .. 100 ] characters

Postal address of the customer.

Example: "Av. de la Estación, 5"
postalCodestring[ 0 .. 10 ] characters

Postal code.

Example: "03001"
citystring[ 0 .. 100 ] characters

Subscription city.

Example: "Alicante"
externalCodestring[ 0 .. 20 ] characters

Internal client code.

Example: "Code customer"
newsletterboolean

Indicate if you subscribe to the newsletter.

Example: true
planinteger(int32)

Plan identifier.

Example: 1
periodinteger(int32)

Period identifier.

Example: 1
curl -i -X POST \
  https://api.prana.software/api/v1/partner/subscription \
  -H 'Content-Type: application/json' \
  -d '{
    "commercialName": "Clave Informática S.L.",
    "cif": "B12345678",
    "name": "Clavei",
    "discount": 10,
    "web": "https://www.acme.es",
    "logo": "https://www.acme.es/logo.png",
    "contactPerson": "Juan Pérez",
    "firstPhoneNumber": "+34600111222",
    "secondPhoneNumber": "+34600333444",
    "email": "info@acme.es",
    "country": 1,
    "state": 1,
    "address": "Av. de la Estación, 5",
    "postalCode": "03001",
    "city": "Alicante",
    "externalCode": "Code customer",
    "newsletter": true,
    "plan": 1,
    "period": 1
  }'

Responses

OK

Bodyapplication/json
idinteger(int32)required

Unique identifier of the entity

Example: 1
createdOnstring(date-time)

Subscription creation date.

Example: "2025-10-01T12:05:36.930615+02:00"
modifiedOnstring(date-time)

Subscription modification date.

Example: "2025-10-01T12:05:36.930615+02:00"
partnerobject(ApiPartnerListReadDto)
companyobject(ApiManagementCompanyListReadDto)
commercialNamestring

Commercial name of the subscription.

Example: "Clave Informática S.L."
cifstring

Cif of the subscription.

Example: "B12345678"
namestring

Name of the subscription.

Example: "Clavei"
discountnumber

Discount percentage.

Example: 10
webstring

Web URL.

Example: "https://www.acme.es"
logostring

Picture or logo (URL or base64).

Example: "https://www.acme.es/logo.png"
contactPersonstring

Main contact person.

Example: "Juan Pérez"
firstPhoneNumberstring

First phone number.

Example: "+34600111222"
secondPhoneNumberstring

Second phone number.

Example: "+34600333444"
emailstring

Subscription email address.

Example: "info@acme.es"
countryobject(ApiManagementCountryListReadDto)
stateobject(ApiManagementStateListReadDto)
addressstring

Postal address of the customer.

Example: "Av. de la Estación, 5"
postalCodestring

Postal code.

Example: "03001"
citystring

Subscription city.

Example: "Alicante"
activeboolean

True if the subscription is active.

Example: true
invitationCodestring

Invitation code registration subscription.

invitationSentOnstring(date-time)

Invitation sending date.

Example: "2025-10-01T12:05:36.930615+02:00"
invitationAcceptedOnstring(date-time)

Accepted invitation date.

Example: "2025-10-01T12:05:36.930615+02:00"
planobject(ApiPlanListReadDto)
periodobject(ApiManagementPeriodListReadDto)
statusstring(ApiPartnerStatusEnum)
Enum"ACTIVE""INACTIVE""PENDING"
externalCodestring

Internal client code.

Example: "Code customer"
newsletterboolean

Indicate if you subscribe to the newsletter.

Example: true
lastAccessstring(date-time)

Last access to company.

Example: "2025-10-01T12:05:36.930615+02:00"
Response
application/json
{ "id": 1, "createdOn": "2025-10-01T12:05:36.930615+02:00", "modifiedOn": "2025-10-01T12:05:36.930615+02:00", "partner": { "id": 1, "commercialName": "Clave Informática S.L.", "cif": "B12345678", "name": "Clavei", "email": "info@acme.es", "marginOne": 10, "marginTwo": 10, "logo": "https://www.acme.es/logo.png", "status": "ACTIVE", "externalCode": "Code customer", "subscriptionLimit": 100 }, "company": { "id": 1, "companyName": "Clavei", "companyType": "SELF_EMPLOYED", "companyStatus": "ACTIVE", "employees": "ONE", "fullName": "Clave Informática S.L.", "active": true, "country": {}, "phone": "+34600111222" }, "commercialName": "Clave Informática S.L.", "cif": "B12345678", "name": "Clavei", "discount": 10, "web": "https://www.acme.es", "logo": "https://www.acme.es/logo.png", "contactPerson": "Juan Pérez", "firstPhoneNumber": "+34600111222", "secondPhoneNumber": "+34600333444", "email": "info@acme.es", "country": { "id": 1, "code": "ES", "description": "Spain", "isoCode": "ES" }, "state": { "id": 1, "code": "ES", "description": "Spain", "isoCode": "012", "country": {} }, "address": "Av. de la Estación, 5", "postalCode": "03001", "city": "Alicante", "active": true, "invitationCode": "string", "invitationSentOn": "2025-10-01T12:05:36.930615+02:00", "invitationAcceptedOn": "2025-10-01T12:05:36.930615+02:00", "plan": { "id": 1, "description": "PLAN Integral", "suggested": true }, "period": { "id": 1, "description": "Anual", "months": 12 }, "status": "ACTIVE", "externalCode": "Code customer", "newsletter": true, "lastAccess": "2025-10-01T12:05:36.930615+02:00" }

Request

Get all your subscriptions.

Bodyapplication/jsonrequired
conditionobject(ApiCondition)
sortCriteriaArray of objects(ApiSortDto)

List of sorting criteria to apply

pageNumberinteger(int32)required

Page number to retrieve (0-based)

Example: 0
pageSizeinteger(int32)required

Number of items per page

Example: 20
curl -i -X POST \
  https://api.prana.software/api/v1/partner/subscription/search \
  -H 'Content-Type: application/json' \
  -d '{
    "condition": {
      "field": "name",
      "value": "Example Value",
      "type": "EQ",
      "endValue": 100,
      "innerConditions": [
        {}
      ],
      "conditionType": "AND",
      "empty": false,
      "compareFields": false
    },
    "sortCriteria": [
      {
        "sortField": "name",
        "sortDirection": "ASC"
      }
    ],
    "pageNumber": 0,
    "pageSize": 20
  }'

Responses

OK

Bodyapplication/json
dataArray of objects(ApiPartnerCustomerViewReadDto)required

List of data items for the current page

data[].​idinteger(int32)required

Unique identifier of the entity

Example: 1
data[].​commercialNamestring

Commercial name of the subscription.

Example: "Clave Informática S.L."
data[].​cifstring

Cif of the subscription.

Example: "B12345678"
data[].​namestring

Name of the subscription.

Example: "Clavei"
data[].​emailstring

Subscription email address.

Example: "info@acme.es"
data[].​discountnumber

Discount percentage.

Example: 10
data[].​logostring

Picture or logo (URL or base64).

Example: "https://www.acme.es/logo.png"
data[].​subscriptionstring

description of the contracted/assigned plan.

Example: "Integral"
data[].​periodstring

Assigned/contracted billing plan period.

Example: "Anual"
data[].​statusstring(ApiPartnerStatusEnum)
Enum"ACTIVE""INACTIVE""PENDING"
data[].​partnerIdinteger(int32)

Partner ID.

Example: 100
data[].​partnerNamestring

Partner name.

Example: "Partner"
data[].​companyNamestring

Subscription company.

Example: "Clave Informática S.L."
data[].​companyOwnerEmailstring

Owner subscription company.

Example: "info@acme.es"
data[].​externalCodestring

Internal client code.

Example: "Code customer"
data[].​invitationSentOnstring(date-time)

Invitation sending date.

Example: "2025-10-01T12:05:36.930615+02:00"
data[].​invitationAcceptedOnstring(date-time)

Accepted invitation date.

Example: "2025-10-01T12:05:36.930615+02:00"
data[].​createdOnstring(date-time)

Subscription creation date.

Example: "2025-10-01T12:05:36.930615+02:00"
data[].​firstPhoneNumberstring

First phone number.

Example: "+34600111222"
data[].​cancellationDatestring(date-time)

Subscription cancellation date.

Example: "2025-10-01T12:05:36.930615+02:00"
data[].​cancellationReasonstring

Subscription cancellation reason.

Example: "Creation of new company"
data[].​trialExpirationDaysinteger(int32)

Days until the end of the trial period.

Example: 15
data[].​trialExtendedboolean

Extended trial.

Example: true
data[].​lastAccessstring(date-time)

Last access date.

Example: "2025-10-01T12:05:36.930615+02:00"
pageinteger(int32)required

Current page number (0-based)

Example: 0
totalinteger(int32)required

Total number of items across all pages

Example: 150
pagesinteger(int64)required

Last page number (0-based)

Example: 14
sizeinteger(int32)required

Number of items per page

Example: 10
Response
application/json
{ "data": [ {} ], "page": 0, "total": 150, "pages": 14, "size": 10 }

State

Consult states available in the app

Operations