Subscripciones de ALAI

This commit is contained in:
2026-05-05 13:12:31 +02:00
parent 189de6c0fb
commit 036ae20ac3
3 changed files with 136 additions and 1 deletions

View File

@@ -51,6 +51,79 @@ export namespace AlaiAPI {
name: string
}
export type UpdateSubscriptionDTO = {
location: string
}
export type Subscription = {
id: string,
name: string,
domain: string,
status: string,
networkStatus: string,
type: string,
portabilityStatus: string,
billingType: string,
creationDate: string, // ISODATE
firstActivationDate: string, // ISODATE
terminationDate: string, // ISODATE
balance: number,
balanceExpirationDate: string, // ISODATE
lastTrafficDate: string, // ISODATE
externalName: string,
language: string,
ntwID: string,
publicIdentity: string,
externalID: string,
priceplan: {
id: string,
name: string,
pricePlanName: string
},
salesData: {
salesChannel: string,
salesPerson: string,
},
address: {
country: string,
state: string,
county: string,
city: string,
street: string,
postalCode: string,
number: string,
description: string,
neighborhood: string,
typeSettlement: string,
normalized: boolean,
externalID: string,
externalType: string,
spainSpecial: {
externalRefList:
{
refId: string,
refType: string
}[],
streetType: number,
ineCityCode: string,
ineSingularEntityCode: string,
floor: string,
door: string,
apartmentNumber: string,
staircaseNumber: string,
streetNrLast: string,
streetNrLastSuffix: string,
subUnitNumber: string,
buildingName: string,
homeID: string
},
iranSpecial: unknown,
mexicoSpecial: unknown,
brazilSpecial: unknown,
},
}
export type CreateOrderResponseDTO = {
id: string,
name: string,

View File

@@ -106,10 +106,68 @@ export class AlaiRepository {
return res
}
/**
* IMPORTANTE:
* - En el campo subscription viene el id para los cambios de estado, no se hacen
* sobre la sim, sino sobre la subscription
*/
public async getSimByICCID(iccid: string) {
const endpoint = `/v1/sim/${iccid}`
const promReq = this.httpClient.get<AlaiAPI.Sim | undefined>(endpoint, undefined)
const res = await this.manageRequest(promReq)
return res
}
public async pauseSubscription(subscriptionId: string) {
const endpoint = `/v1/subscription/${subscriptionId}`
// En teoria ahora se usa ["action", "BLOCK"] pero no he probado
const params = new URLSearchParams([
["action", "CHANGE_STATUS"]
])
const data = {
status: "BLOCKEDCORE"
}
const promReq = this.httpClient.patch<AlaiAPI.UpdateSubscriptionDTO | undefined>(endpoint, data)
const res = await this.manageRequest(promReq)
return res
}
public async unPauseSubscription(subscriptionId: string) {
const endpoint = `/v1/subscription/${subscriptionId}`
// En teoria ahora se usa ["action", "UNBLOCK"] pero no he probado
const params = new URLSearchParams([
["action", "CHANGE_STATUS"]
])
const data = {
status: "ACTIVE"
}
const promReq = this.httpClient.patch<AlaiAPI.UpdateSubscriptionDTO | undefined>(endpoint, data)
const res = await this.manageRequest(promReq)
return res
}
public async terminateSubscription(subscriptionId: string) {
const endpoint = `/v1/subscription/${subscriptionId}`
// Esta llamada si es de acuerdo a la docu
const params = new URLSearchParams([
["action", "TERMINATE"]
])
const promReq = this.httpClient.patch<AlaiAPI.UpdateSubscriptionDTO | undefined>(endpoint, undefined)
const res = await this.manageRequest(promReq)
return res
}
public async changeExternalId(subscriptionId: string, externalId: string) {
const endpoint = `/v1/subscription/${subscriptionId}`
// Esta llamada si es de acuerdo a la docu
const params = new URLSearchParams([
["action", "MODIFY"]
])
const data = {
externalID: externalId
}
const promReq = this.httpClient.patch<AlaiAPI.UpdateSubscriptionDTO | undefined>(endpoint, data)
const res = await this.manageRequest(promReq)
return res
}
}