before-interop / anomalieAdresse

Ce protocole permet le traitement d'une demande de création ou de modification d'adresses immeuble dans les IPE
https://before-interop.github.io/anomalieAdresse/
1 stars 6 forks source link

API AnomalieAdresse

Cet outil a été créé afin de respecter l’obligation réglementaire indiquée dans la Décision Arcep n° 2020-1432.

Il permet le traitement d’une demande de création ou de modification d’adresses immeuble dans les IPE grâce à des flux normalisés.

Documentation

La documentation du protocole peut être téléchargée à l'adresse suivante: https://github.com/before-interop/anomalieAdresse/raw/HEAD/protocole-anomalies-adresses.docx

Swagger

Le swagger est disponible à l'adresse suivante : https://before-interop.github.io/anomalieAdresse/

Types d'anomalies

Types de signalement

Cycle de vie d'une anomalie

Workflow

Cas d'utilisation

cas nominal

sequenceDiagram

  participant OC
  participant OI

  OC->>OI: Création d'une anomalie (ACKNOWLEDGED)
  loop Pour chaque pièce jointe
    OC->>OI: Ajout d'une pièce jointe
  end

  OI->>OI: Contrôles métier
  alt Contrôles OK
    OI->>OI: Passage en IN_PROGRESS
    OI->>OC: Event ticket_updated

    OI->>OI: Traitement de l'anomalie
    OI->>OI: Passage en RESOLVED
    OI->>OC: Event ticket_updated

    OC->>OI: Validation de la résolution (CLOSED)
  else Contrôles KO
    OI-->>OI: Passage en REJECTED
    OI->>OC: Event ticket_updated
  end

Cas incomplet (infos manquantes)

sequenceDiagram

  participant OC
  participant OI

  OC->>OI: Création d'une anomalie (ACKNOWLEDGED)
  loop Pour chaque pièce jointe
    OC->>OI: Ajout d'une pièce jointe
  end

  OI->>OI: Contrôles métier : OK
  OI->>OI: Passage en IN_PROGRESS
  OI->>OC: Event ticket_updated

  OI->>OI: Traitement de l'anomalie

  OI->>OI: Passage en PENDING
  OI->>OC: Event ticket_updated

  loop Pour chaque info demandée
    OC->>OI: Fourniture infos demandées (Note et/ou Attachment)
  end
  OC->>OI: Passage en ACKNOWLEDGED

  OI->>OI: Contrôles métier

  Note over OC, OI: Retour cas nominal

Refus de la résolution par l'OC

sequenceDiagram

  participant OC
  participant OI

  OC->>OI: Création d'une anomalie (ACKNOWLEDGED)
  loop Pour chaque pièce jointe
    OC->>OI: Ajout d'une pièce jointe
  end

  OI->>OI: Contrôles métier : OK
  OI->>OI: Passage en IN_PROGRESS
  OI->>OC: Event ticket_updated

  loop Tant que la résolution n'est pas validé par l'OC
    OI->>OI: Traitement de l'anomalie
    OI->>OI: Passage en RESOLVED
    OI->>OC: Event ticket_updated

    alt Résolution acceptée
      OC->>OI: Validation de la résolution (CLOSED)
    else Résolution refusée
      OC->>OI: Refus de la résolution (ACKNOWLEDGED + explications)
    end
  end

Délai informations complémentaires dépassé

sequenceDiagram

  participant OC
  participant OI

  OC->>OI: Création d'une anomalie (ACKNOWLEDGED)
  loop Pour chaque pièce jointe
    OC->>OI: Ajout d'une pièce jointe
  end

  OI->>OI: Contrôles métier : OK
  OI->>OI: Passage en IN_PROGRESS
  OI->>OC: Event ticket_updated

  OI->>OI: Traitement de l'anomalie
  OI->>OI: Passage en PENDING
  OI->>OC: Event ticket_updated

  OI->>OI: Fin délai infos complémentaires (Passage à RESOLVED)
  OI->>OC: Event ticket_updated

  alt Résolution acceptée
    OC->>OI: Validation de la résolution (CLOSED)
  else Résolution refusée
    OC->>OI: Refus de la résolution (ACKNOWLEDGED + explications)
 end

Délai validation résolution dépassé

sequenceDiagram

  participant OC
  participant OI

  OC->>OI: Création d'une anomalie (ACKNOWLEDGED)
  loop Pour chaque pièce jointe
    OC->>OI: Ajout d'une pièce jointe
  end

  OI->>OI: Contrôles métier : OK
  OI->>OI: Passage en IN_PROGRESS
  OI->>OC: Event ticket_updated

  OI->>OI: Traitement de l'anomalie
  OI->>OI: Passage en RESOLVED
  OI->>OC: Event ticket_updated

  OI->>OI: Fin délai validation résolution (CLOSED)
  OI->>OC: Event ticket_updated

Exemples d'utilisation de l'API

Création d'une anomalie

curl -XPOST -d '{
  "@type": "AnomalieAdresseUpdateImb",
  "externalId": "123456789",
  "code_oi": "FTEL",
  "code_oc": "FTEL",
  "relatedEntity": [
    {
      "id": "ID-75120000012C"
    },
    {
      "id": "ID-7512000000H9"
    }
  ],
  "issues": {
    "building.address.city": {
      "description": "Ville inconnue"
    },
    "building.address.postcode": {
      "value": "75120"
    }
  }
}' https://localhost/api/anomalie-adresse

HTTP/1.1 201 Created
ETag: 123456789abcdef
Location: /api/anomalie-adresse/330e4b53-e426-4ac3-a4c2-1f9f9d875b6a

{
  "id": "330e4b53-e426-4ac3-a4c2-1f9f9d875b6a",
  "externalId": "123456789",
  "code_oi": "FTEL",
  "code_oc": "FTEL",
  "relatedEntity": [
    {
      "id": "ID-75120000012C"
    },
    {
      "id": "ID-7512000000H9"
    }
  ],
  "issues": {
    "building.address.city": {
      "description": "Ville inconnue"
    },
    "building.address.postcode": {
      "value": "75120"
    }
  },
  "sizeRefs": 2,
  "status": "ACKNOWLEDGED",
  "statusChangeReason": null,
  "statusChangeDetails": null,
  "creationDate": "2021-01-01T00:00:00Z",
  "lastUpdateDate": "2021-01-01T00:00:00Z",
  "statusChange": [
    {
      "status": "ACKNOWLEDGED",
      "date": "2021-01-01T00:00:00Z"
    }
  ],
  "severity": "LOW",
  "ticketType": "OC_REQUEST",
  "analysisDelay": null,
  "resolutionDelay": null,
  "@type": "AnomalieAdresseUpdateImb",
  "@baseType": "AnomalieAdresse",
  "@version": "123456789abcdef",
  "href": "/api/anomalie-adresse/330e4b53-e426-4ac3-a4c2-1f9f9d875b6a"
}

Refuser la résolution d'une anomalie

curl -H "If-Match: 234567890abcdef" -XPUT -d '{
  "status": "IN_PROGRESS",
  "statusChangeReason": "NOT_ACCEPTED",
  "statusChangeDetails": "Ville toujours inconnue",
}' https://localhost/api/anomalie-adresse/330e4b53-e426-4ac3-a4c2-1f9f9d875b6a

HTTP/1.1 200 OK
ETag: 345678901abcdef

{
  "id": "330e4b53-e426-4ac3-a4c2-1f9f9d875b6a",
  "externalId": "123456789",
  "code_oi": "FTEL",
  "code_oc": "FTEL",
  "relatedEntity": [
    {
      "id": "ID-75120000012C"
    },
    {
      "id": "ID-7512000000H9"
    }
  ],
  "issues": {
    "building.address.city": {
      "description": "Ville inconnue"
    },
    "building.address.postcode": {
      "value": "75120"
    }
  },
  "status": "IN_PROGRESS",
  "statusChangeReason": "NOT_ACCEPTED",
  "statusChangeDetails": "Ville toujours inconnue",
  "creationDate": "2021-01-01T00:00:00Z",
  "lastUpdateDate": "2021-01-04T00:00:00Z",
  "statusChange": [
    {
      "status": "ACKNOWLEDGED",
      "date": "2021-01-01T00:00:00Z"
    },
    {
      "status": "IN_PROGRESS",
      "date": "2021-01-02T00:00:00Z"
    },
    {
      "status": "RESOLVED",
      "date": "2021-01-03T00:00:00Z"
    },
    {
      "status": "IN_PROGRESS",
      "date": "2021-01-04T00:00:00Z"
    }
  ],
  "severity": "LOW",
  "ticketType": "OC_REQUEST",
  "analysisDelay": 172800,
  "resolutionDelay": 259200,
  "@type": "AnomalieAdresseUpdateImb",
  "@baseType": "AnomalieAdresse",
  "@version": "345678901abcdef",
  "href": "/api/anomalie-adresse/330e4b53-e426-4ac3-a4c2-1f9f9d875b6a"
}

Récupération des anomalies PENDING

curl "https://localhost/api/anomalie-adresse?status=PENDING"

Récupération des anomalies ZMD résolue en plus de 8 semaines

curl "https://localhost/api/anomalie-adresse?zone=ZMD&status=RESOLVED&resolutionDelay[gt]=4838400"

Lister les tickets en cours car la résolution n'a pas été acceptée

curl "https://localhost/api/anomalie-adresse?status=IN_PROGRESS&statusChangeReason=NOT_ACCEPTED"

Lister les tickets ouverts sur un code IMB

curl "https://localhost/api/anomalie-adresse?status[in]=ACKNOWLEDGED,IN_PROGRESS,PENDING&relatedEntity.id=ID-75120000012C"

Nombre total de tickets ZMD ouverts sur le mois de janvier 2021

curl -XHEAD "https://localhost/api/anomalie-adresse?zone=ZMD&creationDate[gte]=2021-01-01&creationDate[lt]=2021-02-01"

Nombre total de tickets ZMD clôturés sur le mois de janvier 2021 en moins d'une semaine

curl -XHEAD "https://localhost/api/anomalie-adresse?zone=ZMD&totalDuration[lt]=604800&resolutionDate[gte]=2021-01-01&resolutionDate[lt]=2021-02-01"

Nombre total de tickets ZMD ouverts sur le mois de janvier 2021 et clôturés en moins d'une semaine

curl -XHEAD "https://localhost/api/anomalie-adresse?zone=ZMD&status=CLOSED&totalDuration[lt]=604800&creationDate[gte]=2021-01-01&creationDate[lt]=2021-02-01"

Nombre total de tickets ZMD clôturés sur le mois de janvier 2021 en plus d'une semaine et moins de 4 semaines

curl -XHEAD "https://localhost/api/anomalie-adresse?zone=ZMD&totalDuration[gte]=604800&totalDuration[lt]=2419200&resolutionDate[gte]=2021-01-01&resolutionDate[lt]=2021-02-01"

Nombre total de tickets ZMD clôturés sur le mois de janvier 2021 en plus de 4 semaines et moins de 8 semaines

curl -XHEAD "https://localhost/api/anomalie-adresse?zone=ZMD&totalDuration[gte]=2419200&totalDuration[lt]=4838400&resolutionDate[gte]=2021-01-01&resolutionDate[lt]=2021-02-01"

Nombre total de tickets ZMD clôturés sur le mois de janvier 2021 en plus de 8 semaines

curl -XHEAD "https://localhost/api/anomalie-adresse?zone=ZMD&totalDuration[gte]=4838400&resolutionDate[gte]=2021-01-01&resolutionDate[lt]=2021-02-01"

Nombre total de tickets ZMD ouverts sur le mois de janvier 2021 et toujours en cours

curl -XHEAD "https://localhost/api/anomalie-adresse?zone=ZMD&status[in]=ACKNOWLEDGED,IN_PROGRESS,PENDING,RESOLVED&creationDate[gte]=2021-01-01&creationDate[lt]=2021-02-01"

Nombre total de tickets ZMD ouverts sur le mois de janvier 2021 et rejetés

curl -XHEAD "https://localhost/api/anomalie-adresse?zone=ZMD&status=REJECTED&creationDate[gte]=2021-01-01&creationDate[lt]=2021-02-01"